From 473e1e102b268410723f23eee878f45c8c156bca Mon Sep 17 00:00:00 2001 From: Alessevan <44125445+Alessevan@users.noreply.github.com> Date: Sun, 23 Aug 2026 15:06:08 -0400 Subject: [PATCH] Decompiling BOMB (#140) * feat: begin decompiling * feat: some progress * fix: forgot to change symbol * feat: increase matching * fix: function params not updated * feat: more matching * fix: noo more errors oon local help * fix: match back UnkStruct_PlayerGet_74.data * feat: little progress * fix: SWBM.data regression * feat: up jp version * feat: update matching * refactor: rename UnkBOMB to Bomb * feat: decompiling part of MapObjectUnkBMFL * feat: destroy MapObjectPot's vfunc_24 for the good of all * fix: revert wrong symbol * feat: updating jp symbols * feat: eur advancements * feat: weird stuff * feat: fix build issue * feat: rename BMFL to BombFlower * feat: catchup jp .data * feat: improve BombFlower * feat: improve bomb matching * style: cleanup * style: cleanup v2 * fix: mapobjectpot_base .data * feat: better match for mapobjectpot_base * style: use deg_to_rad macro * style: cleaner variable definition * doc: better comment * fix: build --- config/eur/arm9/overlays/ov000/delinks.txt | 4 + config/eur/arm9/overlays/ov000/relocs.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 54 +- config/eur/arm9/overlays/ov031/delinks.txt | 5 +- config/eur/arm9/overlays/ov031/relocs.txt | 2 +- config/eur/arm9/overlays/ov031/symbols.txt | 206 ++-- config/eur/arm9/overlays/ov093/symbols.txt | 2 +- config/eur/arm9/overlays/ov110/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/delinks.txt | 4 + config/jp/arm9/overlays/ov000/relocs.txt | 2 +- config/jp/arm9/overlays/ov000/symbols.txt | 60 +- config/jp/arm9/overlays/ov017/symbols.txt | 4 +- config/jp/arm9/overlays/ov031/delinks.txt | 9 +- config/jp/arm9/overlays/ov031/relocs.txt | 36 +- config/jp/arm9/overlays/ov031/symbols.txt | 236 ++--- config/jp/arm9/overlays/ov093/symbols.txt | 2 +- config/jp/arm9/overlays/ov110/symbols.txt | 2 +- include/Actor/ActorBlast.hpp | 4 +- include/Actor/ActorBomb.hpp | 173 ++++ include/Actor/ActorItemFlower.hpp | 2 + include/Actor/ActorRollingStone.hpp | 4 +- include/Actor/ActorTable.inl | 2 +- include/Actor/ActorUnkBOMB.hpp | 111 --- include/Actor/ActorUnkROCK.hpp | 3 +- include/Actor/ActorUnkSCCN.hpp | 18 +- include/Actor/ActorUnkSWBM.hpp | 11 +- include/Actor/Actor_Derived1.hpp | 7 +- include/Map/MapObjectTable.inl | 2 +- include/MapObject/MapObject.hpp | 16 +- include/MapObject/MapObjectBombFlower.hpp | 68 ++ include/MapObject/MapObjectGrass.hpp | 14 +- include/MapObject/MapObjectPot.hpp | 17 +- include/MapObject/MapObjectPot_Base.hpp | 37 + include/MapObject/MapObjectUnkBMFL.hpp | 41 - include/MapObject/MapObjectUnkSKDI.hpp | 4 +- include/MapObject/MapObjectUnkSWHT.hpp | 2 +- include/MapObject/MapObject_10_Pot.hpp | 30 + include/MapObject/MapObject_ov031.hpp | 45 - include/Player/PlayerActorBase.hpp | 3 +- include/Player/PlayerGet.hpp | 11 +- include/Render/ModelRender.hpp | 13 +- include/Unknown/Common.hpp | 2 +- include/Unknown/UnkStruct_027e0ce0.hpp | 7 +- include/Unknown/UnkStruct_027e0d8c.hpp | 1 + include/profile.hpp | 9 +- src/000_Second/Actor/Actor.cpp | 6 +- src/000_Second/MapObject/MapObject.cpp | 2 +- .../MapObject/MapObjectMiniBlocks.cpp | 12 +- .../MapObject/MapObjectPot_Base.cpp | 76 ++ src/031_Land/Actor/ActorBlast.cpp | 10 +- src/031_Land/Actor/ActorBomb.cpp | 889 ++++++++++++++++++ src/031_Land/Actor/ActorItemBoomerang.cpp | 2 +- src/031_Land/Actor/ActorItemTornado.cpp | 4 +- src/031_Land/Actor/ActorRollingStone.cpp | 20 +- src/031_Land/Actor/ActorUnkBOMB.cpp | 77 -- src/031_Land/Actor/ActorUnkROCK.cpp | 13 +- src/031_Land/Actor/ActorUnkSWBM.cpp | 2 +- .../MapObject/MapObjectBombFlower.cpp | 257 +++++ src/031_Land/MapObject/MapObjectDoorBase.cpp | 16 +- .../MapObject/MapObjectDoorDangerSpawn.cpp | 16 +- .../MapObject/MapObjectDoorSwitch.cpp | 6 +- src/031_Land/MapObject/MapObjectGrass.cpp | 10 +- src/031_Land/MapObject/MapObjectPot.cpp | 136 +-- src/031_Land/MapObject/MapObjectUnkBMFL.cpp | 29 - src/031_Land/MapObject/MapObjectUnkSKDI.cpp | 8 +- src/031_Land/MapObject/MapObjectUnkSWHT.cpp | 14 +- src/063_Shrine/MapObject/MapObjectUnkSTAT.cpp | 4 +- src/110_PlayerGet/PlayerGet.cpp | 13 +- tools/configure.py | 5 +- 69 files changed, 2105 insertions(+), 811 deletions(-) create mode 100644 include/Actor/ActorBomb.hpp delete mode 100644 include/Actor/ActorUnkBOMB.hpp create mode 100644 include/MapObject/MapObjectBombFlower.hpp create mode 100644 include/MapObject/MapObjectPot_Base.hpp delete mode 100644 include/MapObject/MapObjectUnkBMFL.hpp create mode 100644 include/MapObject/MapObject_10_Pot.hpp delete mode 100644 include/MapObject/MapObject_ov031.hpp create mode 100644 src/000_Second/MapObject/MapObjectPot_Base.cpp create mode 100644 src/031_Land/Actor/ActorBomb.cpp delete mode 100644 src/031_Land/Actor/ActorUnkBOMB.cpp create mode 100644 src/031_Land/MapObject/MapObjectBombFlower.cpp delete mode 100644 src/031_Land/MapObject/MapObjectUnkBMFL.cpp diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 61a7e6d9..7909802d 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -83,6 +83,10 @@ src/000_Second/MapObject/MapObject.cpp: .text start:0x0209cfe0 end:0x0209d700 .data start:0x020b3588 end:0x020b35c8 +src/000_Second/MapObject/MapObjectPot_Base.cpp: + .text start:0x0209d700 end:0x0209db74 + .data start:0x020b35c8 end:0x020b3628 + src/000_Second/MapObject/MapObjectSwitchStep.cpp: .text start:0x0209dce0 end:0x0209e3f8 .rodata start:0x020af550 end:0x020af574 diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 40f1b757..1507026e 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -7223,7 +7223,7 @@ from:0x0209dc18 kind:arm_call to:0x0209cfe0 module:overlay(0) from:0x0209dc28 kind:arm_call to:0x0201667c module:main from:0x0209dc44 kind:arm_call_thumb to:0x0205c584 module:overlay(0) from:0x0209dc50 kind:load to:0x020b363c module:overlay(0) -from:0x0209dc54 kind:load to:0x020b3630 module:overlay(0) +from:0x0209dc54 kind:load to:0x020b3628 module:overlay(0) add:0x8 from:0x0209dc74 kind:load to:0x027e09bc module:dtcm from:0x0209dc78 kind:load to:0x020166f4 module:main from:0x0209dca4 kind:arm_call to:0x02016694 module:main diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 6eae43ad..62cd0f2f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -67,7 +67,7 @@ func_ov000_02057750 kind:function(thumb,size=0xc) addr:0x02057750 _ZN31ModelRender_UnkSystem1_Derived1C1EP10G3d_Model_m kind:function(thumb,size=0x20) addr:0x0205775c _ZN22ModelRender_UnkSystem1D1Ev kind:function(thumb,size=0xe) addr:0x0205777c _ZN10UnkSystem5C1EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x0205778c -_ZN10UnkSystem519func_ov000_020577a4Eiii kind:function(arm,size=0x54) addr:0x020577a4 +_ZN10UnkSystem519func_ov000_020577a4EP24UnkStruct_ov000_02058a84ii kind:function(arm,size=0x54) addr:0x020577a4 _ZN10UnkSystem519func_ov000_020577f8Ei kind:function(arm,size=0x38) addr:0x020577f8 func_ov000_02057830 kind:function(arm,size=0x3c) addr:0x02057830 func_ov000_0205786c kind:function(arm,size=0x38) addr:0x0205786c @@ -103,7 +103,7 @@ func_ov000_02057c6c kind:function(arm,size=0x2c) addr:0x02057c6c _ZN11ModelRender19func_ov000_02057c98EP10UnkSystem5 kind:function(arm,size=0x18) addr:0x02057c98 func_ov000_02057cb0 kind:function(arm,size=0x18) addr:0x02057cb0 func_ov000_02057cc8 kind:function(arm,size=0x2c) addr:0x02057cc8 -func_ov000_02057cf4 kind:function(arm,size=0x2c) addr:0x02057cf4 +_ZN11ModelRender19func_ov000_02057cf4Ev kind:function(arm,size=0x2c) addr:0x02057cf4 _ZN11ModelRender19func_ov000_02057d20Eh kind:function(thumb,size=0x1c) addr:0x02057d20 _ZN11ModelRender19func_ov000_02057d3cEP18G3d_BoneMtxStruct_ kind:function(arm,size=0x30) addr:0x02057d3c func_ov000_02057d6c kind:function(arm,size=0x18) addr:0x02057d6c @@ -1415,7 +1415,7 @@ _ZN24UnkStruct_ov000_020b2838D0Ev kind:function(arm,size=0x14) addr:0x0207bfe8 _ZN29UnkStruct_ov031_Items_00_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207bffc _ZN26UnkStruct_027e0ce0_38_Base8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x8) addr:0x0207c000 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x8) addr:0x0207c008 -_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207c010 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10E8ActorRefi kind:function(arm,size=0x8) addr:0x0207c010 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018 func_ov000_0207c048 kind:function(arm,size=0x30) addr:0x0207c048 func_ov000_0207c078 kind:function(arm,size=0x38) addr:0x0207c078 @@ -1430,14 +1430,14 @@ func_ov000_0207c3ec kind:function(arm,size=0x20) addr:0x0207c3ec func_ov000_0207c40c kind:function(arm,size=0x44) addr:0x0207c40c func_ov000_0207c450 kind:function(arm,size=0x30) addr:0x0207c450 func_ov000_0207c480 kind:function(arm,size=0x1c) addr:0x0207c480 -func_ov000_0207c49c kind:function(arm,size=0x8) addr:0x0207c49c -func_ov000_0207c4a4 kind:function(arm,size=0x4b8) addr:0x0207c4a4 -func_ov000_0207c95c kind:function(arm,size=0x10) addr:0x0207c95c -func_ov000_0207c96c kind:function(arm,size=0x34) addr:0x0207c96c -func_ov000_0207c9a0 kind:function(arm,size=0x70) addr:0x0207c9a0 -func_ov000_0207ca10 kind:function(arm,size=0x28) addr:0x0207ca10 -func_ov000_0207ca38 kind:function(arm,size=0x78) addr:0x0207ca38 -func_ov000_0207cab0 kind:function(arm,size=0x10) addr:0x0207cab0 +_ZN12MapObject_108vfunc_00Ev kind:function(arm,size=0x8) addr:0x0207c49c +_ZN12MapObject_108vfunc_04Ev kind:function(arm,size=0x4b8) addr:0x0207c4a4 +_ZN12MapObject_108vfunc_0CEv kind:function(arm,size=0x10) addr:0x0207c95c +_ZN12MapObject_108vfunc_08Ev kind:function(arm,size=0x34) addr:0x0207c96c +_ZN12MapObject_108vfunc_10EP8Cylinder kind:function(arm,size=0x70) addr:0x0207c9a0 +_ZN12MapObject_108vfunc_14Ev kind:function(arm,size=0x28) addr:0x0207ca10 +_ZN12MapObject_108vfunc_18EP7VecFx32 kind:function(arm,size=0x78) addr:0x0207ca38 +_ZN12MapObject_108vfunc_1CEP7VecFx32 kind:function(arm,size=0x10) addr:0x0207cab0 func_ov000_0207cac0 kind:function(arm,size=0x8) addr:0x0207cac0 func_ov000_0207cac8 kind:function(arm,size=0x804) addr:0x0207cac8 func_ov000_0207d2cc kind:function(arm,size=0x10) addr:0x0207d2cc @@ -1491,10 +1491,10 @@ func_ov000_0207ebf4 kind:function(arm,size=0x74) addr:0x0207ebf4 func_ov000_0207ec68 kind:function(arm,size=0x20) addr:0x0207ec68 _ZN15ActorUnkSCCN_B8C1Ev kind:function(arm,size=0x20) addr:0x0207ec88 _ZN15ActorUnkSCCN_B8D1Ev kind:function(arm,size=0x30) addr:0x0207eca8 -_ZN19func_ov000_0207ecd8D0Ev kind:function(arm,size=0x38) addr:0x0207ecd8 -_ZN19func_ov000_0207ed10D2Ev kind:function(arm,size=0x30) addr:0x0207ed10 +_ZN15ActorUnkSCCN_B8D0Ev kind:function(arm,size=0x38) addr:0x0207ecd8 +_ZN15ActorUnkSCCN_B8D2Ev kind:function(arm,size=0x30) addr:0x0207ed10 func_ov000_0207ed40 kind:function(arm,size=0x44) addr:0x0207ed40 -func_ov000_0207ed84 kind:function(arm,size=0x8) addr:0x0207ed84 +_ZN15ActorUnkSCCN_B88vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207ed84 func_ov000_0207ed8c kind:function(arm,size=0x20) addr:0x0207ed8c _ZN17Actor_Derived1_94C1Ev kind:function(arm,size=0x20) addr:0x0207edac func_ov000_0207edcc kind:function(arm,size=0x1c) addr:0x0207edcc @@ -2062,10 +2062,10 @@ func_ov000_0208eb90 kind:function(arm,size=0x104) addr:0x0208eb90 func_ov000_0208ec94 kind:function(arm,size=0x60) addr:0x0208ec94 func_ov000_0208ecf4 kind:function(thumb,size=0x1c) addr:0x0208ecf4 func_ov000_0208ed10 kind:function(thumb,size=0x20) addr:0x0208ed10 -_ZN18UnkStruct_027e0ce019func_ov000_0208ed30EiiPc kind:function(thumb,size=0x34) addr:0x0208ed30 +_ZN21UnkStruct_027e0ce0_1C19func_ov000_0208ed30EiiPc kind:function(thumb,size=0x34) addr:0x0208ed30 func_ov000_0208ed64 kind:function(thumb,size=0xc4) addr:0x0208ed64 func_ov000_0208ee28 kind:function(thumb,size=0x6c) addr:0x0208ee28 -func_ov000_0208ee94 kind:function(arm,size=0x8c) addr:0x0208ee94 +_ZN21UnkStruct_027e0ce0_1C19func_ov000_0208ee94EiiPci kind:function(arm,size=0x8c) addr:0x0208ee94 func_ov000_0208ef20 kind:function(arm,size=0x68) addr:0x0208ef20 func_ov000_0208ef88 kind:function(thumb,size=0x34) addr:0x0208ef88 func_ov000_0208efbc kind:function(thumb,size=0x12) addr:0x0208efbc @@ -2576,20 +2576,20 @@ _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209d61 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209d668 _ZN9MapObject19func_ov000_0209d6acEP7VecFx32 kind:function(arm,size=0x54) addr:0x0209d6ac _ZN17MapObjectPot_BaseC2Ev kind:function(arm,size=0x50) addr:0x0209d700 -_ZN19func_ov000_0209d750D0Ev kind:function(arm,size=0x1c) addr:0x0209d750 +_ZN17MapObjectPot_BaseD0Ev kind:function(arm,size=0x1c) addr:0x0209d750 _ZN17MapObjectPot_BaseD2Ev kind:function(arm,size=0x14) addr:0x0209d76c _ZN17MapObjectPot_Base8vfunc_00Ev kind:function(arm,size=0x24) addr:0x0209d780 -_ZN17MapObjectPot_Base8vfunc_44Eii kind:function(arm,size=0x144) addr:0x0209d7a4 -_ZN17MapObjectPot_Base19func_ov000_0209d8e8EPS_i kind:function(arm,size=0xc4) addr:0x0209d8e8 +_ZN17MapObjectPot_Base8SetStateEsi kind:function(arm,size=0x144) addr:0x0209d7a4 +_ZN17MapObjectPot_Base8vfunc_24EP9MapObject7VecFx32 kind:function(arm,size=0xc4) addr:0x0209d8e8 _ZN17MapObjectPot_Base8vfunc_38Ev kind:function(arm,size=0x4c) addr:0x0209d9ac _ZN17MapObjectPot_Base8vfunc_28Ev kind:function(arm,size=0x68) addr:0x0209d9f8 -func_ov000_0209da60 kind:function(arm,size=0x4) addr:0x0209da60 -_ZN17MapObjectPot_Base19func_ov000_0209da64Ev kind:function(arm,size=0xc) addr:0x0209da64 +_ZN17MapObjectPot_Base8vfunc_48Ev kind:function(arm,size=0x4) addr:0x0209da60 +_ZN17MapObjectPot_Base8vfunc_54Ev kind:function(arm,size=0xc) addr:0x0209da64 _ZN17MapObjectPot_Base8vfunc_4CEv kind:function(arm,size=0x8) addr:0x0209da70 -func_ov000_0209da78 kind:function(arm,size=0x48) addr:0x0209da78 -_ZN17MapObjectPot_Base8vfunc_50Ev kind:function(arm,size=0xb4) addr:0x0209dac0 -func_ov000_0209db74 kind:function(arm,size=0x8) addr:0x0209db74 -func_ov000_0209db7c kind:function(arm,size=0x8) addr:0x0209db7c +_ZN17MapObjectPot_Base19func_ov000_0209da78Eii kind:function(arm,size=0x48) addr:0x0209da78 +_ZN17MapObjectPot_Base8vfunc_50EP8ActorRefPS_ kind:function(arm,size=0xb4) addr:0x0209dac0 +_ZN17MapObjectPot_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x0209db74 +_ZN17MapObjectPot_Base8vfunc_40Ev kind:function(arm,size=0x8) addr:0x0209db7c func_ov000_0209db84 kind:function(arm,size=0x8c) addr:0x0209db84 func_ov000_0209dc10 kind:function(arm,size=0x48) addr:0x0209dc10 func_ov000_0209dc58 kind:function(arm,size=0x24) addr:0x0209dc58 @@ -3690,8 +3690,8 @@ _ZTV28MapObjectProfile_Derived2_20 kind:data(any) addr:0x020b3560 @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 +_ZTV17MapObjectPot_Base kind:data(any) addr:0x020b35c8 +_ZTV19data_ov000_020b3630 kind:data(any) addr:0x020b3628 data_ov000_020b363c kind:data(any) addr:0x020b363c _ZTV26MapObjectProfileSwitchStep kind:data(any) addr:0x020b3678 _ZTV31MapObjectProfileSwitchStep_Base kind:data(any) addr:0x020b3694 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index 0da36922..15a0b7fd 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -8,7 +8,7 @@ src/031_Land/UnkStruct_027e0d34.cpp: .text start:0x020d9834 end:0x020d9854 -src/031_Land/Actor/ActorUnkBOMB.cpp: +src/031_Land/Actor/ActorBomb.cpp: .text start:0x020e14c4 end:0x020e34b4 .init start:0x02110ff8 end:0x02111048 .ctor start:0x0211279c end:0x021127a0 @@ -291,10 +291,11 @@ src/031_Land/MapObject/MapObjectUnkSWHT.cpp: .data start:0x0211569c end:0x02115704 .bss start:0x021179b8 end:0x02117abc -src/031_Land/MapObject/MapObjectUnkBMFL.cpp: +src/031_Land/MapObject/MapObjectBombFlower.cpp: .text start:0x02102438 end:0x02102bc0 .init start:0x02111ef8 end:0x02111f48 .ctor start:0x0211283c end:0x02112840 + .data start:0x02115704 end:0x02115784 .bss start:0x02117abc end:0x02117ba0 src/031_Land/MapObject/MapObjectTreasureSpawned.cpp: diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 2667646e..b19add6c 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -4638,7 +4638,7 @@ from:0x021024a4 kind:load to:0x02115704 module:overlay(31) add:0x8 from:0x021024b4 kind:arm_call to:0x0209d700 module:overlay(0) from:0x02102518 kind:arm_call to:0x02102bc0 module:overlay(31) from:0x02102538 kind:arm_call to:0x0207c018 module:overlay(0) -from:0x021025ac kind:load to:0x02115728 module:overlay(31) +from:0x021025ac kind:load to:0x02115720 module:overlay(31) add:0x8 from:0x021025b0 kind:load to:0x02117acc module:overlay(31) from:0x021025b4 kind:load to:0x02112a70 add:0x8 module:overlay(31) from:0x02102638 kind:arm_call to:0x020e0f30 module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 9ae085eb..4d108a2d 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -305,82 +305,82 @@ func_ov031_020e1028 kind:function(arm,size=0x84) addr:0x020e1028 func_ov031_020e10ac kind:function(arm,size=0xa8) addr:0x020e10ac func_ov031_020e1154 kind:function(arm,size=0x354) addr:0x020e1154 func_ov031_020e14a8 kind:function(arm,size=0x1c) addr:0x020e14a8 -_ZN19ActorProfileUnkBOMB10GetProfileEv kind:function(arm,size=0xc) addr:0x020e14c4 -_ZN19ActorProfileUnkBOMB6CreateEv kind:function(arm,size=0x24) addr:0x020e14d0 -_ZN19ActorProfileUnkBOMBC1Ev kind:function(arm,size=0x4c) addr:0x020e14f4 -_ZN12ActorUnkBOMB19func_ov031_020e1540Ev kind:function(arm,size=0x90) addr:0x020e1540 -_ZN12ActorUnkBOMB19func_ov031_020e15d0Ev kind:function(arm,size=0x64) addr:0x020e15d0 -_ZN12ActorUnkBOMB19func_ov031_020e1634Ev kind:function(arm,size=0x58) addr:0x020e1634 -_ZN12ActorUnkBOMBC1Ev kind:function(arm,size=0x168) addr:0x020e168c -_ZN16ActorUnkBOMB_unkD1Ev kind:function(arm,size=0x14) addr:0x020e17f4 -_ZN12ActorUnkBOMB19func_ov031_020e1808Ev kind:function(arm,size=0x14) addr:0x020e1808 -_ZN12ActorUnkBOMB19func_ov031_020e181cEv kind:function(arm,size=0x84) addr:0x020e181c -_ZN12ActorUnkBOMB19func_ov031_020e18a0Ev kind:function(arm,size=0x24) addr:0x020e18a0 -_ZN12ActorUnkBOMB19func_ov031_020e18c4Ev kind:function(arm,size=0x44) addr:0x020e18c4 -_ZN12ActorUnkBOMB19func_ov031_020e1908Ev kind:function(arm,size=0x18) addr:0x020e1908 -_ZN12ActorUnkBOMB19func_ov031_020e1920Ev kind:function(arm,size=0x1c) addr:0x020e1920 -_ZN12ActorUnkBOMB19func_ov031_020e193cEv kind:function(arm,size=0xec) addr:0x020e193c -_ZN12ActorUnkBOMB19func_ov031_020e1a28Ev kind:function(arm,size=0xd0) addr:0x020e1a28 -_ZN12ActorUnkBOMB19func_ov031_020e1af8Ev kind:function(arm,size=0x24) addr:0x020e1af8 -_ZN12ActorUnkBOMB19func_ov031_020e1b1cEv kind:function(arm,size=0x60) addr:0x020e1b1c -_ZN12ActorUnkBOMB19func_ov031_020e1b7cEv kind:function(arm,size=0x19c) addr:0x020e1b7c -_ZN12ActorUnkBOMB19func_ov031_020e1d18Ev kind:function(arm,size=0x30) addr:0x020e1d18 -_ZN12ActorUnkBOMB19func_ov031_020e1d48Ev kind:function(arm,size=0x10) addr:0x020e1d48 -_ZN12ActorUnkBOMB19func_ov031_020e1d58Ev kind:function(arm,size=0x1c) addr:0x020e1d58 -_ZN12ActorUnkBOMB19func_ov031_020e1d74Ev kind:function(arm,size=0x2c) addr:0x020e1d74 -_ZN12ActorUnkBOMB19func_ov031_020e1da0Ev kind:function(arm,size=0x11c) addr:0x020e1da0 -_ZN12ActorUnkBOMB19func_ov031_020e1ebcEv kind:function(arm,size=0x1c) addr:0x020e1ebc -_ZN12ActorUnkBOMB19func_ov031_020e1ed8Ev kind:function(arm,size=0x40) addr:0x020e1ed8 -_ZN12ActorUnkBOMB19func_ov031_020e1f18Ev kind:function(arm,size=0x70) addr:0x020e1f18 -_ZN12ActorUnkBOMB19func_ov031_020e1f88Ev kind:function(arm,size=0x58) addr:0x020e1f88 -_ZN12ActorUnkBOMB19func_ov031_020e1fe0Ev kind:function(arm,size=0x4) addr:0x020e1fe0 -_ZN12ActorUnkBOMB19func_ov031_020e1fe4Ev kind:function(arm,size=0x50) addr:0x020e1fe4 -_ZN12ActorUnkBOMB19func_ov031_020e2034Ev kind:function(arm,size=0x30) addr:0x020e2034 -_ZN12ActorUnkBOMB19func_ov031_020e2064Ev kind:function(arm,size=0x74) addr:0x020e2064 -_ZN12ActorUnkBOMB19func_ov031_020e20d8Ev kind:function(arm,size=0x24) addr:0x020e20d8 -_ZN12ActorUnkBOMB19func_ov031_020e20fcEv kind:function(arm,size=0x4) addr:0x020e20fc -_ZN12ActorUnkBOMB19func_ov031_020e2100Ev kind:function(arm,size=0x34) addr:0x020e2100 -_ZN12ActorUnkBOMB19func_ov031_020e2134Ev kind:function(arm,size=0xec) addr:0x020e2134 -_ZN12ActorUnkBOMB19func_ov031_020e2220Ev kind:function(arm,size=0x14) addr:0x020e2220 -_ZN12ActorUnkBOMB19func_ov031_020e2234Ev kind:function(arm,size=0x158) addr:0x020e2234 -_ZN12ActorUnkBOMB19func_ov031_020e238cEv kind:function(arm,size=0xe0) addr:0x020e238c -_ZN12ActorUnkBOMB19func_ov031_020e246cEv kind:function(arm,size=0x40) addr:0x020e246c -_ZN12ActorUnkBOMB19func_ov031_020e24acEv kind:function(arm,size=0x110) addr:0x020e24ac -_ZN12ActorUnkBOMB19func_ov031_020e25bcEv kind:function(arm,size=0x70) addr:0x020e25bc -_ZN12ActorUnkBOMB19func_ov031_020e262cEv kind:function(arm,size=0x54) addr:0x020e262c -_ZN12ActorUnkBOMB19func_ov031_020e2680Ev kind:function(arm,size=0x100) addr:0x020e2680 -_ZN12ActorUnkBOMB19func_ov031_020e2780Ev kind:function(arm,size=0xa0) addr:0x020e2780 -_ZN12ActorUnkBOMB19func_ov031_020e2820Ev kind:function(arm,size=0x13c) addr:0x020e2820 -_ZN12ActorUnkBOMB19func_ov031_020e295cEv kind:function(arm,size=0x140) addr:0x020e295c -_ZN12ActorUnkBOMB19func_ov031_020e2a9cEv kind:function(arm,size=0xa4) addr:0x020e2a9c -_ZN12ActorUnkBOMB19func_ov031_020e2b40Ev kind:function(arm,size=0xec) addr:0x020e2b40 -_ZN12ActorUnkBOMB19func_ov031_020e2c2cEv kind:function(arm,size=0x14c) addr:0x020e2c2c -_ZN12ActorUnkBOMB19func_ov031_020e2d78Ev kind:function(arm,size=0x3c) addr:0x020e2d78 -_ZN12ActorUnkBOMBD1Ev kind:function(arm,size=0x1c) addr:0x020e2db4 -_ZN12ActorUnkBOMBD0Ev kind:function(arm,size=0x24) addr:0x020e2dd0 -_ZN12ActorUnkBOMB19func_ov031_020e2df4Ev kind:function(arm,size=0x48) addr:0x020e2df4 -_ZN12ActorUnkBOMB19func_ov031_020e2e3cEv kind:function(arm,size=0x450) addr:0x020e2e3c -_ZN12ActorUnkBOMB19func_ov031_020e328cEv kind:function(arm,size=0x84) addr:0x020e328c -_ZN12ActorUnkBOMB19func_ov031_020e3310Ev kind:function(arm,size=0x30) addr:0x020e3310 -_ZN12ActorUnkBOMB19func_ov031_020e3340Ev kind:function(arm,size=0x3c) addr:0x020e3340 -_ZN12ActorUnkBOMB19func_ov031_020e337cEv kind:function(arm,size=0x30) addr:0x020e337c -_ZN16ActorUnkBOMB_unkC1Ev kind:function(arm,size=0x14) addr:0x020e33ac -_ZN12ActorUnkBOMB19func_ov031_020e33c0Ev kind:function(arm,size=0x1c) addr:0x020e33c0 -_ZN12ActorUnkBOMB19func_ov031_020e33dcEv kind:function(arm,size=0x1c) addr:0x020e33dc -_ZN12ActorUnkBOMB19func_ov031_020e33f8Ev kind:function(arm,size=0x50) addr:0x020e33f8 -_ZN12ActorUnkBOMB19func_ov031_020e3448Ev kind:function(arm,size=0x58) addr:0x020e3448 -_ZN19ActorProfileUnkBOMBD1Ev kind:function(arm,size=0x14) addr:0x020e34a0 +_ZN16ActorProfileBomb10GetProfileEv kind:function(arm,size=0xc) addr:0x020e14c4 +_ZN16ActorProfileBomb6CreateEv kind:function(arm,size=0x24) addr:0x020e14d0 +_ZN16ActorProfileBombC1Ev kind:function(arm,size=0x4c) addr:0x020e14f4 +_ZN9ActorBomb19func_ov031_020e1540Et kind:function(arm,size=0x90) addr:0x020e1540 +_ZN9ActorBomb19func_ov031_020e15d0Et kind:function(arm,size=0x64) addr:0x020e15d0 +_ZN9ActorBomb19func_ov031_020e1634Ev kind:function(arm,size=0x58) addr:0x020e1634 +_ZN9ActorBombC1Ev kind:function(arm,size=0x168) addr:0x020e168c +_ZN13ActorBomb_unkD1Ev kind:function(arm,size=0x14) addr:0x020e17f4 +_ZN13ActorBomb_19CD1Ev kind:function(arm,size=0x14) addr:0x020e1808 +_ZN9ActorBomb8vfunc_18Ei kind:function(arm,size=0x84) addr:0x020e181c +_ZN9ActorBomb19func_ov031_020e18a0Ev kind:function(arm,size=0x24) addr:0x020e18a0 +_ZN9ActorBomb8SetStateEs kind:function(arm,size=0x44) addr:0x020e18c4 +_ZN9ActorBomb19func_ov031_020e1908Ev kind:function(arm,size=0x18) addr:0x020e1908 +_ZN9ActorBomb19func_ov031_020e1920EP7VecFx32 kind:function(arm,size=0x1c) addr:0x020e1920 +_ZN9ActorBomb19func_ov031_020e193cEv kind:function(arm,size=0xec) addr:0x020e193c +_ZN9ActorBomb8vfunc_20Ev kind:function(arm,size=0xd0) addr:0x020e1a28 +_ZN9ActorBomb8vfunc_24Ev kind:function(arm,size=0x24) addr:0x020e1af8 +_ZN9ActorBomb19func_ov031_020e1b1cEv kind:function(arm,size=0x60) addr:0x020e1b1c +_ZN9ActorBomb19func_ov031_020e1b7cEv kind:function(arm,size=0x19c) addr:0x020e1b7c +_ZN9ActorBomb19func_ov031_020e1d18Ev kind:function(arm,size=0x30) addr:0x020e1d18 +_ZN9ActorBomb19func_ov031_020e1d48Ev kind:function(arm,size=0x10) addr:0x020e1d48 +_ZN9ActorBomb19func_ov031_020e1d58Ev kind:function(arm,size=0x1c) addr:0x020e1d58 +_ZN9ActorBomb19func_ov031_020e1d74Ev kind:function(arm,size=0x2c) addr:0x020e1d74 +_ZN9ActorBomb19func_ov031_020e1da0Ev kind:function(arm,size=0x11c) addr:0x020e1da0 +_ZN9ActorBomb19func_ov031_020e1ebcEv kind:function(arm,size=0x1c) addr:0x020e1ebc +_ZN9ActorBomb19func_ov031_020e1ed8Ev kind:function(arm,size=0x40) addr:0x020e1ed8 +_ZN9ActorBomb19func_ov031_020e1f18Ev kind:function(arm,size=0x70) addr:0x020e1f18 +_ZN9ActorBomb19func_ov031_020e1f88Ev kind:function(arm,size=0x58) addr:0x020e1f88 +_ZN9ActorBomb19func_ov031_020e1fe0Ev kind:function(arm,size=0x4) addr:0x020e1fe0 +_ZN9ActorBomb19func_ov031_020e1fe4Ev kind:function(arm,size=0x50) addr:0x020e1fe4 +_ZN9ActorBomb19func_ov031_020e2034Ev kind:function(arm,size=0x30) addr:0x020e2034 +_ZN9ActorBomb19func_ov031_020e2064Ev kind:function(arm,size=0x74) addr:0x020e2064 +_ZN9ActorBomb19func_ov031_020e20d8Ev kind:function(arm,size=0x24) addr:0x020e20d8 +_ZN9ActorBomb19func_ov031_020e20fcEv kind:function(arm,size=0x4) addr:0x020e20fc +_ZN9ActorBomb19func_ov031_020e2100Ev kind:function(arm,size=0x34) addr:0x020e2100 +_ZN9ActorBomb19func_ov031_020e2134Ev kind:function(arm,size=0xec) addr:0x020e2134 +_ZN24ActorBomb_ov031_020e2134D1Ev kind:function(arm,size=0x14) addr:0x020e2220 +_ZN9ActorBomb8vfunc_2CEi kind:function(arm,size=0x158) addr:0x020e2234 +_ZN9ActorBomb19func_ov031_020e238cEv kind:function(arm,size=0xe0) addr:0x020e238c +_ZN9ActorBomb4GrabE15ActorGrabParams kind:function(arm,size=0x40) addr:0x020e246c +_ZN9ActorBomb4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x110) addr:0x020e24ac +_ZN9ActorBomb19func_ov031_020e25bcEv kind:function(arm,size=0x70) addr:0x020e25bc +_ZN9ActorBomb19func_ov031_020e262cEv kind:function(arm,size=0x54) addr:0x020e262c +_ZN9ActorBomb19func_ov031_020e2680EP7VecFx32 kind:function(arm,size=0x100) addr:0x020e2680 +_ZN9ActorBomb19func_ov031_020e2780EP7VecFx32 kind:function(arm,size=0xa0) addr:0x020e2780 +_ZN9ActorBomb19func_ov031_020e2820EP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x13c) addr:0x020e2820 +_ZN9ActorBomb19func_ov031_020e295cEP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x140) addr:0x020e295c +_ZN9ActorBomb19func_ov031_020e2a9cEv kind:function(arm,size=0xa4) addr:0x020e2a9c +_ZN9ActorBomb19func_ov031_020e2b40Ev kind:function(arm,size=0xec) addr:0x020e2b40 +_ZN9ActorBomb19func_ov031_020e2c2cEv kind:function(arm,size=0x14c) addr:0x020e2c2c +_ZN13ActorBomb_180C1EP5Actor kind:function(arm,size=0x3c) addr:0x020e2d78 +_ZN13ActorBomb_180D1Ev kind:function(arm,size=0x1c) addr:0x020e2db4 +_ZN13ActorBomb_180D0Ev kind:function(arm,size=0x24) addr:0x020e2dd0 +_ZN13ActorBomb_1808vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x48) addr:0x020e2df4 +_ZN13ActorBomb_1808vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x450) addr:0x020e2e3c +_ZN13ActorBomb_1808vfunc_10E8ActorRefi kind:function(arm,size=0x84) addr:0x020e328c +_ZN24ActorBomb_ov031_020e21348vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e3310 +_ZN13ActorBomb_19CC1EP5Actor kind:function(arm,size=0x3c) addr:0x020e3340 +_ZN13ActorBomb_19C8vfunc_10EP5Actor kind:function(arm,size=0x30) addr:0x020e337c +_ZN13ActorBomb_unkC1Ev kind:function(arm,size=0x14) addr:0x020e33ac +_ZN24ActorBomb_ov031_020e2134D0Ev kind:function(arm,size=0x1c) addr:0x020e33c0 +_ZN13ActorBomb_19CD0Ev kind:function(arm,size=0x1c) addr:0x020e33dc +_ZN9ActorBombD1Ev kind:function(arm,size=0x50) addr:0x020e33f8 +_ZN9ActorBombD0Ev kind:function(arm,size=0x58) addr:0x020e3448 +_ZN16ActorProfileBombD1Ev kind:function(arm,size=0x14) addr:0x020e34a0 _ZN17ActorProfileBlast10GetProfileEv kind:function(arm,size=0xc) addr:0x020e34b4 _ZN17ActorProfileBlast6CreateEv kind:function(arm,size=0x24) addr:0x020e34c0 _ZN17ActorProfileBlastC1Ev kind:function(arm,size=0x38) addr:0x020e34e4 -_ZN13ActorBlast_E88vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x1a4) addr:0x020e351c +_ZN13ActorBlast_E88vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1a4) addr:0x020e351c _ZN10ActorBlastC1Ev kind:function(arm,size=0x7c) addr:0x020e36c0 _ZN13ActorBlast_E8D1Ev kind:function(arm,size=0x14) addr:0x020e373c _ZN10ActorBlast8vfunc_18Ei kind:function(arm,size=0x274) addr:0x020e3750 _ZN10ActorBlast8vfunc_20Ev kind:function(arm,size=0x180) addr:0x020e39c4 _ZN10ActorBlast8vfunc_24Ev kind:function(arm,size=0x50) addr:0x020e3b44 _ZN10ActorBlast19func_ov031_020e3b94Ev kind:function(arm,size=0x8) addr:0x020e3b94 -_ZN10ActorBlast19func_ov031_020e3b9cEss kind:function(arm,size=0x80) addr:0x020e3b9c +_ZN10ActorBlast19func_ov031_020e3b9cEP5Actorss kind:function(arm,size=0x80) addr:0x020e3b9c _ZN13ActorBlast_E8D0Ev kind:function(arm,size=0x1c) addr:0x020e3c1c _ZN10ActorBlastD1Ev kind:function(arm,size=0x28) addr:0x020e3c38 _ZN10ActorBlastD0Ev kind:function(arm,size=0x30) addr:0x020e3c60 @@ -485,7 +485,7 @@ _ZN15ActorUnkSWBM_948vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,siz _ZN15ActorUnkSWBM_948vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1c) addr:0x020e6900 _ZN15ActorUnkSWBM_988vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x58) addr:0x020e691c _ZN15ActorUnkSWBM_988vfunc_10EP5Actor kind:function(arm,size=0x58) addr:0x020e6974 -_ZN15ActorUnkSWBM_C88vfunc_00Eiii kind:function(arm,size=0x168) addr:0x020e69cc +_ZN15ActorUnkSWBM_C88vfunc_00Eii kind:function(arm,size=0x168) addr:0x020e69cc _ZN19ActorProfileUnkSWBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e6b34 _ZN19ActorProfileUnkSWBM6CreateEv kind:function(arm,size=0x24) addr:0x020e6b40 _ZN19ActorProfileUnkSWBMC1Ev kind:function(arm,size=0x44) addr:0x020e6b64 @@ -1111,7 +1111,7 @@ _ZN24ActorProfileRollingStone10GetProfileEv kind:function(arm,size=0xc) addr:0x0 _ZN24ActorProfileRollingStone6CreateEv kind:function(arm,size=0x24) addr:0x020f82ec _ZN24ActorProfileRollingStoneC1Ev kind:function(arm,size=0x44) addr:0x020f8310 _ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x90) addr:0x020f8354 -_ZN21ActorRollingStone_1048vfunc_10Ev kind:function(arm,size=0xb8) addr:0x020f83e4 +_ZN21ActorRollingStone_1048vfunc_10E8ActorRefi kind:function(arm,size=0xb8) addr:0x020f83e4 _ZN20ActorRollingStone_D48vfunc_10EP5Actor kind:function(arm,size=0x44) addr:0x020f849c _ZN17ActorRollingStoneC1Ev kind:function(arm,size=0x194) addr:0x020f84e0 _ZN20ActorRollingStone_D4D1Ev kind:function(arm,size=0x14) addr:0x020f8674 @@ -1507,25 +1507,25 @@ _ZN16MapObjectUnkSWHT19func_ov031_021020ecEv kind:function(arm,size=0xd4) addr:0 _ZN16MapObjectUnkSWHT19func_ov031_021021c0Esi kind:function(arm,size=0x1f0) addr:0x021021c0 _ZN16MapObjectUnkSWHT19func_ov031_021023b0Ev kind:function(arm,size=0x74) addr:0x021023b0 _ZN23MapObjectProfileUnkSWHTD1Ev kind:function(arm,size=0x14) addr:0x02102424 -_ZN23MapObjectProfileUnkBMFL10GetProfileEv kind:function(arm,size=0xc) addr:0x02102438 -_ZN23MapObjectProfileUnkBMFL6CreateEv kind:function(arm,size=0x24) addr:0x02102444 -_ZN23MapObjectProfileUnkBMFLC1Ev kind:function(arm,size=0x44) addr:0x02102468 -_ZN16MapObjectUnkBMFLC1Ev kind:function(arm,size=0x118) addr:0x021024ac -_ZN16MapObjectUnkBMFL19func_ov031_021025c4Ev kind:function(arm,size=0x144) addr:0x021025c4 -_ZN16MapObjectUnkBMFL19func_ov031_02102708Ev kind:function(arm,size=0x10) addr:0x02102708 -_ZN16MapObjectUnkBMFL19func_ov031_02102718Ev kind:function(arm,size=0x10) addr:0x02102718 -_ZN16MapObjectUnkBMFL19func_ov031_02102728Ev kind:function(arm,size=0x7c) addr:0x02102728 -_ZN16MapObjectUnkBMFL19func_ov031_021027a4Ev kind:function(arm,size=0xf0) addr:0x021027a4 -_ZN16MapObjectUnkBMFL19func_ov031_02102894Ev kind:function(arm,size=0x15c) addr:0x02102894 -_ZN16MapObjectUnkBMFL19func_ov031_021029f0Ev kind:function(arm,size=0x50) addr:0x021029f0 -_ZN16MapObjectUnkBMFL19func_ov031_02102a40Ev kind:function(arm,size=0x98) addr:0x02102a40 -_ZN16MapObjectUnkBMFL19func_ov031_02102ad8Ev kind:function(arm,size=0x1c) addr:0x02102ad8 -_ZN16MapObjectUnkBMFL19func_ov031_02102af4Ev kind:function(arm,size=0x70) addr:0x02102af4 -_ZN16MapObjectUnkBMFLD1Ev kind:function(arm,size=0x20) addr:0x02102b64 -_ZN16MapObjectUnkBMFLD0Ev kind:function(arm,size=0x28) addr:0x02102b84 -_ZN23MapObjectProfileUnkBMFLD1Ev kind:function(arm,size=0x14) addr:0x02102bac +_ZN26MapObjectProfileBombFlower10GetProfileEv kind:function(arm,size=0xc) addr:0x02102438 +_ZN26MapObjectProfileBombFlower6CreateEv kind:function(arm,size=0x24) addr:0x02102444 +_ZN26MapObjectProfileBombFlowerC1Ev kind:function(arm,size=0x44) addr:0x02102468 +_ZN19MapObjectBombFlowerC1Ev kind:function(arm,size=0x118) addr:0x021024ac +_ZN19MapObjectBombFlower8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x144) addr:0x021025c4 +_ZN19MapObjectBombFlower8vfunc_48Ev kind:function(arm,size=0x10) addr:0x02102708 +_ZN19MapObjectBombFlower8vfunc_58Ev kind:function(arm,size=0x10) addr:0x02102718 +_ZN19MapObjectBombFlower19func_ov031_02102728Ei kind:function(arm,size=0x7c) addr:0x02102728 +_ZN19MapObjectBombFlower8vfunc_08Ev kind:function(arm,size=0xf0) addr:0x021027a4 +_ZN19MapObjectBombFlower8SetStateEsi kind:function(arm,size=0x15c) addr:0x02102894 +_ZN19MapObjectBombFlower8vfunc_14Ev kind:function(arm,size=0x50) addr:0x021029f0 +_ZN19MapObjectBombFlower8vfunc_38Ev kind:function(arm,size=0x98) addr:0x02102a40 +_ZN19MapObjectBombFlower8vfunc_28Ev kind:function(arm,size=0x1c) addr:0x02102ad8 +_ZN19MapObjectBombFlower8vfunc_50EP8ActorRefP17MapObjectPot_Base kind:function(arm,size=0x70) addr:0x02102af4 +_ZN19MapObjectBombFlowerD1Ev kind:function(arm,size=0x20) addr:0x02102b64 +_ZN19MapObjectBombFlowerD0Ev kind:function(arm,size=0x28) addr:0x02102b84 +_ZN26MapObjectProfileBombFlowerD1Ev kind:function(arm,size=0x14) addr:0x02102bac _ZN26ModelRender_ov031_0211578cC1EPK10G3d_Model_ii kind:function(arm,size=0x40) addr:0x02102bc0 -func_ov031_02102c00 kind:function(arm,size=0x30) addr:0x02102c00 +_ZN26ModelRender_ov031_0211578c19func_ov031_02102c00Ev kind:function(arm,size=0x30) addr:0x02102c00 func_ov031_02102c30 kind:function(arm,size=0x224) addr:0x02102c30 _ZN19func_ov031_02102e54D0Ev kind:function(arm,size=0x1c) addr:0x02102e54 _ZN31MapObjectProfileTreasureSpawned10GetProfileEv kind:function(arm,size=0xc) addr:0x02102e70 @@ -2070,7 +2070,7 @@ data_ov031_02110f74 kind:data(any) addr:0x02110f74 data_ov031_02110f88 kind:data(any) addr:0x02110f88 __sinit_ov031_02110fd0 kind:function(arm,size=0x18) addr:0x02110fd0 __sinit_ov031_02110fe8 kind:function(arm,size=0x10) addr:0x02110fe8 -__sinit_ActorUnkBOMB.cpp kind:function(arm,size=0x50) addr:0x02110ff8 +__sinit_ActorBomb.cpp kind:function(arm,size=0x50) addr:0x02110ff8 __sinit_ActorBlast.cpp kind:function(arm,size=0x50) addr:0x02111048 __sinit_ActorUnkTLKT.cpp kind:function(arm,size=0x50) addr:0x02111098 local __sinit_ActorItemBoomerang.cpp kind:function(arm,size=0x50) addr:0x021110e8 @@ -2110,7 +2110,7 @@ __sinit_MapObjectUnkGATE.cpp kind:function(arm,size=0x50) addr:0x02111d58 __sinit_MapObjectUnkSTIR.cpp kind:function(arm,size=0x50) addr:0x02111da8 __sinit_MapObjectGrass.cpp kind:function(arm,size=0x90) addr:0x02111df8 __sinit_MapObjectUnkSWHT.cpp kind:function(arm,size=0x70) addr:0x02111e88 -__sinit_MapObjectUnkBMFL.cpp kind:function(arm,size=0x50) addr:0x02111ef8 +__sinit_MapObjectBombFlower.cpp kind:function(arm,size=0x50) addr:0x02111ef8 __sinit_MapObjectTreasureSpawned.cpp kind:function(arm,size=0x6c) addr:0x02111f48 local __sinit_MapObjectChestBase.cpp kind:function(arm,size=0x30) addr:0x02111fb4 __sinit_MapObjectUnkTRED.cpp kind:function(arm,size=0x6c) addr:0x02111fe4 @@ -2134,7 +2134,7 @@ __sinit_MapObjectUnkGSST.cpp kind:function(arm,size=0x50) addr:0x021126d4 __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x02112724 .p__sinit_ov031_02110fd0 kind:data(word) addr:0x02112794 .p__sinit_ov031_02110fe8 kind:data(word) addr:0x02112798 -.p__sinit_ActorUnkBOMB.cpp kind:data(word) addr:0x0211279c +.p__sinit_ActorBomb.cpp kind:data(word) addr:0x0211279c .p__sinit_ActorBlast.cpp kind:data(word) addr:0x021127a0 .p__sinit_ActorUnkTLKT.cpp kind:data(word) addr:0x021127a4 local .p__sinit_ActorItemBoomerang.cpp kind:data(word) addr:0x021127a8 @@ -2174,7 +2174,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x02112724 .p__sinit_MapObjectUnkSTIR.cpp kind:data(word) addr:0x02112830 .p__sinit_MapObjectGrass.cpp kind:data(word) addr:0x02112834 .p__sinit_MapObjectUnkSWHT.cpp kind:data(word) addr:0x02112838 -.p__sinit_MapObjectUnkBMFL.cpp kind:data(word) addr:0x0211283c +.p__sinit_MapObjectBombFlower.cpp kind:data(word) addr:0x0211283c .p__sinit_MapObjectTreasureSpawned.cpp kind:data(word) addr:0x02112840 local .p__sinit_MapObjectChestBase.cpp kind:data(word) addr:0x02112844 .p__sinit_MapObjectUnkTRED.cpp kind:data(word) addr:0x02112848 @@ -2245,11 +2245,11 @@ data_ov031_02112bdc kind:data(any) addr:0x02112bdc data_ov031_02112be8 kind:data(any) addr:0x02112be8 data_ov031_02112c00 kind:data(any) addr:0x02112c00 data_ov031_02112c38 kind:data(any) addr:0x02112c38 -_ZTV19data_ov031_02112c78 kind:data(any) addr:0x02112c70 -_ZTV19data_ov031_02112c94 kind:data(any) addr:0x02112c8c -_ZTV19data_ov031_02112cb0 kind:data(any) addr:0x02112ca8 -_ZTV19data_ov031_02112cc4 kind:data(any) addr:0x02112cc4 -_ZTV19data_ov031_02112ce8 kind:data(any) addr:0x02112ce8 +_ZTV13ActorBomb_180 kind:data(any) addr:0x02112c70 +_ZTV13ActorBomb_19C kind:data(any) addr:0x02112c8c +_ZTV24ActorBomb_ov031_020e2134 kind:data(any) addr:0x02112ca8 +_ZTV16ActorProfileBomb kind:data(any) addr:0x02112cc4 +_ZTV9ActorBomb kind:data(any) addr:0x02112ce8 _ZTV13ActorBlast_E8 kind:data(any) addr:0x02112d44 _ZTV17ActorProfileBlast kind:data(any) addr:0x02112d60 _ZTV10ActorBlast kind:data(any) addr:0x02112d84 @@ -2333,7 +2333,7 @@ _ZTV10ActorHeart kind:data(any) addr:0x02113e10 _ZTV19ActorProfileUnkRMTG kind:data(any) addr:0x02113e6c _ZTV12ActorUnkRMTG kind:data(any) addr:0x02113e90 _ZTV19ActorProfileUnkSCCN kind:data(any) addr:0x02113eec -_ZTV12MapObject_10 kind:data(any) addr:0x02113f10 +_ZTV17MapObject_10_SCCN kind:data(any) addr:0x02113f10 _ZTV12ActorUnkSCCN kind:data(any) addr:0x02113f38 _ZTV19data_ov031_02113f9c kind:data(any) addr:0x02113f94 _ZTV19data_ov031_02113fb8 kind:data(any) addr:0x02113fb0 @@ -2440,8 +2440,8 @@ _ZTV14MapObjectGrass kind:data(any) addr:0x02115654 data_ov031_0211569c kind:data(any) addr:0x0211569c _ZTV23MapObjectProfileUnkSWHT kind:data(any) addr:0x021156a8 _ZTV16MapObjectUnkSWHT kind:data(any) addr:0x021156c4 -_ZTV19data_ov031_0211570c kind:data(any) addr:0x02115704 -data_ov031_02115728 kind:data(any) addr:0x02115728 +_ZTV26MapObjectProfileBombFlower kind:data(any) addr:0x02115704 +_ZTV19MapObjectBombFlower kind:data(any) addr:0x02115720 _ZTV19data_ov031_0211578c kind:data(any) addr:0x02115784 data_ov031_021157b0 kind:data(any) addr:0x021157b0 local _ZTV31MapObjectProfileTreasureSpawned kind:data(any) addr:0x021157b8 @@ -2519,9 +2519,9 @@ data_ov031_0211632c kind:data(any) addr:0x0211632c data_ov031_02116340 kind:data(any) addr:0x02116340 ambiguous data_ov031_02116358 kind:data(any) addr:0x02116358 data_ov031_02116380 kind:bss addr:0x02116380 -_ZGVN15ProfileInstanceI19ActorProfileUnkBOMBE8sProfileE kind:bss addr:0x02116404 +_ZGVN15ProfileInstanceI16ActorProfileBombE8sProfileE kind:bss addr:0x02116404 @10775 kind:bss addr:0x02116408 -_ZN15ProfileInstanceI19ActorProfileUnkBOMBE8sProfileE kind:bss addr:0x02116414 +_ZN15ProfileInstanceI16ActorProfileBombE8sProfileE kind:bss addr:0x02116414 _ZGVN15ProfileInstanceI17ActorProfileBlastE8sProfileE kind:bss addr:0x02116450 @10781 kind:bss addr:0x02116454 _ZN15ProfileInstanceI17ActorProfileBlastE8sProfileE kind:bss addr:0x02116460 @@ -2657,9 +2657,9 @@ _ZGVN15ProfileInstanceI23MapObjectProfileUnkSWHTE8sProfileE kind:bss addr:0x0211 _ZN15ProfileInstanceI23MapObjectProfileUnkSWHTE8sProfileE kind:bss addr:0x021179c8 data_ov031_021179e8 kind:bss addr:0x021179e8 data_ov031_02117a9c kind:bss addr:0x02117a9c -_ZGVN15ProfileInstanceI23MapObjectProfileUnkBMFLE8sProfileE kind:bss addr:0x02117abc +_ZGVN15ProfileInstanceI26MapObjectProfileBombFlowerE8sProfileE kind:bss addr:0x02117abc @10993 kind:bss addr:0x02117ac0 -_ZN15ProfileInstanceI23MapObjectProfileUnkBMFLE8sProfileE kind:bss addr:0x02117acc +_ZN15ProfileInstanceI26MapObjectProfileBombFlowerE8sProfileE kind:bss addr:0x02117acc _ZGVN15ProfileInstanceI31MapObjectProfileTreasureSpawnedE8sProfileE kind:bss addr:0x02117ba0 @10999 kind:bss addr:0x02117ba4 local _ZN15ProfileInstanceI31MapObjectProfileTreasureSpawnedE8sProfileE kind:bss addr:0x02117bb0 diff --git a/config/eur/arm9/overlays/ov093/symbols.txt b/config/eur/arm9/overlays/ov093/symbols.txt index 6920aa5d..25193492 100644 --- a/config/eur/arm9/overlays/ov093/symbols.txt +++ b/config/eur/arm9/overlays/ov093/symbols.txt @@ -26,7 +26,7 @@ func_ov093_02166178 kind:function(arm,size=0x10) addr:0x02166178 func_ov093_02166188 kind:function(arm,size=0x14) addr:0x02166188 func_ov093_0216619c kind:function(arm,size=0x14) addr:0x0216619c func_ov093_021661b0 kind:function(arm,size=0x10) addr:0x021661b0 -func_ov093_021661c0 kind:function(arm,size=0x20) addr:0x021661c0 +_ZN18UnkStruct_027e0d8c19func_ov093_021661c0E8ActorRef kind:function(arm,size=0x20) addr:0x021661c0 func_ov093_021661e0 kind:function(arm,size=0x10) addr:0x021661e0 func_ov093_021661f0 kind:function(arm,size=0x10) addr:0x021661f0 func_ov093_02166200 kind:function(arm,size=0x10) addr:0x02166200 diff --git a/config/eur/arm9/overlays/ov110/symbols.txt b/config/eur/arm9/overlays/ov110/symbols.txt index a9aea18e..cfd5994c 100644 --- a/config/eur/arm9/overlays/ov110/symbols.txt +++ b/config/eur/arm9/overlays/ov110/symbols.txt @@ -1,5 +1,5 @@ _ZN9Inventory19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x02184a40 -_ZN22UnkStruct_PlayerGet_748vfunc_00Eiii kind:function(arm,size=0x30) addr:0x02184dac +_ZN22UnkStruct_PlayerGet_748vfunc_00Eii kind:function(arm,size=0x30) addr:0x02184dac _ZN9PlayerGetC2Ev kind:function(arm,size=0xa0) addr:0x02184ddc _ZN9PlayerGetD1Ev kind:function(arm,size=0xc4) addr:0x02184e7c _ZN9PlayerGetD0Ev kind:function(arm,size=0xcc) addr:0x02184f40 diff --git a/config/jp/arm9/overlays/ov000/delinks.txt b/config/jp/arm9/overlays/ov000/delinks.txt index aa91dd61..9aef02cd 100644 --- a/config/jp/arm9/overlays/ov000/delinks.txt +++ b/config/jp/arm9/overlays/ov000/delinks.txt @@ -83,6 +83,10 @@ src/000_Second/MapObject/MapObject.cpp: .text start:0x0209e7a4 end:0x0209eec4 .data start:0x020b4d88 end:0x020b4dc8 +src/000_Second/MapObject/MapObjectPot_Base.cpp: + .text start:0x0209eec4 end:0x0209f338 + .data start:0x020b4dc8 end:0x020b4e28 + src/000_Second/MapObject/MapObjectSwitchStep.cpp: .text start:0x0209f4a4 end:0x0209fbbc .rodata start:0x020af548 end:0x020af56c diff --git a/config/jp/arm9/overlays/ov000/relocs.txt b/config/jp/arm9/overlays/ov000/relocs.txt index 9901e8ac..0b0f96d2 100644 --- a/config/jp/arm9/overlays/ov000/relocs.txt +++ b/config/jp/arm9/overlays/ov000/relocs.txt @@ -7224,7 +7224,7 @@ from:0x0209f3dc kind:arm_call to:0x0209e7a4 module:overlay(0) from:0x0209f3ec kind:arm_call to:0x02016614 module:main from:0x0209f408 kind:arm_call_thumb to:0x0205db0c module:overlay(0) from:0x0209f414 kind:load to:0x020b4e3c module:overlay(0) -from:0x0209f418 kind:load to:0x020b4e30 module:overlay(0) +from:0x0209f418 kind:load to:0x020b4e28 module:overlay(0) add:0x8 from:0x0209f438 kind:load to:0x027e09bc module:dtcm from:0x0209f43c kind:load to:0x0201668c module:main from:0x0209f468 kind:arm_call to:0x0201662c module:main diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index ee7dba84..146899d5 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -67,7 +67,7 @@ func_ov000_02057750 kind:function(thumb,size=0xc) addr:0x02058cd0 _ZN31ModelRender_UnkSystem1_Derived1C1EP10G3d_Model_m kind:function(thumb,size=0x20) addr:0x02058cdc _ZN22ModelRender_UnkSystem1D1Ev kind:function(thumb,size=0xe) addr:0x02058cfc _ZN10UnkSystem5C1EPvP10G3d_Model_ kind:function(thumb,size=0x18) addr:0x02058d0c -_ZN10UnkSystem519func_ov000_020577a4Eiii kind:function(arm,size=0x54) addr:0x02058d24 +_ZN10UnkSystem519func_ov000_020577a4EP24UnkStruct_ov000_02058a84ii kind:function(arm,size=0x54) addr:0x02058d24 _ZN10UnkSystem519func_ov000_020577f8Ei kind:function(arm,size=0x38) addr:0x02058d78 func_ov000_02058db0 kind:function(arm,size=0x3c) addr:0x02058db0 func_ov000_02058dec kind:function(arm,size=0x38) addr:0x02058dec @@ -103,7 +103,7 @@ func_ov000_020591ec kind:function(arm,size=0x2c) addr:0x020591ec _ZN11ModelRender19func_ov000_02057c98EP10UnkSystem5 kind:function(arm,size=0x18) addr:0x02059218 func_ov000_02059230 kind:function(arm,size=0x18) addr:0x02059230 func_ov000_02059248 kind:function(arm,size=0x2c) addr:0x02059248 -func_ov000_02059274 kind:function(arm,size=0x2c) addr:0x02059274 +_ZN11ModelRender19func_ov000_02057cf4Ev kind:function(arm,size=0x2c) addr:0x02059274 _ZN11ModelRender19func_ov000_02057d20Eh kind:function(thumb,size=0x1c) addr:0x020592a0 _ZN11ModelRender19func_ov000_02057d3cEP18G3d_BoneMtxStruct_ kind:function(arm,size=0x30) addr:0x020592bc func_ov000_020592ec kind:function(arm,size=0x18) addr:0x020592ec @@ -1416,7 +1416,7 @@ _ZN19func_ov000_0207d6a0D0Ev kind:function(arm,size=0x14) addr:0x0207d6a0 _ZN29UnkStruct_ov031_Items_00_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207d6b4 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x8) addr:0x0207d6b8 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x8) addr:0x0207d6c0 -_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207d6c8 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10E8ActorRefi kind:function(arm,size=0x8) addr:0x0207d6c8 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0 func_ov000_0207d700 kind:function(arm,size=0x30) addr:0x0207d700 func_ov000_0207d730 kind:function(arm,size=0x38) addr:0x0207d730 @@ -1431,14 +1431,14 @@ func_ov000_0207daa4 kind:function(arm,size=0x20) addr:0x0207daa4 func_ov000_0207dac4 kind:function(arm,size=0x44) addr:0x0207dac4 func_ov000_0207db08 kind:function(arm,size=0x30) addr:0x0207db08 func_ov000_0207db38 kind:function(arm,size=0x1c) addr:0x0207db38 -func_ov000_0207db54 kind:function(arm,size=0x8) addr:0x0207db54 -func_ov000_0207db5c kind:function(arm,size=0x4b8) addr:0x0207db5c -func_ov000_0207e014 kind:function(arm,size=0x10) addr:0x0207e014 -func_ov000_0207e024 kind:function(arm,size=0x34) addr:0x0207e024 -func_ov000_0207e058 kind:function(arm,size=0x70) addr:0x0207e058 -func_ov000_0207e0c8 kind:function(arm,size=0x28) addr:0x0207e0c8 -func_ov000_0207e0f0 kind:function(arm,size=0x78) addr:0x0207e0f0 -func_ov000_0207e168 kind:function(arm,size=0x10) addr:0x0207e168 +_ZN12MapObject_108vfunc_00Ev kind:function(arm,size=0x8) addr:0x0207db54 +_ZN12MapObject_108vfunc_04Ev kind:function(arm,size=0x4b8) addr:0x0207db5c +_ZN12MapObject_108vfunc_0CEv kind:function(arm,size=0x10) addr:0x0207e014 +_ZN12MapObject_108vfunc_08Ev kind:function(arm,size=0x34) addr:0x0207e024 +_ZN12MapObject_108vfunc_10EP8Cylinder kind:function(arm,size=0x70) addr:0x0207e058 +_ZN12MapObject_108vfunc_14Ev kind:function(arm,size=0x28) addr:0x0207e0c8 +_ZN12MapObject_108vfunc_18EP7VecFx32 kind:function(arm,size=0x78) addr:0x0207e0f0 +_ZN12MapObject_108vfunc_1CEP7VecFx32 kind:function(arm,size=0x10) addr:0x0207e168 func_ov000_0207e178 kind:function(arm,size=0x8) addr:0x0207e178 func_ov000_0207e180 kind:function(arm,size=0x804) addr:0x0207e180 func_ov000_0207e984 kind:function(arm,size=0x10) addr:0x0207e984 @@ -2063,10 +2063,10 @@ func_ov000_0209026c kind:function(arm,size=0x104) addr:0x0209026c func_ov000_02090370 kind:function(arm,size=0x60) addr:0x02090370 func_ov000_020903d0 kind:function(thumb,size=0x1c) addr:0x020903d0 func_ov000_020903ec kind:function(thumb,size=0x20) addr:0x020903ec -func_ov000_0209040c kind:function(thumb,size=0x34) addr:0x0209040c +_ZN21UnkStruct_027e0ce0_1C19func_ov000_0208ed30EiiPc kind:function(thumb,size=0x34) addr:0x0209040c func_ov000_02090440 kind:function(thumb,size=0xc4) addr:0x02090440 func_ov000_02090504 kind:function(thumb,size=0x6c) addr:0x02090504 -func_ov000_02090570 kind:function(arm,size=0x8c) addr:0x02090570 +_ZN21UnkStruct_027e0ce0_1C19func_ov000_0208ee94EiiPci kind:function(arm,size=0x8c) addr:0x02090570 func_ov000_020905fc kind:function(arm,size=0x68) addr:0x020905fc func_ov000_02090664 kind:function(thumb,size=0x34) addr:0x02090664 func_ov000_02090698 kind:function(thumb,size=0x12) addr:0x02090698 @@ -2574,21 +2574,21 @@ _ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0 _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209edd8 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209ee2c _ZN9MapObject19func_ov000_0209d6acEP7VecFx32 kind:function(arm,size=0x54) addr:0x0209ee70 -func_ov000_0209eec4 kind:function(arm,size=0x50) addr:0x0209eec4 -_ZN19func_ov000_0209ef14D0Ev kind:function(arm,size=0x1c) addr:0x0209ef14 -_ZN19func_ov000_0209ef30D2Ev kind:function(arm,size=0x14) addr:0x0209ef30 -func_ov000_0209ef44 kind:function(arm,size=0x24) addr:0x0209ef44 -func_ov000_0209ef68 kind:function(arm,size=0x144) addr:0x0209ef68 -func_ov000_0209f0ac kind:function(arm,size=0xc4) addr:0x0209f0ac -func_ov000_0209f170 kind:function(arm,size=0x4c) addr:0x0209f170 -func_ov000_0209f1bc kind:function(arm,size=0x68) addr:0x0209f1bc -func_ov000_0209f224 kind:function(arm,size=0x4) addr:0x0209f224 -func_ov000_0209f228 kind:function(arm,size=0xc) addr:0x0209f228 -func_ov000_0209f234 kind:function(arm,size=0x8) addr:0x0209f234 -func_ov000_0209f23c kind:function(arm,size=0x48) addr:0x0209f23c -func_ov000_0209f284 kind:function(arm,size=0xb4) addr:0x0209f284 -func_ov000_0209f338 kind:function(arm,size=0x8) addr:0x0209f338 -func_ov000_0209f340 kind:function(arm,size=0x8) addr:0x0209f340 +_ZN17MapObjectPot_BaseC2Ev kind:function(arm,size=0x50) addr:0x0209eec4 +_ZN17MapObjectPot_BaseD0Ev kind:function(arm,size=0x1c) addr:0x0209ef14 +_ZN17MapObjectPot_BaseD2Ev kind:function(arm,size=0x14) addr:0x0209ef30 +_ZN17MapObjectPot_Base8vfunc_00Ev kind:function(arm,size=0x24) addr:0x0209ef44 +_ZN17MapObjectPot_Base8SetStateEsi kind:function(arm,size=0x144) addr:0x0209ef68 +_ZN17MapObjectPot_Base8vfunc_24EP9MapObject7VecFx32 kind:function(arm,size=0xc4) addr:0x0209f0ac +_ZN17MapObjectPot_Base8vfunc_38Ev kind:function(arm,size=0x4c) addr:0x0209f170 +_ZN17MapObjectPot_Base8vfunc_28Ev kind:function(arm,size=0x68) addr:0x0209f1bc +_ZN17MapObjectPot_Base8vfunc_48Ev kind:function(arm,size=0x4) addr:0x0209f224 +_ZN17MapObjectPot_Base8vfunc_54Ev kind:function(arm,size=0xc) addr:0x0209f228 +_ZN17MapObjectPot_Base8vfunc_4CEv kind:function(arm,size=0x8) addr:0x0209f234 +_ZN17MapObjectPot_Base19func_ov000_0209da78Eii kind:function(arm,size=0x48) addr:0x0209f23c +_ZN17MapObjectPot_Base8vfunc_50EP8ActorRefPS_ kind:function(arm,size=0xb4) addr:0x0209f284 +_ZN17MapObjectPot_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x0209f338 +_ZN17MapObjectPot_Base8vfunc_40Ev kind:function(arm,size=0x8) addr:0x0209f340 func_ov000_0209f348 kind:function(arm,size=0x8c) addr:0x0209f348 func_ov000_0209f3d4 kind:function(arm,size=0x48) addr:0x0209f3d4 func_ov000_0209f41c kind:function(arm,size=0x24) addr:0x0209f41c @@ -3693,8 +3693,8 @@ _ZTV28MapObjectProfile_Derived2_20 kind:data(any) addr:0x020b4d60 @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 +_ZTV17MapObjectPot_Base kind:data(any) addr:0x020b4dc8 +_ZTV19data_ov000_020b4e30 kind:data(any) addr:0x020b4e28 data_ov000_020b4e3c kind:data(any) addr:0x020b4e3c _ZTV26MapObjectProfileSwitchStep kind:data(any) addr:0x020b4e78 _ZTV31MapObjectProfileSwitchStep_Base kind:data(any) addr:0x020b4e94 diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 4f5a0798..43036a7d 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -131,8 +131,8 @@ func_ov017_020c3864 kind:function(arm,size=0x164) addr:0x020c3864 func_ov017_020c39c8 kind:function(arm,size=0x174) addr:0x020c39c8 func_ov017_020c3b3c kind:function(arm,size=0x94) addr:0x020c3b3c func_ov017_020c3bd0 kind:function(arm,size=0x94) addr:0x020c3bd0 -func_ov017_020c3c64 kind:function(arm,size=0x2c0) addr:0x020c3c64 -func_ov017_020c3f24 kind:function(arm,size=0x1bc) addr:0x020c3f24 +func_ov017_020c2438 kind:function(arm,size=0x2c0) addr:0x020c3c64 +func_ov017_020c26f8 kind:function(arm,size=0x1bc) addr:0x020c3f24 func_ov017_020c40e0 kind:function(arm,size=0xc8) addr:0x020c40e0 func_ov017_020c41a8 kind:function(arm,size=0x15c) addr:0x020c41a8 func_ov017_020c4304 kind:function(arm,size=0x90) addr:0x020c4304 diff --git a/config/jp/arm9/overlays/ov031/delinks.txt b/config/jp/arm9/overlays/ov031/delinks.txt index 42fa5513..673cf9cb 100644 --- a/config/jp/arm9/overlays/ov031/delinks.txt +++ b/config/jp/arm9/overlays/ov031/delinks.txt @@ -8,10 +8,11 @@ src/031_Land/UnkStruct_027e0d34.cpp: .text start:0x020db1d4 end:0x020db1f4 -src/031_Land/Actor/ActorUnkBOMB.cpp: +src/031_Land/Actor/ActorBomb.cpp: .text start:0x020e2e94 end:0x020e4ea0 .init start:0x02112d68 end:0x02112db8 .ctor start:0x02114528 end:0x0211452c + .data start:0x02114988 end:0x02114ae4 .bss start:0x021181a4 end:0x021181f0 src/031_Land/Actor/ActorBlast.cpp: @@ -277,7 +278,7 @@ src/031_Land/MapObject/MapObjectGrass.cpp: .text start:0x02102d54 end:0x02103724 .init start:0x02113b84 end:0x02113c14 .ctor start:0x021145c0 end:0x021145c4 - .data start:0x02117390 end:0x0211741c + .data start:0x02117390 end:0x02117410 .bss start:0x02119608 end:0x02119758 src/031_Land/MapObject/MapObjectUnkSWHT.cpp: @@ -286,10 +287,11 @@ src/031_Land/MapObject/MapObjectUnkSWHT.cpp: .ctor start:0x021145c4 end:0x021145c8 .bss start:0x02119758 end:0x0211985c -src/031_Land/MapObject/MapObjectUnkBMFL.cpp: +src/031_Land/MapObject/MapObjectBombFlower.cpp: .text start:0x02104194 end:0x0210491c .init start:0x02113c84 end:0x02113cd4 .ctor start:0x021145c8 end:0x021145cc + .data start:0x02117478 end:0x021174f8 .bss start:0x0211985c end:0x02119940 src/031_Land/MapObject/MapObjectTreasureSpawned.cpp: @@ -335,6 +337,7 @@ src/031_Land/MapObject/MapObjectPot.cpp: .text start:0x02106c8c end:0x021071f8 .init start:0x02113f04 end:0x02113f54 .ctor start:0x021145e4 end:0x021145e8 + .data start:0x02117858 end:0x021178d4 .bss start:0x02119ccc end:0x02119dd0 src/031_Land/MapObject/MapObjectUnkSKBN.cpp: diff --git a/config/jp/arm9/overlays/ov031/relocs.txt b/config/jp/arm9/overlays/ov031/relocs.txt index ea77ea5a..e056bee7 100644 --- a/config/jp/arm9/overlays/ov031/relocs.txt +++ b/config/jp/arm9/overlays/ov031/relocs.txt @@ -51,13 +51,13 @@ from:0x020da700 kind:load to:0x027e0ce4 module:dtcm from:0x020da734 kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x020da754 kind:arm_call to:0x02080320 module:overlay(0) from:0x020da768 kind:arm_call to:0x020da8c4 module:overlay(31) -from:0x020da774 kind:load to:0x02114818 module:overlay(31) +from:0x020da774 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x020da778 kind:load to:0x02114804 module:overlay(31) from:0x020da784 kind:arm_call to:0x020803c8 module:overlay(0) from:0x020da7c4 kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x020da7e4 kind:arm_call to:0x02080320 module:overlay(0) from:0x020da7f8 kind:arm_call to:0x020da8c4 module:overlay(31) -from:0x020da804 kind:load to:0x02114818 module:overlay(31) +from:0x020da804 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x020da808 kind:load to:0x02114804 module:overlay(31) from:0x020da814 kind:arm_call to:0x020da938 module:overlay(31) from:0x020da81c kind:arm_call to:0x020803c8 module:overlay(0) @@ -1018,7 +1018,7 @@ from:0x020e3bc8 kind:arm_call to:0x020e4348 module:overlay(31) from:0x020e3bd4 kind:arm_call to:0x020e420c module:overlay(31) from:0x020e3bf0 kind:arm_call to:0x02099c78 module:overlay(0) from:0x020e3bf8 kind:arm_call to:0x0207d6b4 module:overlay(0) -from:0x020e3c08 kind:load to:0x02114a50 module:overlay(31) +from:0x020e3c08 kind:load to:0x02114a48 module:overlay(31) add:0x8 from:0x020e3c14 kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x020e3c30 kind:arm_call to:0x01fff5d0 module:itcm from:0x020e3c54 kind:arm_call to:0x020a1b0c module:overlay(0) @@ -1086,7 +1086,7 @@ from:0x020e468c kind:arm_call to:0x02099c78 module:overlay(0) from:0x020e4738 kind:arm_call to:0x020e3298 module:overlay(31) from:0x020e4754 kind:arm_call to:0x020e416c module:overlay(31) from:0x020e4770 kind:arm_call to:0x02099a50 module:overlay(0) -from:0x020e479c kind:load to:0x02114a18 module:overlay(31) +from:0x020e479c kind:load to:0x02114a10 module:overlay(31) add:0x8 from:0x020e47b0 kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x020e47cc kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x020e47d4 kind:arm_call to:0x02011ff4 module:main @@ -1111,7 +1111,7 @@ from:0x020e4cd4 kind:arm_call to:0x02099c78 module:overlay(0) from:0x020e4ce0 kind:arm_call to:0x020e3298 module:overlay(31) from:0x020e4cf4 kind:load to:0x027e0ce4 module:dtcm from:0x020e4d24 kind:arm_call to:0x02099a80 module:overlay(0) -from:0x020e4d64 kind:load to:0x02114a34 module:overlay(31) +from:0x020e4d64 kind:load to:0x02114a2c module:overlay(31) add:0x8 from:0x020e4d88 kind:arm_call to:0x020e5588 module:overlay(31) from:0x020e4d90 kind:arm_call to:0x02099c78 module:overlay(0) from:0x020e4db4 kind:arm_call to:0x0207d6b4 module:overlay(0) @@ -1727,7 +1727,7 @@ from:0x020ea238 kind:arm_call to:0x020ea2cc module:overlay(31) from:0x020ea24c kind:arm_call to:0x02099040 module:overlay(0) from:0x020ea25c kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x020ea2b4 kind:load to:0x02115164 module:overlay(31) add:0x8 -from:0x020ea2b8 kind:load to:0x02114818 module:overlay(31) +from:0x020ea2b8 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x020ea2bc kind:load to:0x02115188 add:0x8 module:overlay(31) from:0x020ea2d4 kind:arm_call to:0x02099b30 module:overlay(0) from:0x020ea340 kind:arm_call to:0x02080340 module:overlay(0) @@ -4500,7 +4500,7 @@ from:0x02102d7c kind:arm_call to:0x02102e70 module:overlay(31) from:0x02102d94 kind:arm_call to:0x0209e16c module:overlay(0) from:0x02102da4 kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x02102e10 kind:load to:0x02117390 module:overlay(31) add:0x8 -from:0x02102e14 kind:load to:0x02114818 module:overlay(31) +from:0x02102e14 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x02102e18 kind:load to:0x021173ac module:overlay(31) add:0x8 from:0x02102e30 kind:arm_call to:0x0209e7a4 module:overlay(0) from:0x02102e6c kind:load to:0x021173c8 module:overlay(31) add:0x8 @@ -4565,7 +4565,7 @@ from:0x02103784 kind:arm_call to:0x0210381c module:overlay(31) from:0x0210379c kind:arm_call to:0x0209e16c module:overlay(0) from:0x021037ac kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x02103804 kind:load to:0x02117390 module:overlay(31) add:0x8 -from:0x0210380c kind:load to:0x02114818 module:overlay(31) +from:0x0210380c kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x02103810 kind:load to:0x0211741c module:overlay(31) add:0x8 from:0x02103824 kind:arm_call to:0x0209e7a4 module:overlay(0) from:0x0210383c kind:arm_call_thumb to:0x020590f0 module:overlay(0) @@ -4643,13 +4643,13 @@ from:0x0210419c kind:load to:0x0211986c module:overlay(31) from:0x021041b0 kind:arm_call to:0x02011f3c module:main from:0x021041bc kind:arm_call to:0x02104208 module:overlay(31) from:0x021041d4 kind:arm_call to:0x0209e16c module:overlay(0) -from:0x02104200 kind:load to:0x02117480 module:overlay(31) +from:0x02104200 kind:load to:0x02117478 module:overlay(31) add:0x8 from:0x02104210 kind:arm_call to:0x0209eec4 module:overlay(0) from:0x02104274 kind:arm_call to:0x0210491c module:overlay(31) from:0x02104294 kind:arm_call to:0x0207d6d0 module:overlay(0) -from:0x02104308 kind:load to:0x0211749c module:overlay(31) +from:0x02104308 kind:load to:0x02117494 module:overlay(31) add:0x8 from:0x0210430c kind:load to:0x0211986c module:overlay(31) -from:0x02104310 kind:load to:0x02114818 module:overlay(31) +from:0x02104310 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x02104394 kind:arm_call to:0x020e2900 module:overlay(31) from:0x0210440c kind:arm_call to:0x020db5a4 module:overlay(31) from:0x02104460 kind:load to:0x027e0d38 module:dtcm @@ -4684,7 +4684,7 @@ from:0x021048fc kind:arm_call to:0x02011ff4 module:main from:0x02104910 kind:arm_call to:0x0209e19c module:overlay(0) from:0x0210492c kind:arm_call_thumb to:0x020590d4 module:overlay(0) from:0x0210494c kind:arm_call to:0x0210495c module:overlay(31) -from:0x02104958 kind:load to:0x02117500 module:overlay(31) +from:0x02104958 kind:load to:0x021174f8 module:overlay(31) add:0x8 from:0x02104974 kind:arm_call to:0x020591b8 module:overlay(0) from:0x02104984 kind:arm_call to:0x020591b8 module:overlay(0) from:0x021049e4 kind:arm_call to:0x0200f218 module:main @@ -4967,11 +4967,11 @@ from:0x02106cb4 kind:arm_call to:0x02106d48 module:overlay(31) from:0x02106ccc kind:arm_call to:0x0209e16c module:overlay(0) from:0x02106cdc kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x02106d34 kind:load to:0x02117390 module:overlay(31) add:0x8 -from:0x02106d38 kind:load to:0x02114818 module:overlay(31) -from:0x02106d3c kind:load to:0x02117860 module:overlay(31) +from:0x02106d38 kind:load to:0x02114810 module:overlay(31) add:0x8 +from:0x02106d3c kind:load to:0x02117858 module:overlay(31) add:0x8 from:0x02106d50 kind:arm_call to:0x0209eec4 module:overlay(0) from:0x02106dac kind:arm_call_thumb to:0x02058e68 module:overlay(0) -from:0x02106dd4 kind:load to:0x0211787c module:overlay(31) +from:0x02106dd4 kind:load to:0x02117874 module:overlay(31) add:0x8 from:0x02106dd8 kind:load to:0x02119cdc module:overlay(31) from:0x02106de0 kind:load to:0x02119db0 module:overlay(31) from:0x02106e00 kind:arm_call to:0x01ffe868 module:itcm @@ -5052,7 +5052,7 @@ from:0x02107680 kind:arm_call to:0x0210491c module:overlay(31) from:0x0210769c kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x021076fc kind:load to:0x02117994 module:overlay(31) from:0x02107700 kind:load to:0x02119ee8 module:overlay(31) -from:0x02107704 kind:load to:0x02114818 module:overlay(31) +from:0x02107704 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x0210774c kind:arm_call to:0x01fff3b4 module:itcm from:0x02107758 kind:arm_call to:0x01fff458 module:itcm from:0x02107830 kind:arm_call to:0x020e2900 module:overlay(31) @@ -5661,7 +5661,7 @@ from:0x0210d118 kind:arm_call to:0x0210d1a8 module:overlay(31) from:0x0210d130 kind:arm_call to:0x0209e16c module:overlay(0) from:0x0210d140 kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x0210d194 kind:load to:0x02117390 module:overlay(31) add:0x8 -from:0x0210d19c kind:load to:0x02114818 module:overlay(31) +from:0x0210d19c kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x0210d1a0 kind:load to:0x02117e08 module:overlay(31) from:0x0210d1b0 kind:arm_call to:0x0209e7a4 module:overlay(0) from:0x0210d1b8 kind:arm_call to:0x02062bd0 module:overlay(0) @@ -5734,7 +5734,7 @@ from:0x0210d844 kind:arm_call to:0x0210d8ec module:overlay(31) from:0x0210d85c kind:arm_call to:0x0209e16c module:overlay(0) from:0x0210d86c kind:arm_call to:0x0207d6d0 module:overlay(0) from:0x0210d8d4 kind:load to:0x02117390 module:overlay(31) add:0x8 -from:0x0210d8d8 kind:load to:0x02114818 module:overlay(31) +from:0x0210d8d8 kind:load to:0x02114810 module:overlay(31) add:0x8 from:0x0210d8dc kind:load to:0x02117eb8 module:overlay(31) from:0x0210d8f4 kind:arm_call to:0x0209e7a4 module:overlay(0) from:0x0210d954 kind:arm_call_thumb to:0x020590f0 module:overlay(0) diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index f39be6bd..2b0f1b8f 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -298,89 +298,89 @@ func_ov031_020e2648 kind:function(arm,size=0x24) addr:0x020e2648 func_ov031_020e266c kind:function(arm,size=0x54) addr:0x020e266c func_ov031_020e26c0 kind:function(arm,size=0xa8) addr:0x020e26c0 func_ov031_020e2768 kind:function(arm,size=0x198) addr:0x020e2768 -func_ov031_020e2900 kind:function(arm,size=0x78) addr:0x020e2900 +func_ov031_020e0f30 kind:function(arm,size=0x78) addr:0x020e2900 _ZN30UnkStruct_ItemManager_20_00_08C1Ev kind:function(arm,size=0x30) addr:0x020e2978 func_ov031_020e29a8 kind:function(arm,size=0x50) addr:0x020e29a8 func_ov031_020e29f8 kind:function(arm,size=0x84) addr:0x020e29f8 func_ov031_020e2a7c kind:function(arm,size=0xa8) addr:0x020e2a7c func_ov031_020e2b24 kind:function(arm,size=0x354) addr:0x020e2b24 func_ov031_020e2e78 kind:function(arm,size=0x1c) addr:0x020e2e78 -_ZN19ActorProfileUnkBOMB10GetProfileEv kind:function(arm,size=0xc) addr:0x020e2e94 -_ZN19ActorProfileUnkBOMB6CreateEv kind:function(arm,size=0x24) addr:0x020e2ea0 -_ZN19ActorProfileUnkBOMBC1Ev kind:function(arm,size=0x4c) addr:0x020e2ec4 -_ZN12ActorUnkBOMB19func_ov031_020e1540Ev kind:function(arm,size=0x90) addr:0x020e2f10 -_ZN12ActorUnkBOMB19func_ov031_020e15d0Ev kind:function(arm,size=0x64) addr:0x020e2fa0 -_ZN12ActorUnkBOMB19func_ov031_020e1634Ev kind:function(arm,size=0x58) addr:0x020e3004 -_ZN12ActorUnkBOMBC1Ev kind:function(arm,size=0x16c) addr:0x020e305c -_ZN16ActorUnkBOMB_unkD1Ev kind:function(arm,size=0x14) addr:0x020e31c8 -_ZN12ActorUnkBOMB19func_ov031_020e1808Ev kind:function(arm,size=0x14) addr:0x020e31dc -_ZN12ActorUnkBOMB19func_ov031_020e181cEv kind:function(arm,size=0x84) addr:0x020e31f0 -_ZN12ActorUnkBOMB19func_ov031_020e18a0Ev kind:function(arm,size=0x24) addr:0x020e3274 -_ZN12ActorUnkBOMB19func_ov031_020e18c4Ev kind:function(arm,size=0x44) addr:0x020e3298 -_ZN12ActorUnkBOMB19func_ov031_020e1908Ev kind:function(arm,size=0x18) addr:0x020e32dc -_ZN12ActorUnkBOMB19func_ov031_020e1920Ev kind:function(arm,size=0x1c) addr:0x020e32f4 -_ZN12ActorUnkBOMB19func_ov031_020e193cEv kind:function(arm,size=0xec) addr:0x020e3310 -_ZN12ActorUnkBOMB19func_ov031_020e1a28Ev kind:function(arm,size=0xd0) addr:0x020e33fc -_ZN12ActorUnkBOMB19func_ov031_020e1af8Ev kind:function(arm,size=0x24) addr:0x020e34cc -_ZN12ActorUnkBOMB19func_ov031_020e1b1cEv kind:function(arm,size=0x60) addr:0x020e34f0 -_ZN12ActorUnkBOMB19func_ov031_020e1b7cEv kind:function(arm,size=0x19c) addr:0x020e3550 -_ZN12ActorUnkBOMB19func_ov031_020e1d18Ev kind:function(arm,size=0x30) addr:0x020e36ec -_ZN12ActorUnkBOMB19func_ov031_020e1d48Ev kind:function(arm,size=0x10) addr:0x020e371c -_ZN12ActorUnkBOMB19func_ov031_020e1d58Ev kind:function(arm,size=0x1c) addr:0x020e372c -_ZN12ActorUnkBOMB19func_ov031_020e1d74Ev kind:function(arm,size=0x2c) addr:0x020e3748 -_ZN12ActorUnkBOMB19func_ov031_020e1da0Ev kind:function(arm,size=0x11c) addr:0x020e3774 -_ZN12ActorUnkBOMB19func_ov031_020e1ebcEv kind:function(arm,size=0x1c) addr:0x020e3890 -_ZN12ActorUnkBOMB19func_ov031_020e1ed8Ev kind:function(arm,size=0x40) addr:0x020e38ac -_ZN12ActorUnkBOMB19func_ov031_020e1f18Ev kind:function(arm,size=0x88) addr:0x020e38ec -_ZN12ActorUnkBOMB19func_ov031_020e1f88Ev kind:function(arm,size=0x58) addr:0x020e3974 -_ZN12ActorUnkBOMB19func_ov031_020e1fe0Ev kind:function(arm,size=0x4) addr:0x020e39cc -_ZN12ActorUnkBOMB19func_ov031_020e1fe4Ev kind:function(arm,size=0x50) addr:0x020e39d0 -_ZN12ActorUnkBOMB19func_ov031_020e2034Ev kind:function(arm,size=0x30) addr:0x020e3a20 -_ZN12ActorUnkBOMB19func_ov031_020e2064Ev kind:function(arm,size=0x74) addr:0x020e3a50 -_ZN12ActorUnkBOMB19func_ov031_020e20d8Ev kind:function(arm,size=0x24) addr:0x020e3ac4 -_ZN12ActorUnkBOMB19func_ov031_020e20fcEv kind:function(arm,size=0x4) addr:0x020e3ae8 -_ZN12ActorUnkBOMB19func_ov031_020e2100Ev kind:function(arm,size=0x34) addr:0x020e3aec -_ZN12ActorUnkBOMB19func_ov031_020e2134Ev kind:function(arm,size=0xec) addr:0x020e3b20 -_ZN12ActorUnkBOMB19func_ov031_020e2220Ev kind:function(arm,size=0x14) addr:0x020e3c0c -_ZN12ActorUnkBOMB19func_ov031_020e2234Ev kind:function(arm,size=0x158) addr:0x020e3c20 -_ZN12ActorUnkBOMB19func_ov031_020e238cEv kind:function(arm,size=0xe0) addr:0x020e3d78 -_ZN12ActorUnkBOMB19func_ov031_020e246cEv kind:function(arm,size=0x40) addr:0x020e3e58 -_ZN12ActorUnkBOMB19func_ov031_020e24acEv kind:function(arm,size=0x110) addr:0x020e3e98 -_ZN12ActorUnkBOMB19func_ov031_020e25bcEv kind:function(arm,size=0x70) addr:0x020e3fa8 -_ZN12ActorUnkBOMB19func_ov031_020e262cEv kind:function(arm,size=0x54) addr:0x020e4018 -_ZN12ActorUnkBOMB19func_ov031_020e2680Ev kind:function(arm,size=0x100) addr:0x020e406c -_ZN12ActorUnkBOMB19func_ov031_020e2780Ev kind:function(arm,size=0xa0) addr:0x020e416c -_ZN12ActorUnkBOMB19func_ov031_020e2820Ev kind:function(arm,size=0x13c) addr:0x020e420c -_ZN12ActorUnkBOMB19func_ov031_020e295cEv kind:function(arm,size=0x140) addr:0x020e4348 -_ZN12ActorUnkBOMB19func_ov031_020e2a9cEv kind:function(arm,size=0xa4) addr:0x020e4488 -_ZN12ActorUnkBOMB19func_ov031_020e2b40Ev kind:function(arm,size=0xec) addr:0x020e452c -_ZN12ActorUnkBOMB19func_ov031_020e2c2cEv kind:function(arm,size=0x14c) addr:0x020e4618 -_ZN12ActorUnkBOMB19func_ov031_020e2d78Ev kind:function(arm,size=0x3c) addr:0x020e4764 -_ZN12ActorUnkBOMBD1Ev kind:function(arm,size=0x1c) addr:0x020e47a0 -_ZN12ActorUnkBOMBD0Ev kind:function(arm,size=0x24) addr:0x020e47bc -_ZN12ActorUnkBOMB19func_ov031_020e2df4Ev kind:function(arm,size=0x48) addr:0x020e47e0 -_ZN12ActorUnkBOMB19func_ov031_020e2e3cEv kind:function(arm,size=0x450) addr:0x020e4828 -_ZN12ActorUnkBOMB19func_ov031_020e328cEv kind:function(arm,size=0x84) addr:0x020e4c78 -_ZN12ActorUnkBOMB19func_ov031_020e3310Ev kind:function(arm,size=0x30) addr:0x020e4cfc -_ZN12ActorUnkBOMB19func_ov031_020e3340Ev kind:function(arm,size=0x3c) addr:0x020e4d2c -_ZN12ActorUnkBOMB19func_ov031_020e337cEv kind:function(arm,size=0x30) addr:0x020e4d68 -_ZN16ActorUnkBOMB_unkC1Ev kind:function(arm,size=0x14) addr:0x020e4d98 -_ZN12ActorUnkBOMB19func_ov031_020e33c0Ev kind:function(arm,size=0x1c) addr:0x020e4dac -_ZN12ActorUnkBOMB19func_ov031_020e33dcEv kind:function(arm,size=0x1c) addr:0x020e4dc8 -_ZN12ActorUnkBOMB19func_ov031_020e33f8Ev kind:function(arm,size=0x50) addr:0x020e4de4 -_ZN12ActorUnkBOMB19func_ov031_020e3448Ev kind:function(arm,size=0x58) addr:0x020e4e34 -_ZN19ActorProfileUnkBOMBD1Ev kind:function(arm,size=0x14) addr:0x020e4e8c +_ZN16ActorProfileBomb10GetProfileEv kind:function(arm,size=0xc) addr:0x020e2e94 +_ZN16ActorProfileBomb6CreateEv kind:function(arm,size=0x24) addr:0x020e2ea0 +_ZN16ActorProfileBombC1Ev kind:function(arm,size=0x4c) addr:0x020e2ec4 +_ZN9ActorBomb19func_ov031_020e1540Et kind:function(arm,size=0x90) addr:0x020e2f10 +_ZN9ActorBomb19func_ov031_020e15d0Et kind:function(arm,size=0x64) addr:0x020e2fa0 +_ZN9ActorBomb19func_ov031_020e1634Ev kind:function(arm,size=0x58) addr:0x020e3004 +_ZN9ActorBombC1Ev kind:function(arm,size=0x16c) addr:0x020e305c +_ZN13ActorBomb_unkD1Ev kind:function(arm,size=0x14) addr:0x020e31c8 +_ZN13ActorBomb_19CD1Ev kind:function(arm,size=0x14) addr:0x020e31dc +_ZN9ActorBomb8vfunc_18Ei kind:function(arm,size=0x84) addr:0x020e31f0 +_ZN9ActorBomb19func_ov031_020e18a0Ev kind:function(arm,size=0x24) addr:0x020e3274 +_ZN9ActorBomb8SetStateEs kind:function(arm,size=0x44) addr:0x020e3298 +_ZN9ActorBomb19func_ov031_020e1908Ev kind:function(arm,size=0x18) addr:0x020e32dc +_ZN9ActorBomb19func_ov031_020e1920EP7VecFx32 kind:function(arm,size=0x1c) addr:0x020e32f4 +_ZN9ActorBomb19func_ov031_020e193cEv kind:function(arm,size=0xec) addr:0x020e3310 +_ZN9ActorBomb8vfunc_20Ev kind:function(arm,size=0xd0) addr:0x020e33fc +_ZN9ActorBomb8vfunc_24Ev kind:function(arm,size=0x24) addr:0x020e34cc +_ZN9ActorBomb19func_ov031_020e1b1cEv kind:function(arm,size=0x60) addr:0x020e34f0 +_ZN9ActorBomb19func_ov031_020e1b7cEv kind:function(arm,size=0x19c) addr:0x020e3550 +_ZN9ActorBomb19func_ov031_020e1d18Ev kind:function(arm,size=0x30) addr:0x020e36ec +_ZN9ActorBomb19func_ov031_020e1d48Ev kind:function(arm,size=0x10) addr:0x020e371c +_ZN9ActorBomb19func_ov031_020e1d58Ev kind:function(arm,size=0x1c) addr:0x020e372c +_ZN9ActorBomb19func_ov031_020e1d74Ev kind:function(arm,size=0x2c) addr:0x020e3748 +_ZN9ActorBomb19func_ov031_020e1da0Ev kind:function(arm,size=0x11c) addr:0x020e3774 +_ZN9ActorBomb19func_ov031_020e1ebcEv kind:function(arm,size=0x1c) addr:0x020e3890 +_ZN9ActorBomb19func_ov031_020e1ed8Ev kind:function(arm,size=0x40) addr:0x020e38ac +_ZN9ActorBomb19func_ov031_020e1f18Ev kind:function(arm,size=0x88) addr:0x020e38ec +_ZN9ActorBomb19func_ov031_020e1f88Ev kind:function(arm,size=0x58) addr:0x020e3974 +_ZN9ActorBomb19func_ov031_020e1fe0Ev kind:function(arm,size=0x4) addr:0x020e39cc +_ZN9ActorBomb19func_ov031_020e1fe4Ev kind:function(arm,size=0x50) addr:0x020e39d0 +_ZN9ActorBomb19func_ov031_020e2034Ev kind:function(arm,size=0x30) addr:0x020e3a20 +_ZN9ActorBomb19func_ov031_020e2064Ev kind:function(arm,size=0x74) addr:0x020e3a50 +_ZN9ActorBomb19func_ov031_020e20d8Ev kind:function(arm,size=0x24) addr:0x020e3ac4 +_ZN9ActorBomb19func_ov031_020e20fcEv kind:function(arm,size=0x4) addr:0x020e3ae8 +_ZN9ActorBomb19func_ov031_020e2100Ev kind:function(arm,size=0x34) addr:0x020e3aec +_ZN9ActorBomb19func_ov031_020e2134Ev kind:function(arm,size=0xec) addr:0x020e3b20 +_ZN24ActorBomb_ov031_020e2134D1Ev kind:function(arm,size=0x14) addr:0x020e3c0c +_ZN9ActorBomb8vfunc_2CEi kind:function(arm,size=0x158) addr:0x020e3c20 +_ZN9ActorBomb19func_ov031_020e238cEv kind:function(arm,size=0xe0) addr:0x020e3d78 +_ZN9ActorBomb4GrabE15ActorGrabParams kind:function(arm,size=0x40) addr:0x020e3e58 +_ZN9ActorBomb4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x110) addr:0x020e3e98 +_ZN9ActorBomb19func_ov031_020e25bcEv kind:function(arm,size=0x70) addr:0x020e3fa8 +_ZN9ActorBomb19func_ov031_020e262cEv kind:function(arm,size=0x54) addr:0x020e4018 +_ZN9ActorBomb19func_ov031_020e2680EP7VecFx32 kind:function(arm,size=0x100) addr:0x020e406c +_ZN9ActorBomb19func_ov031_020e2780EP7VecFx32 kind:function(arm,size=0xa0) addr:0x020e416c +_ZN9ActorBomb19func_ov031_020e2820EP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x13c) addr:0x020e420c +_ZN9ActorBomb19func_ov031_020e295cEP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x140) addr:0x020e4348 +_ZN9ActorBomb19func_ov031_020e2a9cEv kind:function(arm,size=0xa4) addr:0x020e4488 +_ZN9ActorBomb19func_ov031_020e2b40Ev kind:function(arm,size=0xec) addr:0x020e452c +_ZN9ActorBomb19func_ov031_020e2c2cEv kind:function(arm,size=0x14c) addr:0x020e4618 +_ZN13ActorBomb_180C1EP5Actor kind:function(arm,size=0x3c) addr:0x020e4764 +_ZN13ActorBomb_180D1Ev kind:function(arm,size=0x1c) addr:0x020e47a0 +_ZN13ActorBomb_180D0Ev kind:function(arm,size=0x24) addr:0x020e47bc +_ZN13ActorBomb_1808vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x48) addr:0x020e47e0 +_ZN13ActorBomb_1808vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x450) addr:0x020e4828 +_ZN13ActorBomb_1808vfunc_10E8ActorRefi kind:function(arm,size=0x84) addr:0x020e4c78 +_ZN24ActorBomb_ov031_020e21348vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e4cfc +_ZN13ActorBomb_19CC1EP5Actor kind:function(arm,size=0x3c) addr:0x020e4d2c +_ZN13ActorBomb_19C8vfunc_10EP5Actor kind:function(arm,size=0x30) addr:0x020e4d68 +_ZN13ActorBomb_unkC1Ev kind:function(arm,size=0x14) addr:0x020e4d98 +_ZN24ActorBomb_ov031_020e2134D0Ev kind:function(arm,size=0x1c) addr:0x020e4dac +_ZN13ActorBomb_19CD0Ev kind:function(arm,size=0x1c) addr:0x020e4dc8 +_ZN9ActorBombD1Ev kind:function(arm,size=0x50) addr:0x020e4de4 +_ZN9ActorBombD0Ev kind:function(arm,size=0x58) addr:0x020e4e34 +_ZN16ActorProfileBombD1Ev kind:function(arm,size=0x14) addr:0x020e4e8c _ZN17ActorProfileBlast10GetProfileEv kind:function(arm,size=0xc) addr:0x020e4ea0 _ZN17ActorProfileBlast6CreateEv kind:function(arm,size=0x24) addr:0x020e4eac _ZN17ActorProfileBlastC1Ev kind:function(arm,size=0x38) addr:0x020e4ed0 -_ZN13ActorBlast_E88vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x1a4) addr:0x020e4f08 +_ZN13ActorBlast_E88vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1a4) addr:0x020e4f08 _ZN10ActorBlastC1Ev kind:function(arm,size=0x7c) addr:0x020e50ac _ZN13ActorBlast_E8D1Ev kind:function(arm,size=0x14) addr:0x020e5128 _ZN10ActorBlast8vfunc_18Ei kind:function(arm,size=0x274) addr:0x020e513c _ZN10ActorBlast8vfunc_20Ev kind:function(arm,size=0x180) addr:0x020e53b0 _ZN10ActorBlast8vfunc_24Ev kind:function(arm,size=0x50) addr:0x020e5530 _ZN10ActorBlast19func_ov031_020e3b94Ev kind:function(arm,size=0x8) addr:0x020e5580 -_ZN10ActorBlast19func_ov031_020e3b9cEss kind:function(arm,size=0x80) addr:0x020e5588 +_ZN10ActorBlast19func_ov031_020e3b9cEP5Actorss kind:function(arm,size=0x80) addr:0x020e5588 _ZN13ActorBlast_E8D0Ev kind:function(arm,size=0x1c) addr:0x020e5608 _ZN10ActorBlastD1Ev kind:function(arm,size=0x28) addr:0x020e5624 _ZN10ActorBlastD0Ev kind:function(arm,size=0x30) addr:0x020e564c @@ -485,7 +485,7 @@ _ZN15ActorUnkSWBM_948vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,siz _ZN15ActorUnkSWBM_948vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x1c) addr:0x020e82ec _ZN15ActorUnkSWBM_988vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x58) addr:0x020e8308 _ZN15ActorUnkSWBM_988vfunc_10EP5Actor kind:function(arm,size=0x58) addr:0x020e8360 -_ZN15ActorUnkSWBM_C88vfunc_00Eiii kind:function(arm,size=0x168) addr:0x020e83b8 +_ZN15ActorUnkSWBM_C88vfunc_00Eii kind:function(arm,size=0x168) addr:0x020e83b8 _ZN19ActorProfileUnkSWBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e8520 _ZN19ActorProfileUnkSWBM6CreateEv kind:function(arm,size=0x24) addr:0x020e852c _ZN19ActorProfileUnkSWBMC1Ev kind:function(arm,size=0x44) addr:0x020e8550 @@ -1110,7 +1110,7 @@ _ZN24ActorProfileRollingStone10GetProfileEv kind:function(arm,size=0xc) addr:0x0 _ZN24ActorProfileRollingStone6CreateEv kind:function(arm,size=0x24) addr:0x020f9d30 _ZN24ActorProfileRollingStoneC1Ev kind:function(arm,size=0x44) addr:0x020f9d54 _ZN21ActorRollingStone_1048vfunc_0CEPK24UnkStruct_ov031_020e54d4Pii kind:function(arm,size=0x90) addr:0x020f9d98 -_ZN21ActorRollingStone_1048vfunc_10Ev kind:function(arm,size=0xb8) addr:0x020f9e28 +_ZN21ActorRollingStone_1048vfunc_10E8ActorRefi kind:function(arm,size=0xb8) addr:0x020f9e28 _ZN20ActorRollingStone_D48vfunc_10EP5Actor kind:function(arm,size=0x44) addr:0x020f9ee0 _ZN17ActorRollingStoneC1Ev kind:function(arm,size=0x194) addr:0x020f9f24 _ZN20ActorRollingStone_D4D1Ev kind:function(arm,size=0x14) addr:0x020fa0b8 @@ -1506,25 +1506,25 @@ _ZN16MapObjectUnkSWHT19func_ov031_021020ecEv kind:function(arm,size=0xd4) addr:0 _ZN16MapObjectUnkSWHT19func_ov031_021021c0Esi kind:function(arm,size=0x204) addr:0x02103f08 _ZN16MapObjectUnkSWHT19func_ov031_021023b0Ev kind:function(arm,size=0x74) addr:0x0210410c _ZN23MapObjectProfileUnkSWHTD1Ev kind:function(arm,size=0x14) addr:0x02104180 -_ZN23MapObjectProfileUnkBMFL10GetProfileEv kind:function(arm,size=0xc) addr:0x02104194 -_ZN23MapObjectProfileUnkBMFL6CreateEv kind:function(arm,size=0x24) addr:0x021041a0 -_ZN23MapObjectProfileUnkBMFLC1Ev kind:function(arm,size=0x44) addr:0x021041c4 -_ZN16MapObjectUnkBMFLC1Ev kind:function(arm,size=0x118) addr:0x02104208 -_ZN16MapObjectUnkBMFL19func_ov031_021025c4Ev kind:function(arm,size=0x144) addr:0x02104320 -_ZN16MapObjectUnkBMFL19func_ov031_02102708Ev kind:function(arm,size=0x10) addr:0x02104464 -_ZN16MapObjectUnkBMFL19func_ov031_02102718Ev kind:function(arm,size=0x10) addr:0x02104474 -_ZN16MapObjectUnkBMFL19func_ov031_02102728Ev kind:function(arm,size=0x7c) addr:0x02104484 -_ZN16MapObjectUnkBMFL19func_ov031_021027a4Ev kind:function(arm,size=0xf0) addr:0x02104500 -_ZN16MapObjectUnkBMFL19func_ov031_02102894Ev kind:function(arm,size=0x15c) addr:0x021045f0 -_ZN16MapObjectUnkBMFL19func_ov031_021029f0Ev kind:function(arm,size=0x50) addr:0x0210474c -_ZN16MapObjectUnkBMFL19func_ov031_02102a40Ev kind:function(arm,size=0x98) addr:0x0210479c -_ZN16MapObjectUnkBMFL19func_ov031_02102ad8Ev kind:function(arm,size=0x1c) addr:0x02104834 -_ZN16MapObjectUnkBMFL19func_ov031_02102af4Ev kind:function(arm,size=0x70) addr:0x02104850 -_ZN16MapObjectUnkBMFLD1Ev kind:function(arm,size=0x20) addr:0x021048c0 -_ZN16MapObjectUnkBMFLD0Ev kind:function(arm,size=0x28) addr:0x021048e0 -_ZN23MapObjectProfileUnkBMFLD1Ev kind:function(arm,size=0x14) addr:0x02104908 +_ZN26MapObjectProfileBombFlower10GetProfileEv kind:function(arm,size=0xc) addr:0x02104194 +_ZN26MapObjectProfileBombFlower6CreateEv kind:function(arm,size=0x24) addr:0x021041a0 +_ZN26MapObjectProfileBombFlowerC1Ev kind:function(arm,size=0x44) addr:0x021041c4 +_ZN19MapObjectBombFlowerC1Ev kind:function(arm,size=0x118) addr:0x02104208 +_ZN19MapObjectBombFlower8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x144) addr:0x02104320 +_ZN19MapObjectBombFlower8vfunc_48Ev kind:function(arm,size=0x10) addr:0x02104464 +_ZN19MapObjectBombFlower8vfunc_58Ev kind:function(arm,size=0x10) addr:0x02104474 +_ZN19MapObjectBombFlower19func_ov031_02102728Ei kind:function(arm,size=0x7c) addr:0x02104484 +_ZN19MapObjectBombFlower8vfunc_08Ev kind:function(arm,size=0xf0) addr:0x02104500 +_ZN19MapObjectBombFlower8SetStateEsi kind:function(arm,size=0x15c) addr:0x021045f0 +_ZN19MapObjectBombFlower8vfunc_14Ev kind:function(arm,size=0x50) addr:0x0210474c +_ZN19MapObjectBombFlower8vfunc_38Ev kind:function(arm,size=0x98) addr:0x0210479c +_ZN19MapObjectBombFlower8vfunc_28Ev kind:function(arm,size=0x1c) addr:0x02104834 +_ZN19MapObjectBombFlower8vfunc_50EP8ActorRefP17MapObjectPot_Base kind:function(arm,size=0x70) addr:0x02104850 +_ZN19MapObjectBombFlowerD1Ev kind:function(arm,size=0x20) addr:0x021048c0 +_ZN19MapObjectBombFlowerD0Ev kind:function(arm,size=0x28) addr:0x021048e0 +_ZN26MapObjectProfileBombFlowerD1Ev kind:function(arm,size=0x14) addr:0x02104908 _ZN26ModelRender_ov031_0211578cC1EPK10G3d_Model_ii kind:function(arm,size=0x40) addr:0x0210491c -func_ov031_0210495c kind:function(arm,size=0x30) addr:0x0210495c +_ZN26ModelRender_ov031_0211578c19func_ov031_02102c00Ev kind:function(arm,size=0x30) addr:0x0210495c func_ov031_0210498c kind:function(arm,size=0x224) addr:0x0210498c _ZN19func_ov031_02104bb0D0Ev kind:function(arm,size=0x1c) addr:0x02104bb0 _ZN31MapObjectProfileTreasureSpawned10GetProfileEv kind:function(arm,size=0xc) addr:0x02104bcc @@ -1998,11 +1998,11 @@ data_ov031_0211275c kind:data(any) addr:0x0211275c data_ov031_0211275e kind:data(any) addr:0x0211275e data_ov031_02112760 kind:data(any) addr:0x02112760 data_ov031_0211276c kind:data(any) addr:0x0211276c -data_ov031_02112780 kind:data(any) addr:0x02112780 -data_ov031_02112798 kind:data(any) addr:0x02112798 -data_ov031_021127c0 kind:data(any) addr:0x021127c0 -data_ov031_021127d0 kind:data(any) addr:0x021127d0 -data_ov031_021127e0 kind:data(any) addr:0x021127e0 +data_ov031_02110a10 kind:data(any) addr:0x02112780 +data_ov031_02110a28 kind:data(any) addr:0x02112798 +data_ov031_02110a50 kind:data(any) addr:0x021127c0 +data_ov031_02110a60 kind:data(any) addr:0x021127d0 +data_ov031_02110a70 kind:data(any) addr:0x021127e0 data_ov031_021127f0 kind:data(any) addr:0x021127f0 data_ov031_021127f8 kind:data(any) addr:0x021127f8 data_ov031_02112808 kind:data(any) addr:0x02112808 @@ -2067,7 +2067,7 @@ data_ov031_02112ce4 kind:data(any) addr:0x02112ce4 data_ov031_02112cf8 kind:data(any) addr:0x02112cf8 __sinit_ov031_02112d40 kind:function(arm,size=0x18) addr:0x02112d40 __sinit_ov031_02112d58 kind:function(arm,size=0x10) addr:0x02112d58 -__sinit_ActorUnkBOMB.cpp kind:function(arm,size=0x50) addr:0x02112d68 +__sinit_ActorBomb.cpp kind:function(arm,size=0x50) addr:0x02112d68 __sinit_ActorBlast.cpp kind:function(arm,size=0x50) addr:0x02112db8 __sinit_ActorUnkTLKT.cpp kind:function(arm,size=0x50) addr:0x02112e08 local __sinit_ActorItemBoomerang.cpp kind:function(arm,size=0x50) addr:0x02112e58 @@ -2107,7 +2107,7 @@ __sinit_MapObjectUnkGATE.cpp kind:function(arm,size=0x50) addr:0x02113ae4 __sinit_MapObjectUnkSTIR.cpp kind:function(arm,size=0x50) addr:0x02113b34 __sinit_MapObjectGrass.cpp kind:function(arm,size=0x90) addr:0x02113b84 __sinit_MapObjectUnkSWHT.cpp kind:function(arm,size=0x70) addr:0x02113c14 -__sinit_MapObjectUnkBMFL.cpp kind:function(arm,size=0x50) addr:0x02113c84 +__sinit_MapObjectBombFlower.cpp kind:function(arm,size=0x50) addr:0x02113c84 __sinit_MapObjectTreasureSpawned.cpp kind:function(arm,size=0x6c) addr:0x02113cd4 local __sinit_MapObjectChestBase.cpp kind:function(arm,size=0x30) addr:0x02113d40 __sinit_MapObjectUnkTRED.cpp kind:function(arm,size=0x6c) addr:0x02113d70 @@ -2131,7 +2131,7 @@ __sinit_MapObjectUnkGSST.cpp kind:function(arm,size=0x50) addr:0x02114460 __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x021144b0 .p__sinit_ov031_02112d40 kind:data(word) addr:0x02114520 .p__sinit_ov031_02112d58 kind:data(word) addr:0x02114524 -.p__sinit_ActorUnkBOMB.cpp kind:data(word) addr:0x02114528 +.p__sinit_ActorBomb.cpp kind:data(word) addr:0x02114528 .p__sinit_ActorBlast.cpp kind:data(word) addr:0x0211452c .p__sinit_ActorUnkTLKT.cpp kind:data(word) addr:0x02114530 local .p__sinit_ActorItemBoomerang.cpp kind:data(word) addr:0x02114534 @@ -2171,7 +2171,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x021144b0 .p__sinit_MapObjectUnkSTIR.cpp kind:data(word) addr:0x021145bc .p__sinit_MapObjectGrass.cpp kind:data(word) addr:0x021145c0 .p__sinit_MapObjectUnkSWHT.cpp kind:data(word) addr:0x021145c4 -.p__sinit_MapObjectUnkBMFL.cpp kind:data(word) addr:0x021145c8 +.p__sinit_MapObjectBombFlower.cpp kind:data(word) addr:0x021145c8 .p__sinit_MapObjectTreasureSpawned.cpp kind:data(word) addr:0x021145cc local .p__sinit_MapObjectChestBase.cpp kind:data(word) addr:0x021145d0 .p__sinit_MapObjectUnkTRED.cpp kind:data(word) addr:0x021145d4 @@ -2224,7 +2224,7 @@ data_ov031_0211478c kind:data(any) addr:0x0211478c _ZTV21UnkStruct_027e0cd8_0C kind:data(any) addr:0x021147a4 ambiguous data_ov031_021147f0 kind:data(any) addr:0x021147f0 data_ov031_02114804 kind:data(any) addr:0x02114804 -data_ov031_02114818 kind:data(any) addr:0x02114818 +_ZTV16MapObject_10_Pot kind:data(any) addr:0x02114810 data_ov031_02114840 kind:data(any) addr:0x02114840 data_ov031_02114874 kind:data(any) addr:0x02114874 data_ov031_02114880 kind:data(any) addr:0x02114880 @@ -2239,14 +2239,14 @@ data_ov031_02114918 kind:data(any) addr:0x02114918 _ZTV19data_ov031_02114924 kind:data(any) addr:0x02114924 _ZTV19data_ov031_0211494c kind:data(any) addr:0x0211494c data_ov031_0211497c kind:data(any) addr:0x0211497c -data_ov031_02114988 kind:data(any) addr:0x02114988 -data_ov031_021149a0 kind:data(any) addr:0x021149a0 -data_ov031_021149d8 kind:data(any) addr:0x021149d8 -data_ov031_02114a18 kind:data(any) addr:0x02114a18 -data_ov031_02114a34 kind:data(any) addr:0x02114a34 -data_ov031_02114a50 kind:data(any) addr:0x02114a50 -_ZTV19data_ov031_02114a64 kind:data(any) addr:0x02114a64 -_ZTV19data_ov031_02114a88 kind:data(any) addr:0x02114a88 +data_ov031_02112be8 kind:data(any) addr:0x02114988 +data_ov031_02112c00 kind:data(any) addr:0x021149a0 +data_ov031_02112c38 kind:data(any) addr:0x021149d8 +_ZTV13ActorBomb_180 kind:data(any) addr:0x02114a10 +_ZTV13ActorBomb_19C kind:data(any) addr:0x02114a2c +_ZTV24ActorBomb_ov031_020e2134 kind:data(any) addr:0x02114a48 +_ZTV16ActorProfileBomb kind:data(any) addr:0x02114a64 +_ZTV9ActorBomb kind:data(any) addr:0x02114a88 _ZTV13ActorBlast_E8 kind:data(any) addr:0x02114ae4 _ZTV17ActorProfileBlast kind:data(any) addr:0x02114b00 _ZTV10ActorBlast kind:data(any) addr:0x02114b24 @@ -2329,7 +2329,7 @@ _ZTV10ActorHeart kind:data(any) addr:0x02115bb0 _ZTV19ActorProfileUnkRMTG kind:data(any) addr:0x02115c0c _ZTV12ActorUnkRMTG kind:data(any) addr:0x02115c30 _ZTV19ActorProfileUnkSCCN kind:data(any) addr:0x02115c8c -_ZTV12MapObject_10 kind:data(any) addr:0x02115cb0 +_ZTV17MapObject_10_SCCN kind:data(any) addr:0x02115cb0 _ZTV12ActorUnkSCCN kind:data(any) addr:0x02115cd8 _ZTV19data_ov031_02115d3c kind:data(any) addr:0x02115d34 data_ov031_02115d58 kind:data(any) addr:0x02115d58 @@ -2428,15 +2428,15 @@ data_ov031_021172d4 kind:data(any) addr:0x021172d4 data_ov031_021172fc kind:data(any) addr:0x021172fc data_ov031_0211733c kind:data(any) addr:0x0211733c data_ov031_02117358 kind:data(any) addr:0x02117358 -_ZTV19data_ov031_02117398 kind:data(any) addr:0x02117390 +_ZTV24MapObjectProfilePot_Base kind:data(any) addr:0x02117390 _ZTV21MapObjectProfileGrass kind:data(any) addr:0x021173ac _ZTV14MapObjectGrass kind:data(any) addr:0x021173c8 data_ov031_02117410 kind:data(any) addr:0x02117410 _ZTV19data_ov031_02117424 kind:data(any) addr:0x0211741c data_ov031_02117440 kind:data(any) addr:0x02117440 -data_ov031_02117480 kind:data(any) addr:0x02117480 -data_ov031_0211749c kind:data(any) addr:0x0211749c -data_ov031_02117500 kind:data(any) addr:0x02117500 +_ZTV26MapObjectProfileBombFlower kind:data(any) addr:0x02117478 +_ZTV19MapObjectBombFlower kind:data(any) addr:0x02117494 +_ZTV19data_ov031_02117500 kind:data(any) addr:0x021174f8 data_ov031_021157b0 kind:data(any) addr:0x02117524 local _ZTV31MapObjectProfileTreasureSpawned kind:data(any) addr:0x0211752c _ZTV24MapObjectTreasureSpawned kind:data(any) addr:0x02117548 @@ -2456,8 +2456,8 @@ data_ov031_02117768 kind:data(any) addr:0x02117768 data_ov031_021177c4 kind:data(any) addr:0x021177c4 data_ov031_021177e0 kind:data(any) addr:0x021177e0 data_ov031_0211784c kind:data(any) addr:0x0211784c -data_ov031_02117860 kind:data(any) addr:0x02117860 -data_ov031_0211787c kind:data(any) addr:0x0211787c +_ZTV19MapObjectProfilePot kind:data(any) addr:0x02117858 +_ZTV12MapObjectPot kind:data(any) addr:0x02117874 data_ov031_021178d4 kind:data(any) addr:0x021178d4 data_ov031_021178e8 kind:data(any) addr:0x021178e8 data_ov031_02117900 kind:data(any) addr:0x02117900 @@ -2514,9 +2514,9 @@ data_ov031_021180cc kind:data(any) addr:0x021180cc data_ov031_021180e0 kind:data(any) addr:0x021180e0 ambiguous data_ov031_021180f8 kind:data(any) addr:0x021180f8 data_ov031_02118120 kind:bss addr:0x02118120 -_ZGVN15ProfileInstanceI19ActorProfileUnkBOMBE8sProfileE kind:bss addr:0x021181a4 +_ZGVN15ProfileInstanceI16ActorProfileBombE8sProfileE kind:bss addr:0x021181a4 @30775 kind:bss addr:0x021181a8 -_ZN15ProfileInstanceI19ActorProfileUnkBOMBE8sProfileE kind:bss addr:0x021181b4 +_ZN15ProfileInstanceI16ActorProfileBombE8sProfileE kind:bss addr:0x021181b4 _ZGVN15ProfileInstanceI17ActorProfileBlastE8sProfileE kind:bss addr:0x021181f0 @30781 kind:bss addr:0x021181f4 _ZN15ProfileInstanceI17ActorProfileBlastE8sProfileE kind:bss addr:0x02118200 @@ -2652,9 +2652,9 @@ _ZGVN15ProfileInstanceI23MapObjectProfileUnkSWHTE8sProfileE kind:bss addr:0x0211 _ZN15ProfileInstanceI23MapObjectProfileUnkSWHTE8sProfileE kind:bss addr:0x02119768 data_ov031_02119788 kind:bss addr:0x02119788 data_ov031_0211983c kind:bss addr:0x0211983c -_ZGVN15ProfileInstanceI23MapObjectProfileUnkBMFLE8sProfileE kind:bss addr:0x0211985c +_ZGVN15ProfileInstanceI26MapObjectProfileBombFlowerE8sProfileE kind:bss addr:0x0211985c @30993 kind:bss addr:0x02119860 -_ZN15ProfileInstanceI23MapObjectProfileUnkBMFLE8sProfileE kind:bss addr:0x0211986c +_ZN15ProfileInstanceI26MapObjectProfileBombFlowerE8sProfileE kind:bss addr:0x0211986c _ZGVN15ProfileInstanceI31MapObjectProfileTreasureSpawnedE8sProfileE kind:bss addr:0x02119940 @30999 kind:bss addr:0x02119944 local _ZN15ProfileInstanceI31MapObjectProfileTreasureSpawnedE8sProfileE kind:bss addr:0x02119950 @@ -2674,7 +2674,7 @@ _ZN15ProfileInstanceI23MapObjectProfileUnkTRWSE8sProfileE kind:bss addr:0x02119b _ZGVN15ProfileInstanceI19MapObjectProfilePotE8sProfileE kind:bss addr:0x02119ccc @31029 kind:bss addr:0x02119cd0 _ZN15ProfileInstanceI19MapObjectProfilePotE8sProfileE kind:bss addr:0x02119cdc -data_ov031_02119db0 kind:bss addr:0x02119db0 +data_ov031_02118010 kind:bss addr:0x02119db0 _ZGVN15ProfileInstanceI23MapObjectProfileUnkSKBNE8sProfileE kind:bss addr:0x02119dd0 @31035 kind:bss addr:0x02119dd4 _ZN15ProfileInstanceI23MapObjectProfileUnkSKBNE8sProfileE kind:bss addr:0x02119de0 diff --git a/config/jp/arm9/overlays/ov093/symbols.txt b/config/jp/arm9/overlays/ov093/symbols.txt index ac4b2d8a..1e404193 100644 --- a/config/jp/arm9/overlays/ov093/symbols.txt +++ b/config/jp/arm9/overlays/ov093/symbols.txt @@ -26,7 +26,7 @@ func_ov093_021683d8 kind:function(arm,size=0x10) addr:0x021683d8 func_ov093_021683e8 kind:function(arm,size=0x14) addr:0x021683e8 func_ov093_021683fc kind:function(arm,size=0x14) addr:0x021683fc func_ov093_02168410 kind:function(arm,size=0x10) addr:0x02168410 -func_ov093_02168420 kind:function(arm,size=0x20) addr:0x02168420 +_ZN18UnkStruct_027e0d8c19func_ov093_021661c0E8ActorRef kind:function(arm,size=0x20) addr:0x02168420 func_ov093_02168440 kind:function(arm,size=0x10) addr:0x02168440 func_ov093_02168450 kind:function(arm,size=0x10) addr:0x02168450 func_ov093_02168460 kind:function(arm,size=0x10) addr:0x02168460 diff --git a/config/jp/arm9/overlays/ov110/symbols.txt b/config/jp/arm9/overlays/ov110/symbols.txt index 2aebd470..cccc0ac5 100644 --- a/config/jp/arm9/overlays/ov110/symbols.txt +++ b/config/jp/arm9/overlays/ov110/symbols.txt @@ -1,5 +1,5 @@ _ZN9Inventory19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x021865c0 -_ZN22UnkStruct_PlayerGet_748vfunc_00Eiii kind:function(arm,size=0x30) addr:0x0218692c +_ZN22UnkStruct_PlayerGet_748vfunc_00Eii kind:function(arm,size=0x30) addr:0x0218692c _ZN9PlayerGetC2Ev kind:function(arm,size=0xa0) addr:0x0218695c _ZN9PlayerGetD1Ev kind:function(arm,size=0xc4) addr:0x021869fc _ZN9PlayerGetD0Ev kind:function(arm,size=0xcc) addr:0x02186ac0 diff --git a/include/Actor/ActorBlast.hpp b/include/Actor/ActorBlast.hpp index 3d59be80..461d000b 100644 --- a/include/Actor/ActorBlast.hpp +++ b/include/Actor/ActorBlast.hpp @@ -17,7 +17,7 @@ public: mUnk_04(param1) {} // data_ov031_02112d4c - /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) override; + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override; }; class ActorBlast : public Actor { @@ -49,7 +49,7 @@ public: } fx32 func_ov031_020e3b94(); - void func_ov031_020e3b9c(unk16 param1, unk16 param2); + static void func_ov031_020e3b9c(Actor *spawner, unk16 param1, unk16 param2); }; class ActorProfileBlast : public ActorProfile { diff --git a/include/Actor/ActorBomb.hpp b/include/Actor/ActorBomb.hpp new file mode 100644 index 00000000..df1e86cb --- /dev/null +++ b/include/Actor/ActorBomb.hpp @@ -0,0 +1,173 @@ +#pragma once + +#include "Actor/Actor.hpp" +#include "Actor/ActorProfile.hpp" +#include "Actor_Derived1.hpp" +#include "global.h" +#include "types.h" + +enum ActorBombState_ { + ActorBombState_0 = 0, + ActorBombState_1 = 1, + ActorBombState_2 = 2, + ActorBombState_3 = 3, + ActorBombState_4 = 4, + ActorBombState_5 = 5, + ActorBombState_6 = 6, + ActorBombState_Max +}; + +class ActorBomb_unk : public UnkSystem7 { +public: + /* 00 (base) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ + + ActorBomb_unk(); +}; + +class ActorBomb_19C : public UnkStruct_ov031_Items_01 { +public: + /* 00 (base) */ + /* 2C */ Actor *mUnk_2C; + /* 30 */ + + ActorBomb_19C(Actor *param1); + + // data_ov031_02112c94 + /* 10 */ virtual void vfunc_10(Actor *actor) override; +}; + +class ActorBomb_180 : public UnkStruct_ov031_Items_00 { +public: + /* 00 (base) */ + /* 04 */ u16 mUnk_04; + /* 08 */ Actor *mUnk_08; + /* 0C */ VecFx32 mUnk_0C; // cylinder ? + /* 18 */ unk32 mUnk_18; + /* 1C */ + + ActorBomb_180(Actor *param1); + + // data_ov031_02112c78 + /* 00 */ virtual ~ActorBomb_180() override; + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override; + /* 10 */ virtual bool vfunc_10(ActorRef param1, unk32 param2) override; +}; + +class ActorBomb_ov031_020e2134 : public UnkStruct_ov031_Items_00 { +public: + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x4, 0x8); + /* 08 */ + + // data_ov031_02112cb0 + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; +}; + +class ActorBomb : public Actor { +public: + /* 000 (base) */ + /* 094 */ ModelRender mUnk_094; + /* 0F4 */ UnkSystem5 mUnk_0F4; + /* 114 */ unk32 mUnk_114; + /* 118 */ STRUCT_PAD(0x118, 0x134); + /* 134 */ Actor_9C mUnk_134; + /* 154 */ Cylinder mUnk_154; + /* 164 */ ActorBomb_unk mUnk_164[0x2]; + /* 17C */ VecFx32 *mUnk_17C; + /* 180 */ ActorBomb_180 mUnk_180; + /* 19C */ ActorBomb_19C mUnk_19C; + /* 1CC */ VecFx32 mUnk_1CC; + /* 1D8 */ unk32 mUnk_1D8; + /* 1D8 */ unk32 mUnk_1DC; + /* 1E0 */ ActorRef mUnk_1E0; + /* 1E4 */ ActorRef mUnk_1E4; + /* 1E8 */ u8 mUnk_1E8; + /* 1E8 */ u8 mUnk_1E9; + /* 1EA */ volatile u16 mUnk_1EA; + /* 1EC */ u16 mUnk_1EC; + /* 1EE */ bool mUnk_1EE; + /* 1EF */ bool mUnk_1EF; + /* 1F0 */ bool mUnk_1F0; +#if IS_JP + /* 1F1 */ bool mUnk_1F1; +#else + /* 1F1 */ STRUCT_PAD(0x1F1, 0x1F2); +#endif + /* 1F2 */ STRUCT_PAD(0x1F2, 0x1F4); + /* 1F4 */ Actor_Derived1_94 mUnk_1F4; + /* 200 */ + + ActorBomb(); + + /* 18 */ virtual bool vfunc_18(unk32 param1) override; + /* 20 */ virtual void vfunc_20() override; + /* 24 */ virtual void vfunc_24() override; + /* 2C */ virtual void vfunc_2C(unk32 param1) override; + /* 38 */ virtual bool Grab(ActorGrabParams grabParams) override; + /* 3C */ virtual bool Drop(ActorGrabParams grabParams, const VecFx32 *pVel) override; + + bool IsInternalTimerOut() { + if (this->mUnk_1EA < this->mUnk_1EC) { + ++this->mUnk_1EA; + return false; + } + return true; + } + + // check if really in ActorUnkBomb + G3d_Model *func_ov031_020e1540(u16 param1); + UnkStruct_ov000_02058a84 *func_ov031_020e15d0(u16 param1); + static void func_ov031_020e1634(); + void func_ov031_020e17f4(); + + // + void func_ov031_020e18a0(); + void SetState(ActorState state); + void func_ov031_020e1908(); + void func_ov031_020e1920(VecFx32 *param1); + void func_ov031_020e193c(); + void func_ov031_020e1b1c(); + void func_ov031_020e1b7c(); + void func_ov031_020e1d18(); + void func_ov031_020e1d48(); + bool func_ov031_020e1d58(); + bool func_ov031_020e1d74(); + void func_ov031_020e1da0(); + void func_ov031_020e1ebc(); + void func_ov031_020e1ed8(); + void func_ov031_020e1f18(); + void func_ov031_020e1f88(); + void func_ov031_020e1fe0(); + void func_ov031_020e1fe4(); + void func_ov031_020e2034(); + void func_ov031_020e2064(); + void func_ov031_020e20d8(); + void func_ov031_020e20fc(); + void func_ov031_020e2100(); + void func_ov031_020e2134(); + void func_ov031_020e238c(); + bool func_ov031_020e25bc(); + bool func_ov031_020e262c(); + void func_ov031_020e2680(VecFx32 *param1); + void func_ov031_020e2780(VecFx32 *param1); + fx32 func_ov031_020e2820(UnkStruct_ov031_Items_00 *param1); + fx32 func_ov031_020e295c(UnkStruct_ov031_Items_00 *param1); + void func_ov031_020e2a9c(); + bool func_ov031_020e2b40(); + void func_ov031_020e2c2c(); +}; + +class ActorProfileBomb : public ActorProfile { +public: + /* 00 (base) */ + + ActorProfileBomb(); + + /* 0C */ virtual Actor *Create(); + + static ActorProfileBomb *GetProfile(); +}; diff --git a/include/Actor/ActorItemFlower.hpp b/include/Actor/ActorItemFlower.hpp index cea479a4..79dc9d02 100644 --- a/include/Actor/ActorItemFlower.hpp +++ b/include/Actor/ActorItemFlower.hpp @@ -15,6 +15,8 @@ public: // data_ov031_0211578c /* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1) override; + + void func_ov031_02102c00(); }; enum ActorItemFlowerState_ { diff --git a/include/Actor/ActorRollingStone.hpp b/include/Actor/ActorRollingStone.hpp index d676b41e..7d2ef25c 100644 --- a/include/Actor/ActorRollingStone.hpp +++ b/include/Actor/ActorRollingStone.hpp @@ -34,8 +34,8 @@ public: // data_ov031_02114a5c /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, - unk32 param3) override; // func_ov031_020f8354 - /* 10 */ virtual void vfunc_10() override; // func_ov031_020f83e4 + unk32 param3) override; // func_ov031_020f8354 + /* 10 */ virtual bool vfunc_10(ActorRef param1, unk32 param2) override; // func_ov031_020f83e4 /* 14 */ }; diff --git a/include/Actor/ActorTable.inl b/include/Actor/ActorTable.inl index b96fe5c7..ab273ded 100644 --- a/include/Actor/ActorTable.inl +++ b/include/Actor/ActorTable.inl @@ -37,7 +37,7 @@ DEFINE_ACTOR_TYPE('BLON', BLON) DEFINE_ACTOR_TYPE('BLST', Blast) DEFINE_ACTOR_TYPE('BMHN', BMHN) DEFINE_ACTOR_TYPE('BMOC', BMOC) -DEFINE_ACTOR_TYPE('BOMB', BOMB) +DEFINE_ACTOR_TYPE('BOMB', Bomb) DEFINE_ACTOR_TYPE('BPAP', BPAP) DEFINE_ACTOR_TYPE('BPBS', BPBS) DEFINE_ACTOR_TYPE('BROW', BROW) diff --git a/include/Actor/ActorUnkBOMB.hpp b/include/Actor/ActorUnkBOMB.hpp deleted file mode 100644 index eb87c119..00000000 --- a/include/Actor/ActorUnkBOMB.hpp +++ /dev/null @@ -1,111 +0,0 @@ -//! TODO: This file was generated automatically and might contain errors - -#pragma once - -#include "Actor/Actor.hpp" -#include "Actor/ActorProfile.hpp" -#include "global.h" -#include "types.h" - -class ActorUnkBOMB_unk : public UnkStruct_PlayerGet_ec { -public: - /* 00 (base) */ - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ - - ActorUnkBOMB_unk(); // ActorUnkBOMB::func_ov031_020e33ac() - - // ActorUnkBOMB::func_ov031_020e17f4() dtor ? -}; - -class ActorUnkBOMB_C4 : public Actor_C4 { -public: - ActorUnkBOMB_C4(Actor *param1); - - /* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override; - /* 04 */ virtual bool vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0C(unk32 param1) override; -}; - -class ActorUnkBOMB : public Actor { -public: - /* 00 (base) */ - /* 94 */ - - ActorUnkBOMB(); - - /* 4C */ virtual ~ActorUnkBOMB() override; - - void func_ov031_020e1540(void); - void func_ov031_020e15d0(void); - void func_ov031_020e1634(void); - void func_ov031_020e17f4(void); - void func_ov031_020e1808(void); - void func_ov031_020e181c(void); - void func_ov031_020e18a0(void); - void func_ov031_020e18c4(void); - void func_ov031_020e1908(void); - void func_ov031_020e1920(void); - void func_ov031_020e193c(void); - void func_ov031_020e1a28(void); - void func_ov031_020e1af8(void); - void func_ov031_020e1b1c(void); - void func_ov031_020e1b7c(void); - void func_ov031_020e1d18(void); - void func_ov031_020e1d48(void); - void func_ov031_020e1d58(void); - void func_ov031_020e1d74(void); - void func_ov031_020e1da0(void); - void func_ov031_020e1ebc(void); - void func_ov031_020e1ed8(void); - void func_ov031_020e1f18(void); - void func_ov031_020e1f88(void); - void func_ov031_020e1fe0(void); - void func_ov031_020e1fe4(void); - void func_ov031_020e2034(void); - void func_ov031_020e2064(void); - void func_ov031_020e20d8(void); - void func_ov031_020e20fc(void); - void func_ov031_020e2100(void); - void func_ov031_020e2134(void); - void func_ov031_020e2220(void); - void func_ov031_020e2234(void); - void func_ov031_020e238c(void); - void func_ov031_020e246c(void); - void func_ov031_020e24ac(void); - void func_ov031_020e25bc(void); - void func_ov031_020e262c(void); - void func_ov031_020e2680(void); - void func_ov031_020e2780(void); - void func_ov031_020e2820(void); - void func_ov031_020e295c(void); - void func_ov031_020e2a9c(void); - void func_ov031_020e2b40(void); - void func_ov031_020e2c2c(void); - void func_ov031_020e2d78(void); - void func_ov031_020e2df4(void); - void func_ov031_020e2e3c(void); - void func_ov031_020e328c(void); - void func_ov031_020e3310(void); - void func_ov031_020e3340(void); - void func_ov031_020e337c(void); - void func_ov031_020e33ac(void); - void func_ov031_020e33c0(void); - void func_ov031_020e33dc(void); - void func_ov031_020e33f8(void); - void func_ov031_020e3448(void); -}; - -class ActorProfileUnkBOMB : public ActorProfile { -public: - /* 00 (base) */ - - ActorProfileUnkBOMB(); - ~ActorProfileUnkBOMB(); - - /* 0C */ virtual Actor *Create(); - - static ActorProfileUnkBOMB *GetProfile(); -}; diff --git a/include/Actor/ActorUnkROCK.hpp b/include/Actor/ActorUnkROCK.hpp index e8aa504f..478b5acd 100644 --- a/include/Actor/ActorUnkROCK.hpp +++ b/include/Actor/ActorUnkROCK.hpp @@ -3,7 +3,8 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "ActorUnkSCCN.hpp" -#include "MapObject/MapObject_ov031.hpp" +#include "MapObject/MapObjectPot_Base.hpp" +#include "MapObject/MapObject_10_Pot.hpp" #include "global.h" #include "types.h" diff --git a/include/Actor/ActorUnkSCCN.hpp b/include/Actor/ActorUnkSCCN.hpp index 58359d54..70c549fe 100644 --- a/include/Actor/ActorUnkSCCN.hpp +++ b/include/Actor/ActorUnkSCCN.hpp @@ -11,20 +11,28 @@ public: /* 00 (vtable) */ /* 04 */ ActorRef mUnk_04; /* 08 */ VecFx32 *mUnk_08; - /* 0C */ MapObject_10 *mUnk_0C; + /* 0C */ MapObject_10_Base *mUnk_0C; /* 10 */ - ActorUnkSCCN_B8(); // func_ov000_0207ec88 set all fields to 0 + ActorUnkSCCN_B8(); // data_ov000_020b287c - /* 00 */ virtual ~ActorUnkSCCN_B8(); // func_ov000_0207eca8 & func_ov000_0207ecd8 - /* 08 */ virtual void vfunc_08(); // func_ov000_0207ed84 + /* 00 */ virtual ~ActorUnkSCCN_B8(); + /* 08 */ virtual void vfunc_08(); +}; + +class MapObject_10_SCCN : public MapObject_10 { +public: + /* 00 (base) */ + /* 24 */ + + MapObject_10_SCCN() {} }; class ActorUnkSCCN : public Actor { public: /* 00 (base) */ - /* 94 */ MapObject_10 mUnk_94; + /* 94 */ MapObject_10_SCCN mUnk_94; /* B8 */ ActorUnkSCCN_B8 mUnk_B8; /* C8 */ diff --git a/include/Actor/ActorUnkSWBM.hpp b/include/Actor/ActorUnkSWBM.hpp index be71734d..be7f44f3 100644 --- a/include/Actor/ActorUnkSWBM.hpp +++ b/include/Actor/ActorUnkSWBM.hpp @@ -20,9 +20,8 @@ public: /* 04 */ // data_ov031_02113148 - /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; // func_ov031_020e68d8 - /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, - unk32 param3) override; // func_ov031_020e6900 + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) override; }; class ActorUnkSWBM_98 : public UnkStruct_ov031_Items_01 { @@ -35,8 +34,8 @@ public: mUnk_2C(param1) {} // data_ov031_0211312c - /* 0C */ virtual bool vfunc_0C(Actor *param1, VecFx32 *vector) override; // func_ov031_020e691c - /* 10 */ virtual void vfunc_10(Actor *actor) override; // func_ov031_020e6974 + /* 0C */ virtual bool vfunc_0C(Actor *param1, VecFx32 *vector) override; + /* 10 */ virtual void vfunc_10(Actor *actor) override; }; class ActorUnkSWBM_C8 : public UnkStruct_PlayerGet_74_base { @@ -50,7 +49,7 @@ public: mUnk_14(param1) {} // data_ov031_02113110 - /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2, unk32 param3) override; // func_ov031_020e69cc + /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2) override; }; class ActorUnkSWBM : public Actor { diff --git a/include/Actor/Actor_Derived1.hpp b/include/Actor/Actor_Derived1.hpp index 1820b00c..506f4608 100644 --- a/include/Actor/Actor_Derived1.hpp +++ b/include/Actor/Actor_Derived1.hpp @@ -1,6 +1,6 @@ #pragma once -#include "Actor/Actor.hpp" +#include "Actor.hpp" #include "Render/ModelRender.hpp" #include "Unknown/Common.hpp" #include "Unknown/UnkStruct_027e0960.hpp" @@ -42,11 +42,6 @@ public: /* 10 */ }; -struct ActorUnkZLSL_AnimationTag { - unk32 index; - char name[0x14]; -}; - class Actor_Derived1_94_0C { public: /* 00 (vtable) */ diff --git a/include/Map/MapObjectTable.inl b/include/Map/MapObjectTable.inl index 1d378cc9..a12633b5 100644 --- a/include/Map/MapObjectTable.inl +++ b/include/Map/MapObjectTable.inl @@ -15,7 +15,7 @@ DEFINE_MAP_OBJECT_TYPE('BLCT', BLCT) DEFINE_MAP_OBJECT_TYPE('BLHL', BLHL) DEFINE_MAP_OBJECT_TYPE('BLRB', BLRB) DEFINE_MAP_OBJECT_TYPE('BLSR', BLSR) -DEFINE_MAP_OBJECT_TYPE('BMFL', BMFL) +DEFINE_MAP_OBJECT_TYPE('BMFL', BombFlower) DEFINE_MAP_OBJECT_TYPE('BOGN', BOGN) DEFINE_MAP_OBJECT_TYPE('BREX', BREX) DEFINE_MAP_OBJECT_TYPE('BRGL', BRGL) diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 08748db3..c6e291de 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -56,8 +56,9 @@ public: /* 05 */ unk8 mUnk_05; /* 06 */ unk8 mUnk_06; /* 07 */ unk8 mUnk_07; - /* 08 */ u32 mUnk_08; - /* 0C */ + /* 08 */ unk32 mUnk_08; + /* 0C */ VecFx32 mUnk_0C; + /* 18 */ MapObject_10_Base(); // func_ov000_0207c018 @@ -76,13 +77,12 @@ public: class MapObject_10 : public MapObject_10_Base { public: /* 00 (vtable) */ - /* 0C */ VecFx32 mUnk_0C; /* 18 */ VecFx32 mUnk_18; /* 24 */ MapObject_10() {} - // data_ov031_02113f18 + // data_ov000_020b36b8 /* 00 */ virtual void vfunc_00(); /* 04 */ virtual void vfunc_04(); /* 08 */ virtual void vfunc_08(); @@ -119,10 +119,10 @@ class MapObject { public: /* 00 (vtable) */ /* 04 */ VecFx32 mPos; - /* 10 */ MapObject_10 *mUnk_10; + /* 10 */ MapObject_10_Base *mUnk_10; /* 14 */ union { - s16 mUnk_14; - UnkAngleStruct mUnk_14_AngleStruct; + s16 mAngle; + UnkAngleStruct mAngleStruct; }; /* 16 */ MapObjState mState; /* 18 */ unk8 mUnk_18[2]; // related to Link walking to the map object when touched @@ -154,7 +154,7 @@ public: /* 38 */ u16 GetDirection() { - return (u16) (this->mUnk_14 + DEG_TO_ANG(45)) / DEG_TO_ANG(90); + return (u16) (this->mAngle + DEG_TO_ANG(45)) / DEG_TO_ANG(90); } bool IsOrientedVertically() { diff --git a/include/MapObject/MapObjectBombFlower.hpp b/include/MapObject/MapObjectBombFlower.hpp new file mode 100644 index 00000000..ba9b9cac --- /dev/null +++ b/include/MapObject/MapObjectBombFlower.hpp @@ -0,0 +1,68 @@ +#pragma once + +#include "Actor/ActorItemFlower.hpp" +#include "Actor/ActorUnkSCCN.hpp" +#include "MapObject/MapObject.hpp" +#include "MapObject/MapObjectProfile.hpp" +#include "MapObjectPot_Base.hpp" +#include "MapObject_10_Pot.hpp" +#include "global.h" +#include "types.h" + +enum MapObjBombFlowerState_ { + MapObjBombFlowerState_0 = 0, + MapObjBombFlowerState_1 = 1, + MapObjBombFlowerState_2 = 2, + MapObjBombFlowerState_3 = 3, + MapObjBombFlowerState_4 = 4, + MapObjBombFlowerState_5 = 5, + MapObjBombFlowerState_6 = 6, + MapObjBombFlowerState_Max +}; + +class MapObjectBombFlower : public MapObjectPot_Base { +public: + /* 00 (base) */ + /* 48 */ ModelRender_ov031_0211578c mUnk_48; + /* A8 */ STRUCT_PAD(0xA8, 0xB0); + /* BC */ fx32 mUnk_B0; + /* BC */ fx32 mUnk_B4; + /* B8 */ volatile u16 mUnk_B8; + /* BA */ u16 mUnk_BA; + /* BC */ bool mUnk_BC; + /* C0 */ MapObject_10_Pot mUnk_C0; + + MapObjectBombFlower(); + + /* 08 */ virtual void vfunc_08() override; + /* 14 */ virtual void vfunc_14() override; + /* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) override; + /* 28 */ virtual unk32 vfunc_28() override; + /* 38 */ virtual void vfunc_38() override; + /* 44 */ virtual bool SetState(MapObjState state, unk32) override; + /* 48 */ virtual void vfunc_48() override; + /* 50 */ virtual void vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) override; + /* 58 */ virtual void vfunc_58(); + + bool IsInternalTimerOut() { + if (this->mUnk_B8 < this->mUnk_BA) { + ++this->mUnk_B8; + return false; + } + + return true; + } + + void func_ov031_02102728(unk32 param1); +}; + +class MapObjectProfileBombFlower : public MapObjectProfile_Derived2 { +public: + /* 00 (base) */ + + MapObjectProfileBombFlower(); + + /* 0C */ virtual MapObject *Create(); + + static MapObjectProfileBombFlower *GetProfile(); +}; diff --git a/include/MapObject/MapObjectGrass.hpp b/include/MapObject/MapObjectGrass.hpp index 98c88363..c67d2add 100644 --- a/include/MapObject/MapObjectGrass.hpp +++ b/include/MapObject/MapObjectGrass.hpp @@ -1,7 +1,9 @@ #pragma once +#include "Actor/ActorUnkSCCN.hpp" #include "MapObject/MapObject.hpp" #include "MapObject/MapObjectProfile.hpp" +#include "MapObject_10_Pot.hpp" #include "global.h" #include "types.h" @@ -13,6 +15,15 @@ enum MapObjGrassState_ { MapObjGrassState_MAX }; +class MapObjectProfilePot_Base : public MapObjectProfile_Derived2 { +public: + /* 00 (base) */ + /* D4 */ MapObject_10_Pot mUnk_D4; + + MapObjectProfilePot_Base(MapObjectId param1, MapObjectId param2) : + MapObjectProfile_Derived2(param1, param2) {} +}; + class MapObjectGrass : public MapObject { public: /* 00 (base) */ @@ -41,10 +52,9 @@ public: void func_ov031_02101978(unk32 param1, VecFx32 *param2); }; -class MapObjectProfileGrass : public MapObjectProfile_Derived2 { +class MapObjectProfileGrass : public MapObjectProfilePot_Base { public: /* 00 (base) */ - /* D4 */ MapObject_10 mUnk_D4; MapObjectProfileGrass(); diff --git a/include/MapObject/MapObjectPot.hpp b/include/MapObject/MapObjectPot.hpp index 5ddc0064..eef98488 100644 --- a/include/MapObject/MapObjectPot.hpp +++ b/include/MapObject/MapObjectPot.hpp @@ -1,17 +1,14 @@ #pragma once -#include "Actor/ActorId.hpp" -#include "MapObject/MapObject.hpp" #include "MapObject/MapObjectProfile.hpp" -#include "MapObject_ov031.hpp" +#include "MapObjectGrass.hpp" +#include "MapObjectPot_Base.hpp" #include "global.h" #include "types.h" class MapObjectPot : public MapObjectPot_Base { public: /* 00 (base) */ - /* 40 */ ActorId mUnk_40; - /* 44 */ STRUCT_PAD(0x44, 0x48); /* 48 */ ModelRender_ov000_020b198c mUnk_48; MapObjectPot(); @@ -20,11 +17,10 @@ public: /* 14 */ virtual void vfunc_14() override; // func_ov031_021052cc /* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3); // func_ov031_021050b4 /* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov031_02105348 - /* 30 */ virtual ~MapObjectPot() override; - /* 3C */ virtual bool vfunc_3C() override; // func_ov031_021053b4 - /* 40 */ virtual bool vfunc_40() override; // func_ov031_021053fc - /* 48 */ virtual void vfunc_48() override; // func_ov031_021051d4 - /* 54 */ virtual unk32 vfunc_54() override; // func_ov031_02105310 + /* 3C */ virtual bool vfunc_3C() override; // func_ov031_021053b4 + /* 40 */ virtual bool vfunc_40() override; // func_ov031_021053fc + /* 48 */ virtual void vfunc_48() override; // func_ov031_021051d4 + /* 54 */ virtual unk32 vfunc_54() override; // func_ov031_02105310 }; class MapObjectProfilePot : public MapObjectProfilePot_Base { @@ -32,7 +28,6 @@ public: /* 00 (base) */ MapObjectProfilePot(); - ~MapObjectProfilePot(); /* 0C */ virtual MapObject *Create(); diff --git a/include/MapObject/MapObjectPot_Base.hpp b/include/MapObject/MapObjectPot_Base.hpp new file mode 100644 index 00000000..f05fbc1a --- /dev/null +++ b/include/MapObject/MapObjectPot_Base.hpp @@ -0,0 +1,37 @@ +#pragma once +#include "Actor/ActorId.hpp" +#include "MapObject.hpp" + +enum MapObjPot_Base_State_ { + MapObjPot_BaseState_0 = 0, + MapObjPot_BaseState_1 = 1, + MapObjPot_BaseState_2 = 2, + MapObjPot_BaseState_3 = 3, + MapObjPotBase_State_Max +}; + +class MapObjectPot_Base : public MapObject { +public: + /* 00 (base) */ + /* 40 */ ActorId mUnk_40; + /* 44 */ unk16 mUnk_44; + /* 48 */ + + MapObjectPot_Base(); + + // data_ov000_020b35d0 + /* 00 */ virtual bool vfunc_00(); + /* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; + /* 28 */ virtual unk32 vfunc_28() override; + /* 30 */ virtual ~MapObjectPot_Base() = 0 override; + /* 38 */ virtual void vfunc_38() override; + /* 3C */ virtual bool vfunc_3C() override; + /* 40 */ virtual bool vfunc_40() override; + /* 44 */ virtual bool SetState(MapObjState state, unk32 param2) override; + /* 48 */ virtual void vfunc_48() override; + /* 4C */ virtual bool vfunc_4C() override; + /* 50 */ virtual void vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) override; + /* 54 */ virtual unk32 vfunc_54() override; + + void func_ov000_0209da78(unk32 param1, unk32 param2); +}; diff --git a/include/MapObject/MapObjectUnkBMFL.hpp b/include/MapObject/MapObjectUnkBMFL.hpp deleted file mode 100644 index d752c387..00000000 --- a/include/MapObject/MapObjectUnkBMFL.hpp +++ /dev/null @@ -1,41 +0,0 @@ -//! TODO: This file was generated automatically and might contain errors - -#pragma once - -#include "MapObject/MapObject.hpp" -#include "MapObject/MapObjectProfile.hpp" -#include "global.h" -#include "types.h" - -class MapObjectUnkBMFL : public MapObject { -public: - /* 00 (base) */ - /* 40 */ - - MapObjectUnkBMFL(); - - /* 30 */ virtual ~MapObjectUnkBMFL() override; - - void func_ov031_021025c4(void); - void func_ov031_02102708(void); - void func_ov031_02102718(void); - void func_ov031_02102728(void); - void func_ov031_021027a4(void); - void func_ov031_02102894(void); - void func_ov031_021029f0(void); - void func_ov031_02102a40(void); - void func_ov031_02102ad8(void); - void func_ov031_02102af4(void); -}; - -class MapObjectProfileUnkBMFL : public MapObjectProfile { -public: - /* 00 (base) */ - - MapObjectProfileUnkBMFL(); - ~MapObjectProfileUnkBMFL(); - - /* 0C */ virtual MapObject *Create(); - - static MapObjectProfileUnkBMFL *GetProfile(); -}; diff --git a/include/MapObject/MapObjectUnkSKDI.hpp b/include/MapObject/MapObjectUnkSKDI.hpp index 56bd86aa..52d5cc5a 100644 --- a/include/MapObject/MapObjectUnkSKDI.hpp +++ b/include/MapObject/MapObjectUnkSKDI.hpp @@ -1,6 +1,6 @@ #pragma once -#include "Actor/ActorUnkBOMB.hpp" +#include "Actor/ActorBomb.hpp" #include "MapObject/MapObject.hpp" #include "MapObject/MapObjectProfile.hpp" #include "Unknown/UnkStruct_ov031_Items.hpp" @@ -21,7 +21,7 @@ public: /* 040 */ UnkSystem6_Derived2 mUnk_040; /* 048 */ unk8 mUnk_048; /* 049 */ STRUCT_PAD(0x049, 0x04C); - /* 04C */ ActorUnkBOMB_unk mUnk_04C[0x4]; + /* 04C */ ActorBomb_unk mUnk_04C[0x4]; /* 07C */ unk32 mUnk_07C; /* 080 */ unk32 mUnk_080; /* 084 */ u16 mUnk_084; diff --git a/include/MapObject/MapObjectUnkSWHT.hpp b/include/MapObject/MapObjectUnkSWHT.hpp index 0dd3bdde..c36dbe50 100644 --- a/include/MapObject/MapObjectUnkSWHT.hpp +++ b/include/MapObject/MapObjectUnkSWHT.hpp @@ -1,8 +1,8 @@ #pragma once #include "MapObject/MapObject.hpp" +#include "MapObject/MapObjectGrass.hpp" #include "MapObject/MapObjectProfile.hpp" -#include "MapObject_ov031.hpp" #include "global.h" #include "types.h" diff --git a/include/MapObject/MapObject_10_Pot.hpp b/include/MapObject/MapObject_10_Pot.hpp new file mode 100644 index 00000000..7a6de908 --- /dev/null +++ b/include/MapObject/MapObject_10_Pot.hpp @@ -0,0 +1,30 @@ +#pragma once +#include "MapObject.hpp" + +class MapObject_10_Pot_Base : public MapObject_10_Base { +public: + /* 00 (base) */ + /* 0C */ + + MapObject_10_Pot_Base() {} + + // should definitely be in ov000 + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(); + /* 10 */ virtual void vfunc_10(Cylinder *param1); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(VecFx32 *param1); + /* 1C */ virtual void vfunc_1C(VecFx32 *param1); +}; + +class MapObject_10_Pot : public MapObject_10_Pot_Base { +public: + /* 00 (base) */ + /* 18 */ fx32 mUnk_18; + /* 1C */ fx32 mUnk_1C; + /* 20 */ + + MapObject_10_Pot() {} +}; diff --git a/include/MapObject/MapObject_ov031.hpp b/include/MapObject/MapObject_ov031.hpp deleted file mode 100644 index 81cde5c0..00000000 --- a/include/MapObject/MapObject_ov031.hpp +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -class MapObjectPot_Base : public MapObject { -public: - /* 00 (base) */ - /* 40 */ - - MapObjectPot_Base(); - - // data_ov000_020b35d0 - - /* 00 */ virtual bool vfunc_00(); // func_ov000_0209d780 - /* 24 */ virtual void vfunc_24(MapObject *param1, VecFx32 param2) override; // func_ov000_0209d8e8 - /* 28 */ virtual unk32 vfunc_28() override; // func_ov000_0209d9f8 - /* 30 */ virtual ~MapObjectPot_Base() = 0 override; - /* 38 */ virtual void vfunc_38() override; // func_ov000_0209d9ac - /* 3C */ virtual bool vfunc_3C() override; // func_ov000_0209db74 - /* 40 */ virtual bool vfunc_40() override; // func_ov000_0209db7c - /* 44 */ virtual void vfunc_44(unk32, unk32) override; // func_ov000_0209d7a4 - /* 48 */ virtual void vfunc_48() override; // func_ov000_0209da60 - /* 4C */ virtual void vfunc_4C() override; // func_ov000_0209da70 - /* 50 */ virtual void vfunc_50() override; // func_ov000_0209dac0 - /* 54 */ virtual unk32 vfunc_54() override; // func_ov000_0209da64 - - // overlay 0 - void func_ov000_0209d8e8(MapObjectPot_Base *param1, fx32 param2); - unk32 func_ov000_0209da64(); -}; - -class MapObject_10_Pot : public MapObject_10 { -public: - /* 00 (base) */ - /* 24 */ - - MapObject_10_Pot() {} -}; - -class MapObjectProfilePot_Base : public MapObjectProfile_Derived2 { -public: - /* 00 (base) */ - /* D4 */ MapObject_10_Pot mUnk_D4; - - MapObjectProfilePot_Base(MapObjectId param1, MapObjectId param2) : - MapObjectProfile_Derived2(param1, param2) {} -}; diff --git a/include/Player/PlayerActorBase.hpp b/include/Player/PlayerActorBase.hpp index 347d0ddb..ee657f5d 100644 --- a/include/Player/PlayerActorBase.hpp +++ b/include/Player/PlayerActorBase.hpp @@ -18,8 +18,7 @@ extern "C" void func_ov000_0205d500(ActorGrabParams *, unk32, unk32); bool PlayerCharacter_IsNotLink(s32 character); struct ActorGrabParams { - /* 00 */ u16 unk_00; - /* 02 */ u16 unk_02; + /* 00 */ ActorRef mUnk_00; /* 04 */ ActorGrabParams() {} diff --git a/include/Player/PlayerGet.hpp b/include/Player/PlayerGet.hpp index 88814768..f54d2d0f 100644 --- a/include/Player/PlayerGet.hpp +++ b/include/Player/PlayerGet.hpp @@ -109,7 +109,7 @@ public: /* 10 */ unk32 mUnk_10; /* 14 */ UnkStruct_ov000_0208f820 *mUnk_14; - /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2, unk32 param3) override; + /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2) override; UnkStruct_PlayerGet_74(UnkStruct_ov000_0208f820 *param1) { this->mUnk_14 = param1; @@ -155,9 +155,12 @@ public: /* 064 */ UnkStruct_PlayerGet_64_2 mUnk_64; /* 068 */ unk32 mUnk_68; /* 06C */ unk32 mUnk_6C; // scale - /* 070 */ unk16 mUnk_70; // angle/rotation - /* 070 */ u8 mUnk_72; // probably bools - /* 070 */ u8 mUnk_73; // probably bools + /* 070 */ union { + unk16 mAngle; + UnkAngleStruct mUnkAngleStruct; + }; // angle/rotation + /* 070 */ u8 mUnk_72; // probably bools + /* 070 */ u8 mUnk_73; // probably bools /* 074 */ UnkStruct_PlayerGet_74 mUnk_74; /* 08C */ ModelRender mUnk_8C; /* 0EC */ UnkStruct_PlayerGet_ec mUnk_EC[4]; diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index e0b29582..1f97d30e 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -11,6 +11,12 @@ class UnkSystem5; extern "C" void *func_ov000_02057750(size_t allocSize); +struct ActorUnkZLSL_AnimationTag { + unk32 index; + char name[0x10]; + u32 unknown; +}; + typedef void (*UnkSystem4_UnkCallback)(void *, unk32); class UnkSystem4_vfunc_1C_B4 { @@ -79,6 +85,7 @@ public: void func_ov000_02057d9c(); void func_ov000_0209a7b8(void *param1, UnkSystem4_UnkCallback param2); void func_ov000_02057c98(UnkSystem5 *param1); + void func_ov000_02057cf4(); }; class UnkSystem6_Derived1 : public ModelRenderBase { @@ -140,7 +147,7 @@ public: class UnkSystem5 { public: /* 00 */ G3d_Model *mpModel; - /* 04 */ unk32 mUnk_04; + /* 04 */ unk16 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk32 mUnk_0C; /* 10 */ unk32 mUnk_10; @@ -153,14 +160,14 @@ public: void func_01ffc3b4(); - void func_ov000_020577a4(unk32 param1, unk32 param2, unk32 param3); + void func_ov000_020577a4(UnkStruct_ov000_02058a84 *param1, unk32 param2, unk32 param3); void func_ov000_020577f8(unk32 param1); void func_ov000_020578a4(unk32 param1, unk32 param2); }; class UnkSystem5_Derived1 : public UnkSystem5 { public: - UnkSystem5_Derived1(void *param1, G3d_Model *param2, unk32 param3) : + UnkSystem5_Derived1(void *param1, G3d_Model *param2, UnkStruct_ov000_02058a84 *param3) : UnkSystem5(param1, param2) { unk32 value = 0; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index e05626fc..74f556b8 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -1305,7 +1305,7 @@ public: /* 00 (vtable) */ /* 04 */ - /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2, unk32 param3); + /* 00 */ virtual void vfunc_00(unk32 param1, unk32 param2); UnkStruct_PlayerGet_74_base(); }; diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index ef953f1b..b83cae09 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -89,6 +89,10 @@ public: UnkStruct_027e0ce0_1C(); ~UnkStruct_027e0ce0_1C(); + // overlay 0 + G3d_Model *func_ov000_0208ed30(unk32 param1, unk32 param2, char *param3); + UnkStruct_ov000_02058a84 *func_ov000_0208ee94(unk32 param1, unk32 param2, char *param3, unk32 param4); + // overlay 1 void func_ov001_020bccec(); void func_ov001_020bcfec(); @@ -303,7 +307,7 @@ public: /* 00 */ virtual ~UnkStruct_027e0ce0_38_Base(); /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1); /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3); - /* 10 */ virtual void vfunc_10(); + /* 10 */ virtual bool vfunc_10(ActorRef param1, unk32 param2); /* 14 */ }; @@ -777,7 +781,6 @@ public: void func_ov000_0208bc9c(unk32 param1, unk32 param2); void func_ov000_0208bd30(bool param1, unk32 param2, unk32 param3, unk32 param4); bool func_ov000_0208be70(VecFx32 param1); - G3d_Model *func_ov000_0208ed30(unk32 param1, unk32 param2, char *param3); static UnkStruct_027e0ce0_34 *func_ov000_0205c904(); diff --git a/include/Unknown/UnkStruct_027e0d8c.hpp b/include/Unknown/UnkStruct_027e0d8c.hpp index d25d547f..71dede95 100644 --- a/include/Unknown/UnkStruct_027e0d8c.hpp +++ b/include/Unknown/UnkStruct_027e0d8c.hpp @@ -19,6 +19,7 @@ public: void func_ov093_021660a8(ActorRef param1); void func_ov093_021660f8(); void func_ov093_02166108(); + void func_ov093_021661c0(ActorRef param1); void func_ov093_02166220(); }; diff --git a/include/profile.hpp b/include/profile.hpp index 95ded464..24f30f1e 100644 --- a/include/profile.hpp +++ b/include/profile.hpp @@ -48,6 +48,13 @@ public: /* 0C */ virtual void vfunc_0C(); }; +class UnkStruct_ov000_02058a84 { +public: + /* 0 */ STRUCT_PAD(0x0, 0x6); + /* 6 */ u16 mUnk_6; + /* 8 */ +}; + class MapObjectProfile_Derived2_20_Base { public: /* 00 (vtable) */ @@ -82,7 +89,7 @@ public: void func_ov000_020589e4(void); unk32 func_ov000_02058a24(); void unc_ov000_02058a58(void); - unk32 func_ov000_02058a84(unk32 param1, const char *param2); + UnkStruct_ov000_02058a84 *func_ov000_02058a84(unk32 param1, const char *param2); void func_ov000_02058ab0(void); }; diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index 05ff98ae..405bee6f 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -111,12 +111,12 @@ bool Actor::Grab(ActorGrabParams grabParams) { SET_FLAG(this->mFlags, ActorFlag_Grabbed); - switch (grabParams.unk_00) { + switch (grabParams.mUnk_00.type_index) { case 0x100: case 0x101: { - u16 var_r3 = grabParams.unk_02; + u16 var_r3 = grabParams.mUnk_00.unk_id; - if (grabParams.unk_00 == 0x101) { + if (grabParams.mUnk_00.type_index == 0x101) { var_r3 = 0; } diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 494e8fd9..f9493d90 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -36,7 +36,7 @@ MapObject::MapObject() { this->mPos.y = ptr->y; this->mPos.z = ptr->z; - this->mUnk_14 = *ptr2->mUnk_0C; + this->mAngle = *ptr2->mUnk_0C; MI_CpuCopyFast(ptr2->mUnk_04, &this->mUnk_20, sizeof(MapObject_20)); for (int i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { diff --git a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp index 5986d0eb..aa16e9ec 100644 --- a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp +++ b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp @@ -85,31 +85,31 @@ bool MapObjectMiniBlocks::vfunc_00(void) { case 1: case 6: case 8: - this->mUnk_14 = -0x8000; + this->mAngle = DEG_TO_ANG(-180); break; case 2: case 7: case 9: - this->mUnk_14 = 0x4000; + this->mAngle = DEG_TO_ANG(90); break; case 3: case 5: case 11: - this->mUnk_14 = -0x4000; + this->mAngle = DEG_TO_ANG(-90); break; default: - this->mUnk_14 = 0; + this->mAngle = DEG_TO_ANG(0); break; } - func_01ff9638(&vec, -this->mUnk_14); + func_01ff9638(&vec, -this->mAngle); VecFx32_Add(&this->mPos, &vec, &this->mPos); return true; } void MapObjectMiniBlocks::vfunc_14(void) { Mat3p m; - u16 unk_14 = this->mUnk_14; + u16 unk_14 = this->mAngle; Mat3p_InitYRotation(&m, SIN(unk_14), COS(unk_14)); this->mUnk_40.vfunc_14(&m, &this->mPos); } diff --git a/src/000_Second/MapObject/MapObjectPot_Base.cpp b/src/000_Second/MapObject/MapObjectPot_Base.cpp new file mode 100644 index 00000000..d770634b --- /dev/null +++ b/src/000_Second/MapObject/MapObjectPot_Base.cpp @@ -0,0 +1,76 @@ +#include "MapObject/MapObjectPot_Base.hpp" + +extern "C" void func_ov000_020a14e4(unk8, VecFx32 *); + +MapObjectPot_Base::MapObjectPot_Base() { + this->mUnk_40 = 0; + this->mUnk_44 = 0; + + this->func_ov000_0209da78(0x0, 0x1); + this->func_ov000_0209da78(0x1, 0x0); +} + +MapObjectPot_Base::~MapObjectPot_Base() {} + +bool MapObjectPot_Base::vfunc_00() { + this->SetState(MapObjPot_BaseState_0, 0x1); + return true; +} + +// non-matching +bool MapObjectPot_Base::SetState(MapObjState state, unk32 param2) { + if (param2 == 0x0 && this->mState == MapObjPot_BaseState_1) { + return; + } + this->mState = state; + switch (this->mState) { + case MapObjPot_BaseState_0: + break; + case MapObjPot_BaseState_1: + this->vfunc_48(); + if (this->vfunc_40()) { + func_ov000_020a14e4(this->mUnk_38, &this->mPos); + } else { + if (this->vfunc_4C()) { + unk32 val = this->vfunc_54(); + this->vfunc_3C(); + } + } + this->MapObject::func_ov000_0209d614(0x1); + UNSET_FLAG(this->mFlags, MapObjFlag_Alive); + break; + case MapObjPot_BaseState_2: + UNSET_FLAG(this->mFlags, MapObjFlag_Alive); + break; + case MapObjPot_BaseState_3: + this->vfunc_38(); + UNSET_FLAG(this->mFlags, MapObjFlag_Alive); + break; + break; + default: + break; + } + return true; +} + +// non-matching +void MapObjectPot_Base::vfunc_24(MapObject *param1, VecFx32 param2) {} +// non-matching +void MapObjectPot_Base::vfunc_38() {} +// non-matching +unk32 MapObjectPot_Base::vfunc_28() {} +// non-matching +void MapObjectPot_Base::vfunc_48() {} + +unk32 MapObjectPot_Base::vfunc_54() { + return this->mUnk_20.mParams[0] & 0xFF; +} + +bool MapObjectPot_Base::vfunc_4C() { + return true; +} + +// non-matching +void MapObjectPot_Base::func_ov000_0209da78(unk32 param1, unk32 param2) {} +// non-matching +void MapObjectPot_Base::vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) {} diff --git a/src/031_Land/Actor/ActorBlast.cpp b/src/031_Land/Actor/ActorBlast.cpp index 3e7f5222..19d0a5e0 100644 --- a/src/031_Land/Actor/ActorBlast.cpp +++ b/src/031_Land/Actor/ActorBlast.cpp @@ -31,7 +31,7 @@ ActorProfileBlast::ActorProfileBlast() : } // non-matching -bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {} +bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {} ActorBlast::ActorBlast() : mUnk_94(FLOAT_TO_FX32(0.625f)), @@ -146,7 +146,7 @@ fx32 ActorBlast::func_ov031_020e3b94() { return FLOAT_TO_FX32(0.5f); } -void ActorBlast::func_ov031_020e3b9c(unk16 param1, unk16 param2) { +void ActorBlast::func_ov031_020e3b9c(Actor *spawner, unk16 param1, unk16 param2) { ActorParams actorParams; ActorRef ref; @@ -154,11 +154,11 @@ void ActorBlast::func_ov031_020e3b9c(unk16 param1, unk16 param2) { actorParams.func_ov000_020975f8(); actorParams.func_ov000_020975f8(); - actorParams.mUnk_28 = this->mRef; - VecFx32_Copy(&this->mPos, &actorParams.mInitialPos); + actorParams.mUnk_28 = spawner->mRef; + VecFx32_Copy(&spawner->mPos, &actorParams.mInitialPos); actorParams.mParams[0] = param1; actorParams.mParams[1] = param2; - this->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_Blast, &actorParams, 0x0); + spawner->func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_Blast, &actorParams, 0x0); } diff --git a/src/031_Land/Actor/ActorBomb.cpp b/src/031_Land/Actor/ActorBomb.cpp new file mode 100644 index 00000000..d201021e --- /dev/null +++ b/src/031_Land/Actor/ActorBomb.cpp @@ -0,0 +1,889 @@ +#include "Actor/ActorBomb.hpp" + +#include "Actor/ActorBlast.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/Actor_Derived1.hpp" +#include "MainGame/AdventureMode.hpp" +#include "Map/MapObjectId.hpp" +#include "MapObject/MapObjectBombFlower.hpp" +#include "MapObject/MapObjectProfile.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e09b4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_027e0d38.hpp" +#include "Unknown/UnkStruct_027e0d8c.hpp" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" + +struct UnkStruct_ov031_020e5d18_00 { + /* 00 */ Actor *mUnk_00; + /* 04 */ STRUCT_PAD(0x04, 0x18); + /* 18 */ +}; + +extern "C" VecFx32 data_027e07d4; +extern "C" unk32 data_ov000_020aecf8; +extern "C" VecFx32 data_ov031_02110a10; +extern "C" VecFx32 data_ov031_02110a28; +extern "C" char data_ov031_02110a50; +extern "C" char data_ov031_02110a60; +extern "C" char data_ov031_02110a70; + +extern "C" bool func_01ff916c(void *, int, int); +extern "C" void func_01ff9218(fx32 *, fx32, fx32); +extern "C" unk32 func_01ff9258(fx32, fx32); +extern "C" void func_01ff94cc(VecFx32 *, VecFx32 *, VecFx32 *); +extern "C" fx32 func_01ffb464(fx32); +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *); +extern "C" void func_01ffb974(unk32, VecFx32 *, VecFx32 *, VecFx32 *); +extern "C" void func_01ffc5a0(ModelRender *, unk32, UnkAngleStruct, void *); +extern "C" void func_01ffe6c4(UnkStruct_ov031_020e5d18_00 *, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, + UnkStruct_ov031_Items_00_Base *); +extern "C" void func_0200b578(G3d_RenderObject *, void (*)(), unk32, unk32, unk32); + +extern "C" void func_ov017_020c2438(unk32 *, unk32, VecFx32 *, unk32, unk32); +extern "C" void func_ov017_020c26f8(unk32, VecFx32 *, unk32, unk32); + +static ActorUnkZLSL_AnimationTag data_ov031_02112be8 = {.index = 0, .name = "bomb_clanim", .unknown = 0}; +static PTMF data_ov031_02112c00[ActorBombState_Max] = { + ActorBomb::func_ov031_020e1da0, // ActorUnkBOMBState_0 + ActorBomb::func_ov031_020e1ed8, // ActorUnkBOMBState_1 + ActorBomb::func_ov031_020e1f88, // ActorUnkBOMBState_2 + ActorBomb::func_ov031_020e1fe4, // ActorUnkBOMBState_3 + ActorBomb::func_ov031_020e2064, // ActorUnkBOMBState_4 + ActorBomb::func_ov031_020e20fc, // ActorUnkBOMBState_5 + ActorBomb::func_ov031_020e2134, // ActorUnkBOMBState_6 +}; + +static PTMF data_ov031_02112c38[ActorBombState_Max] = { + ActorBomb::func_ov031_020e1d48, // ActorUnkBOMBState_0 + ActorBomb::func_ov031_020e1ebc, // ActorUnkBOMBState_1 + ActorBomb::func_ov031_020e1f18, // ActorUnkBOMBState_2 + ActorBomb::func_ov031_020e1fe0, // ActorUnkBOMBState_3 + ActorBomb::func_ov031_020e2034, // ActorUnkBOMBState_4 + ActorBomb::func_ov031_020e20d8, // ActorUnkBOMBState_5 + ActorBomb::func_ov031_020e2100, // ActorUnkBOMBState_6 +}; + +DECL_PROFILE(ActorProfileBomb); + +Actor *ActorProfileBomb::Create() { + return new(HeapIndex_2) ActorBomb(); +} + +ActorProfileBomb::ActorProfileBomb() : + ActorProfile(ActorId_Bomb) { + this->mUnk_04.Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.2999f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.4f)); +} + +G3d_Model *ActorBomb::func_ov031_020e1540(u16 param1) { + if (param1 == 0x0) { + return data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, &data_ov031_02110a60); + } + + return G3d_GetModelPtr( + ((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower))->mUnk_20.mUnk_50); +} + +UnkStruct_ov000_02058a84 *ActorBomb::func_ov031_020e15d0(u16 param1) { + if (param1 == 0x0) { + return data_027e0ce0->mUnk_1C->func_ov000_0208ee94(0x0, 0x1, &data_ov031_02110a70, 0x1); + } + return ((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower)) + ->mUnk_20.func_ov000_02058a84(0x1, &data_ov031_02110a50); +} + +// non-matching +// seems not to be in the actor +// use a pattern like this->mUnk_04->mUnk_04 +// so it's not ActorBomb and the class has at +// least 0xB3 bytes so it does not seem to be +// one of the auxiliary classes +void ActorBomb::func_ov031_020e1634() {} + +ActorBomb::ActorBomb() : + mUnk_094(this->func_ov031_020e1540(this->mUnk_5C.mParams[0])), + mUnk_0F4(&this->mUnk_114, this->func_ov031_020e1540(this->mUnk_5C.mParams[0])), + mUnk_17C(NULL), + mUnk_180(this), + mUnk_19C(this), + mUnk_1CC(data_027e07d4), + mUnk_1D8(0x1000), + mUnk_1DC(0x0), + mUnk_1E0(0x0), + mUnk_1E4(0x0), + mUnk_1E8(0x0), + mUnk_1EA(0x0), + mUnk_1EC(0x0), + mUnk_1EE(false), +#if IS_JP + mUnk_1F0(false), + mUnk_1F1(false) +#else + mUnk_1F0(false) +#endif +{ + if (this->mUnk_5C.mParams[0] != 0x1) { + this->mUnk_1EF = false; + this->mUnk_17C = &data_ov031_02110a28; + } else { + func_0200b578(&this->mUnk_094.mRenderObj, this->func_ov031_020e1634, 0x0, 0x2, 0x2); + this->mUnk_17C = &data_ov031_02110a10; + this->mUnk_1EF = true; + } + this->mUnk_164[0].mUnk_04 = 0x810; + this->mUnk_164[0].mUnk_08 = 0x2; + this->mUnk_164[1].mUnk_04 = 0x811; + this->mUnk_164[1].mUnk_08 = 0x2; + SET_FLAG(this->mFlags, ActorFlag_11); +#if IS_JP + SET_FLAG(this->mFlags, ActorFlag_13); +#endif +} + +void ActorBomb::func_ov031_020e17f4() {} + +bool ActorBomb::vfunc_18(unk32 param1) { + Cylinder *profileCylinder = &this->mpProfile->mUnk_04; + + this->mUnk_154.pos = profileCylinder->pos; + this->mUnk_154.size = profileCylinder->size; + this->mUnk_30 = &this->mUnk_154; + + this->SetState(ActorBombState_0); + + this->mUnk_19C.mUnk_04 = this->mRef; + VecFx32_Copy(&this->mPos, &this->mUnk_19C.mUnk_0C.pos); + this->mUnk_19C.mUnk_0C.size = 0x666; + + this->mUnk_1EC = 0x78; + this->mUnk_1EA = 0x0; + this->Actor::func_ov000_0209862c(0x2); + return true; +} + +void ActorBomb::func_ov031_020e18a0() { + this->func_ov000_0209862c(0x2); + this->mUnk_2C = data_ov000_020aecf8; +} + +void ActorBomb::SetState(ActorState state) { + this->mState = state; + this->func_ov031_020e18a0(); + + CALL_PTMF(PTMF, data_ov031_02112c38[this->mState]); +} + +void ActorBomb::func_ov031_020e1908() { + this->mUnk_134.mUnk_04 |= 0x8000; + this->mUnk_1F0 = true; +} + +// non-matching +void ActorBomb::func_ov031_020e1920(VecFx32 *param1) { + fx32 y = param1->y; + fx32 z = param1->z; + fx32 x = param1->x; + this->mUnk_1CC.x = x; + this->mUnk_1CC.y = y; + this->mUnk_1CC.z = z; +} + +void ActorBomb::func_ov031_020e193c() { + if (this->mUnk_1EF && GET_FLAG(this->mFlags, ActorFlag_Visible)) { + VecFx32 sp0C; + func_01ffb974(this->mUnk_1D8, this->mUnk_17C, &this->mPos, &sp0C); + VecFx32 sp00; + // weird logic + 1 + func_01ffb974(this->mUnk_1D8, this->mUnk_17C + 1, &this->mPos, &sp00); + + data_027e0cec->func_ov000_020a0140(&this->mUnk_164[0], &sp0C); + data_027e0cec->func_ov000_020a0140(&this->mUnk_164[1], &sp00); + + for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) { + if (ptr->mUnk_00 != NULL) { + ptr->mUnk_00->mUnk_24 &= ~0x8; + } + } + + return; + } + for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) { + ptr->func_ov000_020a0334(); + } +} + +void ActorBomb::vfunc_20() { + this->mUnk_3C = &this->mUnk_134; + + CALL_PTMF(PTMF, data_ov031_02112c00[this->mState]); + this->func_ov031_020e1b7c(); + + if (!GET_FLAG(this->mFlags, ActorFlag_Alive)) { + return; + } + this->func_ov031_020e193c(); + + if (this->mState != ActorBombState_2 && this->mState != ActorBombState_4) { + return; + } + + if (func_01ff9258(this->mVel.x, this->mVel.z) <= 0x52) { + return; + } + + if (this->mUnk_1E4.type == 0x1) { + if (!this->func_ov031_020e25bc()) { + return; + } + + ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0); + this->func_ov000_020984d0(); + return; + } + + this->func_ov031_020e262c(); +} + +void ActorBomb::vfunc_24() { + if (this->mState != ActorBombState_1) { + return; + } + this->func_ov031_020e1ed8(); + this->func_ov031_020e193c(); +} + +// non-matching +void ActorBomb::func_ov031_020e1b1c() { + UnkStruct_ov000_02058a84 *param1 = this->func_ov031_020e15d0(this->mUnk_5C.mParams[0]); + + bool param3 = !(param1->mUnk_6 & 0x2); + + this->mUnk_0F4.func_ov000_020577a4(param1, 0x0, param3); + + this->mUnk_0F4.mUnk_08 = 0x1000; + this->mUnk_0F4.mUnk_04 = data_ov031_02112be8.unknown; + + this->mUnk_094.func_ov000_02057cf4(); + + this->mUnk_094.func_ov000_02057c98(&this->mUnk_0F4); +} + +void ActorBomb::func_ov031_020e1b7c() { + if (!this->mUnk_1EF) { + return; + } + data_027e09a8->func_ov000_02071d34(&this->mRef, 0xF4, &this->mPos, 0x0); + + if (!this->mUnk_1EE) { + if (!this->IsInternalTimerOut()) { + return; + } + + this->mUnk_1EE = true; + this->mUnk_1EC = 0x3C; + this->mUnk_1EA = 0x00; + this->func_ov031_020e1b1c(); + return; + } + fx32 delta = this->mUnk_1EC - this->mUnk_1EA; + this->mUnk_0F4.mUnk_08 = FLOAT_TO_FX32(1.5f) - delta * FLOAT_TO_FX32(0.01985f); + this->mUnk_0F4.func_01ffc3b4(); + + if (delta > 0x0) { + func_01ff9218(&this->mUnk_1D8, FLOAT_TO_FX32(1.3f), func_01ffb464((u32) delta << 0xC)); + } + if (!this->IsInternalTimerOut()) { + return; + } + ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0); + + if (this->mState == ActorBombState_6) { + ActorParams params; + ActorRef ref; + params.mUnk_28 = 0; + params.func_ov000_020975f8(); + + VecFx32_Copy(&this->mPos, ¶ms.mInitialPos); + params.mInitialPos.y = this->mUnk_1DC; + this->Actor::func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, ActorId_EFSC, ¶ms, 0x0); + } + this->Actor::func_ov000_020984d0(); +} + +void ActorBomb::func_ov031_020e1d18() { + this->func_ov000_02098838(); + VecFx32_Add(&this->mPos, &this->mUnk_1CC, &this->mPos); + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_1CC); +} + +void ActorBomb::func_ov031_020e1d48() { + this->mUnk_1E4 = 0; + this->mUnk_2C = 0x0; +} + +bool ActorBomb::func_ov031_020e1d58() { + return this->mUnk_154.pos.y >= FLOAT_TO_FX32(0.2999f); +} + +bool ActorBomb::func_ov031_020e1d74() { + if (this->func_ov031_020e1d58()) { + if (this->mUnk_46 & 0x1) { + return true; + } + } + return false; +} + +void ActorBomb::func_ov031_020e1da0() { + this->func_ov031_020e1d18(); + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + this->func_ov031_020e2a9c(); + + if (this->func_ov031_020e1d74() || this->mUnk_180.mUnk_04 & 0x1) { + if (this->mUnk_180.mUnk_04 & 0x8) { + if (this->func_ov031_020e1d58()) { + this->SetState(ActorBombState_6); + } + } else { + if (this->func_ov031_020e2b40()) { + this->func_ov000_020984d0(); + return; + } + if (this->mUnk_180.mUnk_0C.z >= FLOAT_TO_FX32(-0.1003f)) { + this->mUnk_2C = 0x0; + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mVel); + func_01ffb974(-0x29, &this->mUnk_180.mUnk_0C, &this->mVel, &this->mVel); + } else { + func_01ff9218(&this->mUnk_2C, data_ov000_020aecf8, 0x800); + } + } + } else { + func_01ff9218(&this->mUnk_2C, data_ov000_020aecf8, 0x200); + } + + this->func_ov031_020e238c(); +} + +void ActorBomb::func_ov031_020e1ebc() { + this->func_ov000_0209862c(0x0); + this->mUnk_2C = 0x0; +} + +void ActorBomb::func_ov031_020e1ed8() { + if (this->mUnk_1E0.type_index != 0x100) { + return; + } + unk32 param1 = 0x101; + if (this->mUnk_1E0.type_index == param1) { + param1 = 0x0; + } else { + param1 = this->mUnk_1E0.unk_id; + } + data_027e0ce0->func_ov000_0208bacc(param1, &this->mPos); +} + +void ActorBomb::func_ov031_020e1f18() { + if (!this->mUnk_1EF) { + bool var = true; + if (this->mUnk_1E0.type_index != 0x100 && this->mUnk_1E0.type_index != 0x101) { + var = false; + } + if (var) { +#if IS_JP + if (!this->mUnk_1F1) +#endif + { + ItemManager *itemManager = data_027e0ce0->mUnk_2C; + if (itemManager != NULL && itemManager->GetInventory()->GetBombAmount() > 0) { + itemManager->GetInventory()->GiveBombs(-1); +#if IS_JP + this->mUnk_1F1 = true; +#endif + } + } + } + } + if (!this->mUnk_1F0) { + this->mUnk_1EF = true; + } +} + +void ActorBomb::func_ov031_020e1f88() { + this->mUnk_3C = &this->mUnk_134; + + this->func_ov031_020e1d18(); + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + this->func_ov031_020e2a9c(); + this->func_ov031_020e2c2c(); + this->func_ov031_020e238c(); +} + +void ActorBomb::func_ov031_020e1fe0() {} + +void ActorBomb::func_ov031_020e1fe4() { + this->func_ov031_020e1d18(); + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + this->func_ov031_020e2a9c(); + this->func_ov031_020e2c2c(); + this->func_ov031_020e238c(); +} + +void ActorBomb::func_ov031_020e2034() { + this->mUnk_1E4 = 0; + this->mUnk_2C = 0x0; + + this->Actor::vfunc_40(); + + this->mUnk_44 = (s16) this->mUnk_44 & ~0x20; + this->mUnk_134.func_ov000_02097bec(); +} + +void ActorBomb::func_ov031_020e2064() { + this->Actor::vfunc_44(); + + if (GET_FLAG(this->mFlags, ActorFlag_5)) { + this->SetState(ActorBombState_3); + this->mUnk_44 = (s16) this->mUnk_44 | 0x20; + } + this->func_ov031_020e238c(); + this->func_ov031_020e1d18(); + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + this->func_ov031_020e2a9c(); +} + +void ActorBomb::func_ov031_020e20d8() { + this->mUnk_1E4 = 0x0; + ActorBlast::func_ov031_020e3b9c(this, 0x1, 0x0); + this->Actor::func_ov000_020984d0(); +} + +void ActorBomb::func_ov031_020e20fc() {} + +void ActorBomb::func_ov031_020e2100() { + fx32 newY = this->mPos.y - FLOAT_TO_FX32(0.0125f); + newY -= FLOAT_TO_FX32(0.1875f); + + this->mUnk_1E9 = 0x50; + this->mUnk_2C = 0x0; + this->mPos.y = newY; + this->mUnk_1DC = newY; + this->mUnk_44 = (s16) this->mUnk_44 & ~0x3; +} + +void ActorBomb::func_ov031_020e2134() { + fx32 newZ = MUL_FX32(this->mVel.z, FLOAT_TO_FX32(0.3f)); + fx32 newX = MUL_FX32(this->mVel.x, FLOAT_TO_FX32(0.3f)); + + this->mVel.x = newX; + this->mVel.y = FLOAT_TO_FX32(-0.0102f); + this->mVel.z = newZ; + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + ActorBomb_ov031_020e2134 sp00 = ActorBomb_ov031_020e2134(); + this->func_ov031_020e295c(&sp00); + this->func_ov031_020e2820(&sp00); + + if (!(--this->mUnk_1E9 & 0xFF)) { + this->func_ov000_020984d0(); + } +} + +void ActorBomb::vfunc_2C(unk32 param1) { + if (!this->Actor::func_01fff5d0(param1, 0x0)) { + for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) { + ptr->func_ov000_020a0334(); + } + return; + } + + if (!data_027e09b8->mUnk_97) { + for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) { + if (ptr->mUnk_00 != NULL) { + ptr->mUnk_00->mUnk_24 |= 0x8; + } + } + return; + } + + for (ActorBomb_unk *ptr = this->mUnk_164; ptr != this->mUnk_164 + ARRAY_LEN(this->mUnk_164); ptr++) { + if (ptr->mUnk_00 != NULL) { + ptr->mUnk_00->mUnk_24 &= ~0x8; + } + } + + func_01ffc5a0(&this->mUnk_094, this->mUnk_1D8, this->mAngleStruct, &this->mPos); + + VecFx32 sp0C; + VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(0.4f), this->mPos.z, &sp0C); + + if (this->mState == ActorBombState_6) { + return; + } + + data_027e09b4->func_ov017_020c08c4(&sp0C, 0x59A, 0x59A, 0x1F, 0x0, 0x1); +} + +// non-matching (switch case) +void ActorBomb::func_ov031_020e238c() { + this->Actor::func_ov000_020989e0(); + if (!(this->mUnk_134.mUnk_08 & 0x3FFFF)) { + return; + } + + u16 value = this->mUnk_134.mUnk_1C; + switch ((s32) value) { + case 15: + this->mUnk_134.mUnk_04 &= ~0x8000; + data_027e0d8c->func_ov093_021661c0(this->mRef); + break; + case 4: + if (!data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) { + break; + } + this->SetState(ActorBombState_4); + break; + case 0: + this->SetState(ActorBombState_5); + break; + default: + ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0); + this->Actor::func_ov000_020984d0(); + break; + } +} + +bool ActorBomb::Grab(ActorGrabParams grabParams) { + this->SetState(ActorBombState_1); + this->mUnk_1E0 = grabParams.mUnk_00; + this->mUnk_1E4 = 0; + this->mUnk_180.mUnk_18 = 0x0; + + this->Actor::Grab(grabParams); +} + +bool ActorBomb::Drop(ActorGrabParams grabParams, const VecFx32 *pVel) { + this->SetState(ActorBombState_2); + this->mUnk_1E4 = this->mUnk_1E0; + this->mUnk_1E0 = 0x0; + + if (!(grabParams.mUnk_00.type_index != 0x100 && grabParams.mUnk_00.type_index != 0x2 + 0xFF)) { + unk32 param1; + if (grabParams.mUnk_00.type_index == 0x101) { + param1 = 0x0; + } else { + param1 = grabParams.mUnk_00.unk_id; + } + + VecFx32 sp0C = *this->Actor::func_ov000_0209853c(param1); + + this->mUnk_154.pos.y = sp0C.y + FLOAT_TO_FX32(0.4f) - this->mPos.y; + this->mPrevPos.x = sp0C.x; + this->mPrevPos.z = sp0C.z; + } else { + Actor *actor = gpActorManager->func_01fff3b4(grabParams.mUnk_00); + + if (actor != NULL) { + VecFx32 sp00 = actor->mPos; + this->mUnk_154.pos.y = sp00.y + FLOAT_TO_FX32(0.4f) - this->mPos.y; + this->mPrevPos.x = sp00.x; + this->mPrevPos.z = sp00.z; + } + } + + return this->Actor::Drop(grabParams, pVel); +} + +bool ActorBomb::func_ov031_020e25bc() { + bool ret = true; + Cylinder cylinder; + VecFx32_Copy(&this->mPos, &cylinder.pos); + cylinder.size = 0x666; + + if (!data_027e09c0->func_ov000_0207e458(0x4, 0x0, &cylinder.pos, 0x1, NULL, 0x0)) { + ret = false; + } + return ret; +} + +bool ActorBomb::func_ov031_020e262c() { + VecFx32_Copy(&this->mPos, &this->mUnk_19C.mUnk_0C.pos); + this->mUnk_19C.mUnk_0C.size = FLOAT_TO_FX32(0.4f); + + data_027e09c0->func_ov000_0207e58c(this->mRef, 0x0, 0xC, &this->mUnk_19C); + return true; +} + +void ActorBomb::func_ov031_020e2680(VecFx32 *param1) { + if (this->mVel.y == FLOAT_TO_FX32(0.0f)) { + return; + } + + if (param1->x == FLOAT_TO_FX32(0.0f) && param1->y == FLOAT_TO_FX32(0.0f) && param1->z == FLOAT_TO_FX32(0.0f)) { + return; + } + + VecFx32 sp0C = this->mVel; + VecFx32 sp00 = this->mVel; + + if (VecFx32_Dot(param1, &sp00) >= FLOAT_TO_FX32(0.0f)) { + return; + } + + fx32 velLength = VecFx32_Length(&this->mVel); + + func_01ff94cc(&sp00, param1, &sp0C); + VecFx32_TryNormalize(&sp00); + + this->mVel.x = MUL_FX32(sp00.x, MUL_FX32(velLength, FLOAT_TO_FX32(0.2f))); + this->mVel.z = MUL_FX32(sp00.z, MUL_FX32(velLength, FLOAT_TO_FX32(0.2f))); +} + +void ActorBomb::func_ov031_020e2780(VecFx32 *param1) { + VecFx32 sp00 = *param1; + + if (!VecFx32_TryNormalize(&sp00)) { + return; + } + + fx32 dot = VecFx32_Dot(&sp00, &this->mVel); + if (dot >= FLOAT_TO_FX32(0.0f)) { + return; + } + + func_01ffb974(ROUND_FX32(dot * FLOAT_TO_FX32(-1.2002f)), &sp00, &this->mVel, &this->mVel); + this->mVel.x = ROUND_FX32(this->mVel.x * FLOAT_TO_FX32(0.75f)); + this->mVel.z = ROUND_FX32(this->mVel.z * FLOAT_TO_FX32(0.75f)); +} + +// non-matching +fx32 ActorBomb::func_ov031_020e2820(UnkStruct_ov031_Items_00 *param1) { + UnkStruct_ov031_020e5d18_00 sp60; + sp60.mUnk_00 = NULL; + VecFx32 sp54 = this->mPos; + VecFx32 sp48 = this->mPrevPos; + VecFx32 sp3C; + + func_01ffb714(&sp54, &sp48, &sp3C); + fx32 sp3CLength = VecFx32_Length(&sp3C); + + VecFx32 sp0C = sp48; + VecFx32 sp30 = sp0C; + VecFx32 sp24 = sp0C; + VecFx32 sp18 = sp3C; + + if (VecFx32_TryNormalize(&sp18) != 0x0) { + while (sp3CLength != FLOAT_TO_FX32(0.0f)) { + if (sp3CLength > FLOAT_TO_FX32(0.5f)) { + func_01ffb974(FLOAT_TO_FX32(0.5f), &sp18, &sp24, &sp24); + sp3CLength -= FLOAT_TO_FX32(0.5f); + } else { + func_01ffb974(sp3CLength, &sp18, &sp24, &sp24); + sp3CLength = FLOAT_TO_FX32(0.0f); + } + func_01ffe6c4(&sp60, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1); + + if (!this->Actor::func_ov000_0207e294(this->mUnk_30)) { + VecFx32_Copy(&sp24, &sp30); + } + } + } + + return sp3CLength; +} + +// non-matching +fx32 ActorBomb::func_ov031_020e295c(UnkStruct_ov031_Items_00 *param1) { + UnkStruct_ov031_020e5d18_00 sp60; + sp60.mUnk_00 = NULL; + VecFx32 sp54 = this->mPos; + VecFx32 sp48 = this->mPrevPos; + VecFx32 sp3C; + + func_01ffb714(&sp54, &sp48, &sp3C); + fx32 sp3CLength = VecFx32_Length(&sp3C); + + VecFx32 sp0C = sp48; + VecFx32 sp30 = sp0C; + VecFx32 sp24 = sp0C; + VecFx32 sp18 = sp3C; + + if (VecFx32_TryNormalize(&sp18) != 0x0) { + while (sp3CLength != FLOAT_TO_FX32(0.0f)) { + if (sp3CLength > FLOAT_TO_FX32(0.5f)) { + func_01ffb974(FLOAT_TO_FX32(0.5f), &sp18, &sp24, &sp24); + sp3CLength -= FLOAT_TO_FX32(0.5f); + } else { + func_01ffb974(sp3CLength, &sp18, &sp24, &sp24); + sp3CLength = FLOAT_TO_FX32(0.0f); + } + func_01ffe6c4(&sp60, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1); + + if (!this->Actor::func_ov000_0207df88(this->mUnk_30, 0x10)) { + VecFx32_Copy(&sp24, &sp30); + } + } + } + + return sp3CLength; +} + +void ActorBomb::func_ov031_020e2a9c() { + UnkStruct_ov031_020e5d18_00 s0C; + s0C.mUnk_00 = NULL; + + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_180.mUnk_0C); + + func_01ffe6c4(&s0C, this->mRef, &this->mPos, &this->mPrevPos, (s16) this->mUnk_44, &this->mPos, &this->mUnk_180); + + unk32 value = this->func_ov031_020e295c(&this->mUnk_180) | this->func_ov031_020e2820(&this->mUnk_180); + if (this->mUnk_1E0.type_index != 0x0) { + this->mUnk_154.pos.y = 0x4CC; + } else { + func_01ff916c(&this->mUnk_154.pos.y, 0x4CC, 0x333); + } + this->mUnk_46 = value; +} + +bool ActorBomb::func_ov031_020e2b40() { + if (this->mUnk_180.mUnk_04 & 0x4) { + func_ov017_020c26f8(0x2, &this->mPos, 0x1, 0x1); + data_027e09a8->func_ov000_02071b30(0xED, &this->mPos, 0x0); + + ActorBlast::func_ov031_020e3b9c(this, 0x0, 0x0); + + return true; + } + + if (this->mUnk_180.mUnk_04 & 0x2) { + unk32 sp00; + func_ov017_020c2438(&sp00, 0x2, &this->mPos, 0x1, 0x1); + + data_027e09a8->func_ov000_02071b30(0xEA, &this->mPos, 0x0); + + return true; + } + + if (!(this->mUnk_180.mUnk_04 & 0x1)) { + return false; + } + + data_027e09a8->func_ov000_02071b30(0xE8, &this->mPos, 0x0); + return true; +} + +void ActorBomb::func_ov031_020e2c2c() { + if (this->func_ov031_020e1d74() || (this->mUnk_180.mUnk_04 & 0x1) != 0x0) { + if (this->mUnk_1F0) { + this->mUnk_1EF = true; + } + + if (this->mUnk_180.mUnk_04 & 0x8) { + if (!this->func_ov031_020e1d58()) { + return; + } + this->SetState(ActorBombState_6); + return; + } + + if (this->func_ov031_020e2b40()) { + this->Actor::func_ov000_020984d0(); + return; + } + + ++this->mUnk_1E8; + this->mVel.y = MUL_FX32(-this->mVel.y, FLOAT_TO_FX32(0.6f)); + this->mVel.x = MUL_FX32(this->mVel.x, FLOAT_TO_FX32(0.2f)); + this->mVel.z = MUL_FX32(this->mVel.z, FLOAT_TO_FX32(0.2f)); + + if (this->mUnk_1E8 <= 0x3) { + return; + } + + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mVel); + this->SetState(ActorBombState_0); + return; + } + + if (!(this->mUnk_46 & 0x1C)) { + return; + } + + this->func_ov031_020e2780(&this->mUnk_180.mUnk_0C); +} + +ActorBomb_180::ActorBomb_180(Actor *param1) : + mUnk_08(param1) { + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_0C); + this->mUnk_18 = 0x0; +} + +ActorBomb_180::~ActorBomb_180() { + this->mUnk_08 = NULL; +} + +// non-matching (wrong instruction in condition) +bool ActorBomb_180::vfunc_08(const UnkStruct_ov031_020f3310 *param1) { + if (((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06]) >> 0x19) & 1) == 1) { + return false; + } + + VecFx16_Copy2VecFx32(¶m1->mUnk_08, &this->mUnk_0C); + return this->UnkStruct_ov031_Items_00::vfunc_08(param1); +} + +// non-matching +bool ActorBomb_180::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {} + +bool ActorBomb_180::vfunc_10(ActorRef param1, unk32 param2) { + if (param1.type == 0x1) { + Actor *actor = gpActorManager->func_01fff3b4(param1); + if (actor != NULL && actor->GetActorId() == ActorId_Bomb) { + ActorBlast::func_ov031_020e3b9c(this->mUnk_08, 0x0, 0x0); + this->mUnk_08->func_ov000_020984d0(); + ((ActorBomb *) actor)->SetState(ActorBombState_5); + } + } + return true; +} + +// non-matching (unreachable code ?) +bool ActorBomb_ov031_020e2134::vfunc_08(const UnkStruct_ov031_020f3310 *param1) { + if ((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x9) & 0x7) == 0xA) { + return false; + } + return this->UnkStruct_ov031_Items_00::vfunc_08(param1); +} + +ActorBomb_19C::ActorBomb_19C(Actor *param1) : + mUnk_2C(param1) {} + +void ActorBomb_19C::vfunc_10(Actor *actor) { + Actor *bomb = this->mUnk_2C; + if (!GET_FLAG(bomb->mFlags, ActorFlag_Alive)) { + return; + } + ActorBlast::func_ov031_020e3b9c(bomb, 0x0, 0x0); + this->mUnk_2C->func_ov000_020984d0(); +} + +ActorBomb_unk::ActorBomb_unk() : + UnkSystem7(NULL), + mUnk_04(-0x1), + mUnk_08(0x0) {} diff --git a/src/031_Land/Actor/ActorItemBoomerang.cpp b/src/031_Land/Actor/ActorItemBoomerang.cpp index ee65768f..b57878f6 100644 --- a/src/031_Land/Actor/ActorItemBoomerang.cpp +++ b/src/031_Land/Actor/ActorItemBoomerang.cpp @@ -30,7 +30,7 @@ ActorProfileItemBoomerang::ActorProfileItemBoomerang() : // non-matching ActorItemBoomerang::ActorItemBoomerang() : - mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)), + mUnk_94(data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)), mUnk_9C(true), mUnk_11C(this), mUnk_12C(), diff --git a/src/031_Land/Actor/ActorItemTornado.cpp b/src/031_Land/Actor/ActorItemTornado.cpp index 1ab07873..486a2f24 100644 --- a/src/031_Land/Actor/ActorItemTornado.cpp +++ b/src/031_Land/Actor/ActorItemTornado.cpp @@ -39,7 +39,7 @@ ActorProfileItemTornado::ActorProfileItemTornado() : // non-matching ActorItemTornado::ActorItemTornado() : - mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, data_ov031_02110a88)), + mUnk_94(data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, data_ov031_02110a88)), mUnk_F4(&this->mUnk_114, this->mUnk_94.mpModel), mUnk_134(&this->mUnk_154, this->mUnk_94.mpModel), mUnk_17C(NULL), @@ -268,7 +268,7 @@ void ActorItemTornado::vfunc_2C(unk32 param1) { VecFx32 vec = this->mPos; if (this->mState == ActorItemTornadoState_0) { - vec.y += (((FLOAT_TO_FX32(1.0f) - this->mUnk_1DC) << 0xC) + FLOAT_TO_FX32(0.5f)) >> 0xC; + vec.y += ROUND_FX32(((FLOAT_TO_FX32(1.0f) - this->mUnk_1DC) << 0xC)); } data_027e0958->func_ov000_02058fc4(&this->mUnk_17C, &vec); } diff --git a/src/031_Land/Actor/ActorRollingStone.cpp b/src/031_Land/Actor/ActorRollingStone.cpp index 194feb91..6ec83d9a 100644 --- a/src/031_Land/Actor/ActorRollingStone.cpp +++ b/src/031_Land/Actor/ActorRollingStone.cpp @@ -1,5 +1,6 @@ #include "Actor/ActorRollingStone.hpp" +#include "Actor/ActorManager.hpp" #include "Physics/Cylinder.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_027e09a8.hpp" @@ -64,8 +65,23 @@ ActorProfileRollingStone::ActorProfileRollingStone() : // non-matching bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {} -// non-matching -void ActorRollingStone_104::vfunc_10() {} +bool ActorRollingStone_104::vfunc_10(ActorRef param1, unk32 param2) { + if (param1.type != 0x0) { + Actor *actor = gpActorManager->func_01fff3b4(param1); + if (actor != NULL) { + switch (actor->GetActorId()) { + case ActorId_CASE: + case ActorId_FMAS: + case ActorId_FMLS: + case ActorId_RCMS: + return false; + default: + break; + } + } + } + return this->UnkStruct_027e0ce0_38_Base::vfunc_10(param1, param2); +} void ActorRollingStone_D4::vfunc_10(Actor *param1) { if (param1->GetActorId() != ActorId_RollingStone) { diff --git a/src/031_Land/Actor/ActorUnkBOMB.cpp b/src/031_Land/Actor/ActorUnkBOMB.cpp deleted file mode 100644 index 41db3cf8..00000000 --- a/src/031_Land/Actor/ActorUnkBOMB.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//! TODO: This file was generated automatically and might contain errors - -#include "Actor/ActorUnkBOMB.hpp" -#include "System/SysNew.hpp" - -DECL_PROFILE(ActorProfileUnkBOMB); - -Actor *ActorProfileUnkBOMB::Create() { - return new(HeapIndex_2) ActorUnkBOMB(); -} - -ActorProfileUnkBOMB::ActorProfileUnkBOMB() : - ActorProfile(ActorId_BOMB) {} - -ActorUnkBOMB::ActorUnkBOMB() {} - -void ActorUnkBOMB::func_ov031_020e1540(void) {} -void ActorUnkBOMB::func_ov031_020e15d0(void) {} -void ActorUnkBOMB::func_ov031_020e1634(void) {} -void ActorUnkBOMB::func_ov031_020e17f4(void) {} -void ActorUnkBOMB::func_ov031_020e1808(void) {} -void ActorUnkBOMB::func_ov031_020e181c(void) {} -void ActorUnkBOMB::func_ov031_020e18a0(void) {} -void ActorUnkBOMB::func_ov031_020e18c4(void) {} -void ActorUnkBOMB::func_ov031_020e1908(void) {} -void ActorUnkBOMB::func_ov031_020e1920(void) {} -void ActorUnkBOMB::func_ov031_020e193c(void) {} -void ActorUnkBOMB::func_ov031_020e1a28(void) {} -void ActorUnkBOMB::func_ov031_020e1af8(void) {} -void ActorUnkBOMB::func_ov031_020e1b1c(void) {} -void ActorUnkBOMB::func_ov031_020e1b7c(void) {} -void ActorUnkBOMB::func_ov031_020e1d18(void) {} -void ActorUnkBOMB::func_ov031_020e1d48(void) {} -void ActorUnkBOMB::func_ov031_020e1d58(void) {} -void ActorUnkBOMB::func_ov031_020e1d74(void) {} -void ActorUnkBOMB::func_ov031_020e1da0(void) {} -void ActorUnkBOMB::func_ov031_020e1ebc(void) {} -void ActorUnkBOMB::func_ov031_020e1ed8(void) {} -void ActorUnkBOMB::func_ov031_020e1f18(void) {} -void ActorUnkBOMB::func_ov031_020e1f88(void) {} -void ActorUnkBOMB::func_ov031_020e1fe0(void) {} -void ActorUnkBOMB::func_ov031_020e1fe4(void) {} -void ActorUnkBOMB::func_ov031_020e2034(void) {} -void ActorUnkBOMB::func_ov031_020e2064(void) {} -void ActorUnkBOMB::func_ov031_020e20d8(void) {} -void ActorUnkBOMB::func_ov031_020e20fc(void) {} -void ActorUnkBOMB::func_ov031_020e2100(void) {} -void ActorUnkBOMB::func_ov031_020e2134(void) {} -void ActorUnkBOMB::func_ov031_020e2220(void) {} -void ActorUnkBOMB::func_ov031_020e2234(void) {} -void ActorUnkBOMB::func_ov031_020e238c(void) {} -void ActorUnkBOMB::func_ov031_020e246c(void) {} -void ActorUnkBOMB::func_ov031_020e24ac(void) {} -void ActorUnkBOMB::func_ov031_020e25bc(void) {} -void ActorUnkBOMB::func_ov031_020e262c(void) {} -void ActorUnkBOMB::func_ov031_020e2680(void) {} -void ActorUnkBOMB::func_ov031_020e2780(void) {} -void ActorUnkBOMB::func_ov031_020e2820(void) {} -void ActorUnkBOMB::func_ov031_020e295c(void) {} -void ActorUnkBOMB::func_ov031_020e2a9c(void) {} -void ActorUnkBOMB::func_ov031_020e2b40(void) {} -void ActorUnkBOMB::func_ov031_020e2c2c(void) {} -void ActorUnkBOMB::func_ov031_020e2d78(void) {} -void ActorUnkBOMB::func_ov031_020e2df4(void) {} -void ActorUnkBOMB::func_ov031_020e2e3c(void) {} -void ActorUnkBOMB::func_ov031_020e328c(void) {} -void ActorUnkBOMB::func_ov031_020e3310(void) {} -void ActorUnkBOMB::func_ov031_020e3340(void) {} -void ActorUnkBOMB::func_ov031_020e337c(void) {} -void ActorUnkBOMB::func_ov031_020e33ac(void) {} -void ActorUnkBOMB::func_ov031_020e33c0(void) {} -void ActorUnkBOMB::func_ov031_020e33dc(void) {} -void ActorUnkBOMB::func_ov031_020e33f8(void) {} -void ActorUnkBOMB::func_ov031_020e3448(void) {} - -ActorUnkBOMB::~ActorUnkBOMB() {} -ActorProfileUnkBOMB::~ActorProfileUnkBOMB() {} diff --git a/src/031_Land/Actor/ActorUnkROCK.cpp b/src/031_Land/Actor/ActorUnkROCK.cpp index 05a6fa86..1836214f 100644 --- a/src/031_Land/Actor/ActorUnkROCK.cpp +++ b/src/031_Land/Actor/ActorUnkROCK.cpp @@ -1,4 +1,6 @@ #include "Actor/ActorUnkROCK.hpp" + +#include "MapObject/MapObject_10_Pot.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_027e09a8.hpp" #include "Unknown/UnkStruct_027e09b4.hpp" @@ -6,7 +8,7 @@ extern "C" Mat3p data_027e0130; -static MapObject_10 data_ov031_021166b8; +static MapObject_10_Pot data_ov031_021166b8; DECL_PROFILE(ActorProfileUnkROCK); @@ -17,9 +19,10 @@ Actor *ActorProfileUnkROCK::Create() { // non-matching ActorProfileUnkROCK::ActorProfileUnkROCK() : ActorProfileUnkROCK_Base(ActorId_ROCK) { - this->mUnk_04.Init(FLOAT_TO_FX32(0.5f)); + this->mUnk_04.Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.5f)); VecFx32_Init(FLOAT_TO_FX32(7.0017f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D8.mUnk_0C); - VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.6f), FLOAT_TO_FX32(1.2f), &this->mUnk_D8.mUnk_18); + this->mUnk_D8.mUnk_18 = FLOAT_TO_FX32(0.6f); + this->mUnk_D8.mUnk_1C = FLOAT_TO_FX32(1.2f); } ActorUnkROCK::ActorUnkROCK() : @@ -105,9 +108,8 @@ void ActorUnkROCK::vfunc_2C(unk32 param1) { data_027e09b4->func_01fff60c(&this->mPos, 0xC00, 0xC00, 0x1F, 0x0, 0x0); } -// non-matching bool ActorUnkROCK::Grab(ActorGrabParams param1) { - if (param1.unk_00 != 0x100 || param1.unk_02 != 1) { + if (param1.mUnk_00.type_index != 0x100 || param1.mUnk_00.unk_id != 1) { return false; } if (!this->Actor::Grab(param1)) { @@ -117,7 +119,6 @@ bool ActorUnkROCK::Grab(ActorGrabParams param1) { return true; } -// non-matching bool ActorUnkROCK::Drop(ActorGrabParams param1, const VecFx32 *param2) { if (!this->Actor::Drop(param1, param2)) { return false; diff --git a/src/031_Land/Actor/ActorUnkSWBM.cpp b/src/031_Land/Actor/ActorUnkSWBM.cpp index 997935d1..83bfb0fd 100644 --- a/src/031_Land/Actor/ActorUnkSWBM.cpp +++ b/src/031_Land/Actor/ActorUnkSWBM.cpp @@ -60,7 +60,7 @@ void ActorUnkSWBM_98::vfunc_10(Actor *actor) { } // non-matching -void ActorUnkSWBM_C8::vfunc_00(unk32 param1, unk32 param2, unk32 param3) { +void ActorUnkSWBM_C8::vfunc_00(unk32 param1, unk32 param2) { ActorUnkSWBM *actor = this->mUnk_14; FlushGfxQueue(); diff --git a/src/031_Land/MapObject/MapObjectBombFlower.cpp b/src/031_Land/MapObject/MapObjectBombFlower.cpp new file mode 100644 index 00000000..01f50d6f --- /dev/null +++ b/src/031_Land/MapObject/MapObjectBombFlower.cpp @@ -0,0 +1,257 @@ +#include "MapObject/MapObjectBombFlower.hpp" + +#include "Actor/ActorBomb.hpp" +#include "Actor/ActorManager.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e0d38.hpp" + +extern "C" fx32 func_01ffb464(fx32); +extern "C" void func_01ff9218(fx32 *, fx32, fx32); +extern "C" void func_ov031_020e0f30(ActorRef); + +struct UnkStruct_ov031_02102728 { + ActorRef ref; + unk32 mUnk_04; +}; + +DECL_PROFILE(MapObjectProfileBombFlower); + +MapObject *MapObjectProfileBombFlower::Create() { + return new(HeapIndex_ITCM) MapObjectBombFlower(); +} + +MapObjectProfileBombFlower::MapObjectProfileBombFlower() : + MapObjectProfile_Derived2(MapObjectId_BombFlower, MapObjectId_BombFlower) { + this->mUnk_0E = 0x0; + this->mUnk_06 = 0x0; + this->mUnk_0C = 0x1333; +} + +// non-matching +MapObjectBombFlower::MapObjectBombFlower() : + mUnk_48(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileBombFlower)->mUnk_20.mUnk_50), 0x0, 0x0), + mUnk_B4(0x1000), + mUnk_B8(0x0), + mUnk_BA(0x0), + mUnk_BC(true) { + SET_FLAG(this->mFlags, MapObjFlag_8); + + if (this->mUnk_20.mParams[1] == 0x1) { + this->mPos.x += FLOAT_TO_FX32(0.5f); + } + + this->mUnk_40 = ActorId_Bomb; + + this->mUnk_C0.mUnk_08 = (unk32) 0x80007006; + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_C0.mUnk_0C); + this->mUnk_C0.mUnk_18 = FLOAT_TO_FX32(0.5f); + this->mUnk_C0.mUnk_1C = FLOAT_TO_FX32(1.2f); + this->mUnk_10 = &this->mUnk_C0; + + SET_FLAG(this->mFlags, MapObjFlag_6); +} + +bool MapObjectBombFlower::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) { + this->mUnk_BC = false; + switch (param2) { + case 0xD: + if (this->mState != MapObjBombFlowerState_0) { + break; + } + func_ov031_020e0f30(param1); + this->SetState(MapObjBombFlowerState_1, 0x0); + break; + case 0x0: + case 0x3: + case 0x7: + case 0x8: + case 0xA: + case 0xC: + if (this->mState != MapObjBombFlowerState_0) { + break; + } + if (param2 != 0) { + this->SetState(MapObjBombFlowerState_1, 0x0); + break; + } + this->SetState(0x6, 0x0); + break; + case 0x4: + if (this->mState != MapObjBombFlowerState_0) { + return false; + } + if (data_027e0d38->func_ov031_020d9c04(0x2, 0x0, 0x1)) { + this->SetState(MapObjBombFlowerState_3, 0x0); + } + return false; + case 0x10: + return true; + default: + break; + } + return false; +} + +void MapObjectBombFlower::vfunc_48() { + this->func_ov031_02102728(0x0); +} + +void MapObjectBombFlower::vfunc_58() { + this->func_ov031_02102728(0x1); +} + +void MapObjectBombFlower::func_ov031_02102728(unk32 param1) { + ActorParams params; + params.mUnk_28 = 0; + params.func_ov000_020975f8(); + + params.mUnk_28 = *(unk32 *) &this->mUnk_38; + VecFx32_Copy(&this->mPos, ¶ms.mInitialPos); + + params.mParams[0] = 0x0; + if (param1 != 0x0) { + params.mParams[0] = 0x1; + } + + UnkStruct_ov031_02102728 stack; + Actor::func_ov000_020973f4(&stack.ref, &data_ov000_020b539c_eur, ActorId_Blast, ¶ms, 0); +} + +void MapObjectBombFlower::vfunc_08() { + switch (this->mState) { + case MapObjBombFlowerState_4: + if (!this->mUnk_BC) { + break; + } + + if (!this->IsInternalTimerOut()) { + break; + } + + this->SetState(MapObjBombFlowerState_5, 0x0); + break; + case MapObjBombFlowerState_5: + if (this->IsInternalTimerOut()) { + this->SetState(MapObjBombFlowerState_0, 0x0); + break; + } + + fx32 delta = this->mUnk_BA - this->mUnk_B8; + if (delta > 0x0) { + func_01ff9218(&this->mUnk_B4, 0x1000, func_01ffb464((u32) delta << 0xC)); + } + this->mUnk_B0 = this->mUnk_B4; + break; + default: + break; + } + this->mUnk_BC = true; +} + +bool MapObjectBombFlower::SetState(MapObjState state, unk32 param2) { + if (param2 == 0x0 && this->mState == state) { + return true; + } + this->mState = state; + + switch (this->mState) { + case MapObjBombFlowerState_1: + this->vfunc_48(); + this->SetState(MapObjBombFlowerState_4, 0x0); + break; + + case MapObjBombFlowerState_6: + this->vfunc_58(); + this->SetState(MapObjBombFlowerState_4, 0x0); + break; + + case MapObjBombFlowerState_2: + this->SetState(MapObjBombFlowerState_4, 0x0); + break; + + case MapObjBombFlowerState_4: + this->mUnk_C0.mUnk_04 &= 0xFD; + this->mUnk_C0.mUnk_08 |= 0xA800000; + UNSET_FLAG(this->mFlags, MapObjFlag_9); + this->mUnk_B4 = FLOAT_TO_FX32(0.0f); + this->mUnk_BA = 0xB4; + this->mUnk_B8 = 0x00; + break; + + case MapObjBombFlowerState_5: + this->mUnk_BA = 0xA; + this->mUnk_B8 = 0x0; + data_027e09a8->func_ov000_02071b30(0x10C, &this->mPos, 0x0); + break; + + case MapObjBombFlowerState_0: + this->MapObjectPot_Base::SetState(state, param2); + this->mUnk_C0.mUnk_04 |= 0x2; + this->mUnk_C0.mUnk_08 &= ~0xA800000; + SET_FLAG(this->mFlags, MapObjFlag_9); + this->mUnk_B4 = FLOAT_TO_FX32(1.0f); + break; + + case MapObjBombFlowerState_3: + this->vfunc_38(); + this->SetState(MapObjBombFlowerState_4, 0x0); + break; + + default: + this->MapObjectPot_Base::SetState(state, param2); + break; + } + + this->mUnk_B0 = this->mUnk_B4; + return true; +} + +void MapObjectBombFlower::vfunc_14() { + this->mUnk_48.func_ov031_02102c00(); + + this->MapObject::func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F); + this->mUnk_48.vfunc_18(&this->mPos); +} + +void MapObjectBombFlower::vfunc_38() { + ActorParams params; + params.mUnk_28 = 0; + params.func_ov000_020975f8(); + + params.mInitialAngle = this->mAngle; + VecFx32_Copy(&this->mPos, ¶ms.mInitialPos); + + params.mParams[0] = 0x1; + ActorRef ref; + Actor::func_ov000_020973f4(&ref, &data_ov000_020b539c_eur, this->mUnk_40, ¶ms, 0x0); + + ActorBomb *bomb = (ActorBomb *) gpActorManager->func_01fff3b4(ref); + if (bomb == NULL) { + return; + } + bomb->SetState(ActorBombState_4); +} + +// non-matching +unk32 MapObjectBombFlower::vfunc_28() { + if (this->mState == MapObjBombFlowerState_4) { + return 0x0; + } + return this->MapObjectPot_Base::vfunc_28(); +} + +// non-matching +// https://decomp.me/scratch/WRLuY +void MapObjectBombFlower::vfunc_50(ActorRef *param1, MapObjectPot_Base *thisx) { + ActorParams params; + params.mUnk_28 = 0; + + params.func_ov000_020975f8(); + + params.mInitialAngle = thisx->mAngle; + VecFx32_Copy(&thisx->mPos, ¶ms.mInitialPos); + + params.mParams[0] = 0x1; + Actor::func_ov000_020973f4(param1, &data_ov000_020b539c_eur, thisx->mUnk_40, ¶ms, 0x0); +} diff --git a/src/031_Land/MapObject/MapObjectDoorBase.cpp b/src/031_Land/MapObject/MapObjectDoorBase.cpp index 7c7ab3cc..531c5cc6 100644 --- a/src/031_Land/MapObject/MapObjectDoorBase.cpp +++ b/src/031_Land/MapObject/MapObjectDoorBase.cpp @@ -382,7 +382,7 @@ void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) { auStack_5c.mUnk_36 = unk_1E; auStack_5c.mUnk_34 = unk_1C; - auStack_5c.mUnk_1E = this->mUnk_14; + auStack_5c.mUnk_1E = this->mAngle; this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_5c, 0); } @@ -466,7 +466,7 @@ void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) { auStack_9c.mUnk_36 = unk_1E; auStack_9c.mUnk_34 = unk_1C; - auStack_9c.mUnk_1E = this->mUnk_14; + auStack_9c.mUnk_1E = this->mAngle; this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_9c, 0); this->mUnk_84 = 0x0D; @@ -648,15 +648,15 @@ void MapObjectDoorBase::vfunc_4C() {} void MapObjectDoorBase::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *param3) { VecFx32 local_20; - *param3 = this->mUnk_14; + *param3 = this->mAngle; if (param1 != 0) { - local_20.x = MUL_FX32(SIN((u16) this->mUnk_14), 0x1000); - local_20.z = MUL_FX32(COS((u16) this->mUnk_14), 0x1000); + local_20.x = MUL_FX32(SIN((u16) this->mAngle), 0x1000); + local_20.z = MUL_FX32(COS((u16) this->mAngle), 0x1000); local_20.y = 0; } else { - local_20.x = MUL_FX32(SIN((u16) this->mUnk_14), 0xC00); - local_20.z = MUL_FX32(COS((u16) this->mUnk_14), 0xC00); + local_20.x = MUL_FX32(SIN((u16) this->mAngle), 0xC00); + local_20.z = MUL_FX32(COS((u16) this->mAngle), 0xC00); local_20.y = 0; *param3 += -DEG_TO_ANG(180); @@ -699,7 +699,7 @@ void MapObjectDoorBase::vfunc2_08() { u16 *temp_r3; u16 *temp_r3_2; - if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) { + if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mAngle + 0x2000) / DEG_TO_ANG(90) != 2) { return; } diff --git a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp index 3dc55bfb..ba43a613 100644 --- a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp +++ b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp @@ -176,7 +176,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) { UnkStruct_Copy *temp_r0_3 = (UnkStruct_Copy *) func_ov000_02077590(3); sp3C = *temp_r0_3; - ((unk16 *) sp3C.data)[3] = this->mUnk_14; + ((unk16 *) sp3C.data)[3] = this->mAngle; UnkStruct_027e09bc_0C *temp_r5 = data_027e09bc->mUnk_0C; @@ -564,7 +564,7 @@ void MapObjectDoorDangerSpawn::vfunc_18(s8 *param1, s8 param2) { void MapObjectDoorDangerSpawn::vfunc_14(void) { Mat3p m; - Mat3p_InitYRotation(&m, SIN((u16) this->mUnk_14), COS((u16) this->mUnk_14)); + Mat3p_InitYRotation(&m, SIN((u16) this->mAngle), COS((u16) this->mAngle)); VecFx32 pos(this->mPos); pos.y += -(this->mUnk_6C * 2); @@ -622,9 +622,9 @@ void MapObjectDoorDangerSpawn::vfunc_74(void) { local_28.y = local_34.y; local_28.z = local_34.z; - u16 var_r5 = (u16) (this->mUnk_14 + DEG_TO_ANG(45)); + u16 var_r5 = (u16) (this->mAngle + DEG_TO_ANG(45)); - if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) { + if (((u16) this->mAngle / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) { var_r5 = 0; } @@ -699,8 +699,8 @@ void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *pa } VecFx32 local_24; - *param3 = this->mUnk_14; - iVar1 = this->mUnk_14 + DEG_TO_ANG(30); + *param3 = this->mAngle; + iVar1 = this->mAngle + DEG_TO_ANG(30); if (param1 != 0) { local_24.x = MUL_FX32(SIN((u16) iVar1), 0x1666); local_24.z = MUL_FX32(COS((u16) iVar1), 0x1666); @@ -715,8 +715,8 @@ void MapObjectDoorDangerSpawn::vfunc_84(unk32 param1, VecFx32 *param2, unk16 *pa VecFx32_Add(&this->mPos, &local_24, param2); VecFx32 local_30; - this->mUnk_5A = this->mUnk_14; - iVar1 = this->mUnk_14 - DEG_TO_ANG(30); + this->mUnk_5A = this->mAngle; + iVar1 = this->mAngle - DEG_TO_ANG(30); if (param1 != 0) { local_30.x = MUL_FX32(SIN((u16) iVar1), 0x1666); local_30.z = MUL_FX32(COS((u16) iVar1), 0x1666); diff --git a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp index e9c5672d..7c174d03 100644 --- a/src/031_Land/MapObject/MapObjectDoorSwitch.cpp +++ b/src/031_Land/MapObject/MapObjectDoorSwitch.cpp @@ -113,7 +113,7 @@ bool MapObjectDoorSwitch::vfunc_6C(void) { } void MapObjectDoorSwitch::vfunc_14(void) { - u16 angle = this->mUnk_14; + u16 angle = this->mAngle; Mat3p m; Mat3p_InitYRotation(&m, SIN(angle), COS(angle)); @@ -133,7 +133,7 @@ void MapObjectDoorSwitch::vfunc_74(void) { VecFx32_Init(0, 0, 0x666, &local_2c); Mat4x3p m; - u16 angle = this->mUnk_14; + u16 angle = this->mAngle; Mat4x3p_InitYRotation(&m, SIN(angle), COS(angle)); func_01ffaf74(&local_2c, &m, &local_2c); @@ -142,7 +142,7 @@ void MapObjectDoorSwitch::vfunc_74(void) { data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_20, 4); if (this->mUnk_68.mUnk_00 != NULL) { - this->mUnk_68.mUnk_00->mUnk_A4 = this->mUnk_14; + this->mUnk_68.mUnk_00->mUnk_A4 = this->mAngle; } } diff --git a/src/031_Land/MapObject/MapObjectGrass.cpp b/src/031_Land/MapObject/MapObjectGrass.cpp index a44863c7..f0a1b549 100644 --- a/src/031_Land/MapObject/MapObjectGrass.cpp +++ b/src/031_Land/MapObject/MapObjectGrass.cpp @@ -13,7 +13,15 @@ MapObject *MapObjectProfileGrass::Create() { // non-matching MapObjectProfileGrass::MapObjectProfileGrass() : - MapObjectProfile_Derived2(MapObjectId_Grass, MapObjectId_Grass) {} + MapObjectProfilePot_Base(MapObjectId_Grass, MapObjectId_Grass) { + this->mUnk_D4.mUnk_08 = 0x2A807003; + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C); + this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.35f); + this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.0f); + this->mUnk_D4.mUnk_04 &= 0xFD; + this->mUnk_06 = -0x1; + this->mUnk_1E &= ~0x1; +} MapObjectGrass::MapObjectGrass() : mUnk_58(0x0), diff --git a/src/031_Land/MapObject/MapObjectPot.cpp b/src/031_Land/MapObject/MapObjectPot.cpp index 78ead72a..aeeb15c5 100644 --- a/src/031_Land/MapObject/MapObjectPot.cpp +++ b/src/031_Land/MapObject/MapObjectPot.cpp @@ -9,7 +9,7 @@ #include "limits.h" -extern "C" MapObject_10 data_ov031_02118010; +extern "C" MapObject_10_Pot data_ov031_02118010; extern "C" fx32 func_01ffe868(VecFx32 *, unk32, unk32); extern "C" void func_ov031_020e0f30(ActorRef); @@ -22,15 +22,15 @@ MapObject *MapObjectProfilePot::Create() { MapObjectProfilePot::MapObjectProfilePot() : MapObjectProfilePot_Base(MapObjectId_Pot, MapObjectId_Pot) { - this->mUnk_0E = 0x0; - this->mUnk_D4.mUnk_08 = 0x7007; - this->mUnk_D4.mUnk_0C.x = FLOAT_TO_FX32(0.0f); - this->mUnk_D4.mUnk_0C.y = FLOAT_TO_FX32(0.0f); - this->mUnk_D4.mUnk_0C.z = FLOAT_TO_FX32(0.0f); - this->mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.5f); - this->mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(1.2f); - this->mUnk_06 = 0x0; - this->mUnk_0C = 0x1000; + this->mUnk_0E = 0x0; + this->mUnk_D4.mUnk_08 = 0x7007; + + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C); + + this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.5f); + this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.2f); + this->mUnk_06 = 0x0; + this->mUnk_0C = 0x1000; } ModelRender_ov000_020b198c::ModelRender_ov000_020b198c(G3d_Model *pModel, unk8 param2) : @@ -54,78 +54,39 @@ void MapObjectPot::vfunc_04() { this->mPos.y = func_01ffe868(&this->mPos, 0x1, 0x0); } -void MapObjectPot::vfunc_14() { - this->func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F); - this->mUnk_48.vfunc_18(&this->mPos); -} - -// non-matching bool MapObjectPot::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) { switch (param2) { case 0xD: - this->vfunc_44(0x1, 0x0); + this->SetState(0x1, 0x0); func_ov031_020e0f30(param1); - return true; + break; case 0x0: case 0x1: case 0x7: case 0x8: - case 0xA: - case 0xB: - this->vfunc_44(0x1, 0x0); - return true; + this->SetState(0x1, 0x0); + break; case 0x3: case 0xC: - this->vfunc_44(0x1, 0x0); + this->SetState(0x1, 0x0); return false; + case 0xA: + case 0xB: + this->SetState(0x1, 0x0); + break; case 0x4: if (data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) { Actor *actor = gpActorManager->func_01fff3b4(param1); if (actor != NULL) { - this->mUnk_14 = actor->mAngle; - this->vfunc_44(0x3, 0x0); + this->mAngle = actor->mAngle; + this->SetState(0x3, 0x0); + break; } } default: - return true; + break; } -} - -void MapObjectPot::vfunc_24(MapObject *param1, VecFx32 param2) { - this->func_ov000_0209d8e8((MapObjectPot_Base *) param1, param2.x); - param1->func_ov000_0209d614(0x1); - - if (((MapObjectPot_Base *) param1)->func_ov000_0209da64() != 0x65) { - return; - } - - if (param1->mUnk_20.mUnk_0A[0] == 0x0) { - return; - } - - param1->func_ov000_0209d2c4(0x0, true); -} - -bool MapObjectPot::vfunc_3C() { - if (this->func_ov000_0209da64() == 0x65) { - return false; - } - if (this->func_ov000_0209da64() == 0x0) { - return this->func_ov000_0209d668() == 0x0; - } - return false; -} - -bool MapObjectPot::vfunc_40() { - if (this->func_ov000_0209da64() == 0x65) { - if (!this->func_ov000_0209d29c(0x0)) { - return true; - } - if (this->mUnk_20.mUnk_0A[0] == 0x0) { - return true; - } - } - return false; + return true; } void MapObjectPot::vfunc_48() { @@ -140,7 +101,7 @@ void MapObjectPot::vfunc_48() { data_027e0cec->func_ov000_0209feac(0x822, &stack_09, 0x4, 0x0, 0x0); - if (this->func_ov000_0209da64() != 0x65) { + if (this->MapObjectPot_Base::vfunc_54() != 0x65) { return; } @@ -150,8 +111,13 @@ void MapObjectPot::vfunc_48() { this->func_ov000_0209d2c4(0x0, true); } +void MapObjectPot::vfunc_14() { + this->func_ov000_0209d518(&this->mPos, 0x5A7, 0x5A7, 0x1F); + this->mUnk_48.vfunc_18(&this->mPos); +} + unk32 MapObjectPot::vfunc_54() { - if (this->func_ov000_0209da64() == 0x65) { + if (this->MapObjectPot_Base::vfunc_54() == 0x65) { return 0x1; } @@ -159,8 +125,42 @@ unk32 MapObjectPot::vfunc_54() { return 0x1; } - return this->func_ov000_0209da64(); + return this->MapObjectPot_Base::vfunc_54(); } -MapObjectPot::~MapObjectPot() {} -MapObjectProfilePot::~MapObjectProfilePot() {} +void MapObjectPot::vfunc_24(MapObject *param1, VecFx32 param2) { + this->MapObjectPot_Base::vfunc_24(param1, param2); + param1->func_ov000_0209d614(0x1); + + if (((MapObjectPot_Base *) param1)->MapObjectPot_Base::vfunc_54() != 0x65) { + return; + } + + if (param1->mUnk_20.mUnk_0A[0] == 0x0) { + return; + } + + param1->func_ov000_0209d2c4(0x0, true); +} + +bool MapObjectPot::vfunc_3C() { + if (this->MapObjectPot_Base::vfunc_54() == 0x65) { + return false; + } + if (this->MapObjectPot_Base::vfunc_54() == 0x0) { + return this->func_ov000_0209d668() == 0x0; + } + return false; +} + +bool MapObjectPot::vfunc_40() { + if (this->MapObjectPot_Base::vfunc_54() == 0x65) { + if (!this->func_ov000_0209d29c(0x0)) { + return true; + } + if (this->mUnk_20.mUnk_0A[0] == 0x0) { + return true; + } + } + return false; +} diff --git a/src/031_Land/MapObject/MapObjectUnkBMFL.cpp b/src/031_Land/MapObject/MapObjectUnkBMFL.cpp deleted file mode 100644 index 0ce858f6..00000000 --- a/src/031_Land/MapObject/MapObjectUnkBMFL.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//! TODO: This file was generated automatically and might contain errors - -#include "MapObject/MapObjectUnkBMFL.hpp" -#include "System/SysNew.hpp" - -DECL_PROFILE(MapObjectProfileUnkBMFL); - -MapObject *MapObjectProfileUnkBMFL::Create() { - return new(HeapIndex_2) MapObjectUnkBMFL(); -} - -MapObjectProfileUnkBMFL::MapObjectProfileUnkBMFL() : - MapObjectProfile(MapObjectId_BMFL) {} - -MapObjectUnkBMFL::MapObjectUnkBMFL() {} - -void MapObjectUnkBMFL::func_ov031_021025c4(void) {} -void MapObjectUnkBMFL::func_ov031_02102708(void) {} -void MapObjectUnkBMFL::func_ov031_02102718(void) {} -void MapObjectUnkBMFL::func_ov031_02102728(void) {} -void MapObjectUnkBMFL::func_ov031_021027a4(void) {} -void MapObjectUnkBMFL::func_ov031_02102894(void) {} -void MapObjectUnkBMFL::func_ov031_021029f0(void) {} -void MapObjectUnkBMFL::func_ov031_02102a40(void) {} -void MapObjectUnkBMFL::func_ov031_02102ad8(void) {} -void MapObjectUnkBMFL::func_ov031_02102af4(void) {} - -MapObjectUnkBMFL::~MapObjectUnkBMFL() {} -MapObjectProfileUnkBMFL::~MapObjectProfileUnkBMFL() {} diff --git a/src/031_Land/MapObject/MapObjectUnkSKDI.cpp b/src/031_Land/MapObject/MapObjectUnkSKDI.cpp index 92c4abb5..13053d07 100644 --- a/src/031_Land/MapObject/MapObjectUnkSKDI.cpp +++ b/src/031_Land/MapObject/MapObjectUnkSKDI.cpp @@ -165,12 +165,12 @@ void MapObjectUnkSKDI::func_ov031_0210643c(unk32 param1) { VecFx32 vec; VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(1.25f), this->mPos.z, &vec); UnkStruct_027e0cec *data = data_027e0cec; - for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { + for (ActorBomb_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { data->func_ov000_020a0140(ptr, &vec); } } else { UnkStruct_027e0cec *data = data_027e0cec; - for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { + for (ActorBomb_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { data->func_ov000_020a0110(ptr); } } @@ -265,7 +265,7 @@ void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) { this->func_ov000_0209d2c4(0x0, true); } UnkStruct_027e0cec *data = data_027e0cec; - for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { + for (ActorBomb_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { data->func_ov000_020a0140(ptr, &sp48); } unk32 dc = this->mUnk_0D4.mUnk_08; @@ -287,7 +287,7 @@ void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) { if (param2 == 0) { this->func_ov000_0209d2c4(0x0, false); UnkStruct_027e0cec *data = data_027e0cec; - for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { + for (ActorBomb_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) { data->func_ov000_020a0110(ptr); } if (this->mUnk_0FC == 0) { diff --git a/src/031_Land/MapObject/MapObjectUnkSWHT.cpp b/src/031_Land/MapObject/MapObjectUnkSWHT.cpp index 0a76d1a8..bdd7465c 100644 --- a/src/031_Land/MapObject/MapObjectUnkSWHT.cpp +++ b/src/031_Land/MapObject/MapObjectUnkSWHT.cpp @@ -27,11 +27,11 @@ MapObjectProfileUnkSWHT::MapObjectProfileUnkSWHT() : MapObjectProfilePot_Base(MapObjectId_SWHT, MapObjectId_SWHT) { this->mUnk_D4.mUnk_08 = 0x84007009; VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_D4.mUnk_0C); - this->mUnk_D4.mUnk_18.x = FLOAT_TO_FX32(0.35f); - this->mUnk_D4.mUnk_18.y = FLOAT_TO_FX32(1.2f); - this->mUnk_06 = 0x0; - this->mUnk_0C = 0x1333; - this->mUnk_20.mUnk_15 = 0x1; + this->mUnk_D4.mUnk_18 = FLOAT_TO_FX32(0.35f); + this->mUnk_D4.mUnk_1C = FLOAT_TO_FX32(1.2f); + this->mUnk_06 = 0x0; + this->mUnk_0C = 0x1333; + this->mUnk_20.mUnk_15 = 0x1; } MapObjectUnkSWHT::MapObjectUnkSWHT() : @@ -43,8 +43,8 @@ MapObjectUnkSWHT::MapObjectUnkSWHT() : this->mUnk_054.vfunc_08(G3d_GetModelPtr(GET_PROFILE(MapObjectProfileUnkSWHT)->mUnk_20.mUnk_50)); this->mUnk_0B4.mpModel = this->mUnk_054.mpModel; - unk32 param2 = data_ov031_021179e8.func_ov000_02058a24(); - unk32 param1 = data_ov031_021179e8.func_ov000_02058a84(0x3, &data_ov031_02110ce0); + unk32 param2 = data_ov031_021179e8.func_ov000_02058a24(); + UnkStruct_ov000_02058a84 *param1 = data_ov031_021179e8.func_ov000_02058a84(0x3, &data_ov031_02110ce0); this->mUnk_0B4.func_ov000_020577a4(param1, param2, 0x1); diff --git a/src/063_Shrine/MapObject/MapObjectUnkSTAT.cpp b/src/063_Shrine/MapObject/MapObjectUnkSTAT.cpp index 14ac4bdb..3857b5d7 100644 --- a/src/063_Shrine/MapObject/MapObjectUnkSTAT.cpp +++ b/src/063_Shrine/MapObject/MapObjectUnkSTAT.cpp @@ -119,7 +119,7 @@ void MapObjectUnkSTAT::vfunc_0C(void) { void MapObjectUnkSTAT::vfunc_14(void) { VecFx32 vec; VecFx32_Init(mPos.x + mUnk_60, mPos.y + mUnk_64, mPos.z + mUnk_68, &vec); - mUnk_40.func_01ffc6d4(mUnk_14_AngleStruct, &vec); + mUnk_40.func_01ffc6d4(mAngleStruct, &vec); } void MapObjectUnkSTAT::func_ov063_0215f7ac(void) { @@ -220,7 +220,7 @@ void MapObjectUnkSTAT::func_ov063_0215fc40(unk32 param1) { } unk32 MapObjectUnkSTAT::func_ov063_0215fce0(void) { - return func_02016b8c(&mPos, data_027e0ce0->func_01fff148(0), mUnk_54, mUnk_14_AngleStruct, mUnk_58, 1); + return func_02016b8c(&mPos, data_027e0ce0->func_01fff148(0), mUnk_54, mAngleStruct, mUnk_58, 1); } MapObjectUnkSTAT::~MapObjectUnkSTAT() {} diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index e6c71da6..e86f8974 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -37,7 +37,7 @@ extern const char *data_ov000_020aa248; // .nsbmd extern "C" void func_ov000_0205ca74(unk32); extern "C" void func_01ffb6e4(unk32, const void *, void *); -extern "C" void func_01ffc5a0(ModelRender *, unk32, u16, void *, unk32); +extern "C" void func_01ffc5a0(ModelRender *, unk32, UnkAngleStruct, void *); extern "C" void func_ov000_0208f820(); extern "C" void func_ov000_0208ba10(void *, void *, unk32); extern "C" void func_02015ea8(unk32, void *); @@ -425,18 +425,17 @@ static const AdventureFlag sAdvFlagItemMap[] = { AdventureFlag_Nothing, // ItemId_EngineerUniform }; -// non-matching -void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2, unk32 param3) { +void UnkStruct_PlayerGet_74::vfunc_00(unk32 param1, unk32 param2) { PlayerGet *unk_14 = (PlayerGet *) this->mUnk_14; - func_01ffc5a0(&unk_14->mUnk_8C, unk_14->mUnk_6C, unk_14->mUnk_70, &this->mUnk_04, param3); + func_01ffc5a0(&unk_14->mUnk_8C, unk_14->mUnk_6C, unk_14->mUnkAngleStruct, &this->mUnk_04); } PlayerGet::PlayerGet() : mUnk_54(0, 0, -1, ItemId_None), mUnk_64(mUnk_44, -1), mUnk_6C(0x1000), - mUnk_70(0), + mAngle(0), mUnk_72(0), mUnk_73(0), mUnk_74(this), @@ -536,7 +535,7 @@ void PlayerGet::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { } this->mUnk_54.mItemId = itemId; - this->mUnk_70 = 0; + this->mAngle = 0; this->mUnk_2C->mUnk_58 = 0; char auStack_108[12]; func_ov000_0208ba10(auStack_108, &this->mUnk_24->mUnk_94, 0); @@ -955,7 +954,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { break; } - this->mUnk_70 += 0x10E; + this->mAngle += 0x10E; if (this->mUnk_73 == 0) { break; diff --git a/tools/configure.py b/tools/configure.py index a9a245d4..941998f5 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -238,6 +238,7 @@ config.libs = [ Object("000_Second/MapObject/MapObjectProfile.cpp"), Object("000_Second/MapObject/MapObjectProfile_Derived2_20.cpp"), Object("000_Second/MapObject/MapObject.cpp"), + Object("000_Second/MapObject/MapObjectPot_Base.cpp"), Object("000_Second/MapObject/MapObjectSwitchStep.cpp"), Object("000_Second/MapObject/MapObjectMiniBlocks.cpp"), Object("000_Second/Cutscene/Cutscene.cpp"), @@ -534,7 +535,7 @@ config.libs = [ Object("031_Land/Actor/ActorShotArrow.cpp"), Object("031_Land/Actor/ActorUnkATTG.cpp"), Object("031_Land/Actor/ActorBlast.cpp"), - Object("031_Land/Actor/ActorUnkBOMB.cpp"), + Object("031_Land/Actor/ActorBomb.cpp"), Object("031_Land/Actor/ActorUnkCLLT.cpp"), Object("031_Land/Actor/ActorUnkEFSB.cpp"), Object("031_Land/Actor/ActorUnkFLEN.cpp"), @@ -561,7 +562,7 @@ config.libs = [ Object("031_Land/Actor/ActorUnkZLSL_ZSRS.cpp"), Object("031_Land/MapObject/MapObjectDoorBase.cpp"), Object("031_Land/MapObject/MapObjectUnkBLCC.cpp"), - Object("031_Land/MapObject/MapObjectUnkBMFL.cpp"), + Object("031_Land/MapObject/MapObjectBombFlower.cpp"), Object("031_Land/MapObject/MapObjectUnkBREX.cpp"), Object("031_Land/MapObject/MapObjectUnkCRWL.cpp"), Object("031_Land/MapObject/MapObjectDoorClick.cpp"),