From ba0110ec2216dda317cce0540905830465568743 Mon Sep 17 00:00:00 2001 From: gromchek Date: Sun, 17 Aug 2025 22:40:44 +0300 Subject: [PATCH 1/2] feat(profile): WMO functions --- .../ida/batch/import_symbols.idc | 81 ++++++++++++++++++ profile/3.3.5a-windows-386/symbol/main.sym | 81 ++++++++++++++++++ .../symbol/mapbojgroup/func.sym | 29 +++++++ .../3.3.5a-windows-386/symbol/mapobj/func.sym | 49 +++++++++++ .../symbol/mapobj/label.sym | 3 + profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 188129 -> 190863 bytes 6 files changed, 243 insertions(+) create mode 100644 profile/3.3.5a-windows-386/symbol/mapobj/label.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index b1e32cd..ed463f9 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -4147,7 +4147,9 @@ static import_symbols() { set_name(0x00799730, "CBarrier__Initialize"); set_name(0x007997D0, "CWorldScene__Initialize"); set_name(0x0079B070, "CAaBsp__constructor"); + set_name(0x0079B760, "CMapObjGroup__QueryLiquidSounds"); set_name(0x0079B8E0, "Particulate__InitParticles"); + set_name(0x0079BBF0, "CMapObj__QueryLiquidSounds"); set_name(0x0079BCC0, "Particulate__InitMovement"); set_name(0x0079DFF0, "Particulate__SetTexture"); set_name(0x0079E100, "Particulate__constructor"); @@ -4155,8 +4157,49 @@ static import_symbols() { set_name(0x0079F320, "CMap__Destroy"); set_name(0x0079F820, "CPassenger__Disable"); set_name(0x007A0FE0, "CMapEntity__constructor"); + set_name(0x007A8520, "CMapObj__UpdateMaterials"); + set_name(0x007A9BF0, "CMapObj__RenderGroupLightmapTex"); + set_name(0x007A9D30, "CMapObj__RenderGroupColorTex"); + set_name(0x007ABF50, "CMapObj__RenderGroup"); + set_name(0x007AC6A0, "CMapObj__ExtRender"); + set_name(0x007AC9F0, "CMapObj__IntRender"); + set_name(0x007AD020, "CMapObj__PrepareUpdate"); + set_name(0x007AE030, "CMapObj__Delete"); + set_name(0x007AE1A0, "CMapObj__ReadGroup"); + set_name(0x007AE1C0, "CMapObj__WaitLoad"); set_name(0x007AE300, "CMapObj__Init"); + set_name(0x007AE4C0, "CMapObj__isGroupLoaded"); + set_name(0x007AE4F0, "CMapObj__IsGroupLoading"); + set_name(0x007AE520, "CMapObj__GetBounds"); + set_name(0x007AE5E0, "CMapObj__GetBounds@2"); + set_name(0x007AE670, "CMapObj__GetGroupBounds"); + set_name(0x007AE720, "CMapObj__GetGroupBounds@2"); + set_name(0x007AE7B0, "CMapObj__GetGroupFlags"); + set_name(0x007AE840, "CMapObj__TestBounds"); + set_name(0x007AE880, "CMapObj__TestGroupBounds"); + set_name(0x007AEA10, "CMapObj__TestConvexVolume"); + set_name(0x007AEA80, "CMapObj__GetGroup"); + set_name(0x007AEAB0, "CMapObj__WaitLoadGroup"); + set_name(0x007AEAE0, "CMapObj__GetGroupName"); + set_name(0x007AEB10, "CMapObj__GetGroupInfo"); + set_name(0x007AEB40, "CMapObj__QueryLighting"); + set_name(0x007AEC30, "CMapObj__GetDoodadSet"); + set_name(0x007AEF00, "CMapObj__GetTris"); + set_name(0x007AF0F0, "CMapObj__GetTris@2"); + set_name(0x007AF200, "CMapObj__Intersect"); + set_name(0x007AF280, "CMapObj__VectorIntersectPortal"); + set_name(0x007AF740, "CMapObj__IsAllLoaded"); + set_name(0x007AF780, "CMapObj__QueryLighting@2"); + set_name(0x007AF850, "CMapObj__IsAllDrawable"); + set_name(0x007AF8D0, "GetMinimapQuads"); + set_name(0x007AFC70, "CMapObj__QueryMapObjMinimapGroup"); + set_name(0x007AFE70, "GetMinimapQuads@2"); set_name(0x007AFEE0, "CMapObj__Initialize"); + set_name(0x007B0040, "CMapObj__ClearCache"); + set_name(0x007B00A0, "CMapObj__QueryMapObjMinimap"); + set_name(0x007B01C0, "CMapObj__Destroy"); + set_name(0x007B0250, "CMapObj__AllocOccluder"); + set_name(0x007B0260, "CMapObj__FreeMapObj"); set_name(0x007B0580, "CMapObj__constructor"); set_name(0x007B0CC0, "CMapObj__Create"); set_name(0x007B1270, "CDetailDoodad__UpdateAlphaRampTexture"); @@ -4190,12 +4233,47 @@ static import_symbols() { set_name(0x007C21E0, "CMapDoodadDef__constructor"); set_name(0x007C3D90, "CMapChunk__Initialize"); set_name(0x007C65A0, "CMapChunk__UpdateLights"); + set_name(0x007C7AE0, "CMapObjGroup__GetTrisFromQuery"); + set_name(0x007C7F10, "CMapObjGroup__InitPtrs"); + set_name(0x007C7FE0, "CMapObjGroup__QueryLighting"); + set_name(0x007C8360, "CMapObjGroup__QueryLiquid"); + set_name(0x007C8C60, "CMapObjGroup__GenLiquidVerts"); + set_name(0x007C8D80, "CMapObjGroup__IdentifyLegacyLiquidType"); + set_name(0x007C8DD0, "CMapObjGroup__VectorIntersectLiquidTiles"); + set_name(0x007C9110, "CMapObjGroup__VectorIntersectLiquidSX"); + set_name(0x007C91A0, "CMapObjGroup__VectorIntersectLiquidDY"); + set_name(0x007C9230, "CMapObjGroup__VectorIntersectLiquidDX"); + set_name(0x007C9370, "CMapObjGroup__VectorIntersectLiquidSY"); + set_name(0x007C94B0, "CMapObjGroup__GetLiquidTris"); set_name(0x007C9BC0, "CMapObjGroup__Init"); + set_name(0x007C9DD0, "CMapObjGroup__VectorIntersectLiquid"); + set_name(0x007CAB70, "CMapObjGroup__GetLiquidTris@2"); + set_name(0x007CB0C0, "CMapObjGroup__GetTris"); + set_name(0x007CB180, "CMapObjGroup__GetTris@2"); + set_name(0x007CB2F0, "CMapObjGroup__Intersect"); + set_name(0x007CB520, "CMapObjGroup__AllocVertArray"); set_name(0x007CB700, "CMapObjGroup__constructor"); + set_name(0x007CB7B0, "CMapObjGroup__GetTris@3"); + set_name(0x007CB9D0, "CMapObjGroup__Destroy"); + set_name(0x007CBE80, "CMapObjGroup__Clear"); set_name(0x007CC310, "CMap__LoadWdl"); set_name(0x007D7050, "CMapArea__constructor"); set_name(0x007D7260, "CMapBaseObj__constructor"); + set_name(0x007D72D0, "CMapObj__CreateMaterials"); + set_name(0x007D7310, "CMapObjGroup__GetLegacyLiquidId"); + set_name(0x007D7380, "CMapObjGroup__FixColorVertexAlpha"); + set_name(0x007D7470, "CMapObj__CreateDataPointers"); + set_name(0x007D7710, "CMapObj__CreateMaterial"); + set_name(0x007D78C0, "CMapObj__AttenTransVerts"); + set_name(0x007D7C30, "CMapObjGroup__CreateOptionalDataPointers"); + set_name(0x007D7EB0, "CMapObj__CreateData"); + set_name(0x007D7F50, "CMapObjGroup__CreateDataPointers"); + set_name(0x007D8050, "CMapObj__AsyncPostloadCallback"); set_name(0x007D80C0, "CMapObj__Read"); + set_name(0x007D81C0, "CMapObjGroup__CreateOccluders"); + set_name(0x007D82E0, "CMapObjGroup__Create"); + set_name(0x007D8570, "CMapObjGroup__AsyncPostloadCallback"); + set_name(0x007D85E0, "CMapObj__ReadGroup@2"); set_name(0x007D9B10, "CMapLight__constructor"); set_name(0x007D9BD0, "CMap__CreateLight"); set_name(0x007D9C80, "CMap__UpdateLightBounds"); @@ -5705,6 +5783,9 @@ static import_symbols() { set_name(0x00CE07D0, "CMap__mapPath"); set_name(0x00CF08F0, "CMap__bActive"); set_name(0x00CF08F4, "CMap__bDungeon"); + set_name(0x00CFBEC4, "CMapObjRenderGroupExterior_ptr"); + set_name(0x00CFBECC, "CMapObjRenderGroupInterior_ptr"); + set_name(0x00D1C418, "CMapObj__sMinimapTag"); set_name(0x00D25308, "s_cvShadowCull"); set_name(0x00D25310, "s_cvShadowScissor"); set_name(0x00D25314, "s_cvShadowInstancing"); diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index 752664f..b850c9c 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -4143,7 +4143,9 @@ AreaListRegisterLocation 0078F020 f end=0078F1EC CBarrier__Initialize 00799730 f end=007997C5 CWorldScene__Initialize 007997D0 f end=00799891 CAaBsp__constructor 0079B070 f end=0079B0C8 +CMapObjGroup__QueryLiquidSounds 0079B760 f end=0079B86A Particulate__InitParticles 0079B8E0 f end=0079BA22 +CMapObj__QueryLiquidSounds 0079BBF0 f end=0079BCC0 Particulate__InitMovement 0079BCC0 f end=0079BE44 Particulate__SetTexture 0079DFF0 f end=0079E080 Particulate__constructor 0079E100 f end=0079E191 @@ -4151,8 +4153,49 @@ CMap__Initialize 0079E7C0 f end=0079EFD4 CMap__Destroy 0079F320 f end=0079F646 CPassenger__Disable 0079F820 f end=0079F858 CMapEntity__constructor 007A0FE0 f end=007A1098 +CMapObj__UpdateMaterials 007A8520 f end=007A85D1 +CMapObj__RenderGroupLightmapTex 007A9BF0 f end=007A9D21 +CMapObj__RenderGroupColorTex 007A9D30 f end=007A9ECF +CMapObj__RenderGroup 007ABF50 f end=007AC059 +CMapObj__ExtRender 007AC6A0 f end=007AC9EF +CMapObj__IntRender 007AC9F0 f end=007AD015 +CMapObj__PrepareUpdate 007AD020 f end=007AD1EC +CMapObj__Delete 007AE030 f end=007AE050 +CMapObj__ReadGroup 007AE1A0 f end=007AE1B2 +CMapObj__WaitLoad 007AE1C0 f end=007AE1E5 CMapObj__Init 007AE300 f end=007AE3A6 ; CMapObj::Init() +CMapObj__isGroupLoaded 007AE4C0 f end=007AE4EA +CMapObj__IsGroupLoading 007AE4F0 f end=007AE51B +CMapObj__GetBounds 007AE520 f end=007AE5D8 +CMapObj__GetBounds 007AE5E0 f end=007AE66A +CMapObj__GetGroupBounds 007AE670 f end=007AE71C +CMapObj__GetGroupBounds 007AE720 f end=007AE7A7 +CMapObj__GetGroupFlags 007AE7B0 f end=007AE7D5 +CMapObj__TestBounds 007AE840 f end=007AE873 +CMapObj__TestGroupBounds 007AE880 f end=007AE8CC +CMapObj__TestConvexVolume 007AEA10 f end=007AEA79 +CMapObj__GetGroup 007AEA80 f end=007AEAAB +CMapObj__WaitLoadGroup 007AEAB0 f end=007AEAE0 +CMapObj__GetGroupName 007AEAE0 f end=007AEB0F +CMapObj__GetGroupInfo 007AEB10 f end=007AEB32 +CMapObj__QueryLighting 007AEB40 f end=007AEB84 +CMapObj__GetDoodadSet 007AEC30 f end=007AECAF +CMapObj__GetTris 007AEF00 f end=007AEFFC +CMapObj__GetTris 007AF0F0 f end=007AF1F2 +CMapObj__Intersect 007AF200 f end=007AF271 +CMapObj__VectorIntersectPortal 007AF280 f end=007AF511 +CMapObj__IsAllLoaded 007AF740 f end=007AF77E +CMapObj__QueryLighting 007AF780 f end=007AF848 +CMapObj__IsAllDrawable 007AF850 f end=007AF8CB +GetMinimapQuads 007AF8D0 f end=007AFC70 +CMapObj__QueryMapObjMinimapGroup 007AFC70 f end=007AFE6E +GetMinimapQuads 007AFE70 f end=007AFED2 CMapObj__Initialize 007AFEE0 f end=007B003C +CMapObj__ClearCache 007B0040 f end=007B0097 +CMapObj__QueryMapObjMinimap 007B00A0 f end=007B015C +CMapObj__Destroy 007B01C0 f end=007B024A +CMapObj__AllocOccluder 007B0250 f end=007B025B +CMapObj__FreeMapObj 007B0260 f end=007B0304 CMapObj__constructor 007B0580 f end=007B05F9 ; CMapObj::CMapObj() CMapObj__Create 007B0CC0 f end=007B0D37 ; CMapObj::Create(char const*) CDetailDoodad__UpdateAlphaRampTexture 007B1270 f end=007B129F ; CDetailDoodad::UpdateAlphaRampTexture(EGxTexCommand, unsigned int, unsigned int, unsigned int, unsigned int, void*, unsigned int&, void const*&) @@ -4186,12 +4229,47 @@ CMapEntity__SelectLights 007C1730 f end=007C1ACA ; CMapEntity::SelectLights(CM2L CMapDoodadDef__constructor 007C21E0 f end=007C234A CMapChunk__Initialize 007C3D90 f end=007C3DAD CMapChunk__UpdateLights 007C65A0 f end=007C65FE ; public: void __thiscall CMapChunk::UpdateLights(void) +CMapObjGroup__GetTrisFromQuery 007C7AE0 f end=007C7F0C +CMapObjGroup__InitPtrs 007C7F10 f end=007C7FD8 +CMapObjGroup__QueryLighting 007C7FE0 f end=007C8352 +CMapObjGroup__QueryLiquid 007C8360 f end=007C8500 +CMapObjGroup__GenLiquidVerts 007C8C60 f end=007C8D73 +CMapObjGroup__IdentifyLegacyLiquidType 007C8D80 f end=007C8DCB +CMapObjGroup__VectorIntersectLiquidTiles 007C8DD0 f end=007C9106 +CMapObjGroup__VectorIntersectLiquidSX 007C9110 f end=007C9194 +CMapObjGroup__VectorIntersectLiquidDY 007C91A0 f end=007C9230 +CMapObjGroup__VectorIntersectLiquidDX 007C9230 f end=007C936F +CMapObjGroup__VectorIntersectLiquidSY 007C9370 f end=007C94AE +CMapObjGroup__GetLiquidTris 007C94B0 f end=007C99F7 CMapObjGroup__Init 007C9BC0 f end=007C9CB0 +CMapObjGroup__VectorIntersectLiquid 007C9DD0 f end=007CA104 +CMapObjGroup__GetLiquidTris 007CAB70 f end=007CB0B4 +CMapObjGroup__GetTris 007CB0C0 f end=007CB17D +CMapObjGroup__GetTris 007CB180 f end=007CB257 +CMapObjGroup__Intersect 007CB2F0 f end=007CB3AB +CMapObjGroup__AllocVertArray 007CB520 f end=007CB5FC CMapObjGroup__constructor 007CB700 f end=007CB7A8 +CMapObjGroup__GetTris 007CB7B0 f end=007CB867 +CMapObjGroup__Destroy 007CB9D0 f end=007CB9EE +CMapObjGroup__Clear 007CBE80 f end=007CBF3F CMap__LoadWdl 007CC310 f end=007CC761 CMapArea__constructor 007D7050 f end=007D711F CMapBaseObj__constructor 007D7260 f end=007D7293 ; CMapBaseObj::CMapBaseObj() +CMapObj__CreateMaterials 007D72D0 f end=007D730C +CMapObjGroup__GetLegacyLiquidId 007D7310 f end=007D7361 +CMapObjGroup__FixColorVertexAlpha 007D7380 f end=007D7470 +CMapObj__CreateDataPointers 007D7470 f end=007D7701 +CMapObj__CreateMaterial 007D7710 f end=007D77A2 +CMapObj__AttenTransVerts 007D78C0 f end=007D7C24 +CMapObjGroup__CreateOptionalDataPointers 007D7C30 f end=007D7EB0 +CMapObj__CreateData 007D7EB0 f end=007D7F4A +CMapObjGroup__CreateDataPointers 007D7F50 f end=007D800F +CMapObj__AsyncPostloadCallback 007D8050 f end=007D80B6 CMapObj__Read 007D80C0 f end=007D81BB ; CMapObj::Read(char const*) +CMapObjGroup__CreateOccluders 007D81C0 f end=007D82D6 +CMapObjGroup__Create 007D82E0 f end=007D856F +CMapObjGroup__AsyncPostloadCallback 007D8570 f end=007D85D6 +CMapObj__ReadGroup 007D85E0 f end=007D872B CMapLight__constructor 007D9B10 f end=007D9B8F ; public: __thiscall CMapLight::CMapLight(void) CMap__CreateLight 007D9BD0 f end=007D9C7B ; CMap::CreateLight(bool, bool) CMap__UpdateLightBounds 007D9C80 f end=007D9D4F ; public: static void __cdecl CMap::UpdateLightBounds(class CMapLight *) @@ -5701,6 +5779,9 @@ CMap__mapName 00CE06D0 l CMap__mapPath 00CE07D0 l CMap__bActive 00CF08F0 l CMap__bDungeon 00CF08F4 l +CMapObjRenderGroupExterior_ptr 00CFBEC4 l +CMapObjRenderGroupInterior_ptr 00CFBECC l +CMapObj__sMinimapTag 00D1C418 l s_cvShadowCull 00D25308 l type="CVar*" s_cvShadowScissor 00D25310 l type="CVar*" s_cvShadowInstancing 00D25314 l type="CVar*" diff --git a/profile/3.3.5a-windows-386/symbol/mapbojgroup/func.sym b/profile/3.3.5a-windows-386/symbol/mapbojgroup/func.sym index 0d855b0..5b04cd2 100644 --- a/profile/3.3.5a-windows-386/symbol/mapbojgroup/func.sym +++ b/profile/3.3.5a-windows-386/symbol/mapbojgroup/func.sym @@ -1,2 +1,31 @@ CMapObjGroup__Init 007C9BC0 f end=007C9CB0 CMapObjGroup__constructor 007CB700 f end=007CB7A8 +CMapObjGroup__QueryLiquidSounds 0079B760 f end=0079B86A +CMapObjGroup__GetTrisFromQuery 007C7AE0 f end=007C7F0C +CMapObjGroup__InitPtrs 007C7F10 f end=007C7FD8 +CMapObjGroup__QueryLighting 007C7FE0 f end=007C8352 +CMapObjGroup__QueryLiquid 007C8360 f end=007C8500 +CMapObjGroup__GenLiquidVerts 007C8C60 f end=007C8D73 +CMapObjGroup__IdentifyLegacyLiquidType 007C8D80 f end=007C8DCB +CMapObjGroup__VectorIntersectLiquidTiles 007C8DD0 f end=007C9106 +CMapObjGroup__VectorIntersectLiquidSX 007C9110 f end=007C9194 +CMapObjGroup__VectorIntersectLiquidDY 007C91A0 f end=007C9230 +CMapObjGroup__VectorIntersectLiquidDX 007C9230 f end=007C936F +CMapObjGroup__VectorIntersectLiquidSY 007C9370 f end=007C94AE +CMapObjGroup__GetLiquidTris 007C94B0 f end=007C99F7 +CMapObjGroup__VectorIntersectLiquid 007C9DD0 f end=007CA104 +CMapObjGroup__GetLiquidTris 007CAB70 f end=007CB0B4 +CMapObjGroup__GetTris 007CB0C0 f end=007CB17D +CMapObjGroup__GetTris 007CB180 f end=007CB257 +CMapObjGroup__Intersect 007CB2F0 f end=007CB3AB +CMapObjGroup__AllocVertArray 007CB520 f end=007CB5FC +CMapObjGroup__GetTris 007CB7B0 f end=007CB867 +CMapObjGroup__Destroy 007CB9D0 f end=007CB9EE +CMapObjGroup__Clear 007CBE80 f end=007CBF3F +CMapObjGroup__GetLegacyLiquidId 007D7310 f end=007D7361 +CMapObjGroup__FixColorVertexAlpha 007D7380 f end=007D7470 +CMapObjGroup__CreateOptionalDataPointers 007D7C30 f end=007D7EB0 +CMapObjGroup__CreateDataPointers 007D7F50 f end=007D800F +CMapObjGroup__CreateOccluders 007D81C0 f end=007D82D6 +CMapObjGroup__Create 007D82E0 f end=007D856F +CMapObjGroup__AsyncPostloadCallback 007D8570 f end=007D85D6 diff --git a/profile/3.3.5a-windows-386/symbol/mapobj/func.sym b/profile/3.3.5a-windows-386/symbol/mapobj/func.sym index f1c31ac..e896030 100644 --- a/profile/3.3.5a-windows-386/symbol/mapobj/func.sym +++ b/profile/3.3.5a-windows-386/symbol/mapobj/func.sym @@ -3,3 +3,52 @@ CMapObj__constructor 007B0580 f end=007B05F9 ; CMapObj::CMapObj() CMapObj__Create 007B0CC0 f end=007B0D37 ; CMapObj::Create(char const*) CMapObj__Read 007D80C0 f end=007D81BB ; CMapObj::Read(char const*) CMapObj__Initialize 007AFEE0 f end=007B003C +CMapObj__QueryLiquidSounds 0079BBF0 f end=0079BCC0 +CMapObj__UpdateMaterials 007A8520 f end=007A85D1 +CMapObj__RenderGroupLightmapTex 007A9BF0 f end=007A9D21 +CMapObj__RenderGroupColorTex 007A9D30 f end=007A9ECF +CMapObj__RenderGroup 007ABF50 f end=007AC059 +CMapObj__ExtRender 007AC6A0 f end=007AC9EF +CMapObj__IntRender 007AC9F0 f end=007AD015 +CMapObj__PrepareUpdate 007AD020 f end=007AD1EC +CMapObj__Delete 007AE030 f end=007AE050 +CMapObj__ReadGroup 007AE1A0 f end=007AE1B2 +CMapObj__WaitLoad 007AE1C0 f end=007AE1E5 +CMapObj__isGroupLoaded 007AE4C0 f end=007AE4EA +CMapObj__IsGroupLoading 007AE4F0 f end=007AE51B +CMapObj__GetBounds 007AE520 f end=007AE5D8 +CMapObj__GetBounds 007AE5E0 f end=007AE66A +CMapObj__GetGroupBounds 007AE670 f end=007AE71C +CMapObj__GetGroupBounds 007AE720 f end=007AE7A7 +CMapObj__GetGroupFlags 007AE7B0 f end=007AE7D5 +CMapObj__TestBounds 007AE840 f end=007AE873 +CMapObj__TestGroupBounds 007AE880 f end=007AE8CC +CMapObj__TestConvexVolume 007AEA10 f end=007AEA79 +CMapObj__GetGroup 007AEA80 f end=007AEAAB +CMapObj__WaitLoadGroup 007AEAB0 f end=007AEAE0 +CMapObj__GetGroupName 007AEAE0 f end=007AEB0F +CMapObj__GetGroupInfo 007AEB10 f end=007AEB32 +CMapObj__QueryLighting 007AEB40 f end=007AEB84 +CMapObj__GetDoodadSet 007AEC30 f end=007AECAF +CMapObj__GetTris 007AEF00 f end=007AEFFC +CMapObj__GetTris 007AF0F0 f end=007AF1F2 +CMapObj__Intersect 007AF200 f end=007AF271 +CMapObj__VectorIntersectPortal 007AF280 f end=007AF511 +CMapObj__IsAllLoaded 007AF740 f end=007AF77E +CMapObj__QueryLighting 007AF780 f end=007AF848 +CMapObj__IsAllDrawable 007AF850 f end=007AF8CB +CMapObj__QueryMapObjMinimapGroup 007AFC70 f end=007AFE6E +CMapObj__ClearCache 007B0040 f end=007B0097 +CMapObj__QueryMapObjMinimap 007B00A0 f end=007B015C +CMapObj__Destroy 007B01C0 f end=007B024A +CMapObj__AllocOccluder 007B0250 f end=007B025B +CMapObj__FreeMapObj 007B0260 f end=007B0304 +CMapObj__CreateMaterials 007D72D0 f end=007D730C +CMapObj__CreateDataPointers 007D7470 f end=007D7701 +CMapObj__CreateMaterial 007D7710 f end=007D77A2 +CMapObj__AttenTransVerts 007D78C0 f end=007D7C24 +CMapObj__CreateData 007D7EB0 f end=007D7F4A +CMapObj__AsyncPostloadCallback 007D8050 f end=007D80B6 +CMapObj__ReadGroup 007D85E0 f end=007D872B +GetMinimapQuads 007AF8D0 f end=007AFC70 +GetMinimapQuads 007AFE70 f end=007AFED2 diff --git a/profile/3.3.5a-windows-386/symbol/mapobj/label.sym b/profile/3.3.5a-windows-386/symbol/mapobj/label.sym new file mode 100644 index 0000000..bf1cd20 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/mapobj/label.sym @@ -0,0 +1,3 @@ +CMapObjRenderGroupExterior_ptr 00CFBEC4 l +CMapObjRenderGroupInterior_ptr 00CFBECC l +CMapObj__sMinimapTag 00D1C418 l diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index f9c4528b97f78db5a75a493d9c05b1958c25d23f..c8419517d47ac4cbd3f354b72d9b773d26633e77 100644 GIT binary patch delta 23092 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 VxCtfR)iM0Yf!|wl;o=Le{~vniN8$hg delta 20200 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 Date: Sun, 17 Aug 2025 22:47:41 +0300 Subject: [PATCH 2/2] feat(profile): more functions --- .../ida/batch/import_symbols.idc | 13 +++++++++++++ .../3.3.5a-windows-386/symbol/aabsp/func.sym | 1 + profile/3.3.5a-windows-386/symbol/main.sym | 13 +++++++++++++ .../3.3.5a-windows-386/symbol/map/func.sym | 4 ++++ .../symbol/texture/func.sym | 1 + .../3.3.5a-windows-386/symbol/world/func.sym | 2 ++ .../symbol/worldscene/func.sym | 5 +++++ profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 190863 -> 191351 bytes 8 files changed, 39 insertions(+) diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index ed463f9..49b6b60 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -480,6 +480,7 @@ static import_symbols() { set_name(0x004B62A0, "TextureIsReadyNow"); set_name(0x004B6580, "TextureSetCacheSize"); set_name(0x004B6AE0, "TextureCacheUpdate"); + set_name(0x004B6CB0, "TextureGetGxTex"); set_name(0x004B7220, "TextureAllocMippedImg"); set_name(0x004B7300, "TextureFreeMippedImg@2"); set_name(0x004B78A0, "LoadTgaMips"); @@ -4136,7 +4137,9 @@ static import_symbols() { set_name(0x0077C980, "SBigPowMod"); set_name(0x0077EC80, "World__MapIsDungeon"); set_name(0x0077EC90, "World__SetLoadProgressCallback"); + set_name(0x0077EFF0, "World__Render"); set_name(0x0077F310, "World__Intersect"); + set_name(0x0077FFB0, "World__ObjectTestConvexVolume"); set_name(0x00780240, "World__ObjectUpdate"); set_name(0x00780860, "World__PrepareAreaOfInterest"); set_name(0x00780F50, "World__Initialize"); @@ -4144,9 +4147,15 @@ static import_symbols() { set_name(0x00781500, "World__Preload"); set_name(0x007816F0, "DayNight__Update"); set_name(0x0078F020, "AreaListRegisterLocation"); + set_name(0x0078FB00, "CWorldScene__FrustumXform"); + set_name(0x00791100, "CWorldScene__FrustumSet"); + set_name(0x00795D40, "CWorldScene__LocateViewer3"); + set_name(0x007964A0, "CWorldScene__RenderMapObjDefGroups"); set_name(0x00799730, "CBarrier__Initialize"); set_name(0x007997D0, "CWorldScene__Initialize"); + set_name(0x0079A870, "CWorldScene__Render"); set_name(0x0079B070, "CAaBsp__constructor"); + set_name(0x0079B2C0, "CAaBsp__Clear"); set_name(0x0079B760, "CMapObjGroup__QueryLiquidSounds"); set_name(0x0079B8E0, "Particulate__InitParticles"); set_name(0x0079BBF0, "CMapObj__QueryLiquidSounds"); @@ -4157,6 +4166,8 @@ static import_symbols() { set_name(0x0079F320, "CMap__Destroy"); set_name(0x0079F820, "CPassenger__Disable"); set_name(0x007A0FE0, "CMapEntity__constructor"); + set_name(0x007A4C10, "CMap__TestQueryAdd"); + set_name(0x007A5330, "CMap__GetChunkFacets"); set_name(0x007A8520, "CMapObj__UpdateMaterials"); set_name(0x007A9BF0, "CMapObj__RenderGroupLightmapTex"); set_name(0x007A9D30, "CMapObj__RenderGroupColorTex"); @@ -4209,6 +4220,7 @@ static import_symbols() { set_name(0x007B3DE0, "CMapObjDefGroup__constructor"); set_name(0x007B4350, "CMapObjDef__constructor"); set_name(0x007B5020, "TSList__LinkToHead"); + set_name(0x007B6110, "CMap__PrepareMapObjDefs"); set_name(0x007BD3A0, "CShadowQuery__Initialize"); set_name(0x007BD9F0, "CMap__Preload"); set_name(0x007BF8B0, "CMap__LoadWdt"); @@ -4257,6 +4269,7 @@ static import_symbols() { set_name(0x007CB9D0, "CMapObjGroup__Destroy"); set_name(0x007CBE80, "CMapObjGroup__Clear"); set_name(0x007CC310, "CMap__LoadWdl"); + set_name(0x007D59B0, "CMap__LocateViewerMapObjs"); set_name(0x007D7050, "CMapArea__constructor"); set_name(0x007D7260, "CMapBaseObj__constructor"); set_name(0x007D72D0, "CMapObj__CreateMaterials"); diff --git a/profile/3.3.5a-windows-386/symbol/aabsp/func.sym b/profile/3.3.5a-windows-386/symbol/aabsp/func.sym index e3a030b..853efee 100644 --- a/profile/3.3.5a-windows-386/symbol/aabsp/func.sym +++ b/profile/3.3.5a-windows-386/symbol/aabsp/func.sym @@ -1 +1,2 @@ CAaBsp__constructor 0079B070 f end=0079B0C8 +CAaBsp__Clear 0079B2C0 f end=0079B308 diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index b850c9c..164ded2 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -476,6 +476,7 @@ LoadPredrawnMips 004B5A00 f end=004B5BA2 TextureIsReadyNow 004B62A0 f end=004B62C1 TextureSetCacheSize 004B6580 f end=004B65D5 TextureCacheUpdate 004B6AE0 f end=004B6C47 +TextureGetGxTex 004B6CB0 f end=004B6D82 TextureAllocMippedImg 004B7220 f end=004B72F4 type="MipBits* __stdcall func(PIXEL_FORMAT format, uint32_t width, uint32_t height)" TextureFreeMippedImg 004B7300 f end=004B73D9 type="void func(MipBits* image)" LoadTgaMips 004B78A0 f end=004B7AA0 type="int32_t __usercall func@(char* ext@, char* filename, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, PIXEL_FORMAT* texFormat, int32_t* isOpaque@, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" @@ -4132,7 +4133,9 @@ PowMod 0077C720 f end=0077C97B type="void __stdcall func(BigBuffer* a, BigBuffer SBigPowMod 0077C980 f end=0077C9A4 type="void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)" World__MapIsDungeon 0077EC80 f end=0077EC8B World__SetLoadProgressCallback 0077EC90 f end=0077ECA6 +World__Render 0077EFF0 f end=0077F00C World__Intersect 0077F310 f end=0077F319 +World__ObjectTestConvexVolume 0077FFB0 f end=00780122 World__ObjectUpdate 00780240 f end=007804F5 World__PrepareAreaOfInterest 00780860 f end=00780CCF World__Initialize 00780F50 f end=0078142F @@ -4140,9 +4143,15 @@ World__LoadMap 00781430 f end=007814F2 World__Preload 00781500 f end=007815B7 DayNight__Update 007816F0 f end=007819BC ; DayNight::Update(unsigned int, float, float) AreaListRegisterLocation 0078F020 f end=0078F1EC +CWorldScene__FrustumXform 0078FB00 f end=0078FB20 +CWorldScene__FrustumSet 00791100 f end=00791120 +CWorldScene__LocateViewer3 00795D40 f end=00795F7F +CWorldScene__RenderMapObjDefGroups 007964A0 f end=007968C2 CBarrier__Initialize 00799730 f end=007997C5 CWorldScene__Initialize 007997D0 f end=00799891 +CWorldScene__Render 0079A870 f end=0079ADBB CAaBsp__constructor 0079B070 f end=0079B0C8 +CAaBsp__Clear 0079B2C0 f end=0079B308 CMapObjGroup__QueryLiquidSounds 0079B760 f end=0079B86A Particulate__InitParticles 0079B8E0 f end=0079BA22 CMapObj__QueryLiquidSounds 0079BBF0 f end=0079BCC0 @@ -4153,6 +4162,8 @@ CMap__Initialize 0079E7C0 f end=0079EFD4 CMap__Destroy 0079F320 f end=0079F646 CPassenger__Disable 0079F820 f end=0079F858 CMapEntity__constructor 007A0FE0 f end=007A1098 +CMap__TestQueryAdd 007A4C10 f end=007A4EDD +CMap__GetChunkFacets 007A5330 f end=007A55DC CMapObj__UpdateMaterials 007A8520 f end=007A85D1 CMapObj__RenderGroupLightmapTex 007A9BF0 f end=007A9D21 CMapObj__RenderGroupColorTex 007A9D30 f end=007A9ECF @@ -4205,6 +4216,7 @@ CDetailDoodad__InitializeRenderState 007B2D30 f end=007B304E ; CDetailDoodad::In CMapObjDefGroup__constructor 007B3DE0 f end=007B3EFC CMapObjDef__constructor 007B4350 f end=007B44FE TSList__LinkToHead 007B5020 f end=007B50AB ; 00005410 +CMap__PrepareMapObjDefs 007B6110 f end=007B64ED CShadowQuery__Initialize 007BD3A0 f end=007BD44D CMap__Preload 007BD9F0 f end=007BDA62 CMap__LoadWdt 007BF8B0 f end=007BFCDC ; CMap::LoadWdt() @@ -4253,6 +4265,7 @@ CMapObjGroup__GetTris 007CB7B0 f end=007CB867 CMapObjGroup__Destroy 007CB9D0 f end=007CB9EE CMapObjGroup__Clear 007CBE80 f end=007CBF3F CMap__LoadWdl 007CC310 f end=007CC761 +CMap__LocateViewerMapObjs 007D59B0 f end=007D5CC9 CMapArea__constructor 007D7050 f end=007D711F CMapBaseObj__constructor 007D7260 f end=007D7293 ; CMapBaseObj::CMapBaseObj() CMapObj__CreateMaterials 007D72D0 f end=007D730C diff --git a/profile/3.3.5a-windows-386/symbol/map/func.sym b/profile/3.3.5a-windows-386/symbol/map/func.sym index 1ac311c..4553db4 100644 --- a/profile/3.3.5a-windows-386/symbol/map/func.sym +++ b/profile/3.3.5a-windows-386/symbol/map/func.sym @@ -26,3 +26,7 @@ CMap__AllocArea 007C07C0 f end=007C0827 CMap__AllocMapObjDefGroup 007C0910 f end=007C0977 CMap__FreeBaseObjLink 007C09F0 f end=007C0A8B CMap__LoadWdl 007CC310 f end=007CC761 +CMap__TestQueryAdd 007A4C10 f end=007A4EDD +CMap__GetChunkFacets 007A5330 f end=007A55DC +CMap__PrepareMapObjDefs 007B6110 f end=007B64ED +CMap__LocateViewerMapObjs 007D59B0 f end=007D5CC9 diff --git a/profile/3.3.5a-windows-386/symbol/texture/func.sym b/profile/3.3.5a-windows-386/symbol/texture/func.sym index 0abd295..5711c5f 100644 --- a/profile/3.3.5a-windows-386/symbol/texture/func.sym +++ b/profile/3.3.5a-windows-386/symbol/texture/func.sym @@ -49,3 +49,4 @@ CBLPFile__Lock2 006AFCE0 f end=006AFF06 type="int32_t __thiscall func(CBLPFile* CBLPFile__Open 006AFF10 f end=006AFFCF type="int32_t __thiscall func(CBLPFile* this, char* filename)" CBLPFile__LockChain2 006AFFD0 f end=006B012E type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)" TextureIsReadyNow 004B62A0 f end=004B62C1 +TextureGetGxTex 004B6CB0 f end=004B6D82 diff --git a/profile/3.3.5a-windows-386/symbol/world/func.sym b/profile/3.3.5a-windows-386/symbol/world/func.sym index 2d76811..f2e2fed 100644 --- a/profile/3.3.5a-windows-386/symbol/world/func.sym +++ b/profile/3.3.5a-windows-386/symbol/world/func.sym @@ -6,3 +6,5 @@ World__MapIsDungeon 0077EC80 f end=0077EC8B World__PrepareAreaOfInterest 00780860 f end=00780CCF World__Initialize 00780F50 f end=0078142F World__LoadMap 00781430 f end=007814F2 +World__Render 0077EFF0 f end=0077F00C +World__ObjectTestConvexVolume 0077FFB0 f end=00780122 diff --git a/profile/3.3.5a-windows-386/symbol/worldscene/func.sym b/profile/3.3.5a-windows-386/symbol/worldscene/func.sym index 8f85140..56064c0 100644 --- a/profile/3.3.5a-windows-386/symbol/worldscene/func.sym +++ b/profile/3.3.5a-windows-386/symbol/worldscene/func.sym @@ -1 +1,6 @@ CWorldScene__Initialize 007997D0 f end=00799891 +CWorldScene__FrustumXform 0078FB00 f end=0078FB20 +CWorldScene__FrustumSet 00791100 f end=00791120 +CWorldScene__LocateViewer3 00795D40 f end=00795F7F +CWorldScene__RenderMapObjDefGroups 007964A0 f end=007968C2 +CWorldScene__Render 0079A870 f end=0079ADBB diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index c8419517d47ac4cbd3f354b72d9b773d26633e77..250e28f5c745675e0b88792a8410becd0021b963 100644 GIT binary patch delta 25264 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 delta 24699 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