From 66eb66f081d32bd039770474d477aaa197e8fb61 Mon Sep 17 00:00:00 2001 From: Alessevan <44125445+Alessevan@users.noreply.github.com> Date: Thu, 2 Jul 2026 20:51:46 +0200 Subject: [PATCH] Decompiling actor for boomerang (#93) * feat: begin decompiling ActorItemBoomerang * feat: decompile functions * refactor: rename function and use ActorState * feat: match vfunc * feat: magic stuff on addresses to match .data * feat: more black magic * feat: improvements * feat: match .data * feat: unmatch .data :sob: * feat: match stuff * refactor: move shotarrows' class used in boomerang * feat: fix mangled names * feat: weird magic * fix: build issues * fix: build issue for jp version * fix: back to +0.2% :yeah: * feat: improvements before changing laptop * feat: continue decompiling * fix: build issues * feat: improvements * feat: solve build on eur * fix: build issue * fix: better match * fix: match back ActorShotArrow data * feat: increase .text matching * fix: propagate changes to ActorShotArrow * feat: matching func_ov031_020e5034 * fix: logical errors * fix: replace whiles with fors * style: use uppercased hex value Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: do not use fx32 for global timer Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: add parameters name in prototypes Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: use bool instead of unk32 for external function Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: use DEG2ANG * refactor: use ActorRef instead of u16 * style: use boring array access instead of chad pointer manipulation * fix: use bool as return type for ActorItemBoomerang::vfunc_2C * feat: remove old non-matching comments * style: explicit null check * revert: change vfunc_2C back to void signature and change 01fff5d0 function's signature to bool --------- Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> --- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 22 +- config/eur/arm9/overlays/ov031/delinks.txt | 3 +- config/eur/arm9/overlays/ov031/relocs.txt | 14 +- config/eur/arm9/overlays/ov031/symbols.txt | 92 ++--- config/jp/arm9/itcm/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/symbols.txt | 14 +- config/jp/arm9/overlays/ov031/delinks.txt | 2 +- config/jp/arm9/overlays/ov031/symbols.txt | 68 ++-- include/Actor/Actor.hpp | 3 +- include/Actor/ActorItemBoomerang.hpp | 109 +++++ include/Actor/ActorShotArrow.hpp | 62 +-- include/Actor/ActorUnkITBM.hpp | 63 --- include/MapObject/MapObject.hpp | 2 +- include/Render/ModelRender.hpp | 2 + include/Unknown/Common.hpp | 6 +- include/Unknown/UnkStruct_027e09c0.hpp | 2 +- include/Unknown/UnkStruct_027e0ce0.hpp | 12 +- include/Unknown/UnkStruct_027e0cec.hpp | 2 + include/Unknown/UnkStruct_027e0d2c.hpp | 15 + include/Unknown/UnkStruct_ov031_Items.hpp | 55 +++ src/000_Second/MapObject/MapObject.cpp | 2 +- src/031_Land/Actor/ActorItemBoomerang.cpp | 437 +++++++++++++++++++++ src/031_Land/Actor/ActorShotArrow.cpp | 13 +- src/031_Land/Actor/ActorUnkITBM.cpp | 41 -- tools/configure.py | 2 +- 26 files changed, 762 insertions(+), 285 deletions(-) create mode 100644 include/Actor/ActorItemBoomerang.hpp delete mode 100644 include/Actor/ActorUnkITBM.hpp create mode 100644 include/Unknown/UnkStruct_027e0d2c.hpp create mode 100644 include/Unknown/UnkStruct_ov031_Items.hpp create mode 100644 src/031_Land/Actor/ActorItemBoomerang.cpp delete mode 100644 src/031_Land/Actor/ActorUnkITBM.cpp diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 21caf7b8..7101dd4d 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -128,7 +128,7 @@ func_01ffc520 kind:function(arm,size=0x5c) addr:0x01ffc520 _ZN11ModelRender8vfunc_0CEv kind:function(arm,size=0x24) addr:0x01ffc57c func_01ffc5a0 kind:function(arm,size=0x94) addr:0x01ffc5a0 func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634 -func_01ffc6d4 kind:function(arm,size=0x70) addr:0x01ffc6d4 +_ZN19UnkSystem6_Derived213func_01ffc6d4EtP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4 func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744 func_01ffc768 kind:function(arm,size=0x3c) addr:0x01ffc768 _ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 391fde48..fabaccdc 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1381,11 +1381,11 @@ _ZN19func_ov000_0207b628D1Ev kind:function(arm,size=0x14) addr:0x0207b628 _ZN19func_ov000_0207b63cD0Ev kind:function(arm,size=0x1c) addr:0x0207b63c _ZN19func_ov000_0207b658D1Ev kind:function(arm,size=0x30) addr:0x0207b658 _ZN19func_ov000_0207b688D0Ev kind:function(arm,size=0x38) addr:0x0207b688 -_ZN23ActorShotArrow_194_BaseD2Ev kind:function(arm,size=0x30) addr:0x0207b6c0 +_ZN24UnkStruct_ov031_Items_01D2Ev kind:function(arm,size=0x30) addr:0x0207b6c0 func_ov000_0207b6f0 kind:function(arm,size=0x1c) addr:0x0207b6f0 func_ov000_0207b70c kind:function(arm,size=0x10) addr:0x0207b70c -_ZN23ActorShotArrow_194_Base8vfunc_08Ev kind:function(arm,size=0x38) addr:0x0207b71c -func_ov000_0207b754 kind:function(arm,size=0x80) addr:0x0207b754 +_ZN24UnkStruct_ov031_Items_018vfunc_08Ev kind:function(arm,size=0x38) addr:0x0207b71c +_ZN24UnkStruct_ov031_Items_018vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x80) addr:0x0207b754 func_ov000_0207b7d4 kind:function(arm,size=0x40) addr:0x0207b7d4 func_ov000_0207b814 kind:function(arm,size=0x80) addr:0x0207b814 func_ov000_0207b894 kind:function(arm,size=0x48) addr:0x0207b894 @@ -1412,9 +1412,9 @@ func_ov000_0207bcfc kind:function(arm,size=0x88) addr:0x0207bcfc func_ov000_0207bd84 kind:function(arm,size=0x260) addr:0x0207bd84 func_ov000_0207bfe4 kind:function(arm,size=0x4) addr:0x0207bfe4 _ZN19func_ov000_0207bfe8D0Ev kind:function(arm,size=0x14) addr:0x0207bfe8 -_ZN23ActorShotArrow_178_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207bffc +_ZN24UnkStruct_ov031_Items_00D2Ev kind:function(arm,size=0x4) addr:0x0207bffc _ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207c000 -_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207c008 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x8) addr:0x0207c008 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev 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 @@ -1460,7 +1460,7 @@ func_ov000_0207dc64 kind:function(arm,size=0x24) addr:0x0207dc64 func_ov000_0207dc88 kind:function(arm,size=0x210) addr:0x0207dc88 func_ov000_0207de98 kind:function(arm,size=0xc0) addr:0x0207de98 func_ov000_0207df58 kind:function(arm,size=0x30) addr:0x0207df58 -func_ov000_0207df88 kind:function(arm,size=0xd8) addr:0x0207df88 +_ZN5Actor19func_ov000_0207df88EP8Cylinderi kind:function(arm,size=0xd8) addr:0x0207df88 func_ov000_0207e060 kind:function(arm,size=0x68) addr:0x0207e060 func_ov000_0207e0c8 kind:function(arm,size=0xbc) addr:0x0207e0c8 func_ov000_0207e184 kind:function(arm,size=0x58) addr:0x0207e184 @@ -1474,7 +1474,7 @@ func_ov000_0207e3ac kind:function(arm,size=0xac) addr:0x0207e3ac func_ov000_0207e458 kind:function(arm,size=0x84) addr:0x0207e458 func_ov000_0207e4dc kind:function(arm,size=0x84) addr:0x0207e4dc func_ov000_0207e560 kind:function(arm,size=0x2c) addr:0x0207e560 -_ZN18UnkStruct_027e09c019func_ov000_0207e58cE8ActorRefihP18ActorShotArrow_194 kind:function(arm,size=0xa4) addr:0x0207e58c +_ZN18UnkStruct_027e09c019func_ov000_0207e58cE8ActorRefihP24UnkStruct_ov031_Items_01 kind:function(arm,size=0xa4) addr:0x0207e58c func_ov000_0207e630 kind:function(arm,size=0x38) addr:0x0207e630 func_ov000_0207e668 kind:function(arm,size=0x50) addr:0x0207e668 func_ov000_0207e6b8 kind:function(arm,size=0x14) addr:0x0207e6b8 @@ -2062,7 +2062,7 @@ 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 -func_ov000_0208ed30 kind:function(thumb,size=0x34) addr:0x0208ed30 +_ZN18UnkStruct_027e0ce019func_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 @@ -2306,7 +2306,7 @@ func_ov000_020980e0 kind:function(arm,size=0x80) addr:0x020980e0 func_ov000_02098160 kind:function(arm,size=0x80) addr:0x02098160 func_ov000_020981e0 kind:function(arm,size=0x64) addr:0x020981e0 func_ov000_02098244 kind:function(arm,size=0x64) addr:0x02098244 -_ZN23ActorShotArrow_178_BaseC2Ev kind:function(arm,size=0x18) addr:0x020982a8 +_ZN24UnkStruct_ov031_Items_00C2Ev kind:function(arm,size=0x18) addr:0x020982a8 func_ov000_020982c0 kind:function(arm,size=0x18) addr:0x020982c0 func_ov000_020982d8 kind:function(arm,size=0x80) addr:0x020982d8 _ZN19func_ov000_02098358D1Ev kind:function(arm,size=0x14) addr:0x02098358 @@ -2557,7 +2557,7 @@ _ZN9MapObject19func_ov000_0209d0bcEP8Vec2bCppPS_ kind:function(arm,size=0x58) ad _ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209d114 _ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209d12c _ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209d144 -_ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209d1cc +_ZN9MapObject8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x8) addr:0x0209d1cc _ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209d1d4 _ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209d1d8 _ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209d1e4 @@ -2675,7 +2675,7 @@ func_ov000_0209ff4c kind:function(arm,size=0x40) addr:0x0209ff4c _ZN18UnkStruct_027e0cec19func_ov000_0209ff8cEP22UnkStruct_PlayerGet_eciP7VecFx32i kind:function(arm,size=0x74) addr:0x0209ff8c func_ov000_020a0000 kind:function(arm,size=0xa0) addr:0x020a0000 func_ov000_020a00a0 kind:function(arm,size=0x34) addr:0x020a00a0 -func_ov000_020a00d4 kind:function(arm,size=0x3c) addr:0x020a00d4 +_ZN18UnkStruct_027e0cec19func_ov000_020a00d4EP22UnkStruct_PlayerGet_eciiiP7VecFx32i kind:function(arm,size=0x3c) addr:0x020a00d4 _ZN18UnkStruct_027e0cec19func_ov000_020a0110EP22UnkStruct_PlayerGet_ec kind:function(arm,size=0x30) addr:0x020a0110 func_ov000_020a0140 kind:function(arm,size=0xe0) addr:0x020a0140 _ZN18UnkStruct_027e0cec19func_ov000_020a0220EPvS0_ kind:function(arm,size=0xb4) addr:0x020a0220 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index 040ae03d..8ba93624 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -26,10 +26,11 @@ src/031_Land/Actor/ActorUnkTLKT.cpp: .ctor start:0x021127a4 end:0x021127a8 .bss start:0x0211649c end:0x021164e8 -src/031_Land/Actor/ActorUnkITBM.cpp: +src/031_Land/Actor/ActorItemBoomerang.cpp: .text start:0x020e45a4 end:0x020e575c .init start:0x021110e8 end:0x02111138 .ctor start:0x021127a8 end:0x021127ac + .data start:0x02112efc end:0x02112fd0 .bss start:0x021164e8 end:0x02116534 src/031_Land/Actor/ActorUnkITTD.cpp: diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 1fbda553..eede45f5 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -1236,16 +1236,16 @@ from:0x020e4114 kind:arm_call to:0x0209767c module:overlay(0) from:0x020e412c kind:load to:0x02112e4c add:0x8 module:overlay(31) from:0x020e4138 kind:arm_call to:0x020e3da0 module:overlay(31) from:0x020e415c kind:load to:0x02112e70 add:0x8 module:overlay(31) -from:0x020e4160 kind:load to:0x02112eec module:overlay(31) +from:0x020e4160 kind:load to:0x02112ee4 module:overlay(31) add:0x8 from:0x020e4188 kind:arm_call to:0x020e4514 module:overlay(31) from:0x020e4190 kind:arm_call to:0x02098488 module:overlay(0) from:0x020e419c kind:load to:0x02112e70 add:0x8 module:overlay(31) -from:0x020e41a0 kind:load to:0x02112eec module:overlay(31) +from:0x020e41a0 kind:load to:0x02112ee4 module:overlay(31) add:0x8 from:0x020e41c8 kind:arm_call to:0x020e4514 module:overlay(31) from:0x020e41d0 kind:arm_call to:0x02098488 module:overlay(0) from:0x020e41d8 kind:arm_call to:0x02011ff4 module:main from:0x020e41e4 kind:load to:0x02112e70 add:0x8 module:overlay(31) -from:0x020e41e8 kind:load to:0x02112eec module:overlay(31) +from:0x020e41e8 kind:load to:0x02112ee4 module:overlay(31) add:0x8 from:0x020e4230 kind:arm_call to:0x020e4274 module:overlay(31) from:0x020e424c kind:arm_call to:0x020732ec module:overlay(0) from:0x020e4270 kind:load to:0x027e09b8 module:dtcm @@ -1282,8 +1282,8 @@ from:0x020e4724 kind:arm_call to:0x020d8df0 module:overlay(31) from:0x020e4740 kind:load to:0x02112f74 add:0x8 module:overlay(31) from:0x020e4744 kind:load to:0x027e0ce0 module:dtcm from:0x020e4748 kind:load to:0x020b1960 add:0x8 module:overlay(0) -from:0x020e474c kind:load to:0x02112f04 module:overlay(31) -from:0x020e4750 kind:load to:0x02112f3c module:overlay(31) +from:0x020e474c kind:load to:0x02112efc module:overlay(31) add:0x8 +from:0x020e4750 kind:load to:0x02112f34 module:overlay(31) add:0x8 from:0x020e4754 kind:load to:0x020a02d4 module:overlay(0) from:0x020e4758 kind:load to:0x020e5704 module:overlay(31) from:0x020e4768 kind:arm_call to:0x0207b6c0 module:overlay(0) @@ -1399,7 +1399,7 @@ from:0x020e53f8 kind:load to:0x027e0d2c module:dtcm from:0x020e53fc kind:load to:0x020d95c8 module:overlay(31) from:0x020e543c kind:arm_call to:0x0207b754 module:overlay(0) from:0x020e5458 kind:arm_call to:0x020982a8 module:overlay(0) -from:0x020e5470 kind:load to:0x02112f20 module:overlay(31) +from:0x020e5470 kind:load to:0x02112f18 module:overlay(31) add:0x8 from:0x020e547c kind:arm_call to:0x0207bffc module:overlay(0) from:0x020e5490 kind:arm_call to:0x0207bffc module:overlay(0) from:0x020e5498 kind:arm_call to:0x02011ff4 module:main @@ -1446,7 +1446,7 @@ from:0x020e5b00 kind:load to:0x0211302c add:0x8 module:overlay(31) from:0x020e5b04 kind:load to:0x02110a88 module:overlay(31) from:0x020e5b08 kind:load to:0x027e0ce0 module:dtcm from:0x020e5b0c kind:load to:0x02112ff4 module:overlay(31) -from:0x020e5b10 kind:load to:0x02112fd8 module:overlay(31) +from:0x020e5b10 kind:load to:0x02112fd0 module:overlay(31) add:0x8 from:0x020e5b14 kind:load to:0x020b27c8 module:overlay(0) from:0x020e5b18 kind:load to:0x020a02d4 module:overlay(0) from:0x020e5b1c kind:load to:0x020e5704 module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 5e352082..94b714f2 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -8,8 +8,8 @@ func_ov031_020d8cd0 kind:function(arm,size=0x28) addr:0x020d8cd0 func_ov031_020d8cf8 kind:function(arm,size=0x70) addr:0x020d8cf8 func_ov031_020d8d68 kind:function(arm,size=0x74) addr:0x020d8d68 func_ov031_020d8ddc kind:function(arm,size=0x14) addr:0x020d8ddc -_ZN18ActorShotArrow_1DCC1Eii kind:function(arm,size=0x7c) addr:0x020d8df0 -_ZN18ActorShotArrow_1DCD1Ev kind:function(arm,size=0x1c) addr:0x020d8e6c +_ZN24UnkStruct_ov031_Items_02C1Eii kind:function(arm,size=0x7c) addr:0x020d8df0 +_ZN24UnkStruct_ov031_Items_02D1Ev kind:function(arm,size=0x1c) addr:0x020d8e6c func_ov031_020d8e88 kind:function(arm,size=0x9c) addr:0x020d8e88 func_ov031_020d8f24 kind:function(arm,size=0x34) addr:0x020d8f24 func_ov031_020d8f58 kind:function(arm,size=0x40) addr:0x020d8f58 @@ -34,11 +34,11 @@ func_ov031_020d9524 kind:function(arm,size=0x44) addr:0x020d9524 _ZN19func_ov031_020d9568D1Ev kind:function(arm,size=0x14) addr:0x020d9568 _ZN19func_ov031_020d957cD0Ev kind:function(arm,size=0x1c) addr:0x020d957c func_ov031_020d9598 kind:function(thumb,size=0x1a) addr:0x020d9598 -func_ov031_020d95b4 kind:function(arm,size=0x14) addr:0x020d95b4 -func_ov031_020d95c8 kind:function(arm,size=0x24) addr:0x020d95c8 +_ZN18UnkStruct_027e0d2c19func_ov031_020d95b4Ev kind:function(arm,size=0x14) addr:0x020d95b4 +_ZN18UnkStruct_027e0d2c19func_ov031_020d95c8E8ActorRef kind:function(arm,size=0x24) addr:0x020d95c8 func_ov031_020d95ec kind:function(arm,size=0x30) addr:0x020d95ec func_ov031_020d961c kind:function(arm,size=0x10) addr:0x020d961c -func_ov031_020d962c kind:function(arm,size=0x1c) addr:0x020d962c +_ZN18UnkStruct_027e0d2c19func_ov031_020d962cEP7VecFx32iS1_P8ActorRef kind:function(arm,size=0x1c) addr:0x020d962c func_ov031_020d9648 kind:function(arm,size=0x10) addr:0x020d9648 func_ov031_020d9658 kind:function(thumb,size=0x1a) addr:0x020d9658 func_ov031_020d9674 kind:function(arm,size=0x10) addr:0x020d9674 @@ -420,35 +420,35 @@ _ZN12ActorUnkTLKT19func_ov031_020e4514Ev kind:function(arm,size=0x5c) addr:0x020 _ZN19ActorProfileUnkTLKTD1Ev kind:function(arm,size=0x14) addr:0x020e4570 func_ov031_020e4584 kind:function(arm,size=0x10) addr:0x020e4584 func_ov031_020e4594 kind:function(arm,size=0x10) addr:0x020e4594 -_ZN19ActorProfileUnkITBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e45a4 -_ZN19ActorProfileUnkITBM6CreateEv kind:function(arm,size=0x24) addr:0x020e45b0 -_ZN19ActorProfileUnkITBMC1Ev kind:function(arm,size=0x28) addr:0x020e45d4 -_ZN12ActorUnkITBM19func_ov031_020e45fcEv kind:function(arm,size=0x24) addr:0x020e45fc -_ZN12ActorUnkITBMC1Ev kind:function(arm,size=0x140) addr:0x020e4620 -_ZN12ActorUnkITBM19func_ov031_020e4760Ev kind:function(arm,size=0x14) addr:0x020e4760 -_ZN12ActorUnkITBM19func_ov031_020e4774Ev kind:function(arm,size=0x14) addr:0x020e4774 -_ZN12ActorUnkITBM19func_ov031_020e4788Ev kind:function(arm,size=0xa0) addr:0x020e4788 -_ZN12ActorUnkITBMD0Ev kind:function(arm,size=0xa8) addr:0x020e4828 -_ZN12ActorUnkITBM19func_ov031_020e48d0Ev kind:function(arm,size=0xc4) addr:0x020e48d0 -_ZN12ActorUnkITBM19func_ov031_020e4994Ev kind:function(arm,size=0x1c) addr:0x020e4994 -_ZN12ActorUnkITBM19func_ov031_020e49b0Ev kind:function(arm,size=0x70) addr:0x020e49b0 -_ZN12ActorUnkITBM19func_ov031_020e4a20Ev kind:function(arm,size=0x614) addr:0x020e4a20 -_ZN12ActorUnkITBM19func_ov031_020e5034Ev kind:function(arm,size=0x1ec) addr:0x020e5034 -_ZN12ActorUnkITBM19func_ov031_020e5220Ev kind:function(arm,size=0x80) addr:0x020e5220 -_ZN12ActorUnkITBM19func_ov031_020e52a0Ev kind:function(arm,size=0xb4) addr:0x020e52a0 -_ZN12ActorUnkITBM19func_ov031_020e5354Ev kind:function(arm,size=0x74) addr:0x020e5354 -_ZN12ActorUnkITBM19func_ov031_020e53c8Ev kind:function(arm,size=0x1c) addr:0x020e53c8 -_ZN12ActorUnkITBM19func_ov031_020e53e4Ev kind:function(arm,size=0x1c) addr:0x020e53e4 -_ZN12ActorUnkITBM19func_ov031_020e5400Ev kind:function(arm,size=0x4c) addr:0x020e5400 -_ZN12ActorUnkITBM19func_ov031_020e544cEv kind:function(arm,size=0x28) addr:0x020e544c -_ZN12ActorUnkITBMD1Ev kind:function(arm,size=0x14) addr:0x020e5474 -_ZN12ActorUnkITBM19func_ov031_020e5488Ev kind:function(arm,size=0x1c) addr:0x020e5488 -_ZN12ActorUnkITBM19func_ov031_020e54a4Ev kind:function(arm,size=0x30) addr:0x020e54a4 -_ZN12ActorUnkITBM19func_ov031_020e54d4Ev kind:function(arm,size=0x230) addr:0x020e54d4 -_ZN12ActorUnkITBM19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e5704 -_ZN12ActorUnkITBM19func_ov031_020e5710Ev kind:function(arm,size=0x1c) addr:0x020e5710 -_ZN12ActorUnkITBM19func_ov031_020e572cEv kind:function(arm,size=0x1c) addr:0x020e572c -_ZN19ActorProfileUnkITBMD1Ev kind:function(arm,size=0x14) addr:0x020e5748 +_ZN25ActorProfileItemBoomerang10GetProfileEv kind:function(arm,size=0xc) addr:0x020e45a4 +_ZN25ActorProfileItemBoomerang6CreateEv kind:function(arm,size=0x24) addr:0x020e45b0 +_ZN25ActorProfileItemBoomerangC1Ev kind:function(arm,size=0x28) addr:0x020e45d4 +_ZN26ActorItemBoomerang_Unknown19func_ov031_020e45fcEv kind:function(arm,size=0x24) addr:0x020e45fc +_ZN18ActorItemBoomerangC1Ev kind:function(arm,size=0x140) addr:0x020e4620 +_ZN21ActorItemBoomerang_A0D1Ev kind:function(arm,size=0x14) addr:0x020e4760 +_ZN21ActorItemBoomerang_CCD1Ev kind:function(arm,size=0x14) addr:0x020e4774 +_ZN18ActorItemBoomerangD1Ev kind:function(arm,size=0xa0) addr:0x020e4788 +_ZN18ActorItemBoomerangD0Ev kind:function(arm,size=0xa8) addr:0x020e4828 +_ZN18ActorItemBoomerang8vfunc_18Ei kind:function(arm,size=0xc4) addr:0x020e48d0 +_ZN18ActorItemBoomerang8SetStateEs kind:function(arm,size=0x1c) addr:0x020e4994 +_ZN18ActorItemBoomerang19func_ov031_020e49b0Ei kind:function(arm,size=0x70) addr:0x020e49b0 +_ZN18ActorItemBoomerang8vfunc_20Ev kind:function(arm,size=0x614) addr:0x020e4a20 +_ZN18ActorItemBoomerang19func_ov031_020e5034Ei kind:function(arm,size=0x1ec) addr:0x020e5034 +_ZN18ActorItemBoomerang19func_ov031_020e5220Ev kind:function(arm,size=0x80) addr:0x020e5220 +_ZN18ActorItemBoomerang19func_ov031_020e52a0Ev kind:function(arm,size=0xb4) addr:0x020e52a0 +_ZN18ActorItemBoomerang8vfunc_2CEi kind:function(arm,size=0x74) addr:0x020e5354 +_ZN21ActorItemBoomerang_A08vfunc_10EP5Actor kind:function(arm,size=0x1c) addr:0x020e53c8 +_ZN21ActorItemBoomerang_CC8vfunc_10EP5Actor kind:function(arm,size=0x1c) addr:0x020e53e4 +_ZN21ActorItemBoomerang_CC8vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x4c) addr:0x020e5400 +_ZN22ActorItemBoomerang_11CC1EP18ActorItemBoomerang kind:function(arm,size=0x28) addr:0x020e544c +_ZN22ActorItemBoomerang_11CD1Ev kind:function(arm,size=0x14) addr:0x020e5474 +_ZN22ActorItemBoomerang_11CD0Ev kind:function(arm,size=0x1c) addr:0x020e5488 +_ZN22ActorItemBoomerang_11C8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e54a4 +_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x230) addr:0x020e54d4 +_ZN26ActorItemBoomerang_Unknown19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e5704 +_ZN21ActorItemBoomerang_A0D0Ev kind:function(arm,size=0x1c) addr:0x020e5710 +_ZN21ActorItemBoomerang_CCD0Ev kind:function(arm,size=0x1c) addr:0x020e572c +_ZN25ActorProfileItemBoomerangD1Ev kind:function(arm,size=0x14) addr:0x020e5748 func_ov031_020e575c kind:function(arm,size=0x28) addr:0x020e575c func_ov031_020e5784 kind:function(arm,size=0x114) addr:0x020e5784 func_ov031_020e5898 kind:function(arm,size=0x30) addr:0x020e5898 @@ -924,7 +924,7 @@ _ZN18ActorShotArrow_178D1Ev kind:function(arm,size=0x1c) addr:0x020f32c4 _ZN18ActorShotArrow_178D0Ev kind:function(arm,size=0x24) addr:0x020f32e0 _ZN18ActorShotArrow_17819func_ov031_020f3304Ev kind:function(arm,size=0xc) addr:0x020f3304 _ZN18ActorShotArrow_1788vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0xac) addr:0x020f3310 -_ZN18ActorShotArrow_1788vfunc_0CEv kind:function(arm,size=0x350) addr:0x020f33bc +_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x350) addr:0x020f33bc _ZN18ActorShotArrow_194C1EP14ActorShotArrow kind:function(arm,size=0x40) addr:0x020f370c _ZN18ActorShotArrow_19419func_ov031_020f374cEP5Actor kind:function(arm,size=0x164) addr:0x020f374c _ZN18ActorShotArrow_1948vfunc_10EP5Actor kind:function(arm,size=0x388) addr:0x020f38b0 @@ -2073,7 +2073,7 @@ __sinit_ov031_02110fe8 kind:function(arm,size=0x10) addr:0x02110fe8 __sinit_ActorUnkBOMB.cpp kind:function(arm,size=0x50) addr:0x02110ff8 __sinit_ActorUnkBLST.cpp kind:function(arm,size=0x50) addr:0x02111048 __sinit_ActorUnkTLKT.cpp kind:function(arm,size=0x50) addr:0x02111098 -__sinit_ActorUnkITBM.cpp kind:function(arm,size=0x50) addr:0x021110e8 +__sinit_ActorItemBoomerang.cpp kind:function(arm,size=0x50) addr:0x021110e8 __sinit_ActorUnkITTD.cpp kind:function(arm,size=0x74) addr:0x02111138 __sinit_ActorUnkSWBM.cpp kind:function(arm,size=0x74) addr:0x021111ac __sinit_ActorUnkROCK.cpp kind:function(arm,size=0x50) addr:0x02111220 @@ -2137,7 +2137,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x02112724 .p__sinit_ActorUnkBOMB.cpp kind:data(word) addr:0x0211279c .p__sinit_ActorUnkBLST.cpp kind:data(word) addr:0x021127a0 .p__sinit_ActorUnkTLKT.cpp kind:data(word) addr:0x021127a4 -.p__sinit_ActorUnkITBM.cpp kind:data(word) addr:0x021127a8 +.p__sinit_ActorItemBoomerang.cpp kind:data(word) addr:0x021127a8 .p__sinit_ActorUnkITTD.cpp kind:data(word) addr:0x021127ac .p__sinit_ActorUnkSWBM.cpp kind:data(word) addr:0x021127b0 .p__sinit_ActorUnkROCK.cpp kind:data(word) addr:0x021127b4 @@ -2256,13 +2256,13 @@ _ZTV19data_ov031_02112d84 kind:data(any) addr:0x02112d84 _ZTV19data_ov031_02112de0 kind:data(any) addr:0x02112de0 _ZTV19data_ov031_02112e4c kind:data(any) addr:0x02112e4c _ZTV19data_ov031_02112e70 kind:data(any) addr:0x02112e70 -data_ov031_02112eec kind:data(any) addr:0x02112eec -data_ov031_02112f04 kind:data(any) addr:0x02112f04 -data_ov031_02112f20 kind:data(any) addr:0x02112f20 -data_ov031_02112f3c kind:data(any) addr:0x02112f3c -_ZTV19data_ov031_02112f50 kind:data(any) addr:0x02112f50 -_ZTV19data_ov031_02112f74 kind:data(any) addr:0x02112f74 -data_ov031_02112fd8 kind:data(any) addr:0x02112fd8 +_ZTV19data_ov031_02112eec kind:data(any) addr:0x02112ee4 +_ZTV21ActorItemBoomerang_A0 kind:data(any) addr:0x02112efc +_ZTV22ActorItemBoomerang_11C kind:data(any) addr:0x02112f18 +_ZTV21ActorItemBoomerang_CC kind:data(any) addr:0x02112f34 +_ZTV25ActorProfileItemBoomerang kind:data(any) addr:0x02112f50 +_ZTV18ActorItemBoomerang kind:data(any) addr:0x02112f74 +_ZTV19data_ov031_02112fd8 kind:data(any) addr:0x02112fd0 data_ov031_02112fdc kind:data(any) addr:0x02112fdc data_ov031_02112ff4 kind:data(any) addr:0x02112ff4 _ZTV19data_ov031_02113008 kind:data(any) addr:0x02113008 @@ -2529,9 +2529,9 @@ _ZN15ProfileInstanceI19ActorProfileUnkBLSTE8sProfileE kind:bss addr:0x02116460 _ZGVN15ProfileInstanceI19ActorProfileUnkTLKTE8sProfileE kind:bss addr:0x0211649c @10787 kind:bss addr:0x021164a0 _ZN15ProfileInstanceI19ActorProfileUnkTLKTE8sProfileE kind:bss addr:0x021164ac -_ZGVN15ProfileInstanceI19ActorProfileUnkITBME8sProfileE kind:bss addr:0x021164e8 +_ZGVN15ProfileInstanceI25ActorProfileItemBoomerangE8sProfileE kind:bss addr:0x021164e8 @10793 kind:bss addr:0x021164ec -_ZN15ProfileInstanceI19ActorProfileUnkITBME8sProfileE kind:bss addr:0x021164f8 +_ZN15ProfileInstanceI25ActorProfileItemBoomerangE8sProfileE kind:bss addr:0x021164f8 _ZGVN15ProfileInstanceI19ActorProfileUnkITTDE8sProfileE kind:bss addr:0x02116534 @10799 kind:bss addr:0x02116538 _ZN15ProfileInstanceI19ActorProfileUnkITTDE8sProfileE kind:bss addr:0x02116544 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 21caf7b8..7101dd4d 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -128,7 +128,7 @@ func_01ffc520 kind:function(arm,size=0x5c) addr:0x01ffc520 _ZN11ModelRender8vfunc_0CEv kind:function(arm,size=0x24) addr:0x01ffc57c func_01ffc5a0 kind:function(arm,size=0x94) addr:0x01ffc5a0 func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634 -func_01ffc6d4 kind:function(arm,size=0x70) addr:0x01ffc6d4 +_ZN19UnkSystem6_Derived213func_01ffc6d4EtP7VecFx32 kind:function(arm,size=0x70) addr:0x01ffc6d4 func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744 func_01ffc768 kind:function(arm,size=0x3c) addr:0x01ffc768 _ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 13b89c7b..9bd3f599 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -1379,10 +1379,10 @@ _ZN19func_ov000_0207cce0D1Ev kind:function(arm,size=0x14) addr:0x0207cce0 _ZN19func_ov000_0207ccf4D0Ev kind:function(arm,size=0x1c) addr:0x0207ccf4 _ZN19func_ov000_0207cd10D1Ev kind:function(arm,size=0x30) addr:0x0207cd10 _ZN19func_ov000_0207cd40D0Ev kind:function(arm,size=0x38) addr:0x0207cd40 -_ZN23ActorShotArrow_194_BaseD2Ev kind:function(arm,size=0x30) addr:0x0207cd78 +_ZN24UnkStruct_ov031_Items_01D2Ev kind:function(arm,size=0x30) addr:0x0207cd78 func_ov000_0207cda8 kind:function(arm,size=0x1c) addr:0x0207cda8 func_ov000_0207cdc4 kind:function(arm,size=0x10) addr:0x0207cdc4 -_ZN23ActorShotArrow_194_Base8vfunc_08Ev kind:function(arm,size=0x38) addr:0x0207cdd4 +_ZN24UnkStruct_ov031_Items_018vfunc_08Ev kind:function(arm,size=0x38) addr:0x0207cdd4 func_ov000_0207ce0c kind:function(arm,size=0x80) addr:0x0207ce0c func_ov000_0207ce8c kind:function(arm,size=0x40) addr:0x0207ce8c func_ov000_0207cecc kind:function(arm,size=0x80) addr:0x0207cecc @@ -1410,9 +1410,9 @@ func_ov000_0207d3b4 kind:function(arm,size=0x88) addr:0x0207d3b4 func_ov000_0207d43c kind:function(arm,size=0x260) addr:0x0207d43c func_ov000_0207d69c kind:function(arm,size=0x4) addr:0x0207d69c _ZN19func_ov000_0207d6a0D0Ev kind:function(arm,size=0x14) addr:0x0207d6a0 -_ZN23ActorShotArrow_178_BaseD2Ev kind:function(arm,size=0x4) addr:0x0207d6b4 +_ZN24UnkStruct_ov031_Items_00D2Ev kind:function(arm,size=0x4) addr:0x0207d6b4 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207d6b8 -_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207d6c0 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x8) addr:0x0207d6c0 _ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev 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 @@ -1472,7 +1472,7 @@ func_ov000_0207fa64 kind:function(arm,size=0xac) addr:0x0207fa64 func_ov000_0207fb10 kind:function(arm,size=0x84) addr:0x0207fb10 func_ov000_0207fb94 kind:function(arm,size=0x84) addr:0x0207fb94 func_ov000_0207fc18 kind:function(arm,size=0x2c) addr:0x0207fc18 -_ZN18UnkStruct_027e09c019func_ov000_0207e58cE8ActorRefihP18ActorShotArrow_194 kind:function(arm,size=0xa4) addr:0x0207fc44 +_ZN18UnkStruct_027e09c019func_ov000_0207e58cE8ActorRefihP24UnkStruct_ov031_Items_01 kind:function(arm,size=0xa4) addr:0x0207fc44 func_ov000_0207fce8 kind:function(arm,size=0x38) addr:0x0207fce8 func_ov000_0207fd20 kind:function(arm,size=0x50) addr:0x0207fd20 func_ov000_0207fd70 kind:function(arm,size=0x14) addr:0x0207fd70 @@ -2303,7 +2303,7 @@ func_ov000_02099888 kind:function(arm,size=0x80) addr:0x02099888 func_ov000_02099908 kind:function(arm,size=0x80) addr:0x02099908 func_ov000_02099988 kind:function(arm,size=0x64) addr:0x02099988 func_ov000_020999ec kind:function(arm,size=0x64) addr:0x020999ec -_ZN23ActorShotArrow_178_BaseC2Ev kind:function(arm,size=0x18) addr:0x02099a50 +_ZN24UnkStruct_ov031_Items_00C2Ev kind:function(arm,size=0x18) addr:0x02099a50 func_ov000_02099a68 kind:function(arm,size=0x18) addr:0x02099a68 func_ov000_02099a80 kind:function(arm,size=0x80) addr:0x02099a80 _ZN19func_ov000_02099b00D1Ev kind:function(arm,size=0x14) addr:0x02099b00 @@ -2553,7 +2553,7 @@ _ZN9MapObject19func_ov000_0209d0bcEP8Vec2bCppPS_ kind:function(arm,size=0x58) ad _ZN9MapObject19func_ov000_0209d114Ev kind:function(arm,size=0x18) addr:0x0209e8d8 _ZN9MapObject19func_ov000_0209d12cEv kind:function(arm,size=0x18) addr:0x0209e8f0 _ZN9MapObject19func_ov000_0209d144EP5Vec2sii kind:function(arm,size=0x88) addr:0x0209e908 -_ZN9MapObject8vfunc_1CEv kind:function(arm,size=0x8) addr:0x0209e990 +_ZN9MapObject8vfunc_1CE8ActorRefiP7VecFx32 kind:function(arm,size=0x8) addr:0x0209e990 _ZN9MapObject8vfunc_20Ev kind:function(arm,size=0x4) addr:0x0209e998 _ZN9MapObject8vfunc_24Ev kind:function(arm,size=0xc) addr:0x0209e99c _ZN9MapObject8vfunc_28Ev kind:function(arm,size=0x8) addr:0x0209e9a8 diff --git a/config/jp/arm9/overlays/ov031/delinks.txt b/config/jp/arm9/overlays/ov031/delinks.txt index 59e4d683..cfa6888b 100644 --- a/config/jp/arm9/overlays/ov031/delinks.txt +++ b/config/jp/arm9/overlays/ov031/delinks.txt @@ -26,7 +26,7 @@ src/031_Land/Actor/ActorUnkTLKT.cpp: .ctor start:0x02114530 end:0x02114534 .bss start:0x0211823c end:0x02118288 -src/031_Land/Actor/ActorUnkITBM.cpp: +src/031_Land/Actor/ActorItemBoomerang.cpp: .text start:0x020e5f90 end:0x020e7148 .init start:0x02112e58 end:0x02112ea8 .ctor start:0x02114534 end:0x02114538 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 0cc18d77..dc9906e2 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -420,35 +420,35 @@ _ZN12ActorUnkTLKT19func_ov031_020e4514Ev kind:function(arm,size=0x5c) addr:0x020 _ZN19ActorProfileUnkTLKTD1Ev kind:function(arm,size=0x14) addr:0x020e5f5c func_ov031_020e5f70 kind:function(arm,size=0x10) addr:0x020e5f70 func_ov031_020e5f80 kind:function(arm,size=0x10) addr:0x020e5f80 -_ZN19ActorProfileUnkITBM10GetProfileEv kind:function(arm,size=0xc) addr:0x020e5f90 -_ZN19ActorProfileUnkITBM6CreateEv kind:function(arm,size=0x24) addr:0x020e5f9c -_ZN19ActorProfileUnkITBMC1Ev kind:function(arm,size=0x28) addr:0x020e5fc0 -_ZN12ActorUnkITBM19func_ov031_020e45fcEv kind:function(arm,size=0x24) addr:0x020e5fe8 -_ZN12ActorUnkITBMC1Ev kind:function(arm,size=0x140) addr:0x020e600c -_ZN12ActorUnkITBM19func_ov031_020e4760Ev kind:function(arm,size=0x14) addr:0x020e614c -_ZN12ActorUnkITBM19func_ov031_020e4774Ev kind:function(arm,size=0x14) addr:0x020e6160 -_ZN12ActorUnkITBM19func_ov031_020e4788Ev kind:function(arm,size=0xa0) addr:0x020e6174 -_ZN12ActorUnkITBMD0Ev kind:function(arm,size=0xa8) addr:0x020e6214 -_ZN12ActorUnkITBM19func_ov031_020e48d0Ev kind:function(arm,size=0xc4) addr:0x020e62bc -_ZN12ActorUnkITBM19func_ov031_020e4994Ev kind:function(arm,size=0x1c) addr:0x020e6380 -_ZN12ActorUnkITBM19func_ov031_020e49b0Ev kind:function(arm,size=0x70) addr:0x020e639c -_ZN12ActorUnkITBM19func_ov031_020e4a20Ev kind:function(arm,size=0x614) addr:0x020e640c -_ZN12ActorUnkITBM19func_ov031_020e5034Ev kind:function(arm,size=0x1ec) addr:0x020e6a20 -_ZN12ActorUnkITBM19func_ov031_020e5220Ev kind:function(arm,size=0x80) addr:0x020e6c0c -_ZN12ActorUnkITBM19func_ov031_020e52a0Ev kind:function(arm,size=0xb4) addr:0x020e6c8c -_ZN12ActorUnkITBM19func_ov031_020e5354Ev kind:function(arm,size=0x74) addr:0x020e6d40 -_ZN12ActorUnkITBM19func_ov031_020e53c8Ev kind:function(arm,size=0x1c) addr:0x020e6db4 -_ZN12ActorUnkITBM19func_ov031_020e53e4Ev kind:function(arm,size=0x1c) addr:0x020e6dd0 -_ZN12ActorUnkITBM19func_ov031_020e5400Ev kind:function(arm,size=0x4c) addr:0x020e6dec -_ZN12ActorUnkITBM19func_ov031_020e544cEv kind:function(arm,size=0x28) addr:0x020e6e38 -_ZN12ActorUnkITBMD1Ev kind:function(arm,size=0x14) addr:0x020e6e60 -_ZN12ActorUnkITBM19func_ov031_020e5488Ev kind:function(arm,size=0x1c) addr:0x020e6e74 -_ZN12ActorUnkITBM19func_ov031_020e54a4Ev kind:function(arm,size=0x30) addr:0x020e6e90 -_ZN12ActorUnkITBM19func_ov031_020e54d4Ev kind:function(arm,size=0x230) addr:0x020e6ec0 -_ZN12ActorUnkITBM19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e70f0 -_ZN12ActorUnkITBM19func_ov031_020e5710Ev kind:function(arm,size=0x1c) addr:0x020e70fc -_ZN12ActorUnkITBM19func_ov031_020e572cEv kind:function(arm,size=0x1c) addr:0x020e7118 -_ZN19ActorProfileUnkITBMD1Ev kind:function(arm,size=0x14) addr:0x020e7134 +_ZN25ActorProfileItemBoomerang10GetProfileEv kind:function(arm,size=0xc) addr:0x020e5f90 +_ZN25ActorProfileItemBoomerang6CreateEv kind:function(arm,size=0x24) addr:0x020e5f9c +_ZN25ActorProfileItemBoomerangC1Ev kind:function(arm,size=0x28) addr:0x020e5fc0 +_ZN26ActorItemBoomerang_Unknown19func_ov031_020e45fcEv kind:function(arm,size=0x24) addr:0x020e5fe8 +_ZN18ActorItemBoomerangC1Ev kind:function(arm,size=0x140) addr:0x020e600c +_ZN21ActorItemBoomerang_A0D1Ev kind:function(arm,size=0x14) addr:0x020e614c +_ZN21ActorItemBoomerang_CCD1Ev kind:function(arm,size=0x14) addr:0x020e6160 +_ZN18ActorItemBoomerangD1Ev kind:function(arm,size=0xa0) addr:0x020e6174 +_ZN18ActorItemBoomerangD0Ev kind:function(arm,size=0xa8) addr:0x020e6214 +_ZN18ActorItemBoomerang8vfunc_18Ei kind:function(arm,size=0xc4) addr:0x020e62bc +_ZN18ActorItemBoomerang8SetStateEs kind:function(arm,size=0x1c) addr:0x020e6380 +_ZN18ActorItemBoomerang19func_ov031_020e49b0Ei kind:function(arm,size=0x70) addr:0x020e639c +_ZN18ActorItemBoomerang8vfunc_20Ev kind:function(arm,size=0x614) addr:0x020e640c +_ZN18ActorItemBoomerang19func_ov031_020e5034Ei kind:function(arm,size=0x1ec) addr:0x020e6a20 +_ZN18ActorItemBoomerang19func_ov031_020e5220Ev kind:function(arm,size=0x80) addr:0x020e6c0c +_ZN18ActorItemBoomerang19func_ov031_020e52a0Ev kind:function(arm,size=0xb4) addr:0x020e6c8c +_ZN18ActorItemBoomerang8vfunc_2CEi kind:function(arm,size=0x74) addr:0x020e6d40 +_ZN21ActorItemBoomerang_A08vfunc_10EP5Actor kind:function(arm,size=0x1c) addr:0x020e6db4 +_ZN21ActorItemBoomerang_CC8vfunc_10EP5Actor kind:function(arm,size=0x1c) addr:0x020e6dd0 +_ZN21ActorItemBoomerang_CC8vfunc_0CEP5ActorP7VecFx32 kind:function(arm,size=0x4c) addr:0x020e6dec +_ZN22ActorItemBoomerang_11CC1EP18ActorItemBoomerang kind:function(arm,size=0x28) addr:0x020e6e38 +_ZN22ActorItemBoomerang_11CD1Ev kind:function(arm,size=0x14) addr:0x020e6e60 +_ZN22ActorItemBoomerang_11CD0Ev kind:function(arm,size=0x1c) addr:0x020e6e74 +_ZN22ActorItemBoomerang_11C8vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x30) addr:0x020e6e90 +_ZN22ActorItemBoomerang_11C8vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x230) addr:0x020e6ec0 +_ZN26ActorItemBoomerang_Unknown19func_ov031_020e5704Ev kind:function(arm,size=0xc) addr:0x020e70f0 +_ZN21ActorItemBoomerang_A0D0Ev kind:function(arm,size=0x1c) addr:0x020e70fc +_ZN21ActorItemBoomerang_CCD0Ev kind:function(arm,size=0x1c) addr:0x020e7118 +_ZN25ActorProfileItemBoomerangD1Ev kind:function(arm,size=0x14) addr:0x020e7134 func_ov031_020e7148 kind:function(arm,size=0x28) addr:0x020e7148 func_ov031_020e7170 kind:function(arm,size=0x114) addr:0x020e7170 func_ov031_020e7284 kind:function(arm,size=0x30) addr:0x020e7284 @@ -924,7 +924,7 @@ _ZN18ActorShotArrow_178D1Ev kind:function(arm,size=0x1c) addr:0x020f4cc0 _ZN18ActorShotArrow_178D0Ev kind:function(arm,size=0x24) addr:0x020f4cdc _ZN18ActorShotArrow_17819func_ov031_020f3304Ev kind:function(arm,size=0xc) addr:0x020f4d00 _ZN18ActorShotArrow_1788vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0xac) addr:0x020f4d0c -_ZN18ActorShotArrow_1788vfunc_0CEv kind:function(arm,size=0x3f8) addr:0x020f4db8 +_ZN18ActorShotArrow_1788vfunc_0CEPK24UnkStruct_ov031_020e54d4i kind:function(arm,size=0x3f8) addr:0x020f4db8 _ZN18ActorShotArrow_194C1EP14ActorShotArrow kind:function(arm,size=0x40) addr:0x020f51b0 _ZN18ActorShotArrow_19419func_ov031_020f374cEP5Actor kind:function(arm,size=0x164) addr:0x020f51f0 _ZN18ActorShotArrow_1948vfunc_10EP5Actor kind:function(arm,size=0x388) addr:0x020f5354 @@ -2070,7 +2070,7 @@ __sinit_ov031_02112d58 kind:function(arm,size=0x10) addr:0x02112d58 __sinit_ActorUnkBOMB.cpp kind:function(arm,size=0x50) addr:0x02112d68 __sinit_ActorUnkBLST.cpp kind:function(arm,size=0x50) addr:0x02112db8 __sinit_ActorUnkTLKT.cpp kind:function(arm,size=0x50) addr:0x02112e08 -__sinit_ActorUnkITBM.cpp kind:function(arm,size=0x50) addr:0x02112e58 +__sinit_ActorItemBoomerang.cpp kind:function(arm,size=0x50) addr:0x02112e58 __sinit_ActorUnkITTD.cpp kind:function(arm,size=0x74) addr:0x02112ea8 __sinit_ActorUnkSWBM.cpp kind:function(arm,size=0x74) addr:0x02112f1c __sinit_ActorUnkROCK.cpp kind:function(arm,size=0x50) addr:0x02112f90 @@ -2134,7 +2134,7 @@ __sinit_MapObjectUnkSWFS.cpp kind:function(arm,size=0x70) addr:0x021144b0 .p__sinit_ActorUnkBOMB.cpp kind:data(word) addr:0x02114528 .p__sinit_ActorUnkBLST.cpp kind:data(word) addr:0x0211452c .p__sinit_ActorUnkTLKT.cpp kind:data(word) addr:0x02114530 -.p__sinit_ActorUnkITBM.cpp kind:data(word) addr:0x02114534 +.p__sinit_ActorItemBoomerang.cpp kind:data(word) addr:0x02114534 .p__sinit_ActorUnkITTD.cpp kind:data(word) addr:0x02114538 .p__sinit_ActorUnkSWBM.cpp kind:data(word) addr:0x0211453c .p__sinit_ActorUnkROCK.cpp kind:data(word) addr:0x02114540 @@ -2525,9 +2525,9 @@ _ZN15ProfileInstanceI19ActorProfileUnkBLSTE8sProfileE kind:bss addr:0x02118200 _ZGVN15ProfileInstanceI19ActorProfileUnkTLKTE8sProfileE kind:bss addr:0x0211823c @30787 kind:bss addr:0x02118240 _ZN15ProfileInstanceI19ActorProfileUnkTLKTE8sProfileE kind:bss addr:0x0211824c -_ZGVN15ProfileInstanceI19ActorProfileUnkITBME8sProfileE kind:bss addr:0x02118288 +_ZGVN15ProfileInstanceI25ActorProfileItemBoomerangE8sProfileE kind:bss addr:0x02118288 @30793 kind:bss addr:0x0211828c -_ZN15ProfileInstanceI19ActorProfileUnkITBME8sProfileE kind:bss addr:0x02118298 +_ZN15ProfileInstanceI25ActorProfileItemBoomerangE8sProfileE kind:bss addr:0x02118298 _ZGVN15ProfileInstanceI19ActorProfileUnkITTDE8sProfileE kind:bss addr:0x021182d4 @30799 kind:bss addr:0x021182d8 _ZN15ProfileInstanceI19ActorProfileUnkITTDE8sProfileE kind:bss addr:0x021182e4 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index dfe3a0d1..4af7e49c 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -172,7 +172,7 @@ public: /* 4C */ virtual ~Actor(); /* 54 */ - unk32 func_01fff5d0(unk32 param1, unk32 param2); + bool func_01fff5d0(unk32 param1, unk32 param2); void ResetFlags() { *(u32 *) this->mFlags = 0; @@ -201,6 +201,7 @@ public: // overlay 0 bool func_ov000_0205cbc4(u32 param1, VecFx32 *param2); + unk32 func_ov000_0207df88(Cylinder *param1, unk32 param2); unk32 func_ov000_0207e294(Cylinder *param1); void func_ov000_0209848c(ActorProfile *param1); void func_ov000_020984b0(); diff --git a/include/Actor/ActorItemBoomerang.hpp b/include/Actor/ActorItemBoomerang.hpp new file mode 100644 index 00000000..32d39534 --- /dev/null +++ b/include/Actor/ActorItemBoomerang.hpp @@ -0,0 +1,109 @@ +#pragma once + +#include "Actor/Actor.hpp" +#include "Actor/ActorProfile.hpp" +#include "Render/ModelRender.hpp" +#include "Unknown/UnkStruct_ov031_Items.hpp" +#include "global.h" +#include "types.h" + +enum ActorItemBoomerangState_ { + ActorItemBoomerangState_0, + ActorItemBoomerangState_1, + ActorItemBoomerangState_MAX +}; + +class ActorItemBoomerang; + +class ActorItemBoomerang_Unknown { // inherits from UnkStruct_PlayerGet_ec ? +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ VecFx32 mUnk_04; + /* 10 */ + + void func_ov031_020e45fc(); + void func_ov031_020e5704(); +}; + +class ActorItemBoomerang_11C : public UnkStruct_ov031_Items_00 { +public: + /* 00 (vtable) */ + /* 04 */ STRUCT_PAD(0x04, 0x08); + /* 08 */ ActorItemBoomerang *mUnk_08; + /* 0C */ + + ActorItemBoomerang_11C(ActorItemBoomerang *param1); + + /* 00 */ virtual ~ActorItemBoomerang_11C() override; + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) override; +}; + +class ActorItemBoomerang_A0 : public UnkStruct_ov031_Items_01 { +public: + /* 00 (vtable) */ + /* 04 */ + + /* 10 */ virtual void vfunc_10(Actor *actor) override; +}; + +class ActorItemBoomerang_CC : public UnkStruct_ov031_Items_01 { +public: + /* 00 (vtable) */ + /* 2C */ unk32 mUnk_2C; + /* 30 */ ActorItemBoomerang_Unknown mUnk_30; + /* 40 */ + + ActorItemBoomerang_CC() : + mUnk_2C(0x0) {} + + /* 0C */ virtual bool vfunc_0C(Actor *actor, VecFx32 *param2) override; + /* 10 */ virtual void vfunc_10(Actor *actor) override; +}; + +class ActorItemBoomerang : public Actor { +public: + /* 000 (base) */ + /* 094 */ UnkSystem6_Derived2 mUnk_94; + /* 09C */ bool mUnk_9C; + /* 09D */ STRUCT_PAD(0x9D, 0xA0); + /* 0A0 */ ActorItemBoomerang_A0 mUnk_A0; + /* 0CC */ ActorItemBoomerang_CC mUnk_CC; + /* 10C */ VecFx32 mUnk_10C; + /* 118 */ unk32 mUnk_118; + /* 11C */ ActorItemBoomerang_11C mUnk_11C; + /* 128 */ u32 mUnk_128; + /* 12C */ UnkStruct_PlayerGet_ec mUnk_12C[0x3]; + /* 138 */ u16 mUnk_138; // timer ? + /* 13A */ u16 mUnk_13A; + /* 13C */ u16 mUnk_13C; + /* 13E */ STRUCT_PAD(0x13E, 0x140); + /* 140 */ UnkStruct_ov031_Items_02 mUnk_140; + /* 14C */ STRUCT_PAD(0x14C, 0x188); + /* 188 */ + + ActorItemBoomerang(); + + /* 18 */ virtual bool vfunc_18(unk32 param1) override; + /* 20 */ virtual void vfunc_20() override; + /* 2C */ virtual void vfunc_2C(unk32 param1) override; + /* 4C */ virtual ~ActorItemBoomerang() override; + + void SetState(ActorState state); + void func_ov031_020e49b0(unk32 param1); + void func_ov031_020e5034(unk32 param1); + void func_ov031_020e5220(); + void func_ov031_020e52a0(); +}; + +class ActorProfileItemBoomerang : public ActorProfile { +public: + /* 00 (base) */ + + ActorProfileItemBoomerang(); + ~ActorProfileItemBoomerang(); + + /* 0C */ virtual Actor *Create(); + + static ActorProfileItemBoomerang *GetProfile(); +}; diff --git a/include/Actor/ActorShotArrow.hpp b/include/Actor/ActorShotArrow.hpp index a9023ced..12344032 100644 --- a/include/Actor/ActorShotArrow.hpp +++ b/include/Actor/ActorShotArrow.hpp @@ -4,6 +4,7 @@ #include "Actor/ActorProfile.hpp" #include "Render/ModelRender.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_ov031_Items.hpp" #include "global.h" #include "types.h" @@ -35,19 +36,7 @@ public: ActorShotArrow_140(Actor *param1); }; -class ActorShotArrow_178_Base : public UnkStruct_027e0ce0_38_Base { -public: - /* 00 (vtable) */ - /* 04 */ - - ActorShotArrow_178_Base(); - - // data_ov000_020b30d0 - /* 00 */ virtual ~ActorShotArrow_178_Base(); - /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; -}; - -class ActorShotArrow_178 : public ActorShotArrow_178_Base { +class ActorShotArrow_178 : public UnkStruct_ov031_Items_00 { public: /* 00 (vtable) */ /* 04 */ STRUCT_PAD(0x04, 0x08); @@ -61,44 +50,12 @@ public: // data_ov031_02114288 /* 00 */ virtual ~ActorShotArrow_178() override; /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; - /* 0C */ virtual bool vfunc_0C() override; + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) override; void func_ov031_020f3304(); }; -class ActorShotArrow_194_Base { -public: - /* 00 (vtable) */ - /* 04 */ ActorRef mUnk_04; - /* 08 */ unk16 mUnk_08; - /* 08 */ unk16 mUnk_0A; - /* 0C */ VecFx32 mUnk_0C; - /* 18 */ fx32 mUnk_18; - /* 1C */ unk32 mUnk_1C; - /* 20 */ unk32 mUnk_20; - /* 24 */ unk32 mUnk_24; - /* 28 */ unk32 mUnk_28; - /* 2C */ - - ActorShotArrow_194_Base() { - this->mUnk_04 = 0; - this->mUnk_08 = 0; - VecFx32_Init(0, 0, 0, &this->mUnk_0C); - this->mUnk_18 = 0; - this->mUnk_1C = 0; - this->mUnk_20 = 0; - this->mUnk_24 = 0; - this->mUnk_28 = 0; - } - - // data_ov000_020b27c8 - /* 00 */ virtual ~ActorShotArrow_194_Base(); - /* 08 */ virtual void vfunc_08(); - /* 0C */ virtual bool vfunc_0C(Actor *param1, VecFx32 *vector); - /* 10 */ virtual void vfunc_10(Actor *actor); -}; - -class ActorShotArrow_194 : public ActorShotArrow_194_Base { +class ActorShotArrow_194 : public UnkStruct_ov031_Items_01 { public: /* 00 (base) */ /* 2C */ ActorShotArrow *mUnk_2C; @@ -138,15 +95,6 @@ public: } }; -class ActorShotArrow_1DC { -public: - /* 00 */ VecFx32 mUnk_00; - /* 0C */ - - ActorShotArrow_1DC(unk32 param1, unk32 param2); - ~ActorShotArrow_1DC(); -}; - class ActorShotArrow : public Actor { public: /* 000 (base) */ @@ -167,7 +115,7 @@ public: /* 178 */ ActorShotArrow_178 mUnk_178; /* 194 */ ActorShotArrow_194 mUnk_194; /* 1C8 */ ActorShotArrow_1C8 mUnk_1C8; - /* 1DC */ ActorShotArrow_1DC mUnk_1DC; + /* 1DC */ UnkStruct_ov031_Items_02 mUnk_1DC; /* 1E0 */ STRUCT_PAD(0x1E8, 0x224); /* 224 */ Mat4x3p *mUnk_224; /* 228 */ Mat4x3p mUnk_228; diff --git a/include/Actor/ActorUnkITBM.hpp b/include/Actor/ActorUnkITBM.hpp deleted file mode 100644 index 3e1d7538..00000000 --- a/include/Actor/ActorUnkITBM.hpp +++ /dev/null @@ -1,63 +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 ActorUnkITBM_C4 : public Actor_C4 { -public: - ActorUnkITBM_C4(Actor *param1); - - /* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override; - /* 04 */ virtual void vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0C(unk32 param1) override; -}; - -class ActorUnkITBM : public Actor { -public: - /* 00 (base) */ - /* 94 */ - - ActorUnkITBM(); - - /* 4C */ virtual ~ActorUnkITBM() override; - - void func_ov031_020e45fc(void); - void func_ov031_020e4760(void); - void func_ov031_020e4774(void); - void func_ov031_020e4788(void); - void func_ov031_020e48d0(void); - void func_ov031_020e4994(void); - void func_ov031_020e49b0(void); - void func_ov031_020e4a20(void); - void func_ov031_020e5034(void); - void func_ov031_020e5220(void); - void func_ov031_020e52a0(void); - void func_ov031_020e5354(void); - void func_ov031_020e53c8(void); - void func_ov031_020e53e4(void); - void func_ov031_020e5400(void); - void func_ov031_020e544c(void); - void func_ov031_020e5488(void); - void func_ov031_020e54a4(void); - void func_ov031_020e54d4(void); - void func_ov031_020e5704(void); - void func_ov031_020e5710(void); - void func_ov031_020e572c(void); -}; - -class ActorProfileUnkITBM : public ActorProfile { -public: - /* 00 (base) */ - - ActorProfileUnkITBM(); - ~ActorProfileUnkITBM(); - - /* 0C */ virtual Actor *Create(); - - static ActorProfileUnkITBM *GetProfile(); -}; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 11f74025..9efca9ab 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -139,7 +139,7 @@ public: /* 10 */ virtual void vfunc_10(); /* 14 */ virtual void vfunc_14(); /* 18 */ virtual void vfunc_18(s8 *param1, s8 param2); - /* 1C */ virtual bool vfunc_1C(); + /* 1C */ virtual bool vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3); /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual unk32 vfunc_28(); diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index 8fbaebd4..dc6f450c 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -96,6 +96,8 @@ public: // data_ov000_020b1968 /* 00 */ virtual ~UnkSystem6_Derived2() {} /* 0C */ virtual void vfunc_0C() override; + + void func_01ffc6d4(u16 angle, VecFx32 *pos); }; class UnkSystem5 { diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index e7c254c5..b389d8b8 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -909,7 +909,11 @@ extern "C" void func_ov000_02072fd0(UnkStackStruct1 *); struct UnkSystem7_UnkStruct_00 { /* 00 */ STRUCT_PAD(0x00, 0x24); /* 24 */ unk32 mUnk_24; - /* 28 */ STRUCT_PAD(0x28, 0xA4); + /* 28 */ unk32 mUnk_28; + /* 2C */ unk32 mUnk_2C; + /* 30 */ unk32 mUnk_30; + /* 34 */ STRUCT_PAD(0x34, 0xA0); + /* A0 */ unk32 mUnk_A0; /* A4 */ unk16 mUnk_A4; void func_ov000_02052c48(VecFx32 *param1, VecFx32 *param2); diff --git a/include/Unknown/UnkStruct_027e09c0.hpp b/include/Unknown/UnkStruct_027e09c0.hpp index 05353b2e..3c7b55eb 100644 --- a/include/Unknown/UnkStruct_027e09c0.hpp +++ b/include/Unknown/UnkStruct_027e09c0.hpp @@ -17,7 +17,7 @@ public: // overlay 0 void func_ov000_0207da40(); - void func_ov000_0207e58c(ActorRef param1, unk32 param2, u8 param3, ActorShotArrow_194 *param4); + void func_ov000_0207e58c(ActorRef param1, unk32 param2, u8 param3, UnkStruct_ov031_Items_01 *param4); // overlay 1 void func_ov001_020be394(); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 409460c9..b37a2e32 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -81,6 +81,12 @@ public: /* 20 */ }; +class UnkStruct_ov031_020e54d4 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x08); + /* 08 */ u32 mUnk_08; +}; + class UnkStruct_027e0ce0_38_Base { public: /* 00 (vtable) */ @@ -89,7 +95,7 @@ public: // data_ov000_020b2838 /* 00 */ virtual ~UnkStruct_027e0ce0_38_Base(); /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1); - /* 0C */ virtual bool vfunc_0C(); + /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2); /* 10 */ virtual void vfunc_10(); /* 14 */ }; @@ -439,10 +445,12 @@ public: void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, u16 param3); void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, void *param3); - void func_ov000_0208bc1c(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6); + bool func_ov000_0208bc1c(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6); void func_ov000_0208bc9c(unk32 param1, unk32 param2); void func_ov000_0208bd30(bool param1, unk32 param2, unk32 param3, unk32 param4); + G3d_Model *func_ov000_0208ed30(unk32 param1, unk32 param2, char *param3); + static UnkStruct_027e0ce0_34 *func_ov000_0205c904(); // overlay 1 diff --git a/include/Unknown/UnkStruct_027e0cec.hpp b/include/Unknown/UnkStruct_027e0cec.hpp index fd1afe89..f1a902d8 100644 --- a/include/Unknown/UnkStruct_027e0cec.hpp +++ b/include/Unknown/UnkStruct_027e0cec.hpp @@ -13,6 +13,8 @@ public: void func_ov000_0209ff24(unk32 param1, VecFx32 *param2, VecFx16 *param3, unk32 param4); void func_ov000_0209ff8c(UnkStruct_PlayerGet_ec *param1, unk32 param2, VecFx32 *param3, unk32 param4); void func_ov000_020a0000(UnkStruct_PlayerGet_ec *param1, void *param2, unk32 *param3, VecFx32 *param4, unk32 param5); + void func_ov000_020a00d4(UnkStruct_PlayerGet_ec *param1, unk32 param2, unk32 param3, unk32 param4, VecFx32 *param5, + unk32 param6); void func_ov000_020a0110(UnkStruct_PlayerGet_ec *param1); void func_ov000_020a0220(void *param1, void *param2); void func_ov001_020bf028(); diff --git a/include/Unknown/UnkStruct_027e0d2c.hpp b/include/Unknown/UnkStruct_027e0d2c.hpp new file mode 100644 index 00000000..f4d51940 --- /dev/null +++ b/include/Unknown/UnkStruct_027e0d2c.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "Actor/ActorRef.hpp" +#include "math.hpp" +#include "types.h" + +class UnkStruct_027e0d2c : public AutoInstance { +public: + // overlay 31 + void func_ov031_020d95b4(); + void func_ov031_020d95c8(ActorRef param1); + bool func_ov031_020d962c(VecFx32 *param1, unk32 param2, VecFx32 *param3, ActorRef *param4); +}; + +extern UnkStruct_027e0d2c *data_027e0d2c; diff --git a/include/Unknown/UnkStruct_ov031_Items.hpp b/include/Unknown/UnkStruct_ov031_Items.hpp new file mode 100644 index 00000000..6f3c0c8c --- /dev/null +++ b/include/Unknown/UnkStruct_ov031_Items.hpp @@ -0,0 +1,55 @@ +#pragma once +#include "UnkStruct_027e0ce0.hpp" + +class UnkStruct_ov031_Items_00 : public UnkStruct_027e0ce0_38_Base { +public: + /* 00 (vtable) */ + /* 04 */ + + UnkStruct_ov031_Items_00(); + + // data_ov000_020b30d0 + /* 00 */ virtual ~UnkStruct_ov031_Items_00(); + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; +}; + +class UnkStruct_ov031_Items_01 { +public: + /* 00 (vtable) */ + /* 04 */ ActorRef mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 08 */ unk16 mUnk_0A; + /* 0C */ VecFx32 mUnk_0C; + /* 18 */ fx32 mUnk_18; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2C */ + + UnkStruct_ov031_Items_01() { + this->mUnk_04 = 0; + this->mUnk_08 = 0; + VecFx32_Init(0, 0, 0, &this->mUnk_0C); + this->mUnk_18 = 0; + this->mUnk_1C = 0; + this->mUnk_20 = 0; + this->mUnk_24 = 0; + this->mUnk_28 = 0; + } + + // data_ov000_020b27c8 + /* 00 */ virtual ~UnkStruct_ov031_Items_01(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual bool vfunc_0C(Actor *param1, VecFx32 *vector); + /* 10 */ virtual void vfunc_10(Actor *actor); +}; + +class UnkStruct_ov031_Items_02 { +public: + /* 00 */ VecFx32 mUnk_00; + /* 0C */ + + UnkStruct_ov031_Items_02(unk32 param1, unk32 param2); + ~UnkStruct_ov031_Items_02(); +}; diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 0e940cf2..b43f823d 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -103,7 +103,7 @@ bool MapObject::func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3) { return false; } -bool MapObject::vfunc_1C() { +bool MapObject::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) { return true; } diff --git a/src/031_Land/Actor/ActorItemBoomerang.cpp b/src/031_Land/Actor/ActorItemBoomerang.cpp new file mode 100644 index 00000000..4e201a14 --- /dev/null +++ b/src/031_Land/Actor/ActorItemBoomerang.cpp @@ -0,0 +1,437 @@ +#include "Actor/ActorItemBoomerang.hpp" + +#include "MapObject/MapObjectUnkICEB.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e09b4.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_027e0d2c.hpp" + +extern "C" void func_01ff916c(void *, int, int); +extern "C" void func_01ff93c0(VecFx32 *, unk32); +extern "C" void func_01ff97c8(VecFx32 *, int); +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *); +extern "C" unk32 func_01ffb9cc(VecFx32 *, VecFx32 *); +extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, UnkStruct_ov031_Items_00 *); +extern "C" void func_01ffedac(u16 *, VecFx32 *); +extern "C" bool func_ov000_0205aeac(); +extern "C" bool func_ov000_020982d8(); + +DECL_PROFILE(ActorProfileItemBoomerang); + +Actor *ActorProfileItemBoomerang::Create() { + return new(HeapIndex_2) ActorItemBoomerang(); +} + +ActorProfileItemBoomerang::ActorProfileItemBoomerang() : + ActorProfile(ActorId_ITBM) {} + +// non-matching +ActorItemBoomerang::ActorItemBoomerang() : + mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)), + mUnk_9C(true), + mUnk_11C(this), + mUnk_12C(), + mUnk_138(0x0), + mUnk_13A(0x0), + mUnk_13C((u16) 0x8D71), + mUnk_140(0x1000, 0x0) { + this->mState = ActorItemBoomerangState_0; + this->mUnk_52 = 0xFFFF; + this->mUnk_50 = 0x0; +} + +bool ActorItemBoomerang::vfunc_18(unk32 param1) { + this->mUnk_CC.mUnk_30.func_ov031_020e45fc(); + + this->mUnk_A0.mUnk_0C.x = FLOAT_TO_FX32(0.0f); + this->mUnk_A0.mUnk_0C.y = FLOAT_TO_FX32(-0.1003f); + this->mUnk_A0.mUnk_0C.z = FLOAT_TO_FX32(0.0f); + this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.4f); + + this->mUnk_10C.x = FLOAT_TO_FX32(0.0f); + this->mUnk_10C.y = FLOAT_TO_FX32(-0.1003f); + this->mUnk_10C.z = FLOAT_TO_FX32(0.0f); + this->mUnk_118 = FLOAT_TO_FX32(0.0f); + + this->func_ov031_020e5034(0x0); + + unk16 sin = SIN((u16) this->mAngle); + unk16 cos = COS((u16) this->mAngle); + + this->mVel.x = MUL_FX32(sin, FLOAT_TO_FX32(0.5f)); + this->mVel.z = MUL_FX32(cos, FLOAT_TO_FX32(0.5f)); + this->mVel.y = FLOAT_TO_FX32(0.0f); + + return true; +} + +// non-matching +void ActorItemBoomerang::SetState(ActorState state) { + this->mState = state; + this->mUnk_52 = 0xFFFF; + this->mUnk_50 = 0; +} + +void ActorItemBoomerang::func_ov031_020e49b0(unk32 param1) { + data_027e09a8->func_ov000_02071b30(param1, &this->mPos, 0); + data_027e09a8->func_ov000_02071eac(&this->mPos); + this->func_ov031_020e5220(); + + if (this->mState == ActorItemBoomerangState_1) { + return; + } + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.y = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + + data_027e0d2c->func_ov031_020d95b4(); + this->SetState(ActorItemBoomerangState_1); +} + +// non-matching +void ActorItemBoomerang::vfunc_20() { + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + if (func_ov000_0205aeac() && this->mUnk_128 == 0x1 || this->mUnk_128 == 0x2) { + VecFx32_Copy(&this->mPos, &this->mUnk_140.mUnk_00); + } + + this->IsTimerOut(); + this->mAngle += DEG_TO_ANG(45); + this->func_ov031_020e52a0(); + data_027e09a8->func_ov000_02071d34(&this->mRef, this->mUnk_13C, &this->mPos, 0x0); + + bool var2 = false; + switch (this->mState) { + case ActorItemBoomerangState_0: + this->mUnk_A0.mUnk_0C.z = this->mPos.z; + this->mUnk_A0.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f); + this->mUnk_A0.mUnk_0C.x = this->mPos.x; + this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.3f); + + data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_A0); + + bool var1 = false; + if (data_027e0ce0->func_ov000_0208bc1c(0x1, 0x0, 0x16, 0x0, 0x0, 0x0)) { + var1 = true; + this->mUnk_13A = 0x14; + this->mUnk_138 = 0x0; + } + + Actor *sp54; /* actor* ? */ + func_01ffe6c4(&sp54, this->mRef, &this->mPos, &this->mPrevPos, 0x1C, NULL, &this->mUnk_11C); + unk32 tmp = sp54->func_ov000_0207df88((Cylinder *) &this->mUnk_CC.mUnk_30.mUnk_00, 0xC); + func_01ffe6c4(&sp54, this->mRef, &this->mPos, &this->mPrevPos, 0x1F, NULL, &this->mUnk_11C); + + if ((tmp | sp54->func_ov000_0207e294((Cylinder *) &this->mUnk_10C)) == 0 && !var1) { + if (data_027e0ce0->mUnk_2C->mEquippedItem != ItemFlag_Boomerang) { + this->SetState(ActorItemBoomerangState_1); + return; + } + + VecFx32 sp6C; + ActorRef sp14; + if (!data_027e0d2c->func_ov031_020d962c(&this->mPos, 0x4CD, &sp6C, &sp14)) { + this->SetState(ActorItemBoomerangState_1); + } else { + unk32 vecLength = VecFx32_Length(&this->mVel); + unk32 lengthModified = (vecLength << 0xA) + 0x800; + unk32 sp18 = lengthModified; + func_01ff916c(&sp18, 0x0, MUL_FX32(vecLength, lengthModified)); + func_01ffb714(&sp6C, &this->mPos, &this->mVel); + func_01ff97c8(&this->mPos, sp18 + 0x200); + } + + if (sp14.type != 0) { + this->mUnk_CC.mUnk_0C.z = this->mPos.z; + this->mUnk_CC.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f); + this->mUnk_CC.mUnk_18 = 0xA000; + this->mUnk_CC.mUnk_0C.x = this->mPos.x; + data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_CC); + return; + } + if (!(sp14.data & 0x1000)) { + return; + } + + Vec2bCpp pos; + pos.x = 0x0; + pos.y = 0x0; + MapObject *object = gpMapObjManager->func_01fff498(pos); + if (object == NULL) { + return; + } + object->vfunc_1C(this->mRef, 0xC, &this->mVel); + if (object->mUnk_10 != NULL) { + unk32 val = object->mUnk_10->mUnk_0C.y; + if (val == 0x2) { + this->func_ov031_020e5034(0x1); + } else if (val == 0x4) { + this->func_ov031_020e5034(0x2); + } + } + MapObjectId objectId = object->GetMapObjectId(); + if (objectId != MapObjectId_SKDI && objectId != MapObjectId_SWHT && objectId != MapObjectId_TSUB) { + this->func_ov031_020e49b0(0x8D70); + } + return; + } + this->func_ov031_020e49b0(0x8D70); + break; + case ActorItemBoomerangState_1: + this->mUnk_A0.mUnk_0C.z = this->mPos.z; + this->mUnk_A0.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f); + this->mUnk_A0.mUnk_0C.x = this->mPos.x; + this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.3f); + + data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_A0); + Actor *sp24; /* actor* ? */ + func_01ffe6c4(&sp24, this->mRef, &this->mPos, &this->mPrevPos, 0x1C, NULL, &this->mUnk_11C); + sp24->func_ov000_0207df88((Cylinder *) &this->mUnk_CC.mUnk_30.mUnk_00, 0xC); + + bool var3 = false; + if ((u32) this->mUnk_138 < (u32) this->mUnk_13A) { + ++this->mUnk_138; + } else { + var2 = true; + } + if (var2 && data_027e0ce0->func_ov000_0208bc1c(0x1, 0x0, 0x16, 0x0, 0x0, 0x0)) { + var3 = true; + } + if (var3) { + this->mUnk_13A = 0x14; + this->mUnk_138 = 0x0; + this->func_ov031_020e49b0(0x8D70); + } + + u16 spC; + VecFx32 sp3C; + VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &sp3C); + + if (func_01ffb9cc(&sp3C, &this->mPos) <= 0x800) { + if (this->mUnk_128 == 0x2) { + func_01ffedac(&spC, &sp3C); + + Vec2bCpp pos; + pos.x = 0x0; + pos.y = 0x0; + MapObject *object = gpMapObjManager->func_01fff498(pos); + if (object != NULL && object->GetMapObjectId() == MapObjectId_ICEB) { + ((MapObjectUnkICEB *) object)->func_ov094_02174870(); + } + } + data_027e0d2c->func_ov031_020d95b4(); + this->Kill(); + return; + } + VecFx32 sp48; + func_01ff93c0(&this->mVel, 0xC00); + func_01ffb714(&sp3C, &this->mPos, &sp48); + func_01ff97c8(&sp48, 0x200); + VecFx32_Add(&this->mVel, &sp48, &this->mVel); + break; + default: + break; + } +} + +void ActorItemBoomerang::func_ov031_020e5034(unk32 param1) { + if (this->mUnk_128 == param1) { + return; + } + this->mUnk_128 = param1; + UnkStruct_PlayerGet_ec *ptr = NULL; + + switch (this->mUnk_128) { + case 0x1: + this->mUnk_13C = 0x8D72; + for (ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) { + ptr->func_ov000_020a0334(); + } + + data_027e0cec->func_ov000_0209ff8c(&this->mUnk_12C[0], 0x818, &this->mPos, 0x2); + data_027e0cec->func_ov000_0209ff8c(&this->mUnk_12C[1], 0x819, &this->mPos, 0x2); + + if (!func_ov000_0205aeac()) { + return; + } + if (this->mUnk_12C[0].mUnk_00 != NULL) { + this->mUnk_12C[0].mUnk_00->mUnk_A0 = 0; + } + if (this->mUnk_12C[1].mUnk_00 != NULL) { + this->mUnk_12C[1].mUnk_00->mUnk_A0 = 0; + } + data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_140.mUnk_00); + return; + case 0x2: + this->mUnk_13C = 0x8D73; + for (ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) { + ptr->func_ov000_020a0334(); + } + + data_027e0cec->func_ov000_020a00d4(&this->mUnk_12C[0], 0x815, 0x816, 0x817, &this->mPos, 0x2); + if (!func_ov000_0205aeac()) { + return; + } + if (this->mUnk_12C[0].mUnk_00 != NULL) { + this->mUnk_12C[0].mUnk_00->mUnk_A0 = 0; + } + if (this->mUnk_12C[1].mUnk_00 != NULL) { + this->mUnk_12C[1].mUnk_00->mUnk_A0 = 0; + } + if (this->mUnk_12C[2].mUnk_00 != NULL) { + this->mUnk_12C[2].mUnk_00->mUnk_A0 = 0; + } + data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_140.mUnk_00); + return; + default: + this->mUnk_13C = 0x8D71; + if (!func_ov000_0205aeac()) { + return; + } + data_027e0cd8->mUnk_0C->func_ov000_02080a78(&this->mUnk_140.mUnk_00); + break; + } +} + +void ActorItemBoomerang::func_ov031_020e5220() { + data_027e0cec->func_ov000_0209feac(0x81A, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0x81B, &this->mPos, 0x2, 0x0, 0x0); + data_027e0cec->func_ov000_0209feac(0x81C, &this->mPos, 0x2, 0x0, 0x0); +} + +// non-matching +void ActorItemBoomerang::func_ov031_020e52a0() { + if (this->mUnk_128 == 0x1 || this->mUnk_128 == 0x2) { + for (UnkStruct_PlayerGet_ec *ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) { + // non sense + ptr->mUnk_00->mUnk_28 = this->mPos.x + ptr->mUnk_00->mUnk_24; + ptr->mUnk_00->mUnk_2C = this->mPos.y + ptr->mUnk_00->mUnk_28; + ptr->mUnk_00->mUnk_30 = this->mPos.z + ptr->mUnk_00->mUnk_2C; + } + return; + } + for (UnkStruct_PlayerGet_ec *ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) { + ptr->func_ov000_020a0334(); + } +} + +// non-matching +void ActorItemBoomerang::vfunc_2C(unk32 param1) { + if (Actor::func_01fff5d0(param1, 0x0)) { + this->mUnk_94.func_01ffc6d4((u16) this->mAngle, &this->mPos); + data_027e09b4->func_ov017_020c08c4(&this->mPos, 0x400, 0x400, 0x1F, 0x0, 0x1); + } +} + +void ActorItemBoomerang_A0::vfunc_10(Actor *actor) { + data_027e0d2c->func_ov031_020d95c8(actor->mRef); +} + +void ActorItemBoomerang_CC::vfunc_10(Actor *actor) { + data_027e0d2c->func_ov031_020d95c8(actor->mRef); +} + +// non-matching +bool ActorItemBoomerang_CC::vfunc_0C(Actor *actor, VecFx32 *param2) { + if (actor != NULL) { + if (actor->mRef.Get32() == this->mUnk_2C && actor->mVel.x == FLOAT_TO_FX32(0.0f) && + actor->mVel.y == FLOAT_TO_FX32(0.0f) && actor->mVel.z == FLOAT_TO_FX32(0.0f)) { + this->mUnk_2C = 0x0; + return UnkStruct_ov031_Items_01::vfunc_0C(actor, param2); + } + } + return false; +} + +void ActorItemBoomerang_Unknown::func_ov031_020e45fc() { + this->mUnk_00 = 0x0; + this->mUnk_04.x = FLOAT_TO_FX32(-0.1003f); + this->mUnk_04.y = FLOAT_TO_FX32(0.0f); + this->mUnk_04.z = FLOAT_TO_FX32(0.3f); +} + +ActorItemBoomerang_11C::ActorItemBoomerang_11C(ActorItemBoomerang *param1) : + mUnk_08(param1) {} + +ActorItemBoomerang_11C::~ActorItemBoomerang_11C() {} + +// non-matching +bool ActorItemBoomerang_11C::vfunc_08(const UnkStruct_ov031_020f3310 *param1) { + u32 var = param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06]; + + if (((var >> 0x18) & 1) == 1) { + return false; + } + + return func_ov000_020982d8(); +} + +bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) { + u32 val = (param1->mUnk_08 >> 9) & 7; + if (val == 0x2) { + this->mUnk_08->func_ov031_020e5034(0x1); + } + + if (val == 0x4) { + this->mUnk_08->func_ov031_020e5034(0x2); + } + + if (param1->mUnk_08 >> 0x18 & 1) { + return false; + } + + Vec2bCpp pos; + if (this->mUnk_08->mState == ActorItemBoomerangState_1) { + if (param2 & 0x1000) { + pos.x = (u8) param2 >> 16; + pos.y = (u8) param2 >> 24; + + MapObject *mapObject = gpMapObjManager->func_01fff498(pos); + if (mapObject != NULL) { + if (mapObject->GetMapObjectId() == MapObjectId_ICEB || mapObject->GetMapObjectId() == MapObjectId_THAW) { + mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel); + } + } + } + return false; + } + + if (param2 & 0x1000) { + pos.x = (u8) param2 >> 16; + pos.y = (u8) param2 >> 24; + + MapObject *mapObject = gpMapObjManager->func_01fff498(pos); + if (mapObject != NULL) { + switch (mapObject->GetMapObjectId()) { + case MapObjectId_SKDI: + case MapObjectId_SWHT: + data_027e0d2c->func_ov031_020d95c8(param2); + case MapObjectId_TSUB: + mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel); + return false; + } + } + } + + UnkStruct_027e0ce0_38_Base::vfunc_0C(param1, param2); +} + +void ActorItemBoomerang_Unknown::func_ov031_020e5704() { + this->mUnk_00 = 0; +} + +ActorItemBoomerang::~ActorItemBoomerang() { + if (data_027e0d2c) { + data_027e0d2c->func_ov031_020d95b4(); + } + if (func_ov000_0205aeac()) { + data_027e0cd8->mUnk_0C->func_ov000_02080a78(&this->mUnk_140.mUnk_00); + } +} + +ActorProfileItemBoomerang::~ActorProfileItemBoomerang() {} diff --git a/src/031_Land/Actor/ActorShotArrow.cpp b/src/031_Land/Actor/ActorShotArrow.cpp index cc63bd94..ab11d462 100644 --- a/src/031_Land/Actor/ActorShotArrow.cpp +++ b/src/031_Land/Actor/ActorShotArrow.cpp @@ -67,7 +67,7 @@ typedef struct { } UnkStack_ov031_020f2310; struct UnkStruct_020f1b04 { - /* 0C */ unk32 mUnk_0C; + /* 0C */ Actor *mUnk_0C; /* 10 */ STRUCT_PAD(0x10, 0x24); /* 24 */ }; @@ -96,7 +96,7 @@ extern "C" void func_01ffad5c(Mat4x3p *, Mat4x3p *, Mat4x3p *); extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *); extern "C" fx16 func_01ffbbe0(fx32, fx32); extern "C" bool func_01ffccf4(VecFx32 *, VecFx32 *, VecFx32 *, unk32 *); -extern "C" void func_01ffe6c4(unk32 *, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, unk32); +extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, unk32); extern "C" void func_0200eab0(G3d_Model *, unk16, u8); extern "C" UnkResourceStruct2 *func_0200f05c(G3d_NameList *, char *); extern "C" void func_ov000_02057c98(ModelRender *param1, UnkSystem5 *param2); @@ -330,7 +330,7 @@ void ActorShotArrow::func_ov031_020f1b04() { } if (!this->func_ov017_020beeec(0x0)) { - stack.mUnk_0C = 0; + stack.mUnk_0C = NULL; VecFx32 *mPos = &this->mPos; func_01ffe6c4(&stack.mUnk_0C, this->mRef, mPos, &this->mPrevPos, (s16) this->mUnk_44, mPos, 0); @@ -846,14 +846,13 @@ void ActorShotArrow::func_ov031_020f2cac(VecFx32 *param1, bool param2) { // non-matching void ActorShotArrow::func_ov031_020f2ef0() { - unk32 value; + Actor *value = NULL; ActorShotArrow_178 *unk_178; - value = 0; unk_178 = &this->mUnk_178; func_01ffe6c4(&value, this->mRef.Get32(), &this->mPos, &this->mVel, (s16) this->mUnk_44, &this->mPos, 0); - this->mUnk_46 = (s16) (func_ov000_0207df88(&value, this->mUnk_30, 0x3) | func_ov000_0207e294(this->mUnk_30)); + this->mUnk_46 = (s16) (value->func_ov000_0207df88(this->mUnk_30, 0x3) | func_ov000_0207e294(this->mUnk_30)); } void ActorShotArrow::func_ov031_020f2f5c(VecFx32 *param1) { @@ -990,7 +989,7 @@ bool ActorShotArrow_178::vfunc_08(const UnkStruct_ov031_020f3310 *param1) { } // non-matching -bool ActorShotArrow_178::vfunc_0C() {} +bool ActorShotArrow_178::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {} ActorShotArrow_194::ActorShotArrow_194(ActorShotArrow *param1) { this->mUnk_2C = param1; diff --git a/src/031_Land/Actor/ActorUnkITBM.cpp b/src/031_Land/Actor/ActorUnkITBM.cpp deleted file mode 100644 index 8e2f39da..00000000 --- a/src/031_Land/Actor/ActorUnkITBM.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//! TODO: This file was generated automatically and might contain errors - -#include "Actor/ActorUnkITBM.hpp" -#include "System/SysNew.hpp" - -DECL_PROFILE(ActorProfileUnkITBM); - -Actor *ActorProfileUnkITBM::Create() { - return new(HeapIndex_2) ActorUnkITBM(); -} - -ActorProfileUnkITBM::ActorProfileUnkITBM() : - ActorProfile(ActorId_ITBM) {} - -ActorUnkITBM::ActorUnkITBM() {} - -void ActorUnkITBM::func_ov031_020e45fc(void) {} -void ActorUnkITBM::func_ov031_020e4760(void) {} -void ActorUnkITBM::func_ov031_020e4774(void) {} -void ActorUnkITBM::func_ov031_020e4788(void) {} -void ActorUnkITBM::func_ov031_020e48d0(void) {} -void ActorUnkITBM::func_ov031_020e4994(void) {} -void ActorUnkITBM::func_ov031_020e49b0(void) {} -void ActorUnkITBM::func_ov031_020e4a20(void) {} -void ActorUnkITBM::func_ov031_020e5034(void) {} -void ActorUnkITBM::func_ov031_020e5220(void) {} -void ActorUnkITBM::func_ov031_020e52a0(void) {} -void ActorUnkITBM::func_ov031_020e5354(void) {} -void ActorUnkITBM::func_ov031_020e53c8(void) {} -void ActorUnkITBM::func_ov031_020e53e4(void) {} -void ActorUnkITBM::func_ov031_020e5400(void) {} -void ActorUnkITBM::func_ov031_020e544c(void) {} -void ActorUnkITBM::func_ov031_020e5488(void) {} -void ActorUnkITBM::func_ov031_020e54a4(void) {} -void ActorUnkITBM::func_ov031_020e54d4(void) {} -void ActorUnkITBM::func_ov031_020e5704(void) {} -void ActorUnkITBM::func_ov031_020e5710(void) {} -void ActorUnkITBM::func_ov031_020e572c(void) {} - -ActorUnkITBM::~ActorUnkITBM() {} -ActorProfileUnkITBM::~ActorProfileUnkITBM() {} diff --git a/tools/configure.py b/tools/configure.py index f51a5315..4b5359b8 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -459,7 +459,7 @@ config.libs = [ Object("031_Land/Actor/ActorUnkEFSB.cpp"), Object("031_Land/Actor/ActorUnkFLEN.cpp"), Object("031_Land/Actor/ActorHeart.cpp"), - Object("031_Land/Actor/ActorUnkITBM.cpp"), + Object("031_Land/Actor/ActorItemBoomerang.cpp"), Object("031_Land/Actor/ActorUnkITTD.cpp"), Object("031_Land/Actor/ActorUnkMLCK.cpp"), Object("031_Land/Actor/ActorUnkNFSP.cpp"),