diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 39917415..8699de82 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -57,6 +57,19 @@ src/000_Second/Actor/ActorUnkEFIK.cpp: .data start:0x020b342c end:0x020b34b0 .bss start:0x020b5ce4 end:0x020b5d30 +src/000_Second/MapObject/MapObjectProfile.cpp: + complete + .text start:0x0209c790 end:0x0209ce08 + .init start:0x020b0928 end:0x020b0950 + .ctor start:0x020b1918 end:0x020b191c + .data start:0x020b34c8 end:0x020b3560 + .bss start:0x020b5d30 end:0x020b6114 + +src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp: + complete + .text start:0x0209ce08 end:0x0209cfe0 + .data start:0x020b3560 end:0x020b3588 + src/000_Second/MapObject/MapObject.cpp: .text start:0x0209cfe0 end:0x0209d700 .data start:0x020b3588 end:0x020b35c8 diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 9b6b9002..22e0dfaf 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -7079,11 +7079,11 @@ from:0x0209c7e8 kind:arm_call to:0x02028c4c module:main from:0x0209c7f8 kind:arm_call to:0x02028c18 module:main from:0x0209c80c kind:arm_call to:0x02028c18 module:main from:0x0209c89c kind:arm_call to:0x0209c790 module:overlay(0) -from:0x0209c8ac kind:load to:0x020b3524 module:overlay(0) +from:0x0209c8ac kind:load to:0x020b351c add:0x8 module:overlay(0) from:0x0209c8b0 kind:load to:0x020af4d4 module:overlay(0) from:0x0209c8c4 kind:arm_call to:0x0209c970 module:overlay(0) from:0x0209c8cc kind:arm_call to:0x0209c7ac module:overlay(0) -from:0x0209c8d8 kind:load to:0x020b3524 module:overlay(0) +from:0x0209c8d8 kind:load to:0x020b351c add:0x8 module:overlay(0) from:0x0209c910 kind:arm_call to:0x0209c6b8 module:overlay(0) from:0x0209c914 kind:arm_call to:0x0209c8ec module:overlay(0) from:0x0209c928 kind:arm_call to:0x020974dc module:overlay(0) @@ -7091,33 +7091,33 @@ from:0x0209c954 kind:load to:0x020b5d34 module:overlay(0) from:0x0209c958 kind:load to:0x020b539c module:overlay(0) from:0x0209c9b4 kind:arm_call to:0x0209c828 module:overlay(0) from:0x0209c9c8 kind:arm_call to:0x0209ce08 module:overlay(0) -from:0x0209c9d4 kind:load to:0x020b3508 module:overlay(0) +from:0x0209c9d4 kind:load to:0x020b3500 add:0x8 module:overlay(0) from:0x0209c9f8 kind:arm_call to:0x0209ce78 module:overlay(0) from:0x0209ca00 kind:arm_call to:0x0209c8b4 module:overlay(0) -from:0x0209ca0c kind:load to:0x020b3508 module:overlay(0) +from:0x0209ca0c kind:load to:0x020b3500 add:0x8 module:overlay(0) from:0x0209ca30 kind:arm_call to:0x0209cfdc module:overlay(0) from:0x0209ca48 kind:arm_call_thumb to:0x020586b4 module:overlay(0) from:0x0209ca50 kind:arm_call to:0x02058ab0 module:overlay(0) from:0x0209ca70 kind:arm_call_thumb to:0x02058914 module:overlay(0) from:0x0209ca84 kind:load to:0x020589e5 module:overlay(0) from:0x0209ca94 kind:arm_call to:0x0209c828 module:overlay(0) -from:0x0209cab4 kind:load to:0x020b34ec module:overlay(0) +from:0x0209cab4 kind:load to:0x020b34e4 add:0x8 module:overlay(0) from:0x0209cad0 kind:arm_call to:0x0209c6b8 module:overlay(0) from:0x0209cae8 kind:load to:0x020b5d34 module:overlay(0) from:0x0209caf4 kind:arm_call to:0x0209c9a8 module:overlay(0) -from:0x0209cb08 kind:load to:0x020b34d0 module:overlay(0) +from:0x0209cb08 kind:load to:0x020b34c8 add:0x8 module:overlay(0) from:0x0209cb2c kind:arm_call_thumb to:0x020589e4 module:overlay(0) from:0x0209cb34 kind:arm_call to:0x0209c9d8 module:overlay(0) -from:0x0209cb40 kind:load to:0x020b34d0 module:overlay(0) +from:0x0209cb40 kind:load to:0x020b34c8 add:0x8 module:overlay(0) from:0x0209cb5c kind:arm_call to:0x0209c828 module:overlay(0) -from:0x0209cb98 kind:load to:0x020b3540 module:overlay(0) +from:0x0209cb98 kind:load to:0x020b3538 add:0x8 module:overlay(0) from:0x0209cc10 kind:arm_call to:0x0209c8b4 module:overlay(0) -from:0x0209cc1c kind:load to:0x020b3540 module:overlay(0) +from:0x0209cc1c kind:load to:0x020b3538 add:0x8 module:overlay(0) from:0x0209cc68 kind:arm_call to:0x0209c8b4 module:overlay(0) from:0x0209cc70 kind:arm_call to:0x02011ff4 module:main -from:0x0209cc7c kind:load to:0x020b3540 module:overlay(0) +from:0x0209cc7c kind:load to:0x020b3538 add:0x8 module:overlay(0) from:0x0209ccc8 kind:arm_call to:0x0209c8b4 module:overlay(0) -from:0x0209ccd4 kind:load to:0x020b3540 module:overlay(0) +from:0x0209ccd4 kind:load to:0x020b3538 add:0x8 module:overlay(0) from:0x0209cd0c kind:arm_call to:0x02011f3c module:main from:0x0209cd1c kind:arm_call to:0x0209ce08 module:overlay(0) from:0x0209cd34 kind:arm_call to:0x0209cfdc module:overlay(0) @@ -7129,18 +7129,18 @@ from:0x0209ce34 kind:arm_call_thumb to:0x02058540 module:overlay(0) from:0x0209ce4c kind:arm_call_thumb to:0x02015538 module:main from:0x0209ce60 kind:arm_call to:0x02015ea8 module:main from:0x0209ce70 kind:load to:0x020b3570 module:overlay(0) -from:0x0209ce74 kind:load to:0x020b3568 module:overlay(0) +from:0x0209ce74 kind:load to:0x020b3560 add:0x8 module:overlay(0) from:0x0209ce88 kind:arm_call_thumb to:0x020589e4 module:overlay(0) from:0x0209ce90 kind:arm_call to:0x0209cfac module:overlay(0) from:0x0209ce98 kind:arm_call_thumb to:0x0201556c module:main from:0x0209cea0 kind:arm_call_thumb to:0x0205866c module:overlay(0) -from:0x0209ceac kind:load to:0x020b3568 module:overlay(0) +from:0x0209ceac kind:load to:0x020b3560 add:0x8 module:overlay(0) from:0x0209cec0 kind:arm_call_thumb to:0x020589e4 module:overlay(0) from:0x0209cec8 kind:arm_call to:0x0209cfac module:overlay(0) from:0x0209ced0 kind:arm_call_thumb to:0x0201556c module:main from:0x0209ced8 kind:arm_call_thumb to:0x0205866c module:overlay(0) from:0x0209cee0 kind:arm_call to:0x02011ff4 module:main -from:0x0209ceec kind:load to:0x020b3568 module:overlay(0) +from:0x0209ceec kind:load to:0x020b3560 add:0x8 module:overlay(0) from:0x0209cf14 kind:arm_call to:0x02034060 module:main from:0x0209cf1c kind:arm_call to:0x02033f7c module:main from:0x0209cf30 kind:arm_call to:0x02034060 module:main diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 2dab51da..9b8560be 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -144,20 +144,20 @@ _ZN19func_ov000_02058390D0Ev kind:function(arm,size=0x1c) addr:0x02058390 _ZN19func_ov000_020583acD2Ev kind:function(arm,size=0x14) addr:0x020583ac func_ov000_020583c0 kind:function(arm,size=0x138) addr:0x020583c0 func_ov000_020584f8 kind:function(arm,size=0x48) addr:0x020584f8 -func_ov000_02058540 kind:function(thumb,size=0x84) addr:0x02058540 +_ZN33MapObjectProfile_Derived2_20_BaseC2EPKcPvS2_S2_ii kind:function(thumb,size=0x84) addr:0x02058540 func_ov000_020585c4 kind:function(thumb,size=0x14) addr:0x020585c4 -func_ov000_020585d8 kind:function(thumb,size=0x48) addr:0x020585d8 -_ZN19func_ov000_02058620D0Ev kind:function(thumb,size=0x4c) addr:0x02058620 -func_ov000_0205866c kind:function(thumb,size=0x48) addr:0x0205866c -func_ov000_020586b4 kind:function(thumb,size=0x23c) addr:0x020586b4 -func_ov000_020588f0 kind:function(thumb,size=0x10) addr:0x020588f0 -func_ov000_02058900 kind:function(thumb,size=0x12) addr:0x02058900 -func_ov000_02058914 kind:function(thumb,size=0xd0) addr:0x02058914 -func_ov000_020589e4 kind:function(thumb,size=0x40) addr:0x020589e4 -_ZN28MapObjectProfile_Derived2_2019func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02058a24 -func_ov000_02058a58 kind:function(arm,size=0x2c) addr:0x02058a58 -_ZN28MapObjectProfile_Derived2_2019func_ov000_02058a84EiPKc kind:function(arm,size=0x2c) addr:0x02058a84 -func_ov000_02058ab0 kind:function(arm,size=0xe8) addr:0x02058ab0 +_ZN33MapObjectProfile_Derived2_20_BaseD1Ev kind:function(thumb,size=0x48) addr:0x020585d8 +_ZN33MapObjectProfile_Derived2_20_BaseD0Ev kind:function(thumb,size=0x4c) addr:0x02058620 +_ZN33MapObjectProfile_Derived2_20_BaseD2Ev kind:function(thumb,size=0x48) addr:0x0205866c +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020586b4Eiiii kind:function(thumb,size=0x23c) addr:0x020586b4 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0Ev kind:function(thumb,size=0x10) addr:0x020588f0 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058900Ev kind:function(thumb,size=0x12) addr:0x02058900 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914Ei kind:function(thumb,size=0xd0) addr:0x02058914 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020589e4Ev kind:function(thumb,size=0x40) addr:0x020589e4 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02058a24 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a58Ev kind:function(arm,size=0x2c) addr:0x02058a58 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a84EiPKc kind:function(arm,size=0x2c) addr:0x02058a84 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058ab0Ev kind:function(arm,size=0xe8) addr:0x02058ab0 func_ov000_02058b98 kind:function(thumb,size=0x1c) addr:0x02058b98 func_ov000_02058bb4 kind:function(arm,size=0x34) addr:0x02058bb4 func_ov000_02058be8 kind:function(arm,size=0x14) addr:0x02058be8 @@ -2494,43 +2494,43 @@ _ZN12ActorUnkEFIKD0Ev kind:function(arm,size=0x28) addr:0x0209c30c _ZN19ActorProfileUnkEFIKD1Ev kind:function(arm,size=0x14) addr:0x0209c334 func_ov000_0209c348 kind:function(arm,size=0x24) addr:0x0209c348 func_ov000_0209c36c kind:function(arm,size=0x3c) addr:0x0209c36c -func_ov000_0209c3a8 kind:function(arm,size=0x40) addr:0x0209c3a8 -func_ov000_0209c3e8 kind:function(arm,size=0x5c) addr:0x0209c3e8 -func_ov000_0209c444 kind:function(arm,size=0x4c) addr:0x0209c444 -func_ov000_0209c490 kind:function(arm,size=0x94) addr:0x0209c490 -func_ov000_0209c524 kind:function(arm,size=0x17c) addr:0x0209c524 +_ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0x0209c3a8 +_ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209c3e8 +_ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209c444 +_ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209c490 +_ZN16MapObjectManager19func_ov000_0209c524Ev kind:function(arm,size=0x17c) addr:0x0209c524 func_ov000_0209c6a0 kind:function(arm,size=0xc) addr:0x0209c6a0 func_ov000_0209c6ac kind:function(arm,size=0xc) addr:0x0209c6ac -func_ov000_0209c6b8 kind:function(arm,size=0x38) addr:0x0209c6b8 -func_ov000_0209c6f0 kind:function(arm,size=0x28) addr:0x0209c6f0 -func_ov000_0209c718 kind:function(arm,size=0x78) addr:0x0209c718 -func_ov000_0209c790 kind:function(arm,size=0x1c) addr:0x0209c790 -func_ov000_0209c7ac kind:function(arm,size=0x1c) addr:0x0209c7ac -func_ov000_0209c7c8 kind:function(arm,size=0x58) addr:0x0209c7c8 -func_ov000_0209c820 kind:function(arm,size=0x8) addr:0x0209c820 -func_ov000_0209c828 kind:function(arm,size=0x8c) addr:0x0209c828 -func_ov000_0209c8b4 kind:function(arm,size=0x28) addr:0x0209c8b4 -func_ov000_0209c8dc kind:function(arm,size=0x8) addr:0x0209c8dc +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6b8Ei kind:function(arm,size=0x38) addr:0x0209c6b8 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6f0Ev kind:function(arm,size=0x28) addr:0x0209c6f0 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209c718 +_ZN12MapObject_2019func_ov000_0209c790EjP16MapObjectProfile kind:function(arm,size=0x1c) addr:0x0209c790 +_ZN12MapObject_2019func_ov000_0209c7acEj kind:function(arm,size=0x1c) addr:0x0209c7ac +_ZN12MapObject_2019func_ov000_0209c7c8Ev kind:function(arm,size=0x58) addr:0x0209c7c8 +_ZN16MapObjectProfile19func_ov000_0209c820Ev kind:function(arm,size=0x8) addr:0x0209c820 +_ZN16MapObjectProfileC2Ej kind:function(arm,size=0x8c) addr:0x0209c828 +_ZN16MapObjectProfileD2Ev kind:function(arm,size=0x28) addr:0x0209c8b4 +_ZN16MapObjectProfile8vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209c8dc _ZN16MapObjectProfile19func_ov000_0209c8e4EP12MapObject_20 kind:function(arm,size=0x8) addr:0x0209c8e4 -func_ov000_0209c8ec kind:function(arm,size=0x70) addr:0x0209c8ec -func_ov000_0209c95c kind:function(arm,size=0x14) addr:0x0209c95c -func_ov000_0209c970 kind:function(arm,size=0x2c) addr:0x0209c970 -func_ov000_0209c99c kind:function(arm,size=0x4) addr:0x0209c99c -func_ov000_0209c9a0 kind:function(arm,size=0x4) addr:0x0209c9a0 -func_ov000_0209c9a4 kind:function(arm,size=0x4) addr:0x0209c9a4 +_ZN16MapObjectProfile19func_ov000_0209c8ecEPS_ kind:function(arm,size=0x70) addr:0x0209c8ec +_ZN16MapObjectProfile19func_ov000_0209c95cEv kind:function(arm,size=0x14) addr:0x0209c95c +_ZN16MapObjectProfile19func_ov000_0209c970Ev kind:function(arm,size=0x2c) addr:0x0209c970 +_ZN16MapObjectProfile8vfunc_08Ev kind:function(arm,size=0x4) addr:0x0209c99c +_ZN16MapObjectProfile8vfunc_0CEv kind:function(arm,size=0x4) addr:0x0209c9a0 +_ZN16MapObjectProfile8vfunc_10Ev kind:function(arm,size=0x4) addr:0x0209c9a4 _ZN25MapObjectProfile_Derived2C2Ejj kind:function(arm,size=0x30) addr:0x0209c9a8 _ZN25MapObjectProfile_Derived2D2Ev kind:function(arm,size=0x38) addr:0x0209c9d8 _ZN25MapObjectProfile_Derived28vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209ca10 _ZN25MapObjectProfile_Derived28vfunc_08Ev kind:function(arm,size=0x40) addr:0x0209ca18 _ZN25MapObjectProfile_Derived28vfunc_0CEv kind:function(arm,size=0x20) addr:0x0209ca58 _ZN25MapObjectProfile_Derived28vfunc_10Ev kind:function(arm,size=0x10) addr:0x0209ca78 -func_ov000_0209ca88 kind:function(arm,size=0x30) addr:0x0209ca88 -func_ov000_0209cab8 kind:function(arm,size=0x8) addr:0x0209cab8 -func_ov000_0209cac0 kind:function(arm,size=0x2c) addr:0x0209cac0 -func_ov000_0209caec kind:function(arm,size=0x20) addr:0x0209caec -func_ov000_0209cb0c kind:function(arm,size=0x38) addr:0x0209cb0c -func_ov000_0209cb44 kind:function(arm,size=0x4) addr:0x0209cb44 -func_ov000_0209cb48 kind:function(arm,size=0x4) addr:0x0209cb48 +_ZN25MapObjectProfile_Derived3C2Ejj kind:function(arm,size=0x30) addr:0x0209ca88 +_ZN25MapObjectProfile_Derived38vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209cab8 +_ZN25MapObjectProfile_Derived38vfunc_08Ev kind:function(arm,size=0x2c) addr:0x0209cac0 +_ZN25MapObjectProfile_Derived4C2Ejj kind:function(arm,size=0x20) addr:0x0209caec +_ZN25MapObjectProfile_Derived4D2Ev kind:function(arm,size=0x38) addr:0x0209cb0c +_ZN25MapObjectProfile_Derived48vfunc_08Ev kind:function(arm,size=0x4) addr:0x0209cb44 +_ZN25MapObjectProfile_Derived48vfunc_0CEv kind:function(arm,size=0x4) addr:0x0209cb48 _ZN25MapObjectProfile_Derived1C2Ejii kind:function(arm,size=0x50) addr:0x0209cb4c _ZN25MapObjectProfile_Derived18vfunc_04Ev kind:function(arm,size=0x18) addr:0x0209cb9c _ZN25MapObjectProfile_Derived18vfunc_1CEi kind:function(arm,size=0x14) addr:0x0209cbb4 @@ -2541,12 +2541,12 @@ _ZN25MapObjectProfile_Derived119func_ov000_0209ccd8Eij kind:function(arm,size=0x _ZN25MapObjectProfile_Derived18vfunc_08Ev kind:function(arm,size=0x1c) addr:0x0209cd60 _ZN25MapObjectProfile_Derived18vfunc_0CEv kind:function(arm,size=0x44) addr:0x0209cd7c _ZN25MapObjectProfile_Derived18vfunc_10Ev kind:function(arm,size=0x48) addr:0x0209cdc0 -func_ov000_0209ce08 kind:function(arm,size=0x70) addr:0x0209ce08 -_ZN19func_ov000_0209ce78D1Ev kind:function(arm,size=0x38) addr:0x0209ce78 -_ZN19func_ov000_0209ceb0D0Ev kind:function(arm,size=0x40) addr:0x0209ceb0 -func_ov000_0209cef0 kind:function(arm,size=0xbc) addr:0x0209cef0 -func_ov000_0209cfac kind:function(arm,size=0x30) addr:0x0209cfac -func_ov000_0209cfdc kind:function(arm,size=0x4) addr:0x0209cfdc +_ZN28MapObjectProfile_Derived2_20C1Ej kind:function(arm,size=0x70) addr:0x0209ce08 +_ZN28MapObjectProfile_Derived2_20D1Ev kind:function(arm,size=0x38) addr:0x0209ce78 +_ZN28MapObjectProfile_Derived2_20D0Ev kind:function(arm,size=0x40) addr:0x0209ceb0 +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cef0Ev kind:function(arm,size=0xbc) addr:0x0209cef0 +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cfacEv kind:function(arm,size=0x30) addr:0x0209cfac +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cfdcEii kind:function(arm,size=0x4) addr:0x0209cfdc _ZN9MapObjectC2Ev kind:function(arm,size=0xb4) addr:0x0209cfe0 _ZN9MapObjectD1Ev kind:function(arm,size=0x4) addr:0x0209d094 _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209d098 @@ -3351,7 +3351,7 @@ __sinit_ActorUnkSWOB.cpp kind:function(arm,size=0x50) addr:0x020b07e8 __sinit_ActorUnkSWTM.cpp kind:function(arm,size=0x50) addr:0x020b0838 __sinit_ActorEventIcon.cpp kind:function(arm,size=0x50) addr:0x020b0888 local __sinit_ActorUnkEFIK.cpp kind:function(arm,size=0x50) addr:0x020b08d8 local -__sinit_ov000_020b0928 kind:function(arm,size=0x28) addr:0x020b0928 +__sinit_MapObjectProfile.cpp kind:function(arm,size=0x28) addr:0x020b0928 local __sinit_MapObjectSwitchStep.cpp kind:function(arm,size=0x5c) addr:0x020b0950 __sinit_MapObjectMiniBlocks.cpp kind:function(arm,size=0x50) addr:0x020b09ac __sinit_ov000_020b09fc kind:function(arm,size=0x9e8) addr:0x020b09fc @@ -3386,7 +3386,7 @@ __sinit_ov000_020b18a0 kind:function(arm,size=0x14) addr:0x020b18a0 .p__sinit_ActorUnkSWTM.cpp kind:data(word) addr:0x020b190c .p__sinit_ActorEventIcon.cpp kind:data(word) addr:0x020b1910 local .p__sinit_ActorUnkEFIK.cpp kind:data(word) addr:0x020b1914 local -.p__sinit_ov000_020b0928 kind:data(word) addr:0x020b1918 +.p__sinit_MapObjectProfile.cpp kind:data(word) addr:0x020b1918 local .p__sinit_MapObjectSwitchStep.cpp kind:data(word) addr:0x020b191c .p__sinit_MapObjectMiniBlocks.cpp kind:data(word) addr:0x020b1920 .p__sinit_ov000_020b09fc kind:data(word) addr:0x020b1924 @@ -3685,15 +3685,15 @@ _ZTV19ActorProfileUnkEFIK kind:data(any) addr:0x020b342c _ZTV12ActorUnkEFIK kind:data(any) addr:0x020b3450 data_ov000_020b34b8 kind:data(any) addr:0x020b34b0 data_ov000_020b34c4 kind:data(any) addr:0x020b34c4 -data_ov000_020b34d0 kind:data(any) addr:0x020b34d0 -data_ov000_020b34ec kind:data(any) addr:0x020b34ec -data_ov000_020b3508 kind:data(any) addr:0x020b3508 -data_ov000_020b3524 kind:data(any) addr:0x020b3524 -data_ov000_020b3540 kind:data(any) addr:0x020b3540 -data_ov000_020b3568 kind:data(any) addr:0x020b3568 -data_ov000_020b3570 kind:data(any) addr:0x020b3570 -data_ov000_020b3578 kind:data(any) addr:0x020b3578 -data_ov000_020b3580 kind:data(any) addr:0x020b3580 +_ZTV25MapObjectProfile_Derived4 kind:data(any) addr:0x020b34c8 +_ZTV25MapObjectProfile_Derived3 kind:data(any) addr:0x020b34e4 +_ZTV25MapObjectProfile_Derived2 kind:data(any) addr:0x020b3500 +_ZTV16MapObjectProfile kind:data(any) addr:0x020b351c +_ZTV25MapObjectProfile_Derived1 kind:data(any) addr:0x020b3538 +_ZTV28MapObjectProfile_Derived2_20 kind:data(any) addr:0x020b3560 +@1608 kind:data(byte[7]) addr:0x020b3570 local +@1626 kind:data(byte[8]) addr:0x020b3578 local +@1627 kind:data(byte[5]) addr:0x020b3580 local _ZTV9MapObject kind:data(any) addr:0x020b3588 data_ov000_020b35d0 kind:data(any) addr:0x020b35c8 data_ov000_020b3630 kind:data(any) addr:0x020b3630 @@ -4044,7 +4044,7 @@ data_ov000_020b5380 kind:bss addr:0x020b5380 data_ov000_020b5388 kind:bss addr:0x020b5388 data_ov000_020b5390 kind:bss addr:0x020b5390 data_ov000_020b5398 kind:bss addr:0x020b5398 -data_ov000_020b539c kind:bss addr:0x020b539c +data_ov000_020b539c_eur kind:bss addr:0x020b539c data_ov000_020b53d0 kind:bss addr:0x020b53d0 _ZGVN15ProfileInstanceI19ActorProfileUnkSWOBE8sProfileE kind:bss addr:0x020b5bfc @10033 kind:bss addr:0x020b5c00 @@ -4059,8 +4059,8 @@ _ZN15ProfileInstanceI21ActorProfileEventIconE8sProfileE kind:bss addr:0x020b5ca8 _ZGVN15ProfileInstanceI19ActorProfileUnkEFIKE8sProfileE kind:bss addr:0x020b5ce4 @10051 kind:bss addr:0x020b5ce8 local _ZN15ProfileInstanceI19ActorProfileUnkEFIKE8sProfileE kind:bss addr:0x020b5cf4 -data_ov000_020b5d30 kind:bss addr:0x020b5d30 -data_ov000_020b5d34 kind:bss addr:0x020b5d34 +_ZGVN33UnkStruct_ov000_020b5d34_InstanceI24UnkStruct_ov000_020b5d34E19data_ov000_020b5d34E kind:bss addr:0x020b5d30 +_ZN33UnkStruct_ov000_020b5d34_InstanceI24UnkStruct_ov000_020b5d34E19data_ov000_020b5d34E kind:bss addr:0x020b5d34 data_ov000_020b5d3c kind:bss addr:0x020b5d3c _ZGVN15ProfileInstanceI26MapObjectProfileSwitchStepE8sProfileE kind:bss addr:0x020b6114 MapObjectSwitchStep_data_020b6118 kind:bss(size=0x8) addr:0x020b6118 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 0fc94f5a..e07d87d1 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -768,20 +768,20 @@ _ZN14UnkFileSystem1D2Ev kind:function(thumb,size=0x2) addr:0x02015528 _ZN14UnkFileSystem18vfunc_0CEv kind:function(thumb,size=0x8) addr:0x0201552c _ZN14UnkFileSystem18vfunc_10Ei kind:function(thumb,size=0x4) addr:0x02015534 _ZN14UnkFileSystem5C1Ev kind:function(thumb,size=0x18) addr:0x02015538 -_ZN14UnkFileSystem5C1EPviih kind:function(thumb,size=0x1c) addr:0x02015550 +_ZN14UnkFileSystem5C1EPKciih kind:function(thumb,size=0x1c) addr:0x02015550 _ZN14UnkFileSystem5D1Ev kind:function(thumb,size=0x1c) addr:0x0201556c _ZN14UnkFileSystem5D0Ev kind:function(thumb,size=0x24) addr:0x02015588 _ZN14UnkFileSystem58vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x020155ac _ZN14UnkFileSystem58vfunc_0CEv kind:function(thumb,size=0x18) addr:0x020155d8 _ZN14UnkFileSystem58vfunc_10Ei kind:function(thumb,size=0x38) addr:0x020155f0 -_ZN14UnkFileSystem4C1EPviii kind:function(thumb,size=0x1c) addr:0x02015628 +_ZN14UnkFileSystem4C1EPKciii kind:function(thumb,size=0x1c) addr:0x02015628 _ZN14UnkFileSystem4D1Ev kind:function(thumb,size=0xc) addr:0x02015644 _ZN14UnkFileSystem4D0Ev kind:function(thumb,size=0x12) addr:0x02015650 _ZN14UnkFileSystem48vfunc_08Ei kind:function(thumb,size=0x26) addr:0x02015664 _ZN14UnkFileSystem3D1Ev kind:function(thumb,size=0xc) addr:0x0201568c _ZN14UnkFileSystem3D0Ev kind:function(thumb,size=0x12) addr:0x02015698 _ZN14UnkFileSystem38vfunc_08Ei kind:function(thumb,size=0x1a) addr:0x020156ac -_ZN14UnkFileSystem2C1EPvi kind:function(thumb,size=0x2c) addr:0x020156c8 +_ZN14UnkFileSystem2C1EPKci kind:function(thumb,size=0x2c) addr:0x020156c8 _ZN14UnkFileSystem2D1Ev kind:function(thumb,size=0x14) addr:0x020156f4 _ZN14UnkFileSystem2D0Ev kind:function(thumb,size=0x1a) addr:0x02015708 _ZN14UnkFileSystem28vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x02015724 diff --git a/config/jp/arm9/overlays/ov000/delinks.txt b/config/jp/arm9/overlays/ov000/delinks.txt index 344306e7..cc076e30 100644 --- a/config/jp/arm9/overlays/ov000/delinks.txt +++ b/config/jp/arm9/overlays/ov000/delinks.txt @@ -56,6 +56,19 @@ src/000_Second/Actor/ActorUnkEFIK.cpp: .data start:0x020b4c2c end:0x020b4cb0 .bss start:0x020b74f4 end:0x020b7540 +src/000_Second/MapObject/MapObjectProfile.cpp: + complete + .text start:0x0209df5c end:0x0209e5cc + .init start:0x020b2138 end:0x020b2160 + .ctor start:0x020b3128 end:0x020b312c + .data start:0x020b4cc8 end:0x020b4d60 + .bss start:0x020b7540 end:0x020b7924 + +src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp: + complete + .text start:0x0209e5cc end:0x0209e7a4 + .data start:0x020b4d60 end:0x020b4d88 + src/000_Second/MapObject/MapObject.cpp: .text start:0x0209e7a4 end:0x0209eec4 .data start:0x020b4d88 end:0x020b4dc8 diff --git a/config/jp/arm9/overlays/ov000/relocs.txt b/config/jp/arm9/overlays/ov000/relocs.txt index 02352231..4da99c6b 100644 --- a/config/jp/arm9/overlays/ov000/relocs.txt +++ b/config/jp/arm9/overlays/ov000/relocs.txt @@ -7080,11 +7080,11 @@ from:0x0209dfb4 kind:arm_call to:0x0202a17c module:main from:0x0209dfc4 kind:arm_call to:0x0202a148 module:main from:0x0209dfd8 kind:arm_call to:0x0202a148 module:main from:0x0209e060 kind:arm_call to:0x0209df5c module:overlay(0) -from:0x0209e070 kind:load to:0x020b4d24 module:overlay(0) +from:0x0209e070 kind:load to:0x020b4d1c add:0x8 module:overlay(0) from:0x0209e074 kind:load to:0x020af4cc module:overlay(0) from:0x0209e088 kind:arm_call to:0x0209e134 module:overlay(0) from:0x0209e090 kind:arm_call to:0x0209df78 module:overlay(0) -from:0x0209e09c kind:load to:0x020b4d24 module:overlay(0) +from:0x0209e09c kind:load to:0x020b4d1c add:0x8 module:overlay(0) from:0x0209e0d4 kind:arm_call to:0x0209de84 module:overlay(0) from:0x0209e0d8 kind:arm_call to:0x0209e0b0 module:overlay(0) from:0x0209e0ec kind:arm_call to:0x02098c90 module:overlay(0) @@ -7092,33 +7092,33 @@ from:0x0209e118 kind:load to:0x020b7544 module:overlay(0) from:0x0209e11c kind:load to:0x020b6ba4 module:overlay(0) from:0x0209e178 kind:arm_call to:0x0209dfec module:overlay(0) from:0x0209e18c kind:arm_call to:0x0209e5cc module:overlay(0) -from:0x0209e198 kind:load to:0x020b4d08 module:overlay(0) +from:0x0209e198 kind:load to:0x020b4d00 add:0x8 module:overlay(0) from:0x0209e1bc kind:arm_call to:0x0209e63c module:overlay(0) from:0x0209e1c4 kind:arm_call to:0x0209e078 module:overlay(0) -from:0x0209e1d0 kind:load to:0x020b4d08 module:overlay(0) +from:0x0209e1d0 kind:load to:0x020b4d00 add:0x8 module:overlay(0) from:0x0209e1f4 kind:arm_call to:0x0209e7a0 module:overlay(0) from:0x0209e20c kind:arm_call_thumb to:0x02059c34 module:overlay(0) from:0x0209e214 kind:arm_call to:0x0205a030 module:overlay(0) from:0x0209e234 kind:arm_call_thumb to:0x02059e94 module:overlay(0) from:0x0209e248 kind:load to:0x02059f65 module:overlay(0) from:0x0209e258 kind:arm_call to:0x0209dfec module:overlay(0) -from:0x0209e278 kind:load to:0x020b4cec module:overlay(0) +from:0x0209e278 kind:load to:0x020b4ce4 add:0x8 module:overlay(0) from:0x0209e294 kind:arm_call to:0x0209de84 module:overlay(0) from:0x0209e2ac kind:load to:0x020b7544 module:overlay(0) from:0x0209e2b8 kind:arm_call to:0x0209e16c module:overlay(0) -from:0x0209e2cc kind:load to:0x020b4cd0 module:overlay(0) +from:0x0209e2cc kind:load to:0x020b4cc8 add:0x8 module:overlay(0) from:0x0209e2f0 kind:arm_call_thumb to:0x02059f64 module:overlay(0) from:0x0209e2f8 kind:arm_call to:0x0209e19c module:overlay(0) -from:0x0209e304 kind:load to:0x020b4cd0 module:overlay(0) +from:0x0209e304 kind:load to:0x020b4cc8 add:0x8 module:overlay(0) from:0x0209e320 kind:arm_call to:0x0209dfec module:overlay(0) -from:0x0209e35c kind:load to:0x020b4d40 module:overlay(0) +from:0x0209e35c kind:load to:0x020b4d38 add:0x8 module:overlay(0) from:0x0209e3d4 kind:arm_call to:0x0209e078 module:overlay(0) -from:0x0209e3e0 kind:load to:0x020b4d40 module:overlay(0) +from:0x0209e3e0 kind:load to:0x020b4d38 add:0x8 module:overlay(0) from:0x0209e42c kind:arm_call to:0x0209e078 module:overlay(0) from:0x0209e434 kind:arm_call to:0x02011ff4 module:main -from:0x0209e440 kind:load to:0x020b4d40 module:overlay(0) +from:0x0209e440 kind:load to:0x020b4d38 add:0x8 module:overlay(0) from:0x0209e48c kind:arm_call to:0x0209e078 module:overlay(0) -from:0x0209e498 kind:load to:0x020b4d40 module:overlay(0) +from:0x0209e498 kind:load to:0x020b4d38 add:0x8 module:overlay(0) from:0x0209e4d0 kind:arm_call to:0x02011f3c module:main from:0x0209e4e0 kind:arm_call to:0x0209e5cc module:overlay(0) from:0x0209e4f8 kind:arm_call to:0x0209e7a0 module:overlay(0) @@ -7130,18 +7130,18 @@ from:0x0209e5f8 kind:arm_call_thumb to:0x02059ac0 module:overlay(0) from:0x0209e610 kind:arm_call_thumb to:0x020154d0 module:main from:0x0209e624 kind:arm_call to:0x02015e40 module:main from:0x0209e634 kind:load to:0x020b4d70 module:overlay(0) -from:0x0209e638 kind:load to:0x020b4d68 module:overlay(0) +from:0x0209e638 kind:load to:0x020b4d60 add:0x8 module:overlay(0) from:0x0209e64c kind:arm_call_thumb to:0x02059f64 module:overlay(0) from:0x0209e654 kind:arm_call to:0x0209e770 module:overlay(0) from:0x0209e65c kind:arm_call_thumb to:0x02015504 module:main from:0x0209e664 kind:arm_call_thumb to:0x02059bec module:overlay(0) -from:0x0209e670 kind:load to:0x020b4d68 module:overlay(0) +from:0x0209e670 kind:load to:0x020b4d60 add:0x8 module:overlay(0) from:0x0209e684 kind:arm_call_thumb to:0x02059f64 module:overlay(0) from:0x0209e68c kind:arm_call to:0x0209e770 module:overlay(0) from:0x0209e694 kind:arm_call_thumb to:0x02015504 module:main from:0x0209e69c kind:arm_call_thumb to:0x02059bec module:overlay(0) from:0x0209e6a4 kind:arm_call to:0x02011ff4 module:main -from:0x0209e6b0 kind:load to:0x020b4d68 module:overlay(0) +from:0x0209e6b0 kind:load to:0x020b4d60 add:0x8 module:overlay(0) from:0x0209e6d8 kind:arm_call to:0x02035590 module:main from:0x0209e6e0 kind:arm_call to:0x020354ac module:main from:0x0209e6f4 kind:arm_call to:0x02035590 module:main diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 363349e5..52c415b6 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -144,20 +144,20 @@ _ZN19func_ov000_02059910D0Ev kind:function(arm,size=0x1c) addr:0x02059910 _ZN19func_ov000_0205992cD2Ev kind:function(arm,size=0x14) addr:0x0205992c func_ov000_02059940 kind:function(arm,size=0x138) addr:0x02059940 func_ov000_02059a78 kind:function(arm,size=0x48) addr:0x02059a78 -func_ov000_02059ac0 kind:function(thumb,size=0x84) addr:0x02059ac0 +_ZN33MapObjectProfile_Derived2_20_BaseC2EPKcPvS2_S2_ii kind:function(thumb,size=0x84) addr:0x02059ac0 func_ov000_02059b44 kind:function(thumb,size=0x14) addr:0x02059b44 -func_ov000_02059b58 kind:function(thumb,size=0x48) addr:0x02059b58 -_ZN19func_ov000_02059ba0D0Ev kind:function(thumb,size=0x4c) addr:0x02059ba0 -func_ov000_02059bec kind:function(thumb,size=0x48) addr:0x02059bec -func_ov000_02059c34 kind:function(thumb,size=0x23c) addr:0x02059c34 -func_ov000_02059e70 kind:function(thumb,size=0x10) addr:0x02059e70 -func_ov000_02059e80 kind:function(thumb,size=0x12) addr:0x02059e80 -func_ov000_02059e94 kind:function(thumb,size=0xd0) addr:0x02059e94 -func_ov000_02059f64 kind:function(thumb,size=0x40) addr:0x02059f64 -_ZN28MapObjectProfile_Derived2_2019func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02059fa4 -func_ov000_02059fd8 kind:function(arm,size=0x2c) addr:0x02059fd8 -_ZN28MapObjectProfile_Derived2_2019func_ov000_02058a84EiPKc kind:function(arm,size=0x2c) addr:0x0205a004 -func_ov000_0205a030 kind:function(arm,size=0xe8) addr:0x0205a030 +_ZN33MapObjectProfile_Derived2_20_BaseD1Ev kind:function(thumb,size=0x48) addr:0x02059b58 +_ZN33MapObjectProfile_Derived2_20_BaseD0Ev kind:function(thumb,size=0x4c) addr:0x02059ba0 +_ZN33MapObjectProfile_Derived2_20_BaseD2Ev kind:function(thumb,size=0x48) addr:0x02059bec +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020586b4Eiiii kind:function(thumb,size=0x23c) addr:0x02059c34 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0Ev kind:function(thumb,size=0x10) addr:0x02059e70 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058900Ev kind:function(thumb,size=0x12) addr:0x02059e80 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914Ei kind:function(thumb,size=0xd0) addr:0x02059e94 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020589e4Ev kind:function(thumb,size=0x40) addr:0x02059f64 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02059fa4 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a58Ev kind:function(arm,size=0x2c) addr:0x02059fd8 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a84EiPKc kind:function(arm,size=0x2c) addr:0x0205a004 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058ab0Ev kind:function(arm,size=0xe8) addr:0x0205a030 func_ov000_0205a118 kind:function(thumb,size=0x1c) addr:0x0205a118 func_ov000_0205a134 kind:function(arm,size=0x34) addr:0x0205a134 func_ov000_0205a168 kind:function(arm,size=0x14) addr:0x0205a168 @@ -2491,42 +2491,42 @@ _ZN12ActorUnkEFIKD0Ev kind:function(arm,size=0x28) addr:0x0209dad8 _ZN19ActorProfileUnkEFIKD1Ev kind:function(arm,size=0x14) addr:0x0209db00 func_ov000_0209db14 kind:function(arm,size=0x24) addr:0x0209db14 func_ov000_0209db38 kind:function(arm,size=0x3c) addr:0x0209db38 -func_ov000_0209db74 kind:function(arm,size=0x40) addr:0x0209db74 -func_ov000_0209dbb4 kind:function(arm,size=0x5c) addr:0x0209dbb4 -func_ov000_0209dc10 kind:function(arm,size=0x4c) addr:0x0209dc10 -func_ov000_0209dc5c kind:function(arm,size=0x94) addr:0x0209dc5c -func_ov000_0209dcf0 kind:function(arm,size=0x17c) addr:0x0209dcf0 +_ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0x0209db74 +_ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209dbb4 +_ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209dc10 +_ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209dc5c +_ZN16MapObjectManager19func_ov000_0209c524Ev kind:function(arm,size=0x17c) addr:0x0209dcf0 func_ov000_0209de6c kind:function(arm,size=0xc) addr:0x0209de6c func_ov000_0209de78 kind:function(arm,size=0xc) addr:0x0209de78 -func_ov000_0209de84 kind:function(arm,size=0x38) addr:0x0209de84 -func_ov000_0209debc kind:function(arm,size=0x28) addr:0x0209debc -func_ov000_0209dee4 kind:function(arm,size=0x78) addr:0x0209dee4 -func_ov000_0209df5c kind:function(arm,size=0x1c) addr:0x0209df5c -func_ov000_0209df78 kind:function(arm,size=0x1c) addr:0x0209df78 -func_ov000_0209df94 kind:function(arm,size=0x58) addr:0x0209df94 -func_ov000_0209dfec kind:function(arm,size=0x8c) addr:0x0209dfec -func_ov000_0209e078 kind:function(arm,size=0x28) addr:0x0209e078 -func_ov000_0209e0a0 kind:function(arm,size=0x8) addr:0x0209e0a0 -func_ov000_0209e0a8 kind:function(arm,size=0x8) addr:0x0209e0a8 -func_ov000_0209e0b0 kind:function(arm,size=0x70) addr:0x0209e0b0 -func_ov000_0209e120 kind:function(arm,size=0x14) addr:0x0209e120 -func_ov000_0209e134 kind:function(arm,size=0x2c) addr:0x0209e134 -func_ov000_0209e160 kind:function(arm,size=0x4) addr:0x0209e160 -func_ov000_0209e164 kind:function(arm,size=0x4) addr:0x0209e164 -func_ov000_0209e168 kind:function(arm,size=0x4) addr:0x0209e168 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6b8Ei kind:function(arm,size=0x38) addr:0x0209de84 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6f0Ev kind:function(arm,size=0x28) addr:0x0209debc +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209dee4 +_ZN12MapObject_2019func_ov000_0209c790EjP16MapObjectProfile kind:function(arm,size=0x1c) addr:0x0209df5c +_ZN12MapObject_2019func_ov000_0209c7acEj kind:function(arm,size=0x1c) addr:0x0209df78 +_ZN12MapObject_2019func_ov000_0209c7c8Ev kind:function(arm,size=0x58) addr:0x0209df94 +_ZN16MapObjectProfileC2Ej kind:function(arm,size=0x8c) addr:0x0209dfec +_ZN16MapObjectProfileD2Ev kind:function(arm,size=0x28) addr:0x0209e078 +_ZN16MapObjectProfile8vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209e0a0 +_ZN16MapObjectProfile19func_ov000_0209c8e4EP12MapObject_20 kind:function(arm,size=0x8) addr:0x0209e0a8 +_ZN16MapObjectProfile19func_ov000_0209c8ecEPS_ kind:function(arm,size=0x70) addr:0x0209e0b0 +_ZN16MapObjectProfile19func_ov000_0209c95cEv kind:function(arm,size=0x14) addr:0x0209e120 +_ZN16MapObjectProfile19func_ov000_0209c970Ev kind:function(arm,size=0x2c) addr:0x0209e134 +_ZN16MapObjectProfile8vfunc_08Ev kind:function(arm,size=0x4) addr:0x0209e160 +_ZN16MapObjectProfile8vfunc_0CEv kind:function(arm,size=0x4) addr:0x0209e164 +_ZN16MapObjectProfile8vfunc_10Ev kind:function(arm,size=0x4) addr:0x0209e168 _ZN25MapObjectProfile_Derived2C2Ejj kind:function(arm,size=0x30) addr:0x0209e16c _ZN25MapObjectProfile_Derived2D2Ev kind:function(arm,size=0x38) addr:0x0209e19c _ZN25MapObjectProfile_Derived28vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209e1d4 _ZN25MapObjectProfile_Derived28vfunc_08Ev kind:function(arm,size=0x40) addr:0x0209e1dc _ZN25MapObjectProfile_Derived28vfunc_0CEv kind:function(arm,size=0x20) addr:0x0209e21c _ZN25MapObjectProfile_Derived28vfunc_10Ev kind:function(arm,size=0x10) addr:0x0209e23c -func_ov000_0209e24c kind:function(arm,size=0x30) addr:0x0209e24c -func_ov000_0209e27c kind:function(arm,size=0x8) addr:0x0209e27c -func_ov000_0209e284 kind:function(arm,size=0x2c) addr:0x0209e284 -func_ov000_0209e2b0 kind:function(arm,size=0x20) addr:0x0209e2b0 -func_ov000_0209e2d0 kind:function(arm,size=0x38) addr:0x0209e2d0 -func_ov000_0209e308 kind:function(arm,size=0x4) addr:0x0209e308 -func_ov000_0209e30c kind:function(arm,size=0x4) addr:0x0209e30c +_ZN25MapObjectProfile_Derived3C2Ejj kind:function(arm,size=0x30) addr:0x0209e24c +_ZN25MapObjectProfile_Derived38vfunc_04Ev kind:function(arm,size=0x8) addr:0x0209e27c +_ZN25MapObjectProfile_Derived38vfunc_08Ev kind:function(arm,size=0x2c) addr:0x0209e284 +_ZN25MapObjectProfile_Derived4C2Ejj kind:function(arm,size=0x20) addr:0x0209e2b0 +_ZN25MapObjectProfile_Derived4D2Ev kind:function(arm,size=0x38) addr:0x0209e2d0 +_ZN25MapObjectProfile_Derived48vfunc_08Ev kind:function(arm,size=0x4) addr:0x0209e308 +_ZN25MapObjectProfile_Derived48vfunc_0CEv kind:function(arm,size=0x4) addr:0x0209e30c _ZN25MapObjectProfile_Derived1C2Ejii kind:function(arm,size=0x50) addr:0x0209e310 _ZN25MapObjectProfile_Derived18vfunc_04Ev kind:function(arm,size=0x18) addr:0x0209e360 _ZN25MapObjectProfile_Derived18vfunc_1CEi kind:function(arm,size=0x14) addr:0x0209e378 @@ -2537,12 +2537,12 @@ _ZN25MapObjectProfile_Derived119func_ov000_0209ccd8Eij kind:function(arm,size=0x _ZN25MapObjectProfile_Derived18vfunc_08Ev kind:function(arm,size=0x1c) addr:0x0209e524 _ZN25MapObjectProfile_Derived18vfunc_0CEv kind:function(arm,size=0x44) addr:0x0209e540 _ZN25MapObjectProfile_Derived18vfunc_10Ev kind:function(arm,size=0x48) addr:0x0209e584 -func_ov000_0209e5cc kind:function(arm,size=0x70) addr:0x0209e5cc -_ZN19func_ov000_0209e63cD1Ev kind:function(arm,size=0x38) addr:0x0209e63c -_ZN19func_ov000_0209e674D0Ev kind:function(arm,size=0x40) addr:0x0209e674 -func_ov000_0209e6b4 kind:function(arm,size=0xbc) addr:0x0209e6b4 -func_ov000_0209e770 kind:function(arm,size=0x30) addr:0x0209e770 -func_ov000_0209e7a0 kind:function(arm,size=0x4) addr:0x0209e7a0 +_ZN28MapObjectProfile_Derived2_20C1Ej kind:function(arm,size=0x70) addr:0x0209e5cc +_ZN28MapObjectProfile_Derived2_20D1Ev kind:function(arm,size=0x38) addr:0x0209e63c +_ZN28MapObjectProfile_Derived2_20D0Ev kind:function(arm,size=0x40) addr:0x0209e674 +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cef0Ev kind:function(arm,size=0xbc) addr:0x0209e6b4 +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cfacEv kind:function(arm,size=0x30) addr:0x0209e770 +_ZN28MapObjectProfile_Derived2_2019func_ov000_0209cfdcEii kind:function(arm,size=0x4) addr:0x0209e7a0 _ZN9MapObjectC2Ev kind:function(arm,size=0xb4) addr:0x0209e7a4 _ZN9MapObjectD1Ev kind:function(arm,size=0x4) addr:0x0209e858 _ZN9MapObjectD0Ev kind:function(arm,size=0x14) addr:0x0209e85c @@ -3257,7 +3257,7 @@ data_ov000_020af4ac kind:data(any) addr:0x020af4ac data_ov000_020af4b0 kind:data(any) addr:0x020af4b0 data_ov000_020af4b4 kind:data(any) addr:0x020af4b4 data_ov000_020aed1c kind:data(any) addr:0x020af4c4 -data_ov000_020af4cc kind:data(any) addr:0x020af4cc +data_ov000_020af4d4 kind:data(any) addr:0x020af4cc data_ov000_020af4d0 kind:data(any) addr:0x020af4d0 data_ov000_020af4e4 kind:data(any) addr:0x020af4e4 data_ov000_020af550 kind:data(byte[7]) addr:0x020af548 @@ -3351,7 +3351,7 @@ __sinit_ActorUnkSWOB.cpp kind:function(arm,size=0x50) addr:0x020b1ff8 __sinit_ActorUnkSWTM.cpp kind:function(arm,size=0x50) addr:0x020b2048 __sinit_ActorEventIcon.cpp kind:function(arm,size=0x50) addr:0x020b2098 local __sinit_ActorUnkEFIK.cpp kind:function(arm,size=0x50) addr:0x020b20e8 local -__sinit_ov000_020b2138 kind:function(arm,size=0x28) addr:0x020b2138 +__sinit_MapObjectProfile.cpp kind:function(arm,size=0x28) addr:0x020b2138 local __sinit_MapObjectSwitchStep.cpp kind:function(arm,size=0x5c) addr:0x020b2160 __sinit_MapObjectMiniBlocks.cpp kind:function(arm,size=0x50) addr:0x020b21bc __sinit_ov000_020b220c kind:function(arm,size=0x9e8) addr:0x020b220c @@ -3386,7 +3386,7 @@ __sinit_ov000_020b30b0 kind:function(arm,size=0x14) addr:0x020b30b0 .p__sinit_ActorUnkSWTM.cpp kind:data(word) addr:0x020b311c .p__sinit_ActorEventIcon.cpp kind:data(word) addr:0x020b3120 local .p__sinit_ActorUnkEFIK.cpp kind:data(word) addr:0x020b3124 local -.p__sinit_ov000_020b2138 kind:data(word) addr:0x020b3128 +.p__sinit_MapObjectProfile.cpp kind:data(word) addr:0x020b3128 local .p__sinit_MapObjectSwitchStep.cpp kind:data(word) addr:0x020b312c .p__sinit_MapObjectMiniBlocks.cpp kind:data(word) addr:0x020b3130 .p__sinit_ov000_020b220c kind:data(word) addr:0x020b3134 @@ -3685,15 +3685,15 @@ _ZTV19ActorProfileUnkEFIK kind:data(any) addr:0x020b4c2c _ZTV12ActorUnkEFIK kind:data(any) addr:0x020b4c50 data_ov000_020b4cb8 kind:data(any) addr:0x020b4cb0 data_ov000_020b4cc4 kind:data(any) addr:0x020b4cc4 -data_ov000_020b4cd0 kind:data(any) addr:0x020b4cd0 -data_ov000_020b4cec kind:data(any) addr:0x020b4cec -data_ov000_020b4d08 kind:data(any) addr:0x020b4d08 -data_ov000_020b4d24 kind:data(any) addr:0x020b4d24 -data_ov000_020b4d40 kind:data(any) addr:0x020b4d40 -data_ov000_020b4d68 kind:data(any) addr:0x020b4d68 -data_ov000_020b4d70 kind:data(any) addr:0x020b4d70 -data_ov000_020b4d78 kind:data(any) addr:0x020b4d78 -data_ov000_020b4d80 kind:data(any) addr:0x020b4d80 +_ZTV25MapObjectProfile_Derived4 kind:data(any) addr:0x020b4cc8 +_ZTV25MapObjectProfile_Derived3 kind:data(any) addr:0x020b4ce4 +_ZTV25MapObjectProfile_Derived2 kind:data(any) addr:0x020b4d00 +_ZTV16MapObjectProfile kind:data(any) addr:0x020b4d1c +_ZTV25MapObjectProfile_Derived1 kind:data(any) addr:0x020b4d38 +_ZTV28MapObjectProfile_Derived2_20 kind:data(any) addr:0x020b4d60 +@1608 kind:data(byte[7]) addr:0x020b4d70 local +@1626 kind:data(byte[8]) addr:0x020b4d78 local +@1627 kind:data(byte[5]) addr:0x020b4d80 local _ZTV9MapObject kind:data(any) addr:0x020b4d88 data_ov000_020b4dd0 kind:data(any) addr:0x020b4dc8 data_ov000_020b4e30 kind:data(any) addr:0x020b4e30 @@ -4044,7 +4044,7 @@ data_ov000_020b6b88 kind:bss addr:0x020b6b88 data_ov000_020b6b90 kind:bss addr:0x020b6b90 data_ov000_020b6b98 kind:bss addr:0x020b6b98 data_ov000_020b6ba0 kind:bss addr:0x020b6ba0 -data_ov000_020b6ba4 kind:bss addr:0x020b6ba4 +data_ov000_020b539c_eur kind:bss addr:0x020b6ba4 data_ov000_020b6bd8 kind:bss addr:0x020b6bd8 _ZGVN15ProfileInstanceI19ActorProfileUnkSWOBE8sProfileE kind:bss addr:0x020b740c @30032 kind:bss addr:0x020b7410 @@ -4059,9 +4059,9 @@ _ZN15ProfileInstanceI21ActorProfileEventIconE8sProfileE kind:bss addr:0x020b74b8 _ZGVN15ProfileInstanceI19ActorProfileUnkEFIKE8sProfileE kind:bss addr:0x020b74f4 @30050 kind:bss addr:0x020b74f8 local _ZN15ProfileInstanceI19ActorProfileUnkEFIKE8sProfileE kind:bss addr:0x020b7504 -data_ov000_020b7540 kind:bss addr:0x020b7540 -data_ov000_020b7544 kind:bss addr:0x020b7544 -data_ov000_020b754c kind:bss addr:0x020b754c +_ZGVN33UnkStruct_ov000_020b5d34_InstanceI24UnkStruct_ov000_020b5d34E19data_ov000_020b5d34E kind:bss addr:0x020b7540 +_ZN33UnkStruct_ov000_020b5d34_InstanceI24UnkStruct_ov000_020b5d34E19data_ov000_020b5d34E kind:bss addr:0x020b7544 +data_ov000_020b5d3c kind:bss addr:0x020b754c _ZGVN15ProfileInstanceI26MapObjectProfileSwitchStepE8sProfileE kind:bss addr:0x020b7924 MapObjectSwitchStep_data_020b6118 kind:bss(size=0x8) addr:0x020b7928 @1056 kind:bss addr:0x020b7934 local diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index c37328a2..325b9dfd 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -750,7 +750,7 @@ func_020152d0 kind:function(arm,size=0x10) addr:0x020152d0 _ZN18SomeSaveFileStructC1Ei kind:function(arm,size=0x38) addr:0x020152e0 func_02015318 kind:function(arm,size=0x24) addr:0x02015318 _ZN18SomeSaveFileStructD1Ev kind:function(arm,size=0x20) addr:0x0201533c -func_0201535c kind:function(arm,size=0x20) addr:0x0201535c +_ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x0201535c func_0201537c kind:function(arm,size=0x18) addr:0x0201537c func_02015394 kind:function(thumb,size=0x12) addr:0x02015394 _ZN10UnkSystem313func_02015410EPKci kind:function(thumb,size=0xc) addr:0x020153a8 @@ -768,20 +768,20 @@ _ZN14UnkFileSystem1D2Ev kind:function(thumb,size=0x2) addr:0x020154c0 _ZN14UnkFileSystem18vfunc_0CEv kind:function(thumb,size=0x8) addr:0x020154c4 _ZN14UnkFileSystem18vfunc_10Ei kind:function(thumb,size=0x4) addr:0x020154cc _ZN14UnkFileSystem5C1Ev kind:function(thumb,size=0x18) addr:0x020154d0 -_ZN14UnkFileSystem5C1EPviih kind:function(thumb,size=0x1c) addr:0x020154e8 +_ZN14UnkFileSystem5C1EPKciih kind:function(thumb,size=0x1c) addr:0x020154e8 _ZN14UnkFileSystem5D1Ev kind:function(thumb,size=0x1c) addr:0x02015504 _ZN14UnkFileSystem5D0Ev kind:function(thumb,size=0x24) addr:0x02015520 _ZN14UnkFileSystem58vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x02015544 _ZN14UnkFileSystem58vfunc_0CEv kind:function(thumb,size=0x18) addr:0x02015570 _ZN14UnkFileSystem58vfunc_10Ei kind:function(thumb,size=0x38) addr:0x02015588 -_ZN14UnkFileSystem4C1EPviii kind:function(thumb,size=0x1c) addr:0x020155c0 +_ZN14UnkFileSystem4C1EPKciii kind:function(thumb,size=0x1c) addr:0x020155c0 _ZN14UnkFileSystem4D1Ev kind:function(thumb,size=0xc) addr:0x020155dc _ZN14UnkFileSystem4D0Ev kind:function(thumb,size=0x12) addr:0x020155e8 _ZN14UnkFileSystem48vfunc_08Ei kind:function(thumb,size=0x26) addr:0x020155fc _ZN14UnkFileSystem3D1Ev kind:function(thumb,size=0xc) addr:0x02015624 _ZN14UnkFileSystem3D0Ev kind:function(thumb,size=0x12) addr:0x02015630 _ZN14UnkFileSystem38vfunc_08Ei kind:function(thumb,size=0x1a) addr:0x02015644 -_ZN14UnkFileSystem2C1EPvi kind:function(thumb,size=0x2c) addr:0x02015660 +_ZN14UnkFileSystem2C1EPKci kind:function(thumb,size=0x2c) addr:0x02015660 _ZN14UnkFileSystem2D1Ev kind:function(thumb,size=0x14) addr:0x0201568c _ZN14UnkFileSystem2D0Ev kind:function(thumb,size=0x1a) addr:0x020156a0 _ZN14UnkFileSystem28vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x020156bc @@ -800,7 +800,7 @@ func_02015bb4 kind:function(arm,size=0x68) addr:0x02015bb4 func_02015c1c kind:function(arm,size=0x94) addr:0x02015c1c func_02015cb0 kind:function(arm,size=0xd4) addr:0x02015cb0 func_02015d84 kind:function(arm,size=0xbc) addr:0x02015d84 -func_02015e40 kind:function(arm,size=0x50) addr:0x02015e40 +func_02015ea8 kind:function(arm,size=0x50) addr:0x02015e40 func_02015e90 kind:function(arm,size=0x7c) addr:0x02015e90 func_02015f0c kind:function(arm,size=0x90) addr:0x02015f0c func_02015f9c kind:function(arm,size=0x24) addr:0x02015f9c diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 0e28fbf0..05e5b3d8 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -242,4 +242,4 @@ public: Actor_c4_Base(¶m1->mRef, 0) {} }; -extern UnkStruct_ov000_020b539c data_ov000_020b539c; +extern UnkStruct_ov000_020b539c data_ov000_020b539c_eur; diff --git a/include/Map/MapObjectId.hpp b/include/Map/MapObjectId.hpp index ed0f5ec4..980085e0 100644 --- a/include/Map/MapObjectId.hpp +++ b/include/Map/MapObjectId.hpp @@ -9,3 +9,11 @@ enum MapObjectId_ { #include "Map/MapObjectTable.inl" #undef DEFINE_MAP_OBJECT_TYPE }; + +typedef u32 MapObjectIndex; +enum MapObjectIndex_ { +#define DEFINE_MAP_OBJECT_TYPE(id, name) MapObjectIndex_##name, +#include "Map/MapObjectTable.inl" +#undef DEFINE_MAP_OBJECT_TYPE + MapObjectIndex_Max, +}; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index f7bfffba..2189686a 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -94,18 +94,22 @@ public: class MapObject_20 { public: - /* 00 */ u16 mUnk_00; - /* 02 */ u16 mUnk_02; - /* 04 */ unk32 mUnk_04; + /* 00 */ u16 mUnk_00[4]; /* 08 */ u8 mUnk_08[2]; /* 0A */ u16 mUnk_0A[2]; /* 0E */ unk16 mUnk_0E; /* 10 */ unk32 mUnk_10; /* 14 */ s16 mUnk_14; - /* 16 */ unk16 mUnk_16; + /* 16 */ unk8 mUnk_16; + /* 16 */ unk8 mUnk_17; /* 18 */ MapObject_20() {} + + void func_ov000_0209c7c8(); + + static void func_ov000_0209c790(MapObjectId mapObjId, MapObjectProfile *pProfile); + static void func_ov000_0209c7ac(MapObjectId mapObjId); }; class MapObject : public SysObject { diff --git a/include/MapObject/MapObjectManager.hpp b/include/MapObject/MapObjectManager.hpp index 5a29fe23..e5cd4c99 100644 --- a/include/MapObject/MapObjectManager.hpp +++ b/include/MapObject/MapObjectManager.hpp @@ -24,6 +24,12 @@ public: MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, void *); MapObject *func_01fff498(unk32 param1, unk32 param2); + + void func_ov000_0209c3a8(); + void func_ov000_0209c3e8(); + void func_ov000_0209c444(); + + static void func_ov000_0209c490(); }; extern MapObjectManager *gpMapObjManager; diff --git a/include/MapObject/MapObjectProfile.hpp b/include/MapObject/MapObjectProfile.hpp index 7849a0da..a9854c51 100644 --- a/include/MapObject/MapObjectProfile.hpp +++ b/include/MapObject/MapObjectProfile.hpp @@ -1,6 +1,7 @@ #pragma once #include "Map/MapObjectId.hpp" +#include "MapObject/MapObjectProfile_Derived2_20.hpp" #include "Physics/Cylinder.hpp" #include "System/SysNew.hpp" #include "Unknown/Common.hpp" @@ -10,6 +11,7 @@ class MapObject; class MapObject_20; +class MapObjectProfile_Derived2_20; class MapObjectProfile : public SysObject { public: @@ -20,7 +22,7 @@ public: /* 08 */ unk32 mUnk_08; /* 0C */ unk16 mUnk_0C; /* 0E */ unk8 mUnk_0E; - /* 0F */ unk8 mUnk_0F; + /* 0F */ u8 mUnk_0F; /* 10 */ MapObjectId mMapObjId; /* 14 */ unk32 mUnk_14; /* 18 */ unk32 mUnk_18; @@ -34,30 +36,24 @@ public: // data_ov000_020b3524 /* 00 */ virtual MapObject *Create() = 0; - /* 04 */ virtual void vfunc_04(); + /* 04 */ virtual MapObjectProfile_Derived2_20 *vfunc_04(); /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); /* 14 */ unk32 func_ov000_0209c8e4(MapObject_20 *param1); -}; + void func_ov000_0209c95c(); + void func_ov000_0209c970(); -class MapObjectProfile_Derived2_20; - -class MapObjectProfile_Derived1_20 { -public: - /* 00 */ MapObjectProfile_Derived2_20 *mUnk_00; - - MapObjectProfile_Derived1_20() { - this->mUnk_00 = NULL; - } + static unk32 func_ov000_0209c820(); + static void func_ov000_0209c8ec(MapObjectProfile *thisx); }; class MapObjectProfile_Derived1 : public MapObjectProfile { public: /* 00 (base) */ - /* 20 */ MapObjectProfile_Derived1_20 mUnk_20[16]; + /* 20 */ MapObjectProfile_Derived2_20 *mUnk_20[16]; /* 60 */ unk32 mUnk_60; /* 64 */ unk16 mUnk_64; /* 66 */ unk16 mUnk_66; @@ -66,7 +62,7 @@ public: MapObjectProfile_Derived1(MapObjectId mapObjId, unk32 param2, unk32 param3); // func_ov000_0209cb4c // data_ov000_020b3540 - /* 04 */ virtual void vfunc_04(); + /* 04 */ virtual MapObjectProfile_Derived2_20 *vfunc_04(); /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); @@ -76,105 +72,6 @@ public: void func_ov000_0209ccd8(unk32 param1, u32 param2); }; -class MapObjectProfile_Derived2_20_Base_18 { -public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ - - MapObjectProfile_Derived2_20_Base_18(); // func_02016620 -}; - -class MapObjectProfile_Derived2_20_Base_20 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ void *mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ - - MapObjectProfile_Derived2_20_Base_20(unk32 param1, unk32 param2, unk32 param3, unk32 param4, - unk32 param5); // func_020153fc -}; - -class MapObjectProfile_Derived2_20_Base_50 { -public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ u8 mUnk_08; - /* 08 */ u8 mUnk_09; - /* 08 */ u8 mUnk_0A; - /* 08 */ u8 mUnk_0B; - /* 0C */ unk8 mUnk_0C; - /* 0C */ unk8 mUnk_0D; - /* 0C */ u16 mUnk_0E; - /* 10 */ - - MapObjectProfile_Derived2_20_Base_50(); - ~MapObjectProfile_Derived2_20_Base_50(); -}; - -class MapObjectProfile_Derived2_20_Base_54 { -public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ unk32 mUnk_0C; - /* 10 */ - - MapObjectProfile_Derived2_20_Base_54(); - ~MapObjectProfile_Derived2_20_Base_54(); -}; - -class MapObjectProfile_Derived2_20_Base { -public: - /* 00 (vtable) */ - /* 04 */ const char *mUnk_04; - /* 08 */ void *mUnk_08; - /* 0C */ void *mUnk_0C; - /* 10 */ void *mUnk_10; - /* 14 */ unk8 mUnk_14; // bool? - /* 15 */ unk8 mUnk_15; // bool? - /* 16 */ unk8 mUnk_16; // bool? - /* 17 */ unk8 mUnk_17; // pad? - /* 18 */ MapObjectProfile_Derived2_20_Base_18 mUnk_18; - /* 20 */ MapObjectProfile_Derived2_20_Base_20 mUnk_20; - /* 2C */ UnkFileSystem3 mUnk_2C; - /* 3C */ UnkFileSystem5 mUnk_3C; - /* 50 */ MapObjectProfile_Derived2_20_Base_50 *mUnk_50; - /* 54 */ MapObjectProfile_Derived2_20_Base_54 mUnk_54[4]; - /* 94 */ - - MapObjectProfile_Derived2_20_Base(const char *directory, void *param2, void *param3, void *param4, unk32 param5, - unk32 param6); // func_ov000_02058540 - - // data_ov000_020b1b14 - /* 00 */ virtual ~MapObjectProfile_Derived2_20_Base(); - /* 08 */ -}; - -class MapObjectProfile_Derived2_20 : public MapObjectProfile_Derived2_20_Base { -public: - /* 00 (base) */ - /* 94 */ unk16 mUnk_94; - /* 96 */ unk16 mUnk_96; - /* 98 */ unk16 mUnk_98; - /* 9A */ unk16 mUnk_9A; - /* 9C */ UnkFileSystem5 mUnk_9C; - /* B0 */ unk8 mUnk_B0; // bool? - /* B1 */ unk8 mUnk_B1; // bool? - /* B2 */ unk8 mUnk_B2; // pad? - /* B3 */ unk8 mUnk_B3; // pad? - /* B4 */ - - MapObjectProfile_Derived2_20(MapObjectId mapObjId2); // func_ov000_0209ce08 - - // data_ov000_020b3568 - /* 00 */ virtual ~MapObjectProfile_Derived2_20() override; - - unk32 func_ov000_02058a24(); - unk32 func_ov000_02058a84(unk32 param1, const char *param2); -}; - class MapObjectProfile_Derived2 : public MapObjectProfile { public: /* 00 (base) */ @@ -185,10 +82,36 @@ public: ~MapObjectProfile_Derived2(); // data_ov000_020b3508 - /* 04 */ virtual void vfunc_04() override; + /* 04 */ virtual MapObjectProfile_Derived2_20 *vfunc_04() override; /* 08 */ virtual void vfunc_08() override; /* 0C */ virtual void vfunc_0C() override; /* 10 */ virtual void vfunc_10() override; }; +class MapObjectProfile_Derived3 : public MapObjectProfile { +public: + /* 00 (base) */ + /* 20 */ MapObjectProfile_Derived2_20 *mUnk_20; + /* 24 */ + + MapObjectProfile_Derived3(MapObjectId mapObjId1, MapObjectId mapObjId2); // func_ov000_0209ca88 + ~MapObjectProfile_Derived3() {} + + // data_ov000_020b34ec + /* 04 */ virtual MapObjectProfile_Derived2_20 *vfunc_04() override; + /* 08 */ virtual void vfunc_08() override; +}; + +class MapObjectProfile_Derived4 : public MapObjectProfile_Derived2 { + /* 00 (base) */ + /* D4 */ + + MapObjectProfile_Derived4(MapObjectId mapObjId1, MapObjectId mapObjId2); // func_ov000_0209c9a8 + ~MapObjectProfile_Derived4(); + + // data_ov000_020b34d0 + /* 08 */ virtual void vfunc_08() override; + /* 0C */ virtual void vfunc_0C() override; +}; + typedef MapObjectProfile *(*GetMapObjectProfile)(); diff --git a/include/MapObject/MapObjectProfile_Derived2_20.hpp b/include/MapObject/MapObjectProfile_Derived2_20.hpp new file mode 100644 index 00000000..816032e0 --- /dev/null +++ b/include/MapObject/MapObjectProfile_Derived2_20.hpp @@ -0,0 +1,116 @@ +#pragma once + +#include "Map/MapObjectId.hpp" +#include "Unknown/Common.hpp" +#include "types.h" + +class MapObjectProfile_Derived2_20_Base_18 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ + + MapObjectProfile_Derived2_20_Base_18(); // func_02016620 +}; + +class MapObjectProfile_Derived2_20_Base_20 { +public: + /* 00 */ void *mUnk_00; + /* 04 */ void *mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ + + MapObjectProfile_Derived2_20_Base_20(unk32 param1, unk32 param2, unk32 param3, unk32 param4, + unk32 param5); // func_020153fc +}; + +class MapObjectProfile_Derived2_20_Base_50 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ u8 mUnk_08; + /* 08 */ u8 mUnk_09; + /* 08 */ u8 mUnk_0A; + /* 08 */ u8 mUnk_0B; + /* 0C */ unk8 mUnk_0C; + /* 0C */ unk8 mUnk_0D; + /* 0C */ u16 mUnk_0E; + /* 10 */ + + MapObjectProfile_Derived2_20_Base_50(); + ~MapObjectProfile_Derived2_20_Base_50(); +}; + +class MapObjectProfile_Derived2_20_Base_54 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ + + MapObjectProfile_Derived2_20_Base_54(); + ~MapObjectProfile_Derived2_20_Base_54(); +}; + +class MapObjectProfile_Derived2_20_Base { +public: + /* 00 (vtable) */ + /* 04 */ const char *mUnk_04; + /* 08 */ const char *mUnk_08; + /* 0C */ void *mUnk_0C; + /* 10 */ void *mUnk_10; + /* 14 */ unk8 mUnk_14; // bool? + /* 15 */ unk8 mUnk_15; // bool? + /* 16 */ unk8 mUnk_16; // bool? + /* 17 */ unk8 mUnk_17; // pad? + /* 18 */ MapObjectProfile_Derived2_20_Base_18 mUnk_18; + /* 20 */ MapObjectProfile_Derived2_20_Base_20 mUnk_20; + /* 2C */ UnkFileSystem3 mUnk_2C; + /* 3C */ UnkFileSystem5 mUnk_3C; + /* 50 */ MapObjectProfile_Derived2_20_Base_50 *mUnk_50; + /* 54 */ MapObjectProfile_Derived2_20_Base_54 mUnk_54[4]; + /* 94 */ + + MapObjectProfile_Derived2_20_Base(const char *directory, void *param2, void *param3, void *param4, unk32 param5, + unk32 param6); // func_ov000_02058540 + + // data_ov000_020b1b14 + /* 00 */ virtual ~MapObjectProfile_Derived2_20_Base(); + /* 08 */ + + void func_ov000_020586b4(unk32 param1, unk32 param2, unk32 param3, unk32 param4); + void func_ov000_020588f0(void); + void func_ov000_02058900(void); + void func_ov000_02058914(unk32 param1); + void func_ov000_020589e4(void); + unk32 func_ov000_02058a24(); + void unc_ov000_02058a58(void); + unk32 func_ov000_02058a84(unk32 param1, const char *param2); + void func_ov000_02058ab0(void); +}; + +class MapObjectProfile_Derived2_20 : public MapObjectProfile_Derived2_20_Base { +public: + /* 00 (base) */ + /* 94 */ unk16 mUnk_94; + /* 96 */ unk16 mUnk_96; + /* 98 */ unk16 mUnk_98; + /* 9A */ unk16 mUnk_9A; + /* 9C */ UnkFileSystem5 mUnk_9C; + /* B0 */ bool mUnk_B0; + /* B1 */ unk8 mUnk_B1; // bool? + /* B2 */ unk8 mUnk_B2; // pad? + /* B3 */ unk8 mUnk_B3; // pad? + /* B4 */ + + MapObjectProfile_Derived2_20(); + MapObjectProfile_Derived2_20(MapObjectId mapObjId2); // func_ov000_0209ce08 + + // data_ov000_020b3568 + /* 00 */ virtual ~MapObjectProfile_Derived2_20() override; + + void func_ov000_0209cef0(); + void func_ov000_0209cfac(); + void func_ov000_0209cfdc(unk32 param1, unk32 param2); +}; diff --git a/include/Unknown/UnkFileSystem.hpp b/include/Unknown/UnkFileSystem.hpp index 24fc1921..303b2f34 100644 --- a/include/Unknown/UnkFileSystem.hpp +++ b/include/Unknown/UnkFileSystem.hpp @@ -6,7 +6,7 @@ class UnkFileSystem1 { public: /* 00 (vtable) */ - /* 04 */ void *mUnk_04; + /* 04 */ const char *mUnk_04; /* 08 */ union { void *mpFile; void *volatile mpFile2; @@ -14,7 +14,7 @@ public: /* 0C */ size_t mFileSize; /* 10 */ - UnkFileSystem1(void *param1) : + UnkFileSystem1(const char *param1) : mUnk_04(param1), mpFile(NULL), mFileSize(0) {} @@ -36,7 +36,7 @@ public: /* 14 */ UnkFileSystem5(); - UnkFileSystem5(void *param1, unk32 param2, unk32 param3, u8 param4); + UnkFileSystem5(const char *param1, unk32 param2, unk32 param3, u8 param4); // data_02043f08 /* 00 */ virtual ~UnkFileSystem5() override; @@ -61,7 +61,7 @@ public: /* 18 */ u8 mUnk_18; /* 1C */ - UnkFileSystem4(void *param1, unk32 param2, unk32 param3, unk32 param4); // func_02015628 + UnkFileSystem4(const char *param1, unk32 param2, unk32 param3, unk32 param4); // func_02015628 // data_02043f24 /* 00 */ virtual ~UnkFileSystem4() override; // func_02015644 && func_02015650 @@ -73,7 +73,7 @@ public: /* 00 (base) */ /* 10 */ - UnkFileSystem3(void *param1) : + UnkFileSystem3(const char *param1) : UnkFileSystem1(param1) {} // data_02043f40 @@ -87,7 +87,7 @@ public: /* 10 */ UnkFileSystem2_10 mUnk_10; /* 14 */ unk8 mUnk_14; - UnkFileSystem2(void *param1, unk32 param2); // func_020156c8 + UnkFileSystem2(const char *param1, unk32 param2); // func_020156c8 // data_02043f5c /* 00 */ virtual ~UnkFileSystem2() override; // func_020156f4 && func_02015708 diff --git a/include/Unknown/UnkMemFuncs.h b/include/Unknown/UnkMemFuncs.h index 8146cfc7..1515ba77 100644 --- a/include/Unknown/UnkMemFuncs.h +++ b/include/Unknown/UnkMemFuncs.h @@ -5,8 +5,8 @@ //! TODO: temporary place until this is documented properly extern "C" { -void MI_CpuFill16(int value, u16 *dst, size_t size); -void MI_CpuCopy16(u16 *src, u16 *dest, size_t size); +void MI_CpuFill16(int value, void *dst, size_t size); +void MI_CpuCopy16(void *src, void *dest, size_t size); void MI_CpuFill32(int value, void *dest, size_t size); // MI_CpuCopy32 // Stream32 @@ -16,7 +16,7 @@ void _MI_CpuCopy(void *src, void *dest, size_t size); // CopySingle288 // CopySingle384 // CopySingle512 -void MI_CpuFill8(u8 *dst, int value, size_t size); +void MI_CpuFill8(void *dst, int value, size_t size); // Copy // Zero288 // Swap32 diff --git a/include/Unknown/UnkStruct_ov000_020b5d34.hpp b/include/Unknown/UnkStruct_ov000_020b5d34.hpp index 3d1eb0f1..ee0a9691 100644 --- a/include/Unknown/UnkStruct_ov000_020b5d34.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5d34.hpp @@ -4,29 +4,39 @@ #include "types.h" class MapObject_20; +class MapObjectProfile; class UnkStruct_ov000_020b5d34_00 { public: - unk32 *mUnk_00; - MapObject_20 *mUnk_04; - Vec3p *mUnk_08; - unk16 mUnk_0C; -}; - -class UnkStruct_ov000_020b5d34_0C { -public: - unk16 mUnk_00; + /* 00 */ unk32 *mUnk_00; + /* 04 */ MapObject_20 *mUnk_04; + /* 08 */ Vec3p *mUnk_08; + /* 0C */ s16 *mUnk_0C; + /* 10 */ }; class UnkStruct_ov000_020b5d34 { public: /* 00 */ UnkStruct_ov000_020b5d34_00 *mUnk_00; /* 04 */ MapObjectProfile *mpProfile; - /* 08 */ unk32 mUnk_08; - UnkStruct_ov000_020b5d34_0C *mUnk_0C; + /* 08 */ - UnkStruct_ov000_020b5d34(); - ~UnkStruct_ov000_020b5d34(); + UnkStruct_ov000_020b5d34() { + this->mUnk_00 = NULL; + this->mpProfile = NULL; + } + + ~UnkStruct_ov000_020b5d34() {} + + MapObjectProfile *func_ov000_0209c6b8(unk32 param1); + void func_ov000_0209c6f0(); + + static unk32 func_ov000_0209c718(u32 param1); }; +template struct UnkStruct_ov000_020b5d34_Instance { + static T data_ov000_020b5d34; +}; + +#define data_ov000_020b5d34 UnkStruct_ov000_020b5d34_Instance::data_ov000_020b5d34 extern UnkStruct_ov000_020b5d34 data_ov000_020b5d34; diff --git a/include/global.h b/include/global.h index 08ee87c0..3fcddcea 100644 --- a/include/global.h +++ b/include/global.h @@ -51,4 +51,11 @@ #define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N) #define ALIGN(X, N) ((X + N) & ~N) +#define VTABLE_PAD(name) \ + class _VTABLE_PAD_##name { \ + public: \ + virtual void dummy(); \ + }; \ + void _VTABLE_PAD_##name::dummy() {} + #endif diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index 009889a7..1ddc0ae1 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -21,7 +21,7 @@ ARM Actor::Actor() { this->mUnk_5c.func_ov000_020975f8(); this->mRef.Reset(); this->mType = NULL; - _MI_CpuCopy(&data_ov000_020b539c.mUnk_00, &this->mUnk_5c, sizeof(data_ov000_020b539c.mUnk_00)); + _MI_CpuCopy(&data_ov000_020b539c_eur.mUnk_00, &this->mUnk_5c, sizeof(data_ov000_020b539c_eur.mUnk_00)); this->mPos = this->mUnk_5c.mUnk_00; this->mPrevPos = this->mUnk_5c.mUnk_00; this->mAngle = this->mUnk_5c.mUnk_0c; @@ -29,7 +29,7 @@ ARM Actor::Actor() { this->mUnk_44 = 0xFF; this->mUnk_46 = 0; this->func_ov000_0209862c(0); - this->func_ov000_0209848c(data_ov000_020b539c.mUnk_30); + this->func_ov000_0209848c(data_ov000_020b539c_eur.mUnk_30); } ARM Actor::~Actor() {} diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index fef4a853..ec28b648 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -10,7 +10,6 @@ #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_ov000_020b5d34.hpp" -extern "C" void func_ov000_0209c7c8(void *); extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *); extern "C" void func_01ffb9cc(Vec3p *, Vec3p *); extern "C" u16 func_01ffbbe0(q20 x, q20 z); @@ -19,24 +18,17 @@ extern "C" bool func_01ffd768(unk32, void *, void *, unk8); extern "C" void func_ov000_020973f4(void *, void *, u32, void *, int); //! TODO: solve oddity -struct UnkStruct { - u32 *mUnk_00; - MapObject_20 *mUnk_04; - Vec3p *mUnk_08; -}; - -// https://decomp.me/scratch/4do9S ARM MapObject::MapObject() { this->mUnk_10 = NULL; this->mUnk_16 = -1; this->mFlags[0] = 0; - func_ov000_0209c7c8(&this->mUnk_20); + this->mUnk_20.func_ov000_0209c7c8(); *(u32 *) &this->mUnk_38 = 0; UnkStruct_ov000_020b5d34 *ptr1 = &data_ov000_020b5d34; this->mpProfile = ptr1->mpProfile; - UnkStruct *ptr2 = (UnkStruct *) ptr1->mUnk_00; + UnkStruct_ov000_020b5d34_00 *ptr2 = ptr1->mUnk_00; *(u32 *) &this->mUnk_38 = *ptr2->mUnk_00; @@ -45,7 +37,7 @@ ARM MapObject::MapObject() { this->mPos.y = ptr->y; this->mPos.z = ptr->z; - this->mUnk_14 = ptr1->mUnk_0C->mUnk_00; + this->mUnk_14 = *ptr2->mUnk_0C; _MI_CpuCopy(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20)); for (int i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { @@ -257,7 +249,7 @@ ARM void MapObject::func_ov000_0209d54c(unk32 param1, u16 param2, Vec3p *param3, local_4c.param_r2 = param2; local_4c.extra_s16 = param4; local_4c.extra_u16 = param5; - func_ov000_020973f4(this, &data_ov000_020b539c, ActorId_EventIcon, &local_4c, 0); + func_ov000_020973f4(this, &data_ov000_020b539c_eur, ActorId_EventIcon, &local_4c, 0); } ARM void MapObject::func_ov000_0209d5c8(ActorRef ref) { diff --git a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp index 70ff51d7..a2c1a5ee 100644 --- a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp +++ b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp @@ -38,11 +38,11 @@ ARM MapObjectMiniBlocks::MapObjectMiniBlocks() : ARM bool MapObjectMiniBlocks::vfunc_00(void) { GET_PROFILE(MapObjectProfileMiniBlocks) - ->func_ov000_0209ccd8(this->mUnk_20.mUnk_02, data_ov000_020af574[this->mUnk_20.mUnk_02]); + ->func_ov000_0209ccd8(this->mUnk_20.mUnk_00[1], data_ov000_020af574[this->mUnk_20.mUnk_00[1]]); UnkStruct_027e0cd8_0c *pUnkStruct_027e0cd8_0c = data_027e0cd8->mUnk_0c; u8 uVar6; - if (this->mUnk_20.mUnk_02 != MiniBlocksVariant_BLKF) { + if (this->mUnk_20.mUnk_00[1] != MiniBlocksVariant_BLKF) { Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y); this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec); } @@ -50,7 +50,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) { Vec3p vec(FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f)); uVar6 = 0; - switch (this->mUnk_20.mUnk_00) { + switch (this->mUnk_20.mUnk_00[0]) { case 4: case 5: case 6: @@ -64,7 +64,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) { uVar6 = 2; break; default: - if (this->mUnk_20.mUnk_02 == MiniBlocksVariant_BLKF) { + if (this->mUnk_20.mUnk_00[1] == MiniBlocksVariant_BLKF) { vec.x = FLOAT_TO_Q20(0.0f); vec.y = FLOAT_TO_Q20(0.0f); vec.z = -FLOAT_TO_Q20(0.375f); @@ -77,7 +77,7 @@ ARM bool MapObjectMiniBlocks::vfunc_00(void) { } MapObjectProfile_Derived2_20_Base_50 *ptr = - GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mUnk_02)->mUnk_50; + GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mUnk_00[1])->mUnk_50; void *var_r1; if (ptr != NULL) { u16 *temp_r1 = (u16 *) ((u8 *) ptr + 8); @@ -104,7 +104,7 @@ next: unk32 var_r0_2; unk32 var_r0; - switch (this->mUnk_20.mUnk_00) { + switch (this->mUnk_20.mUnk_00[0]) { case 1: case 6: case 8: diff --git a/src/000_Second/MapObject/MapObjectProfile.cpp b/src/000_Second/MapObject/MapObjectProfile.cpp new file mode 100644 index 00000000..1ee4e414 --- /dev/null +++ b/src/000_Second/MapObject/MapObjectProfile.cpp @@ -0,0 +1,218 @@ +#include "MapObject/MapObjectProfile.hpp" + +#include "Actor/Actor.hpp" +#include "MapObject/MapObject.hpp" +#include "Unknown/UnkMemFuncs.h" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" + +extern unk8 data_ov000_020af4d4[]; + +MapObjectProfile *data_ov000_020b5d3c[MapObjectIndex_Max]; +UnkStruct_ov000_020b5d34 data_ov000_020b5d34; + +ARM void MapObject_20::func_ov000_0209c790(MapObjectId mapObjId, MapObjectProfile *pProfile) { + data_ov000_020b5d3c[UnkStruct_ov000_020b5d34::func_ov000_0209c718(mapObjId)] = pProfile; +} + +ARM void MapObject_20::func_ov000_0209c7ac(MapObjectId mapObjId) { + data_ov000_020b5d3c[UnkStruct_ov000_020b5d34::func_ov000_0209c718(mapObjId)] = NULL; +} + +ARM void MapObject_20::func_ov000_0209c7c8() { + this->mUnk_16 = 0; + this->mUnk_10 = 0; + MI_CpuFill32(0, this->mUnk_00, sizeof(this->mUnk_00)); + MI_CpuFill16(0, this->mUnk_08, sizeof(this->mUnk_08)); + MI_CpuFill16(0, this->mUnk_0A, sizeof(this->mUnk_0A)); + this->mUnk_14 = -1; + this->mUnk_17 = 0; +} + +ARM unk32 MapObjectProfile::func_ov000_0209c820() { + return MapObjectIndex_Max; +} + +ARM MapObjectProfile::MapObjectProfile(MapObjectId mapObjId) { + this->mUnk_06 = 1; + this->mUnk_08 = 0x800; + this->mUnk_0C = 0x1333; + this->mUnk_0E = -1; + this->mUnk_0F = 0; + this->mMapObjId = mapObjId; + this->mUnk_14 = 0; + this->mUnk_18 = 0; + this->mUnk_1C = 0; + this->mUnk_1D = 0; + this->mUnk_1E = 1; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_04); i++) { + this->mUnk_04[i] = data_ov000_020af4d4[i]; + } + + MapObject_20::func_ov000_0209c790(this->mMapObjId, this); +} + +ARM MapObjectProfile::~MapObjectProfile() { + this->func_ov000_0209c970(); + MapObject_20::func_ov000_0209c7ac(this->mMapObjId); +} + +ARM MapObjectProfile_Derived2_20 *MapObjectProfile::vfunc_04() { + return NULL; +} + +ARM unk32 MapObjectProfile::func_ov000_0209c8e4(MapObject_20 *param1) { + return this->mUnk_0E; +} + +ARM void MapObjectProfile::func_ov000_0209c8ec(MapObjectProfile *thisx) { + if (thisx->mUnk_0F == 0) { + if (thisx->mUnk_14 != 0) { + thisx->func_ov000_0209c8ec(data_ov000_020b5d34.func_ov000_0209c6b8(thisx->mUnk_14)); + } + + if (thisx->mUnk_18 != 0) { + data_ov000_020b539c_eur.func_ov000_020974dc(thisx->mUnk_18)->vfunc_08(); + } + + thisx->vfunc_08(); + thisx->mUnk_0F = 2; + } +} + +ARM void MapObjectProfile::func_ov000_0209c95c() { + this->vfunc_0C(); +} + +ARM void MapObjectProfile::func_ov000_0209c970() { + if (this->mUnk_0F == 2) { + this->vfunc_10(); + this->mUnk_0F = 0; + } +} + +ARM void MapObjectProfile::vfunc_08() {} + +ARM void MapObjectProfile::vfunc_0C() {} + +ARM void MapObjectProfile::vfunc_10() {} + +ARM MapObjectProfile_Derived2::MapObjectProfile_Derived2(MapObjectId mapObjId1, MapObjectId mapObjId2) : + MapObjectProfile(mapObjId1), + mUnk_20(mapObjId2) {} + +ARM MapObjectProfile_Derived2::~MapObjectProfile_Derived2() { + this->vfunc_10(); +} + +ARM MapObjectProfile_Derived2_20 *MapObjectProfile_Derived2::vfunc_04() { + return &this->mUnk_20; +} + +ARM void MapObjectProfile_Derived2::vfunc_08() { + this->mUnk_20.func_ov000_0209cfdc(0, 0); + this->mUnk_20.func_ov000_020586b4(0, 0, 0, 0); + this->mUnk_20.func_ov000_02058ab0(); +} + +ARM void MapObjectProfile_Derived2::vfunc_0C() { + if (this->mUnk_20.mUnk_20.mUnk_04 != 0) { + this->mUnk_20.func_ov000_02058914(0); + } +} + +ARM void MapObjectProfile_Derived2::vfunc_10() { + this->mUnk_20.func_ov000_020589e4(); +} + +ARM MapObjectProfile_Derived3::MapObjectProfile_Derived3(MapObjectId mapObjId1, MapObjectId mapObjId2) : + MapObjectProfile(mapObjId1) { + this->mUnk_20 = NULL; + this->mUnk_14 = mapObjId2; +} + +ARM MapObjectProfile_Derived2_20 *MapObjectProfile_Derived3::vfunc_04() { + return this->mUnk_20; +} + +ARM void MapObjectProfile_Derived3::vfunc_08() { + this->mUnk_20 = data_ov000_020b5d34.func_ov000_0209c6b8(this->mUnk_14)->vfunc_04(); +} + +ARM MapObjectProfile_Derived4::MapObjectProfile_Derived4(MapObjectId mapObjId1, MapObjectId mapObjId2) : + MapObjectProfile_Derived2(mapObjId1, mapObjId2) {} + +ARM MapObjectProfile_Derived4::~MapObjectProfile_Derived4() { + if (this->mUnk_20.mUnk_20.mUnk_04 != 0) { + this->mUnk_20.func_ov000_020589e4(); + } +} + +ARM void MapObjectProfile_Derived4::vfunc_08() {} + +ARM void MapObjectProfile_Derived4::vfunc_0C() {} + +ARM MapObjectProfile_Derived1::MapObjectProfile_Derived1(MapObjectId mapObjId, unk32 param2, unk32 param3) : + MapObjectProfile(mapObjId), + mUnk_60(param3), + mUnk_64(param2) { + for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { + *ptr = NULL; + } +} + +ARM MapObjectProfile_Derived2_20 *MapObjectProfile_Derived1::vfunc_04() { + if (this->mUnk_64 >= 0) { + return this->mUnk_20[this->mUnk_64]; + } + + return NULL; +} + +ARM MapObjectProfile_Derived2_20 *MapObjectProfile_Derived1::vfunc_1C(unk32 param1) { + if (param1 >= 0) { + return this->mUnk_20[param1]; + } + + return NULL; +} + +ARM MapObjectProfile_Derived1::~MapObjectProfile_Derived1() { + for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { + delete *ptr; + } +} + +ARM void MapObjectProfile_Derived1::func_ov000_0209ccd8(unk32 param1, u32 param2) { + if (this->mUnk_20[param1] == NULL) { + MapObjectProfile_Derived2_20 *ptr = new(HeapIndex_1) MapObjectProfile_Derived2_20(param2); + MapObjectProfile_Derived2_20 **ppUnk_20 = this->mUnk_20; + ppUnk_20[param1] = ptr; + ppUnk_20[param1]->func_ov000_0209cfdc(0, 0); + ppUnk_20[param1]->func_ov000_020586b4(0, 0, 0, 0); + ppUnk_20[param1]->func_ov000_02058ab0(); + } +} + +ARM void MapObjectProfile_Derived1::vfunc_08() { + if (this->mUnk_64 >= 0) { + this->func_ov000_0209ccd8(this->mUnk_64, this->mUnk_60); + } +} + +ARM void MapObjectProfile_Derived1::vfunc_0C() { + for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { + if (*ptr != NULL && (*ptr)->mUnk_20.mUnk_04 != NULL) { + (*ptr)->func_ov000_02058914(0); + } + } +} + +ARM void MapObjectProfile_Derived1::vfunc_10() { + for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { + if (*ptr != NULL) { + delete *ptr; + *ptr = NULL; + } + } +} diff --git a/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp new file mode 100644 index 00000000..2b9cf27d --- /dev/null +++ b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp @@ -0,0 +1,58 @@ +#include "MapObject/MapObjectProfile_Derived2_20.hpp" + +#include + +extern "C" { +void func_02015ea8(u32 resourceId, void *); +unk32 func_02012fa8(const char *); +} + +ARM MapObjectProfile_Derived2_20::MapObjectProfile_Derived2_20(MapObjectId mapObjId2) : + MapObjectProfile_Derived2_20_Base("MapObj", &mUnk_94, &mUnk_94, &mUnk_94, 0, 0), + mUnk_94(0), + mUnk_98(0), + mUnk_B0(false), + mUnk_B1(0) { + func_02015ea8(mapObjId2, &this->mUnk_94); +} + +ARM MapObjectProfile_Derived2_20::~MapObjectProfile_Derived2_20() { + this->func_ov000_020589e4(); + this->func_ov000_0209cfac(); +} + +ARM void MapObjectProfile_Derived2_20::func_ov000_0209cef0() { + char path[32 + 1]; + size_t curLength; + + ((wchar_t *) &path)[(sizeof(path) - 1) / 2] = L'\0'; + + // path = "MapObj/RESID/filename.zcb" + strncpy(&path[0], "MapObj/", sizeof(path) - 1); + + curLength = strlen(path); + strncpy(&path[curLength], this->mUnk_08, sizeof(path) - 1 - curLength); + + const char *ext = ".zcb"; + curLength = strlen(path); + strncpy(&path[curLength], ext, sizeof(path) - 1 - curLength); + + this->mUnk_9C.vfunc_0C(); + this->mUnk_9C.mUnk_04 = path; + + if (func_02012fa8(path) != 0) { + this->mUnk_9C.vfunc_08(0x10); + this->mUnk_B0 = true; + } else { + this->mUnk_B0 = false; + } +} + +ARM void MapObjectProfile_Derived2_20::func_ov000_0209cfac() { + if (this->mUnk_B0) { + this->mUnk_9C.vfunc_0C(); + this->mUnk_B0 = false; + } +} + +ARM void MapObjectProfile_Derived2_20::func_ov000_0209cfdc(unk32 param1, unk32 param2) {} diff --git a/src/000_Second/MapObject/MapObjectSwitchStep.cpp b/src/000_Second/MapObject/MapObjectSwitchStep.cpp index 92aa5626..a6e8fff7 100644 --- a/src/000_Second/MapObject/MapObjectSwitchStep.cpp +++ b/src/000_Second/MapObject/MapObjectSwitchStep.cpp @@ -121,7 +121,7 @@ end: } ARM MapObjectSwitchStep::~MapObjectSwitchStep() { - if (this->mUnk_20.mUnk_00 == 2) { + if (this->mUnk_20.mUnk_00[0] == 2) { this->func_ov000_0209e11c(0, 1); this->func_ov000_0209d2c4(0, 0); } @@ -182,8 +182,8 @@ ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) { this->mUnk_EA = 1; } - if (this->mUnk_20.mUnk_00 == 2) { - this->mUnk_E6 = this->mUnk_20.mUnk_02; + if (this->mUnk_20.mUnk_00[0] == 2) { + this->mUnk_E6 = this->mUnk_20.mUnk_00[1]; this->mUnk_E4 = 0; } diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 739a2db7..f0b63c4e 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -279,8 +279,8 @@ THUMB void ActorManager::func_ov001_020bb548() { } THUMB void ActorManager::func_ov001_020bb630() { - ActorProfile **piVar2 = data_ov000_020b539c.func_ov000_02073dc(); - ActorProfile **piVar3 = data_ov000_020b539c.func_ov000_02073e8(); + ActorProfile **piVar2 = data_ov000_020b539c_eur.func_ov000_02073dc(); + ActorProfile **piVar3 = data_ov000_020b539c_eur.func_ov000_02073e8(); while (piVar2 != piVar3) { ActorProfile *iVar4 = *piVar2; @@ -302,7 +302,7 @@ THUMB void ActorManager::func_ov001_020bb630() { } piVar2++; - piVar3 = data_ov000_020b539c.func_ov000_02073e8(); + piVar3 = data_ov000_020b539c_eur.func_ov000_02073e8(); } if (data_027e09a4->mUnk_60 == 1) { @@ -311,8 +311,8 @@ THUMB void ActorManager::func_ov001_020bb630() { } THUMB void ActorManager::func_ov001_020bb6b0(s32 *param1) { - ActorProfile **piVar1 = data_ov000_020b539c.func_ov000_02073dc(); - ActorProfile **piVar2 = data_ov000_020b539c.func_ov000_02073e8(); + ActorProfile **piVar1 = data_ov000_020b539c_eur.func_ov000_02073dc(); + ActorProfile **piVar2 = data_ov000_020b539c_eur.func_ov000_02073e8(); while (piVar1 != piVar2) { ActorProfile *iVar5 = *piVar1; @@ -330,7 +330,7 @@ THUMB void ActorManager::func_ov001_020bb6b0(s32 *param1) { } piVar1++; - piVar2 = data_ov000_020b539c.func_ov000_02073e8(); + piVar2 = data_ov000_020b539c_eur.func_ov000_02073e8(); } } @@ -368,7 +368,7 @@ THUMB bool ActorManager::func_ov001_020bb728(s32 param1) { THUMB void ActorManager::func_ov001_020bb7b0(ZeldaObjectList *pObjList) { for (s32 i = 0; i < pObjList->nEntries; i++) { u32 id = pObjList->aIdList[i]; - ActorProfile *pActorProfile = data_ov000_020b539c.func_ov000_020974dc(id); + ActorProfile *pActorProfile = data_ov000_020b539c_eur.func_ov000_020974dc(id); if (!this->func_ov001_020bb728(id) && pActorProfile != NULL) { pActorProfile->vfunc_08(); @@ -377,8 +377,8 @@ THUMB void ActorManager::func_ov001_020bb7b0(ZeldaObjectList *pObjList) { } THUMB void ActorManager::func_ov001_020bb7f0() { - ActorProfile **ptr1 = data_ov000_020b539c.func_ov000_02073dc(); - ActorProfile **ptr2 = data_ov000_020b539c.func_ov000_02073e8(); + ActorProfile **ptr1 = data_ov000_020b539c_eur.func_ov000_02073dc(); + ActorProfile **ptr2 = data_ov000_020b539c_eur.func_ov000_02073e8(); while (ptr1 != ptr2) { if (*ptr1 != NULL) { @@ -386,7 +386,7 @@ THUMB void ActorManager::func_ov001_020bb7f0() { } ptr1++; - ptr2 = data_ov000_020b539c.func_ov000_02073e8(); + ptr2 = data_ov000_020b539c_eur.func_ov000_02073e8(); } } diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index de3be48a..9d32e0d3 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -55,7 +55,7 @@ ARM void ActorRupee::func_ov031_020e8d2c(Vec3p *param1, u8 param2, unk32 param3, stack.sp4.z = param1->z; stack.sp2C = param4; stack.sp30 = param3; - this->func_ov000_020973f4(&data_ov000_020b539c, ActorId_Rupee, (Actor_5c *) &stack, 0); + this->func_ov000_020973f4(&data_ov000_020b539c_eur, ActorId_Rupee, (Actor_5c *) &stack, 0); } ARM ActorRupee::ActorRupee() : diff --git a/src/Main/UnkFileSystem.cpp b/src/Main/UnkFileSystem.cpp index beb67919..35b1fe9a 100644 --- a/src/Main/UnkFileSystem.cpp +++ b/src/Main/UnkFileSystem.cpp @@ -2,9 +2,9 @@ #include "Unknown/UnkStruct_ov000_020b4f84.hpp" extern "C" size_t func_020010e0(UnkStruct_02011e10_Sub1 *heapID, void *pFile, unk32 param3); -extern "C" void *func_02012ec8(unk32, unk16, void *, size_t *, unk32, u8); -extern "C" void *func_02012ee4(void *, unk32, unk32, size_t *, u8); -extern "C" void *func_02012f6c(void *, size_t *); +extern "C" void *func_02012ec8(unk32, unk16, const char *, size_t *, unk32, u8); +extern "C" void *func_02012ee4(const char *, unk32, unk32, size_t *, u8); +extern "C" void *func_02012f6c(const char *, size_t *); extern "C" HeapIndex16 func_02015338(); THUMB UnkFileSystem1::~UnkFileSystem1() {} @@ -27,7 +27,7 @@ THUMB UnkFileSystem5::UnkFileSystem5() : this->mUnk_12 = 0; } -THUMB UnkFileSystem5::UnkFileSystem5(void *param1, unk32 param2, unk32 param3, u8 param4) : +THUMB UnkFileSystem5::UnkFileSystem5(const char *param1, unk32 param2, unk32 param3, u8 param4) : UnkFileSystem1(param1) { this->mHeapIndex = param3; this->mUnk_12 = param4; @@ -64,7 +64,7 @@ THUMB size_t UnkFileSystem5::vfunc_10(unk32 param1) { return prevFileSize; } -THUMB UnkFileSystem4::UnkFileSystem4(void *param1, unk32 param2, unk32 param3, unk32 param4) : +THUMB UnkFileSystem4::UnkFileSystem4(const char *param1, unk32 param2, unk32 param3, unk32 param4) : UnkFileSystem1(param1) { this->mUnk_18 = param2; this->mUnk_10 = param3; @@ -92,7 +92,7 @@ THUMB void *UnkFileSystem3::vfunc_08(unk32 param1) { } // https://decomp.me/scratch/Y2SB8 -THUMB UnkFileSystem2::UnkFileSystem2(void *param1, unk32 param2) : +THUMB UnkFileSystem2::UnkFileSystem2(const char *param1, unk32 param2) : UnkFileSystem1(param1) { this->mUnk_14 = param2; } diff --git a/tools/configure.py b/tools/configure.py index a3f3916f..e58e9344 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -148,16 +148,18 @@ config.libs = [ Object("000_Second/UnkSystem1_Derived1.cpp"), Object("000_Second/Actor/Actor.cpp"), Object("000_Second/Actor/ActorManager.cpp"), - Object("000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp"), - Object("000_Second/Item/ItemManager.cpp"), - Object("000_Second/Item/TreasureManager.cpp"), - Object("000_Second/Actor/ActorUnkEFIK.cpp"), - Object("000_Second/Actor/ActorEventIcon.cpp"), Object("000_Second/Actor/ActorUnkSWOB.cpp"), Object("000_Second/Actor/ActorUnkSWTM.cpp"), + Object("000_Second/Actor/ActorEventIcon.cpp"), + Object("000_Second/Actor/ActorUnkEFIK.cpp"), + Object("000_Second/MapObject/MapObjectProfile.cpp"), + Object("000_Second/MapObject/MapObjectProfile_Derived2_20.cpp"), Object("000_Second/MapObject/MapObject.cpp"), Object("000_Second/MapObject/MapObjectSwitchStep.cpp"), Object("000_Second/MapObject/MapObjectMiniBlocks.cpp"), + Object("000_Second/Item/ItemManager.cpp"), + Object("000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp"), + Object("000_Second/Item/TreasureManager.cpp"), ] ), GameLib(