From 39288e4605f31861b0c4c02e4f962ff91db7596d Mon Sep 17 00:00:00 2001 From: Mityno <84503460+Mityno@users.noreply.github.com> Date: Fri, 14 Aug 2026 13:14:49 +0000 Subject: [PATCH] Start decompiling ActorUnkCASE (#124) * feat: Start decompiling ActorUnkCASE's ctor * fix: Fix broken member names * feat: Finish decompiling ActorUnkCASE's ctor (orr mismatch) * feat: Match ActorUnkCASE_174::vfunc_10 * fix: Update flags arithmetic * feat: Match ActorUnkCASE_150 ctor * feat: Match ActorProfileUnkCASE ctor * feat: Update symbols and vfunc of ActorUnkCASE * feat: Match ActorUnkCASE::vfunc_24 * feat: Decompile ActorUnkCASE::vfunc_10, update Actor::vfunc_10 to use Cylinder * fix: Fix broken Actor symbols * feat: Match ActorUnkCASE::vfunc_18 * feat: Match ActorUnkCASE::vfunc_2C * feat: Start decompiling ActorUnkCASE::vfunc_20 * feat: Match ActorUnkCASE's ctor * feat: Almost finish decompiling ActorUnkCASE::vfunc_20 * feat: Decompile func_ov063_0215b054 and func_ov063_0215afa4 * feat: Match func_ov063_0215af60 * feat: Decompile func_ov063_0215afb8 * feat: Match func_ov063_0215b090 * feat: Match func_ov063_0215b2b0 * feat: Match func_ov063_0215b244 * feat: Match func_ov063_0215b1bc * feat: Match ActorUnkCASE_150::vfunc_00 * feat: Match ActorUnkCASE_150::vfunc_04 * feat: Match ActorUnkCASE_150::vfunc_0C * feat: Match func_ov063_0215b814 * feat: Decompile func_ov063_0215b854 * feat: Match func_ov063_0215aefc * feat: Match func_ov063_0215acec * feat: Update jp symbols * feat: Some symbols and improved matching * feat: Match func_ov063_0215b99c * feat: Start decompiling func_ov063_0215b8e8 * feat: Decompile some funcs * feat: Rename symbols, improve matching, add some data * fix: Fix wrong code for JP only * fix: Fix broken symbols * feat: Update symbols and extend .data, match sinit The .data ordering is wrong * feat: Small changes * Apply suggestions from code review Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * fix: More code review * feat: Add small comment for the goto * feat: Update func_ov063_0215b8e8 and vfunc_0C to use VexFx32 * fix: Missing c/hpp changes for previous commit * feat: Update func_ov063_0215afb8 to use ActorUnkITWP --------- Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> --- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 4 +- config/eur/arm9/overlays/ov031/symbols.txt | 10 +- config/eur/arm9/overlays/ov063/delinks.txt | 1 + config/eur/arm9/overlays/ov063/relocs.txt | 6 +- config/eur/arm9/overlays/ov063/symbols.txt | 52 +- config/eur/arm9/overlays/ov071/symbols.txt | 2 +- config/jp/arm9/itcm/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/symbols.txt | 10 +- config/jp/arm9/overlays/ov031/symbols.txt | 12 +- config/jp/arm9/overlays/ov063/delinks.txt | 1 + config/jp/arm9/overlays/ov063/relocs.txt | 8 +- config/jp/arm9/overlays/ov063/symbols.txt | 62 +- config/jp/arm9/overlays/ov071/symbols.txt | 2 +- include/Actor/Actor.hpp | 8 +- include/Actor/ActorHeart.hpp | 3 +- include/Actor/ActorItemDrop.hpp | 3 +- include/Actor/ActorRupee.hpp | 3 +- include/Actor/ActorTearLight.hpp | 3 +- include/Actor/ActorUnkCANS.hpp | 23 +- include/Actor/ActorUnkCASE.hpp | 94 ++- include/Actor/ActorUnkITWP.hpp | 6 +- include/Actor/ActorUnkNFSP.hpp | 3 +- include/Unknown/UnkStruct_ov000_020b19f0.hpp | 10 + include/Unknown/UnkStruct_ov000_020b3268.hpp | 8 + src/031_Land/Actor/ActorHeart.cpp | 3 +- src/031_Land/Actor/ActorItemDrop.cpp | 3 +- src/031_Land/Actor/ActorRollingStone.cpp | 17 +- src/031_Land/Actor/ActorRupee.cpp | 3 +- src/031_Land/Actor/ActorShotArrow.cpp | 15 +- src/031_Land/Actor/ActorUnkNFSP.cpp | 3 +- src/063_Shrine/Actor/ActorUnkCANS.cpp | 25 +- src/063_Shrine/Actor/ActorUnkCASE.cpp | 598 +++++++++++++++++-- src/071_Tower/Actor/ActorTearLight.cpp | 3 +- 34 files changed, 804 insertions(+), 204 deletions(-) create mode 100644 include/Unknown/UnkStruct_ov000_020b19f0.hpp create mode 100644 include/Unknown/UnkStruct_ov000_020b3268.hpp diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index bfeae0c1..1ebb3fb0 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -203,7 +203,7 @@ _ZN12ActorManager13func_01fff350EPvPP5Actor kind:function(arm,size=0x64) addr:0x _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 _ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458 -_ZN5Actor8vfunc_10EP7VecFx32 kind:function(arm,size=0x34) addr:0x01fff464 +_ZN5Actor8vfunc_10EP8Cylinder kind:function(arm,size=0x34) addr:0x01fff464 _ZN16MapObjectManager13func_01fff498E8Vec2bCpp kind:function(arm,size=0x34) addr:0x01fff498 _ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc _ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 7c3d9b4c..c8455d4f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -83,7 +83,7 @@ func_ov000_02057a24 kind:function(thumb,size=0x14) addr:0x02057a24 func_ov000_02057a38 kind:function(arm,size=0x18) addr:0x02057a38 func_ov000_02057a50 kind:function(thumb,size=0x1c) addr:0x02057a50 func_ov000_02057a6c kind:function(thumb,size=0x1c) addr:0x02057a6c -func_ov000_02057a88 kind:function(arm,size=0x3c) addr:0x02057a88 +_ZN24UnkStruct_ov000_020b19f08vfunc_0CEv kind:function(arm,size=0x3c) addr:0x02057a88 _ZN19func_ov000_02057ac4D1Ev kind:function(arm,size=0x14) addr:0x02057ac4 _ZN19func_ov000_02057ad8D0Ev kind:function(arm,size=0x1c) addr:0x02057ad8 func_ov000_02057af4 kind:function(arm,size=0x14) addr:0x02057af4 @@ -1498,7 +1498,7 @@ func_ov000_0207ed84 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 -_ZN17Actor_Derived1_94D2Ev kind:function(arm,size=0x30) addr:0x0207ede8 +_ZN17Actor_Derived1_94D1Ev kind:function(arm,size=0x30) addr:0x0207ede8 _ZN19func_ov000_0207ee18D0Ev kind:function(arm,size=0x38) addr:0x0207ee18 _ZN19func_ov000_0207ee50D2Ev kind:function(arm,size=0x30) addr:0x0207ee50 func_ov000_0207ee80 kind:function(arm,size=0x4) addr:0x0207ee80 diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 0a4f6ff0..13abffec 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -601,7 +601,7 @@ _ZN10ActorRupee19func_ov031_020e9e5cEv kind:function(arm,size=0x94) addr:0x020e9 _ZN13ActorRupee_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020e9ef0 _ZN13ActorRupee_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020e9f28 _ZN13ActorRupee_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020e9f6c -_ZN13ActorRupee_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020e9f8c +_ZN13ActorRupee_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020e9f8c _ZN13ActorRupee_C48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020e9fb4 _ZN10ActorRupeeD1Ev kind:function(arm,size=0x20) addr:0x020e9fd0 _ZN10ActorRupeeD0Ev kind:function(arm,size=0x28) addr:0x020e9ff0 @@ -757,7 +757,7 @@ _ZN10ActorHeart19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020ef _ZN13ActorHeart_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020ef6f8 _ZN13ActorHeart_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020ef730 _ZN13ActorHeart_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020ef774 -_ZN13ActorHeart_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020ef794 +_ZN13ActorHeart_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020ef794 _ZN13ActorHeart_C48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020ef7bc _ZN10ActorHeartD0Ev kind:function(arm,size=0x1c) addr:0x020ef7d8 _ZN10ActorHeartD1Ev kind:function(arm,size=0x14) addr:0x020ef7f4 @@ -1007,7 +1007,7 @@ _ZN13Actor_C4_BaseC2EPvi kind:function(arm,size=0x60) addr:0x020f6284 _ZN8Actor_C48vfunc_00E8ActorRefi kind:function(arm,size=0x90) addr:0x020f62e4 _ZN8Actor_C48vfunc_04Ev kind:function(arm,size=0x8) addr:0x020f6374 _ZN8Actor_C48vfunc_08Ev kind:function(arm,size=0x8) addr:0x020f637c -_ZN8Actor_C48vfunc_0CEi kind:function(arm,size=0x8) addr:0x020f6384 +_ZN8Actor_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x8) addr:0x020f6384 func_ov031_020f638c kind:function(arm,size=0x4c) addr:0x020f638c func_ov031_020f63d8 kind:function(arm,size=0x14) addr:0x020f63d8 func_ov031_020f63ec kind:function(arm,size=0x5c) addr:0x020f63ec @@ -1193,7 +1193,7 @@ _ZN13ActorItemDrop19func_ov031_020fa900Ev kind:function(arm,size=0xf8) addr:0x02 _ZN16ActorItemDrop_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fa9f8 _ZN16ActorItemDrop_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020faa30 _ZN16ActorItemDrop_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020faa74 -_ZN16ActorItemDrop_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020faa94 +_ZN16ActorItemDrop_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020faa94 _ZN16ActorItemDrop_C48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020faabc _ZN13ActorItemDropD1Ev kind:function(arm,size=0x14) addr:0x020faadc _ZN13ActorItemDropD0Ev kind:function(arm,size=0x1c) addr:0x020faaf0 @@ -1273,7 +1273,7 @@ _ZN15ActorUnkNFSP_C0C1EP12ActorUnkNFSP kind:function(arm,size=0x38) addr:0x020fb _ZN15ActorUnkNFSP_C08vfunc_00E8ActorRefi kind:function(arm,size=0x58) addr:0x020fbc3c _ZN15ActorUnkNFSP_C08vfunc_04Ev kind:function(arm,size=0x2c) addr:0x020fbc94 _ZN15ActorUnkNFSP_C08vfunc_08Ev kind:function(arm,size=0x30) addr:0x020fbcc0 -_ZN15ActorUnkNFSP_C08vfunc_0CEi kind:function(arm,size=0x38) addr:0x020fbcf0 +_ZN15ActorUnkNFSP_C08vfunc_0CEP7VecFx32 kind:function(arm,size=0x38) addr:0x020fbcf0 _ZN12ActorUnkNFSPD1Ev kind:function(arm,size=0x14) addr:0x020fbd28 _ZN12ActorUnkNFSPD0Ev kind:function(arm,size=0x1c) addr:0x020fbd3c _ZN19ActorProfileUnkNFSPD1Ev kind:function(arm,size=0x14) addr:0x020fbd58 diff --git a/config/eur/arm9/overlays/ov063/delinks.txt b/config/eur/arm9/overlays/ov063/delinks.txt index d2ee88af..7647229b 100644 --- a/config/eur/arm9/overlays/ov063/delinks.txt +++ b/config/eur/arm9/overlays/ov063/delinks.txt @@ -15,6 +15,7 @@ src/063_Shrine/Actor/ActorUnkCASE.cpp: .text start:0x0215aaf8 end:0x0215bafc .init start:0x021627a0 end:0x02162834 .ctor start:0x02162e44 end:0x02162e48 + .data start:0x021630c8 end:0x02163224 .bss start:0x02163c48 end:0x02163d30 src/063_Shrine/Actor/ActorUnkRMSV.cpp: diff --git a/config/eur/arm9/overlays/ov063/relocs.txt b/config/eur/arm9/overlays/ov063/relocs.txt index 3bc8490f..779bf5ac 100644 --- a/config/eur/arm9/overlays/ov063/relocs.txt +++ b/config/eur/arm9/overlays/ov063/relocs.txt @@ -306,17 +306,17 @@ from:0x0215ab34 kind:arm_call to:0x02097898 module:overlay(0) from:0x0215ab68 kind:load to:0x02163174 add:0x8 module:overlay(63) from:0x0215ab78 kind:arm_call_thumb to:0x0209a764 module:overlay(0) from:0x0215ab8c kind:arm_call to:0x02057f18 module:overlay(0) -from:0x0215ab9c kind:load to:0x021631a0 module:overlay(63) +from:0x0215ab9c kind:load to:0x02163198 module:overlay(63) add:0x8 from:0x0215aba0 kind:load to:0x02162568 module:overlay(63) from:0x0215abbc kind:arm_call to:0x020f6284 module:overlay(31) -from:0x0215abd4 kind:load to:0x02163148 module:overlay(63) +from:0x0215abd4 kind:load to:0x02163140 module:overlay(63) add:0x8 from:0x0215ac2c kind:arm_call to:0x0215b814 module:overlay(63) from:0x0215ac3c kind:arm_call to:0x020f62e4 module:overlay(31) from:0x0215ac58 kind:arm_call to:0x0215b854 module:overlay(63) from:0x0215ac60 kind:arm_call to:0x020f6374 module:overlay(31) from:0x0215ac78 kind:arm_call to:0x0215b8e8 module:overlay(63) from:0x0215ac84 kind:arm_call to:0x020f6384 module:overlay(31) -from:0x0215acc4 kind:load to:0x02163160 module:overlay(63) +from:0x0215acc4 kind:load to:0x02163158 module:overlay(63) add:0x8 from:0x0215acd8 kind:arm_call to:0x0215b724 module:overlay(63) from:0x0215ace4 kind:arm_call to:0x0207b70c module:overlay(0) from:0x0215ad0c kind:arm_call to:0x020975f8 module:overlay(0) diff --git a/config/eur/arm9/overlays/ov063/symbols.txt b/config/eur/arm9/overlays/ov063/symbols.txt index f6ee1078..d004143a 100644 --- a/config/eur/arm9/overlays/ov063/symbols.txt +++ b/config/eur/arm9/overlays/ov063/symbols.txt @@ -65,19 +65,19 @@ _ZN19ActorProfileUnkCANSD1Ev kind:function(arm,size=0x14) addr:0x0215aae4 _ZN19ActorProfileUnkCASE10GetProfileEv kind:function(arm,size=0xc) addr:0x0215aaf8 _ZN19ActorProfileUnkCASE6CreateEv kind:function(arm,size=0x24) addr:0x0215ab04 _ZN19ActorProfileUnkCASEC1Ev kind:function(arm,size=0x48) addr:0x0215ab28 -_ZN12ActorUnkCASE19func_ov063_0215ab70Ev kind:function(arm,size=0x34) addr:0x0215ab70 -_ZN12ActorUnkCASE19func_ov063_0215aba4Ev kind:function(arm,size=0x34) addr:0x0215aba4 -_ZN12ActorUnkCASE19func_ov063_0215abd8Ev kind:function(arm,size=0x74) addr:0x0215abd8 -_ZN12ActorUnkCASE19func_ov063_0215ac4cEv kind:function(arm,size=0x1c) addr:0x0215ac4c -_ZN12ActorUnkCASE19func_ov063_0215ac68Ev kind:function(arm,size=0x24) addr:0x0215ac68 -_ZN12ActorUnkCASE19func_ov063_0215ac8cEv kind:function(arm,size=0x3c) addr:0x0215ac8c -_ZN12ActorUnkCASE19func_ov063_0215acc8Ev kind:function(arm,size=0x24) addr:0x0215acc8 +_ZN24UnkStruct_ov063_021631a0C1EP10G3d_Model_ kind:function(arm,size=0x34) addr:0x0215ab70 +_ZN16ActorUnkCASE_150C1EP5Actor kind:function(arm,size=0x34) addr:0x0215aba4 +_ZN16ActorUnkCASE_1508vfunc_00E8ActorRefi kind:function(arm,size=0x74) addr:0x0215abd8 +_ZN16ActorUnkCASE_1508vfunc_04Ev kind:function(arm,size=0x1c) addr:0x0215ac4c +_ZN16ActorUnkCASE_1508vfunc_0CEP7VecFx32 kind:function(arm,size=0x24) addr:0x0215ac68 +_ZN16ActorUnkCASE_174C1EP5Actor kind:function(arm,size=0x3c) addr:0x0215ac8c +_ZN16ActorUnkCASE_1748vfunc_10EP5Actor kind:function(arm,size=0x24) addr:0x0215acc8 _ZN12ActorUnkCASE19func_ov063_0215acecEP8ActorRefS0_ kind:function(arm,size=0x5c) addr:0x0215acec _ZN12ActorUnkCASEC1Ev kind:function(arm,size=0x124) addr:0x0215ad48 -_ZN12ActorUnkCASE19func_ov063_0215ae6cEv kind:function(arm,size=0x14) addr:0x0215ae6c -_ZN12ActorUnkCASE19func_ov063_0215ae80Ev kind:function(arm,size=0x14) addr:0x0215ae80 -_ZN12ActorUnkCASE19func_ov063_0215ae94Ev kind:function(arm,size=0x68) addr:0x0215ae94 -_ZN12ActorUnkCASE19func_ov063_0215aefcEv kind:function(arm,size=0x58) addr:0x0215aefc +_ZN24UnkStruct_ov063_021631a0D1Ev kind:function(arm,size=0x14) addr:0x0215ae6c +_ZN16ActorUnkCASE_174D1Ev kind:function(arm,size=0x14) addr:0x0215ae80 +_ZN12ActorUnkCASE8vfunc_18Ei kind:function(arm,size=0x68) addr:0x0215ae94 +_ZN12ActorUnkCASE19func_ov063_0215aefcEs kind:function(arm,size=0x58) addr:0x0215aefc _ZN12ActorUnkCASE19func_ov063_0215af54Ev kind:function(arm,size=0x4) addr:0x0215af54 _ZN12ActorUnkCASE19func_ov063_0215af58Ev kind:function(arm,size=0x4) addr:0x0215af58 _ZN12ActorUnkCASE19func_ov063_0215af5cEv kind:function(arm,size=0x4) addr:0x0215af5c @@ -90,20 +90,20 @@ _ZN12ActorUnkCASE19func_ov063_0215b1bcEv kind:function(arm,size=0x88) addr:0x021 _ZN12ActorUnkCASE19func_ov063_0215b244Ev kind:function(arm,size=0x6c) addr:0x0215b244 _ZN12ActorUnkCASE19func_ov063_0215b2b0Ev kind:function(arm,size=0x14) addr:0x0215b2b0 _ZN12ActorUnkCASE19func_ov063_0215b2c4Ev kind:function(arm,size=0x4) addr:0x0215b2c4 -_ZN12ActorUnkCASE19func_ov063_0215b2c8Ev kind:function(arm,size=0x24) addr:0x0215b2c8 -_ZN12ActorUnkCASE19func_ov063_0215b2ecEv kind:function(arm,size=0x338) addr:0x0215b2ec -_ZN12ActorUnkCASE19func_ov063_0215b624Ev kind:function(arm,size=0xa4) addr:0x0215b624 +_ZN12ActorUnkCASE8vfunc_24Ev kind:function(arm,size=0x24) addr:0x0215b2c8 +_ZN12ActorUnkCASE8vfunc_20Ev kind:function(arm,size=0x338) addr:0x0215b2ec +_ZN12ActorUnkCASE8vfunc_2CEi kind:function(arm,size=0xa4) addr:0x0215b624 _ZN12ActorUnkCASE19func_ov063_0215b6c8EP7VecFx3214UnkAngleStruct kind:function(arm,size=0x5c) addr:0x0215b6c8 _ZN12ActorUnkCASE19func_ov063_0215b724Ev kind:function(arm,size=0xa8) addr:0x0215b724 -_ZN12ActorUnkCASE19func_ov063_0215b7ccEv kind:function(arm,size=0x48) addr:0x0215b7cc -_ZN12ActorUnkCASE19func_ov063_0215b814Ev kind:function(arm,size=0x40) addr:0x0215b814 +_ZN12ActorUnkCASE8vfunc_10EP8Cylinder kind:function(arm,size=0x48) addr:0x0215b7cc +_ZN12ActorUnkCASE19func_ov063_0215b814E8ActorRef kind:function(arm,size=0x40) addr:0x0215b814 _ZN12ActorUnkCASE19func_ov063_0215b854Ev kind:function(arm,size=0x94) addr:0x0215b854 -_ZN12ActorUnkCASE19func_ov063_0215b8e8Ev kind:function(arm,size=0xb4) addr:0x0215b8e8 -_ZN12ActorUnkCASE19func_ov063_0215b99cEv kind:function(arm,size=0xac) addr:0x0215b99c -_ZN12ActorUnkCASED0Ev kind:function(arm,size=0x1c) addr:0x0215ba48 -_ZN12ActorUnkCASE19func_ov063_0215ba64Ev kind:function(arm,size=0x1c) addr:0x0215ba64 +_ZN12ActorUnkCASE19func_ov063_0215b8e8EP7VecFx32 kind:function(arm,size=0xb4) addr:0x0215b8e8 +_ZN12ActorUnkCASE19func_ov063_0215b99cEPS_P29UnkStruct_func_ov063_0215a678 kind:function(arm,size=0xac) addr:0x0215b99c +_ZN16ActorUnkCASE_174D0Ev kind:function(arm,size=0x1c) addr:0x0215ba48 +_ZN24UnkStruct_ov063_021631a0D0Ev kind:function(arm,size=0x1c) addr:0x0215ba64 _ZN12ActorUnkCASED1Ev kind:function(arm,size=0x30) addr:0x0215ba80 -_ZN12ActorUnkCASE19func_ov063_0215bab0Ev kind:function(arm,size=0x38) addr:0x0215bab0 +_ZN12ActorUnkCASED0Ev kind:function(arm,size=0x38) addr:0x0215bab0 _ZN19ActorProfileUnkCASED1Ev kind:function(arm,size=0x14) addr:0x0215bae8 func_ov063_0215bafc kind:function(arm,size=0x38) addr:0x0215bafc func_ov063_0215bb34 kind:function(arm,size=0x54) addr:0x0215bb34 @@ -429,11 +429,11 @@ data_ov063_021630b0 kind:data(any) addr:0x021630b0 data_ov063_021630c8 kind:data(any) addr:0x021630c8 data_ov063_021630e0 kind:data(any) addr:0x021630e0 data_ov063_02163110 kind:data(any) addr:0x02163110 -data_ov063_02163148 kind:data(any) addr:0x02163148 -data_ov063_02163160 kind:data(any) addr:0x02163160 -_ZTV19data_ov063_02163174 kind:data(any) addr:0x02163174 -data_ov063_021631a0 kind:data(any) addr:0x021631a0 -_ZTV19data_ov063_021631c4 kind:data(any) addr:0x021631c4 +_ZTV16ActorUnkCASE_150 kind:data(any) addr:0x02163140 +_ZTV16ActorUnkCASE_174 kind:data(any) addr:0x02163158 +_ZTV19ActorProfileUnkCASE kind:data(any) addr:0x02163174 +_ZTV24UnkStruct_ov063_021631a0 kind:data(any) addr:0x02163198 +_ZTV12ActorUnkCASE kind:data(any) addr:0x021631c4 _ZTV19data_ov063_02163224 kind:data(any) addr:0x02163224 data_ov063_02163228 kind:data(any) addr:0x02163228 ambiguous _ZTV19ActorProfileUnkRMSV kind:data(any) addr:0x02163288 diff --git a/config/eur/arm9/overlays/ov071/symbols.txt b/config/eur/arm9/overlays/ov071/symbols.txt index 7020178b..5a30816e 100644 --- a/config/eur/arm9/overlays/ov071/symbols.txt +++ b/config/eur/arm9/overlays/ov071/symbols.txt @@ -321,7 +321,7 @@ _ZN14ActorTearLight19func_ov071_0215ffbcEv kind:function(arm,size=0x44) addr:0x0 _ZN18ActorTearLight_194C2EP14ActorTearLight kind:function(arm,size=0x38) addr:0x02160000 _ZN18ActorTearLight_1948vfunc_00E8ActorRefi kind:function(arm,size=0x40) addr:0x02160038 _ZN18ActorTearLight_1948vfunc_04Ev kind:function(arm,size=0x1c) addr:0x02160078 -_ZN18ActorTearLight_1948vfunc_0CEi kind:function(arm,size=0x24) addr:0x02160094 +_ZN18ActorTearLight_1948vfunc_0CEP7VecFx32 kind:function(arm,size=0x24) addr:0x02160094 _ZN18ActorTearLight_1948vfunc_08Ev kind:function(arm,size=0x1c) addr:0x021600b8 _ZN18ActorTearLight_204C2Ev kind:function(arm,size=0x14) addr:0x021600d4 _ZN18ActorTearLight_104D0Ev kind:function(arm,size=0x1c) addr:0x021600e8 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index bfeae0c1..1ebb3fb0 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -203,7 +203,7 @@ _ZN12ActorManager13func_01fff350EPvPP5Actor kind:function(arm,size=0x64) addr:0x _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 _ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458 -_ZN5Actor8vfunc_10EP7VecFx32 kind:function(arm,size=0x34) addr:0x01fff464 +_ZN5Actor8vfunc_10EP8Cylinder kind:function(arm,size=0x34) addr:0x01fff464 _ZN16MapObjectManager13func_01fff498E8Vec2bCpp kind:function(arm,size=0x34) addr:0x01fff498 _ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc _ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 84212d7e..b2e74c43 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -83,7 +83,7 @@ func_ov000_02058fa4 kind:function(thumb,size=0x14) addr:0x02058fa4 func_ov000_02058fb8 kind:function(arm,size=0x18) addr:0x02058fb8 _ZN24UnkStruct_ov000_020b19f0C2EP10G3d_Model_ kind:function(thumb,size=0x1c) addr:0x02058fd0 func_ov000_02058fec kind:function(thumb,size=0x1c) addr:0x02058fec -func_ov000_02059008 kind:function(arm,size=0x3c) addr:0x02059008 +_ZN24UnkStruct_ov000_020b19f08vfunc_0CEv kind:function(arm,size=0x3c) addr:0x02059008 _ZN19func_ov000_02059044D1Ev kind:function(arm,size=0x14) addr:0x02059044 _ZN19func_ov000_02059058D0Ev kind:function(arm,size=0x1c) addr:0x02059058 func_ov000_02059074 kind:function(arm,size=0x14) addr:0x02059074 @@ -1381,9 +1381,9 @@ _ZN19func_ov000_0207cd10D1Ev kind:function(arm,size=0x30) addr:0x0207cd10 _ZN19func_ov000_0207cd40D0Ev kind:function(arm,size=0x38) addr:0x0207cd40 _ZN29UnkStruct_ov031_Items_01_BaseD2Ev 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 +func_ov000_0207b70c kind:function(arm,size=0x10) addr:0x0207cdc4 _ZN24UnkStruct_ov031_Items_018vfunc_08Ev kind:function(arm,size=0x38) addr:0x0207cdd4 -func_ov000_0207ce0c kind:function(arm,size=0x80) addr:0x0207ce0c +_ZN24UnkStruct_ov031_Items_018vfunc_0CEP5ActorP7VecFx32 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 func_ov000_0207cf4c kind:function(arm,size=0x48) addr:0x0207cf4c @@ -1496,7 +1496,7 @@ func_ov000_0208043c kind:function(arm,size=0x8) addr:0x0208043c func_ov000_02080444 kind:function(arm,size=0x20) addr:0x02080444 _ZN17Actor_Derived1_94C1Ev kind:function(arm,size=0x20) addr:0x02080464 func_ov000_02080484 kind:function(arm,size=0x1c) addr:0x02080484 -_ZN17Actor_Derived1_94D2Ev kind:function(arm,size=0x30) addr:0x020804a0 +_ZN17Actor_Derived1_94D1Ev kind:function(arm,size=0x30) addr:0x020804a0 _ZN19func_ov000_020804d0D0Ev kind:function(arm,size=0x38) addr:0x020804d0 _ZN19func_ov000_02080508D2Ev kind:function(arm,size=0x30) addr:0x02080508 func_ov000_02080538 kind:function(arm,size=0x4) addr:0x02080538 @@ -2352,7 +2352,7 @@ func_ov000_02098d7c kind:function(arm,size=0x1b8) addr:0x0209a548 func_ov000_02098f34 kind:function(arm,size=0xd0) addr:0x0209a700 _ZN14Actor_Derived28vfunc_30EP14Actor_vfunc_30 kind:function(arm,size=0xc) addr:0x0209a7d0 func_ov000_0209a7dc kind:function(arm,size=0xb0) addr:0x0209a7dc -func_ov000_0209a88c kind:function(arm,size=0x21c) addr:0x0209a88c +func_ov000_020990c0 kind:function(arm,size=0x21c) addr:0x0209a88c func_ov000_0209aaa8 kind:function(arm,size=0x90) addr:0x0209aaa8 func_ov000_0209ab38 kind:function(arm,size=0x64) addr:0x0209ab38 func_ov000_0209ab9c kind:function(arm,size=0x80) addr:0x0209ab9c diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 959f5469..1a3e8fa4 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -601,7 +601,7 @@ _ZN10ActorRupee19func_ov031_020e9e5cEv kind:function(arm,size=0x94) addr:0x020eb _ZN13ActorRupee_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020eb8dc _ZN13ActorRupee_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020eb914 _ZN13ActorRupee_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020eb958 -_ZN13ActorRupee_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020eb978 +_ZN13ActorRupee_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020eb978 _ZN13ActorRupee_C48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020eb9a0 _ZN10ActorRupeeD1Ev kind:function(arm,size=0x20) addr:0x020eb9bc _ZN10ActorRupeeD0Ev kind:function(arm,size=0x28) addr:0x020eb9dc @@ -757,7 +757,7 @@ _ZN10ActorHeart19func_ov031_020ef698Ev kind:function(arm,size=0x60) addr:0x020f1 _ZN13ActorHeart_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020f10f4 _ZN13ActorHeart_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020f112c _ZN13ActorHeart_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020f1170 -_ZN13ActorHeart_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020f1190 +_ZN13ActorHeart_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020f1190 _ZN13ActorHeart_C48vfunc_08Ev kind:function(arm,size=0x1c) addr:0x020f11b8 _ZN10ActorHeartD0Ev kind:function(arm,size=0x1c) addr:0x020f11d4 _ZN10ActorHeartD1Ev kind:function(arm,size=0x14) addr:0x020f11f0 @@ -1007,7 +1007,7 @@ _ZN13Actor_C4_BaseC2EPvi kind:function(arm,size=0x60) addr:0x020f7d24 _ZN8Actor_C48vfunc_00E8ActorRefi kind:function(arm,size=0x90) addr:0x020f7d84 _ZN8Actor_C48vfunc_04Ev kind:function(arm,size=0x8) addr:0x020f7e14 _ZN8Actor_C48vfunc_08Ev kind:function(arm,size=0x8) addr:0x020f7e1c -_ZN8Actor_C48vfunc_0CEi kind:function(arm,size=0x8) addr:0x020f7e24 +_ZN8Actor_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x8) addr:0x020f7e24 func_ov031_020f7e2c kind:function(arm,size=0x4c) addr:0x020f7e2c func_ov031_020f7e78 kind:function(arm,size=0x14) addr:0x020f7e78 func_ov031_020f7e8c kind:function(arm,size=0x5c) addr:0x020f7e8c @@ -1076,7 +1076,7 @@ _ZN12ActorUnkSWCHD1Ev kind:function(arm,size=0x14) addr:0x020f95dc _ZN12ActorUnkSWCHD0Ev kind:function(arm,size=0x1c) addr:0x020f95f0 _ZN19ActorProfileUnkSWCHD1Ev kind:function(arm,size=0x14) addr:0x020f960c func_ov031_020f9620 kind:function(arm,size=0x30) addr:0x020f9620 -func_ov031_020f9650 kind:function(arm,size=0x30) addr:0x020f9650 +_ZN18ActorShotArrow_140C1EP5Actor kind:function(arm,size=0x30) addr:0x020f9650 func_ov031_020f9680 kind:function(arm,size=0x158) addr:0x020f9680 func_ov031_020f97d8 kind:function(arm,size=0x28) addr:0x020f97d8 _ZN19ActorProfileUnkSWON10GetProfileEv kind:function(arm,size=0xc) addr:0x020f9800 @@ -1192,7 +1192,7 @@ _ZN13ActorItemDrop19func_ov031_020fa900Ev kind:function(arm,size=0xf8) addr:0x02 _ZN16ActorItemDrop_C4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fc450 _ZN16ActorItemDrop_C48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020fc488 _ZN16ActorItemDrop_C48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020fc4cc -_ZN16ActorItemDrop_C48vfunc_0CEi kind:function(arm,size=0x28) addr:0x020fc4ec +_ZN16ActorItemDrop_C48vfunc_0CEP7VecFx32 kind:function(arm,size=0x28) addr:0x020fc4ec _ZN16ActorItemDrop_C48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020fc514 _ZN13ActorItemDropD1Ev kind:function(arm,size=0x14) addr:0x020fc534 _ZN13ActorItemDropD0Ev kind:function(arm,size=0x1c) addr:0x020fc548 @@ -1272,7 +1272,7 @@ _ZN15ActorUnkNFSP_C0C1EP12ActorUnkNFSP kind:function(arm,size=0x38) addr:0x020fd _ZN15ActorUnkNFSP_C08vfunc_00E8ActorRefi kind:function(arm,size=0x58) addr:0x020fd684 _ZN15ActorUnkNFSP_C08vfunc_04Ev kind:function(arm,size=0x2c) addr:0x020fd6dc _ZN15ActorUnkNFSP_C08vfunc_08Ev kind:function(arm,size=0x30) addr:0x020fd708 -_ZN15ActorUnkNFSP_C08vfunc_0CEi kind:function(arm,size=0x38) addr:0x020fd738 +_ZN15ActorUnkNFSP_C08vfunc_0CEP7VecFx32 kind:function(arm,size=0x38) addr:0x020fd738 _ZN12ActorUnkNFSPD1Ev kind:function(arm,size=0x14) addr:0x020fd770 _ZN12ActorUnkNFSPD0Ev kind:function(arm,size=0x1c) addr:0x020fd784 _ZN19ActorProfileUnkNFSPD1Ev kind:function(arm,size=0x14) addr:0x020fd7a0 diff --git a/config/jp/arm9/overlays/ov063/delinks.txt b/config/jp/arm9/overlays/ov063/delinks.txt index 533024dc..2606270a 100644 --- a/config/jp/arm9/overlays/ov063/delinks.txt +++ b/config/jp/arm9/overlays/ov063/delinks.txt @@ -15,6 +15,7 @@ src/063_Shrine/Actor/ActorUnkCASE.cpp: .text start:0x0215c894 end:0x0215d890 .init start:0x021645b8 end:0x0216464c .ctor start:0x02164c5c end:0x02164c60 + .data start:0x02164ee8 end:0x02165044 .bss start:0x02165a68 end:0x02165b50 src/063_Shrine/Actor/ActorUnkRMSV.cpp: diff --git a/config/jp/arm9/overlays/ov063/relocs.txt b/config/jp/arm9/overlays/ov063/relocs.txt index 702ce7f9..f71db28e 100644 --- a/config/jp/arm9/overlays/ov063/relocs.txt +++ b/config/jp/arm9/overlays/ov063/relocs.txt @@ -309,17 +309,17 @@ from:0x0215c8d0 kind:arm_call to:0x02099040 module:overlay(0) from:0x0215c904 kind:load to:0x02164f94 add:0x8 module:overlay(63) from:0x0215c914 kind:arm_call_thumb to:0x0209bf30 module:overlay(0) from:0x0215c928 kind:arm_call to:0x02059498 module:overlay(0) -from:0x0215c938 kind:load to:0x02164fc0 module:overlay(63) +from:0x0215c938 kind:load to:0x02164fb8 module:overlay(63) add:0x8 from:0x0215c93c kind:load to:0x02164380 module:overlay(63) from:0x0215c958 kind:arm_call to:0x020f7d24 module:overlays(21,31) -from:0x0215c970 kind:load to:0x02164f68 module:overlay(63) +from:0x0215c970 kind:load to:0x02164f60 module:overlay(63) add:0x8 from:0x0215c9c8 kind:arm_call to:0x0215d5b0 module:overlay(63) from:0x0215c9d8 kind:arm_call to:0x020f7d84 module:overlay(31) from:0x0215c9f4 kind:arm_call to:0x0215d5f0 module:overlay(63) from:0x0215c9fc kind:arm_call to:0x020f7e14 module:overlay(31) from:0x0215ca14 kind:arm_call to:0x0215d684 module:overlay(63) from:0x0215ca20 kind:arm_call to:0x020f7e24 module:overlay(31) -from:0x0215ca60 kind:load to:0x02164f80 module:overlay(63) +from:0x0215ca60 kind:load to:0x02164f78 module:overlay(63) add:0x8 from:0x0215ca74 kind:arm_call to:0x0215d4c0 module:overlay(63) from:0x0215ca80 kind:arm_call to:0x0207cdc4 module:overlay(0) from:0x0215caa8 kind:arm_call to:0x02098dac module:overlay(0) @@ -1622,7 +1622,7 @@ from:0x02164f50 kind:load to:0x0215cf58 module:overlay(63) from:0x02164f58 kind:load to:0x0215d04c module:overlay(63) from:0x02164f68 kind:load to:0x0215c974 module:overlay(63) from:0x02164f6c kind:load to:0x0215c9e8 module:overlay(63) -from:0x02164f70 kind:load to:0x020f7e1c module:overlays(22,23,31) +from:0x02164f70 kind:load to:0x020f7e1c module:overlay(31) from:0x02164f74 kind:load to:0x0215ca04 module:overlay(63) from:0x02164f80 kind:load to:0x0215cc1c module:overlay(63) from:0x02164f84 kind:load to:0x0215d7dc module:overlay(63) diff --git a/config/jp/arm9/overlays/ov063/symbols.txt b/config/jp/arm9/overlays/ov063/symbols.txt index c4157741..d2762602 100644 --- a/config/jp/arm9/overlays/ov063/symbols.txt +++ b/config/jp/arm9/overlays/ov063/symbols.txt @@ -65,19 +65,19 @@ _ZN19ActorProfileUnkCANSD1Ev kind:function(arm,size=0x14) addr:0x0215c880 _ZN19ActorProfileUnkCASE10GetProfileEv kind:function(arm,size=0xc) addr:0x0215c894 _ZN19ActorProfileUnkCASE6CreateEv kind:function(arm,size=0x24) addr:0x0215c8a0 _ZN19ActorProfileUnkCASEC1Ev kind:function(arm,size=0x48) addr:0x0215c8c4 -_ZN12ActorUnkCASE19func_ov063_0215ab70Ev kind:function(arm,size=0x34) addr:0x0215c90c -_ZN12ActorUnkCASE19func_ov063_0215aba4Ev kind:function(arm,size=0x34) addr:0x0215c940 -_ZN12ActorUnkCASE19func_ov063_0215abd8Ev kind:function(arm,size=0x74) addr:0x0215c974 -_ZN12ActorUnkCASE19func_ov063_0215ac4cEv kind:function(arm,size=0x1c) addr:0x0215c9e8 -_ZN12ActorUnkCASE19func_ov063_0215ac68Ev kind:function(arm,size=0x24) addr:0x0215ca04 -_ZN12ActorUnkCASE19func_ov063_0215ac8cEv kind:function(arm,size=0x3c) addr:0x0215ca28 -_ZN12ActorUnkCASE19func_ov063_0215acc8Ev kind:function(arm,size=0x24) addr:0x0215ca64 +_ZN24UnkStruct_ov063_021631a0C1EP10G3d_Model_ kind:function(arm,size=0x34) addr:0x0215c90c +_ZN16ActorUnkCASE_150C1EP5Actor kind:function(arm,size=0x34) addr:0x0215c940 +_ZN16ActorUnkCASE_1508vfunc_00E8ActorRefi kind:function(arm,size=0x74) addr:0x0215c974 +_ZN16ActorUnkCASE_1508vfunc_04Ev kind:function(arm,size=0x1c) addr:0x0215c9e8 +_ZN16ActorUnkCASE_1508vfunc_0CEP7VecFx32 kind:function(arm,size=0x24) addr:0x0215ca04 +_ZN16ActorUnkCASE_174C1EP5Actor kind:function(arm,size=0x3c) addr:0x0215ca28 +_ZN16ActorUnkCASE_1748vfunc_10EP5Actor kind:function(arm,size=0x24) addr:0x0215ca64 _ZN12ActorUnkCASE19func_ov063_0215acecEP8ActorRefS0_ kind:function(arm,size=0x5c) addr:0x0215ca88 _ZN12ActorUnkCASEC1Ev kind:function(arm,size=0x124) addr:0x0215cae4 -_ZN12ActorUnkCASE19func_ov063_0215ae6cEv kind:function(arm,size=0x14) addr:0x0215cc08 -_ZN12ActorUnkCASE19func_ov063_0215ae80Ev kind:function(arm,size=0x14) addr:0x0215cc1c -_ZN12ActorUnkCASE19func_ov063_0215ae94Ev kind:function(arm,size=0x68) addr:0x0215cc30 -_ZN12ActorUnkCASE19func_ov063_0215aefcEv kind:function(arm,size=0x58) addr:0x0215cc98 +_ZN24UnkStruct_ov063_021631a0D1Ev kind:function(arm,size=0x14) addr:0x0215cc08 +_ZN16ActorUnkCASE_174D1Ev kind:function(arm,size=0x14) addr:0x0215cc1c +_ZN12ActorUnkCASE8vfunc_18Ei kind:function(arm,size=0x68) addr:0x0215cc30 +_ZN12ActorUnkCASE19func_ov063_0215aefcEs kind:function(arm,size=0x58) addr:0x0215cc98 _ZN12ActorUnkCASE19func_ov063_0215af54Ev kind:function(arm,size=0x4) addr:0x0215ccf0 _ZN12ActorUnkCASE19func_ov063_0215af58Ev kind:function(arm,size=0x4) addr:0x0215ccf4 _ZN12ActorUnkCASE19func_ov063_0215af5cEv kind:function(arm,size=0x4) addr:0x0215ccf8 @@ -90,20 +90,20 @@ _ZN12ActorUnkCASE19func_ov063_0215b1bcEv kind:function(arm,size=0x88) addr:0x021 _ZN12ActorUnkCASE19func_ov063_0215b244Ev kind:function(arm,size=0x6c) addr:0x0215cfe0 _ZN12ActorUnkCASE19func_ov063_0215b2b0Ev kind:function(arm,size=0x14) addr:0x0215d04c _ZN12ActorUnkCASE19func_ov063_0215b2c4Ev kind:function(arm,size=0x4) addr:0x0215d060 -_ZN12ActorUnkCASE19func_ov063_0215b2c8Ev kind:function(arm,size=0x24) addr:0x0215d064 -_ZN12ActorUnkCASE19func_ov063_0215b2ecEv kind:function(arm,size=0x338) addr:0x0215d088 -_ZN12ActorUnkCASE19func_ov063_0215b624Ev kind:function(arm,size=0xa4) addr:0x0215d3c0 +_ZN12ActorUnkCASE8vfunc_24Ev kind:function(arm,size=0x24) addr:0x0215d064 +_ZN12ActorUnkCASE8vfunc_20Ev kind:function(arm,size=0x338) addr:0x0215d088 +_ZN12ActorUnkCASE8vfunc_2CEi kind:function(arm,size=0xa4) addr:0x0215d3c0 _ZN12ActorUnkCASE19func_ov063_0215b6c8EP7VecFx3214UnkAngleStruct kind:function(arm,size=0x5c) addr:0x0215d464 _ZN12ActorUnkCASE19func_ov063_0215b724Ev kind:function(arm,size=0xa8) addr:0x0215d4c0 -_ZN12ActorUnkCASE19func_ov063_0215b7ccEv kind:function(arm,size=0x48) addr:0x0215d568 -_ZN12ActorUnkCASE19func_ov063_0215b814Ev kind:function(arm,size=0x40) addr:0x0215d5b0 +_ZN12ActorUnkCASE8vfunc_10EP8Cylinder kind:function(arm,size=0x48) addr:0x0215d568 +_ZN12ActorUnkCASE19func_ov063_0215b814E8ActorRef kind:function(arm,size=0x40) addr:0x0215d5b0 _ZN12ActorUnkCASE19func_ov063_0215b854Ev kind:function(arm,size=0x94) addr:0x0215d5f0 -_ZN12ActorUnkCASE19func_ov063_0215b8e8Ev kind:function(arm,size=0xac) addr:0x0215d684 -_ZN12ActorUnkCASE19func_ov063_0215b99cEv kind:function(arm,size=0xac) addr:0x0215d730 -_ZN12ActorUnkCASED0Ev kind:function(arm,size=0x1c) addr:0x0215d7dc -_ZN12ActorUnkCASE19func_ov063_0215ba64Ev kind:function(arm,size=0x1c) addr:0x0215d7f8 +_ZN12ActorUnkCASE19func_ov063_0215b8e8EP7VecFx32 kind:function(arm,size=0xac) addr:0x0215d684 +_ZN12ActorUnkCASE19func_ov063_0215b99cEPS_P29UnkStruct_func_ov063_0215a678 kind:function(arm,size=0xac) addr:0x0215d730 +_ZN16ActorUnkCASE_174D0Ev kind:function(arm,size=0x1c) addr:0x0215d7dc +_ZN24UnkStruct_ov063_021631a0D0Ev kind:function(arm,size=0x1c) addr:0x0215d7f8 _ZN12ActorUnkCASED1Ev kind:function(arm,size=0x30) addr:0x0215d814 -_ZN12ActorUnkCASE19func_ov063_0215bab0Ev kind:function(arm,size=0x38) addr:0x0215d844 +_ZN12ActorUnkCASED0Ev kind:function(arm,size=0x38) addr:0x0215d844 _ZN19ActorProfileUnkCASED1Ev kind:function(arm,size=0x14) addr:0x0215d87c func_ov063_0215bafc kind:function(arm,size=0x38) addr:0x0215d890 func_ov063_0215bb34 kind:function(arm,size=0x54) addr:0x0215d8c8 @@ -364,8 +364,8 @@ func_ov063_021624dc kind:function(arm,size=0x48) addr:0x021642f4 data_ov063_02162528 kind:data(any) addr:0x02164340 data_ov063_02162538 kind:data(any) addr:0x02164350 data_ov063_02162548 kind:data(any) addr:0x02164360 -data_ov063_02164370 kind:data(any) addr:0x02164370 -data_ov063_02164380 kind:data(any) addr:0x02164380 +data_ov063_02162558 kind:data(any) addr:0x02164370 +data_ov063_02162568 kind:data(any) addr:0x02164380 data_ov063_02162578 kind:data(any) addr:0x02164390 data_ov063_02162588 kind:data(any) addr:0x021643a0 data_ov063_02162598 kind:data(any) addr:0x021643b0 @@ -427,14 +427,14 @@ data_ov063_02163068 kind:data(any) addr:0x02164e88 data_ov063_02163080 kind:data(any) addr:0x02164ea0 data_ov063_02163098 kind:data(any) addr:0x02164eb8 data_ov063_021630b0 kind:data(any) addr:0x02164ed0 -data_ov063_02164ee8 kind:data(any) addr:0x02164ee8 -data_ov063_02164f00 kind:data(any) addr:0x02164f00 -data_ov063_02164f30 kind:data(any) addr:0x02164f30 -data_ov063_02164f68 kind:data(any) addr:0x02164f68 -data_ov063_02164f80 kind:data(any) addr:0x02164f80 -_ZTV19data_ov063_02164f94 kind:data(any) addr:0x02164f94 -data_ov063_02164fc0 kind:data(any) addr:0x02164fc0 -_ZTV19data_ov063_02164fe4 kind:data(any) addr:0x02164fe4 +data_ov063_021630c8 kind:data(any) addr:0x02164ee8 +data_ov063_021630e0 kind:data(any) addr:0x02164f00 +data_ov063_02163110 kind:data(any) addr:0x02164f30 +_ZTV16ActorUnkCASE_150 kind:data(any) addr:0x02164f60 +_ZTV16ActorUnkCASE_174 kind:data(any) addr:0x02164f78 +_ZTV19ActorProfileUnkCASE kind:data(any) addr:0x02164f94 +_ZTV24UnkStruct_ov063_021631a0 kind:data(any) addr:0x02164fb8 +_ZTV12ActorUnkCASE kind:data(any) addr:0x02164fe4 _ZTV19data_ov063_02165044 kind:data(any) addr:0x02165044 _ZTV19ActorProfileUnkRMSV kind:data(any) addr:0x021650a8 data_ov063_021632ac kind:data(any) addr:0x021650cc diff --git a/config/jp/arm9/overlays/ov071/symbols.txt b/config/jp/arm9/overlays/ov071/symbols.txt index 5f278847..2ec697d8 100644 --- a/config/jp/arm9/overlays/ov071/symbols.txt +++ b/config/jp/arm9/overlays/ov071/symbols.txt @@ -322,7 +322,7 @@ _ZN14ActorTearLight19func_ov071_0215ffbcEv kind:function(arm,size=0x44) addr:0x0 _ZN18ActorTearLight_194C2EP14ActorTearLight kind:function(arm,size=0x38) addr:0x02162240 _ZN18ActorTearLight_1948vfunc_00E8ActorRefi kind:function(arm,size=0x40) addr:0x02162278 _ZN18ActorTearLight_1948vfunc_04Ev kind:function(arm,size=0x1c) addr:0x021622b8 -_ZN18ActorTearLight_1948vfunc_0CEi kind:function(arm,size=0x24) addr:0x021622d4 +_ZN18ActorTearLight_1948vfunc_0CEP7VecFx32 kind:function(arm,size=0x24) addr:0x021622d4 _ZN18ActorTearLight_1948vfunc_08Ev kind:function(arm,size=0x1c) addr:0x021622f8 _ZN18ActorTearLight_204C2Ev kind:function(arm,size=0x14) addr:0x02162314 _ZN18ActorTearLight_104D0Ev kind:function(arm,size=0x1c) addr:0x02162328 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 82ebbe9a..69aae904 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -9,6 +9,7 @@ #include "flags.h" #include "global.h" #include "math.hpp" +#include "nitro/fx.h" #include "types.h" #include "versions.h" @@ -164,7 +165,7 @@ public: /* 04 */ virtual bool vfunc_04(); /* 08 */ virtual unk16 vfunc_08(); /* 0C */ virtual unk8 vfunc_0C(); - /* 10 */ virtual void vfunc_10(VecFx32 *param1); + /* 10 */ virtual void vfunc_10(Cylinder *param1); /* 14 */ virtual void vfunc_14(); /* 18 */ virtual bool vfunc_18(unk32 param1); // Init? /* 1C */ virtual void vfunc_1C(); // Setup @@ -281,7 +282,7 @@ public: /* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2); /* 04 */ virtual bool vfunc_04(); /* 08 */ virtual void vfunc_08(); - /* 0C */ virtual void vfunc_0C(unk32 param1); + /* 0C */ virtual void vfunc_0C(VecFx32 *param1); /* 10 */ template T *GetActorPtr() { @@ -290,6 +291,9 @@ public: Actor_C4(Actor *param1) : Actor_C4_Base(¶m1->mRef, 0) {} + + Actor_C4(Actor *param1, unk32 param2) : + Actor_C4_Base(¶m1->mRef, param2) {} }; class Actor_Derived2 : public Actor { diff --git a/include/Actor/ActorHeart.hpp b/include/Actor/ActorHeart.hpp index d5e67d3e..3e98153a 100644 --- a/include/Actor/ActorHeart.hpp +++ b/include/Actor/ActorHeart.hpp @@ -3,6 +3,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "ActorRupee.hpp" +#include "nitro/fx.h" #include "types.h" enum ActorHeartState_ { @@ -22,7 +23,7 @@ public: /* 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; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; class ActorHeart : public Actor { diff --git a/include/Actor/ActorItemDrop.hpp b/include/Actor/ActorItemDrop.hpp index d2c400eb..335ffb6f 100644 --- a/include/Actor/ActorItemDrop.hpp +++ b/include/Actor/ActorItemDrop.hpp @@ -3,6 +3,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "global.h" +#include "nitro/fx.h" #include "types.h" typedef u32 ItemDropType; @@ -39,7 +40,7 @@ public: virtual bool vfunc_00(ActorRef ref, unk32 param2) override; virtual bool vfunc_04() override; virtual void vfunc_08() override; - virtual void vfunc_0C(unk32 param1) override; + virtual void vfunc_0C(VecFx32 *param1) override; }; class ActorItemDrop : public Actor_Derived2 { diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index 4743b6ee..22c9b7aa 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -5,6 +5,7 @@ #include "Actor/ActorProfile.hpp" #include "Actor/Actor_Derived1.hpp" #include "Player/PlayerGet.hpp" +#include "nitro/fx.h" #include "types.h" typedef u32 RupeeId; @@ -43,7 +44,7 @@ public: /* 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; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; class ActorRupee : public Actor { diff --git a/include/Actor/ActorTearLight.hpp b/include/Actor/ActorTearLight.hpp index 01216dab..01b40466 100644 --- a/include/Actor/ActorTearLight.hpp +++ b/include/Actor/ActorTearLight.hpp @@ -7,6 +7,7 @@ #include "ActorUnkZLSL_ZSRS.hpp" #include "Item/Item.hpp" #include "global.h" +#include "nitro/fx.h" #include "types.h" class ActorTearLight; @@ -39,7 +40,7 @@ public: /* 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; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; class ActorTearLight_104_Base : public UnkStruct_ov000_020b31a8 { diff --git a/include/Actor/ActorUnkCANS.hpp b/include/Actor/ActorUnkCANS.hpp index 90eacd99..71a35be2 100644 --- a/include/Actor/ActorUnkCANS.hpp +++ b/include/Actor/ActorUnkCANS.hpp @@ -45,16 +45,6 @@ public: /* 0C */ virtual bool vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2, unk32 param3) override; }; -class UnkStruct_ov000_020b19f0 : public ModelRender { -public: - UnkStruct_ov000_020b19f0(G3d_Model *pModel); -}; - -class UnkStruct_ov000_020b3268 : public UnkStruct_ov000_020b19f0 { -public: - UnkStruct_ov000_020b3268(G3d_Model *pModel); -}; - class UnkStruct_ov063_02162ee8 : public UnkStruct_ov000_020b3268 { public: /* 00 (base) */ @@ -100,17 +90,6 @@ public: /* 04 */ virtual unk32 vfunc_04(ActorRef param1, unk32 param2, unk32 param3, unk32 *param4) override; }; -class UnkStruct_func_ov063_0215a678 { -public: - /* 00 */ STRUCT_PAD(0x00, 0x04); - /* 04 */ ModelRender *mUnk_04; //! INFO: Placeholder that matches - /* 08 */ unk32 mUnk_08; - /* 0C */ STRUCT_PAD(0x0C, 0x92); - /* 92 */ s8 mUnk_92; - /* 93 */ STRUCT_PAD(0x93, 0xAE); - /* AE */ u8 mUnk_AE; -}; - class UnkStruct_ActorUnkCANS_224 { public: /* 00 (base) */ @@ -123,7 +102,7 @@ class ActorUnkCANS : public Actor_Derived2 { public: /* 000 (base) */ /* 0AE */ STRUCT_PAD(0xAE, 0xB0); - /* 0B0 */ UnkStruct_ov063_02162ee8 mUnk_B0; + /* 0B0 */ UnkStruct_ov063_02162ee8 mUnk_0B0; /* 128 */ UnkStruct_ov063_02162f14 mUnk_128; /* 1C8 */ STRUCT_PAD(0x1C8, 0x1F4); /* 1F4 */ Actor_Derived1_94 mUnk_1F4; diff --git a/include/Actor/ActorUnkCASE.hpp b/include/Actor/ActorUnkCASE.hpp index d08fe810..27b2cc7f 100644 --- a/include/Actor/ActorUnkCASE.hpp +++ b/include/Actor/ActorUnkCASE.hpp @@ -5,26 +5,94 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "Actor/ActorRef.hpp" +#include "Actor/ActorShotArrow.hpp" +#include "Actor/Actor_Derived1.hpp" +#include "Unknown/UnkStruct_ov000_020b3268.hpp" +#include "Unknown/UnkStruct_ov031_Items.hpp" #include "global.h" +#include "nitro/fx.h" +#include "nitro/math.h" #include "types.h" -class ActorUnkCASE_C4 : public Actor_C4 { +class UnkStruct_ov063_021631a0 : public UnkStruct_ov000_020b3268 { public: - ActorUnkCASE_C4(Actor *param1); + /* 00 (base) */ + /* 60 */ STRUCT_PAD(0x60, 0x6C); + /* 6C */ unk32 mUnk_6C; + /* 70 */ + + UnkStruct_ov063_021631a0(G3d_Model *pModel); + + /* 00 */ virtual ~UnkStruct_ov063_021631a0() override {}; +}; + +class UnkStruct_func_ov063_0215a678 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x04); + /* 04 */ ModelRender *mUnk_04; //! INFO: Placeholder that matches + /* 08 */ unk32 mUnk_08; + /* 0C */ STRUCT_PAD(0x0C, 0x25); + /* 25 */ u8 mUnk_25; + /* 26 */ STRUCT_PAD(0x26, 0x92); + /* 92 */ s8 mUnk_92; + /* 93 */ STRUCT_PAD(0x93, 0xAE); + /* AE */ u8 mUnk_AE; +}; + +class ActorUnkCASE_150 : public Actor_C4 { +public: + /* 00 (base) */ + /* 24 */ + + ActorUnkCASE_150(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; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; -class ActorUnkCASE : public Actor { +class ActorUnkCASE_174 : public UnkStruct_ov031_Items_01 { public: /* 00 (base) */ - /* 94 */ + /* 2C */ Actor *mUnk_2C; + /* 30 */ + + ActorUnkCASE_174(Actor *param1); + + /* 00 */ virtual ~ActorUnkCASE_174() override {}; + /* 10 */ virtual void vfunc_10(Actor *actor) override; +}; + +class ActorUnkCASE : public Actor_Derived2 { +public: + /* 000 (base) */ + /* 0AE */ unk16 mUnk_0AE; + /* 0B0 */ UnkStruct_ov063_021631a0 mUnk_0B0; + /* 120 */ unk16 mUnk_120; + /* 122 */ STRUCT_PAD(0x122, 0x124); + /* 124 */ ActorShotArrow_140 mUnk_124; + /* 14C */ Actor *mUnk_14C; + /* 150 */ ActorUnkCASE_150 mUnk_150; + /* 174 */ ActorUnkCASE_174 mUnk_174; + /* 1A4 */ Mat3p mUnk_1A4; + /* 1C8 */ unk16 mUnk_1C8; // Angle related + /* 1CA */ STRUCT_PAD(0x1CA, 0x1CC); + /* 1CC */ VecFx32 mUnk_1CC; + /* 1D8 */ unk32 mUnk_1D8; + /* 1DC */ unk32 mUnk_1DC; + /* 1E0 */ unk32 mUnk_1E0; + /* 1E4 */ ActorRef mUnk_1E4; + /* 1E8 */ Actor_Derived1_94 mUnk_1E8; + /* 1F4 */ u8 mUnk_1F4; + /* 1F5 */ ActorUnkCASE(); + /* 10 */ virtual void vfunc_10(Cylinder *param1) override; + /* 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; /* 4C */ virtual ~ActorUnkCASE() override; void func_ov063_0215ab70(void); @@ -37,8 +105,7 @@ public: static void func_ov063_0215acec(ActorRef *ref1, ActorRef ref2); // copy ? void func_ov063_0215ae6c(void); void func_ov063_0215ae80(void); - void func_ov063_0215ae94(void); - void func_ov063_0215aefc(void); + void func_ov063_0215aefc(ActorState param2); void func_ov063_0215af54(void); void func_ov063_0215af58(void); void func_ov063_0215af5c(void); @@ -51,18 +118,13 @@ public: void func_ov063_0215b244(void); void func_ov063_0215b2b0(void); void func_ov063_0215b2c4(void); - void func_ov063_0215b2c8(void); - void func_ov063_0215b2ec(void); - void func_ov063_0215b624(void); void func_ov063_0215b6c8(VecFx32 *param1, UnkAngleStruct angle); void func_ov063_0215b724(void); - void func_ov063_0215b7cc(void); - void func_ov063_0215b814(void); + void func_ov063_0215b814(ActorRef ref); void func_ov063_0215b854(void); - void func_ov063_0215b8e8(void); - void func_ov063_0215b99c(void); + void func_ov063_0215b8e8(VecFx32 *param1); + static void func_ov063_0215b99c(ActorUnkCASE *param1, UnkStruct_func_ov063_0215a678 *param2); void func_ov063_0215ba64(void); - void func_ov063_0215bab0(void); }; class ActorProfileUnkCASE : public ActorProfile_Derived1 { diff --git a/include/Actor/ActorUnkITWP.hpp b/include/Actor/ActorUnkITWP.hpp index a303c093..3ba5638d 100644 --- a/include/Actor/ActorUnkITWP.hpp +++ b/include/Actor/ActorUnkITWP.hpp @@ -5,6 +5,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" #include "global.h" +#include "nitro/math.h" #include "types.h" class ActorUnkITWP_C4 : public Actor_C4 { @@ -20,7 +21,10 @@ public: class ActorUnkITWP : public Actor { public: /* 00 (base) */ - /* 94 */ + /* 094 */ STRUCT_PAD(0x094, 0x0E8); + /* 0E8 */ VecFx32 mUnk_0E8; + /* 0F4 */ STRUCT_PAD(0x0F4, 0x154); + /* 154 */ Mat3p mUnk_154; ActorUnkITWP(); diff --git a/include/Actor/ActorUnkNFSP.hpp b/include/Actor/ActorUnkNFSP.hpp index ad75733f..48b98961 100644 --- a/include/Actor/ActorUnkNFSP.hpp +++ b/include/Actor/ActorUnkNFSP.hpp @@ -4,6 +4,7 @@ #include "Actor/ActorProfile.hpp" #include "ActorManager.hpp" #include "global.h" +#include "nitro/fx.h" #include "types.h" class MapObjectUnkSWFS; @@ -16,7 +17,7 @@ public: /* 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; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; }; class ActorUnkNFSP : public Actor { diff --git a/include/Unknown/UnkStruct_ov000_020b19f0.hpp b/include/Unknown/UnkStruct_ov000_020b19f0.hpp new file mode 100644 index 00000000..9df2818f --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020b19f0.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "Actor/ActorUnkZLSL_ZSRS.hpp" + +class UnkStruct_ov000_020b19f0 : public ModelRender_ov000_020b4d64 { +public: + UnkStruct_ov000_020b19f0(G3d_Model *pModel); + + /* 0C */ virtual void vfunc_0C() override; +}; diff --git a/include/Unknown/UnkStruct_ov000_020b3268.hpp b/include/Unknown/UnkStruct_ov000_020b3268.hpp new file mode 100644 index 00000000..db1a2ae9 --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020b3268.hpp @@ -0,0 +1,8 @@ +#pragma once + +#include "UnkStruct_ov000_020b19f0.hpp" + +class UnkStruct_ov000_020b3268 : public UnkStruct_ov000_020b19f0 { +public: + UnkStruct_ov000_020b3268(G3d_Model *pModel); +}; diff --git a/src/031_Land/Actor/ActorHeart.cpp b/src/031_Land/Actor/ActorHeart.cpp index d1c85abd..f6d2ed12 100644 --- a/src/031_Land/Actor/ActorHeart.cpp +++ b/src/031_Land/Actor/ActorHeart.cpp @@ -3,6 +3,7 @@ #include "Unknown/UnkStruct_027e09a8.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" +#include "nitro/fx.h" typedef struct { unk16 mUnk_00; @@ -451,7 +452,7 @@ bool ActorHeart_C4::vfunc_04() { return this->Actor_C4::vfunc_04(); } -void ActorHeart_C4::vfunc_0C(unk32 param1) { +void ActorHeart_C4::vfunc_0C(VecFx32 *param1) { this->GetActorPtr()->SetState(ActorHeartState_1); this->Actor_C4::vfunc_0C(param1); } diff --git a/src/031_Land/Actor/ActorItemDrop.cpp b/src/031_Land/Actor/ActorItemDrop.cpp index 664886e5..22708dd6 100644 --- a/src/031_Land/Actor/ActorItemDrop.cpp +++ b/src/031_Land/Actor/ActorItemDrop.cpp @@ -7,6 +7,7 @@ #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_027e0d34.hpp" +#include "nitro/fx.h" #include "versions.h" extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *); @@ -547,7 +548,7 @@ bool ActorItemDrop_C4::vfunc_04() { return Actor_C4::vfunc_04(); } -void ActorItemDrop_C4::vfunc_0C(unk32 param1) { +void ActorItemDrop_C4::vfunc_0C(VecFx32 *param1) { this->GetActorPtr()->SetState(ActorItemDropState_1); Actor_C4::vfunc_0C(param1); } diff --git a/src/031_Land/Actor/ActorRollingStone.cpp b/src/031_Land/Actor/ActorRollingStone.cpp index 21c8c416..34285c70 100644 --- a/src/031_Land/Actor/ActorRollingStone.cpp +++ b/src/031_Land/Actor/ActorRollingStone.cpp @@ -1,5 +1,6 @@ #include "Actor/ActorRollingStone.hpp" +#include "Physics/Cylinder.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_027e09a8.hpp" #include "Unknown/UnkStruct_027e09b4.hpp" @@ -288,17 +289,17 @@ void ActorRollingStone::func_ov031_020f8bc4() { sp38.z = MUL_FX32(cosValue, FLOAT_TO_FX32(1.0f)); sp38.y = FLOAT_TO_FX32(0.0f); - VecFx32 sp28; + Cylinder sp28; this->vfunc_10(&sp28); - sp28.z += FLOAT_TO_FX32(0.05f); + sp28.pos.z += FLOAT_TO_FX32(0.05f); - if (data_027e09c0->func_ov000_0207e458(0x2, 0x1B, &sp28, 0x2, &sp38, this->mRef)) { + if (data_027e09c0->func_ov000_0207e458(0x2, 0x1B, &sp28.pos, 0x2, &sp38, this->mRef)) { return; } this->func_ov000_02098ab4(0x2, 0x5, 0x1, &this->mVel); - this->vfunc_10(&this->mUnk_D4.mUnk_0C.pos); + this->vfunc_10(&this->mUnk_D4.mUnk_0C); VecFx32 sp14; VecFx32_Copy(&this->mPos, &sp14); @@ -625,17 +626,17 @@ void ActorRollingStone::func_ov031_020f9554() { sp38.y = FLOAT_TO_FX32(0.0f); sp38.z = MUL_FX32(cosValue, FLOAT_TO_FX32(0.25f)); - VecFx32 sp28; + Cylinder sp28; this->vfunc_10(&sp28); - sp28.z += FLOAT_TO_FX32(0.05f); + sp28.pos.z += FLOAT_TO_FX32(0.05f); - if (data_027e09c0->func_ov000_0207e458(0x2, 0x1B, &sp28, 0x2, &sp38, this->mRef)) { + if (data_027e09c0->func_ov000_0207e458(0x2, 0x1B, &sp28.pos, 0x2, &sp38, this->mRef)) { return; } this->func_ov000_02098ab4(0x2, 0x5, 0x1, 0x0); - this->vfunc_10(&this->mUnk_D4.mUnk_0C.pos); + this->vfunc_10(&this->mUnk_D4.mUnk_0C); data_027e09c0->func_ov000_0207e58c(this->mRef, 0xB, 0x4, &this->mUnk_D4); diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index f4e847b0..a26f9470 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -6,6 +6,7 @@ #include "Unknown/UnkStruct_027e0ce0.hpp" #include "Unknown/UnkStruct_027e0cec.hpp" #include "Unknown/UnkStruct_027e0d34.hpp" +#include "nitro/fx.h" static PTMF data_ov031_02113588[0xD] = { ActorRupee::func_ov031_020e91a8, // ActorRupeeState_0 @@ -863,7 +864,7 @@ bool ActorRupee_C4::vfunc_04() { return this->Actor_C4::vfunc_04(); } -void ActorRupee_C4::vfunc_0C(unk32 param1) { +void ActorRupee_C4::vfunc_0C(VecFx32 *param1) { this->GetActorPtr()->SetState(ActorRupeeState_1); this->Actor_C4::vfunc_0C(param1); } diff --git a/src/031_Land/Actor/ActorShotArrow.cpp b/src/031_Land/Actor/ActorShotArrow.cpp index 7ee3092f..0625e9c6 100644 --- a/src/031_Land/Actor/ActorShotArrow.cpp +++ b/src/031_Land/Actor/ActorShotArrow.cpp @@ -4,6 +4,7 @@ #include "Actor/ActorUnkGYAM.hpp" #include "Actor/ActorUnkIWTS.hpp" #include "Actor/ActorUnkMRD2.hpp" +#include "Physics/Cylinder.hpp" #include "System/OverlayManager.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_027e09a8.hpp" @@ -24,8 +25,7 @@ typedef struct UnkResourceStruct2 { typedef struct { /* 00 */ VecFx32 mUnk_00; - /* 0C */ VecFx32 mUnk_0C; - /* 18 */ unk32 mUnk_18; + /* 0C */ Cylinder mUnk_0C; /* 1C */ VecFx32 mUnk_1C; /* 28 */ VecFx32 mUnk_28; /* 34 */ @@ -43,8 +43,7 @@ typedef struct { typedef struct { /* 00 */ STRUCT_PAD(0x00, 0x04); - /* 04 */ VecFx32 mUnk_04; - /* 10 */ STRUCT_PAD(0x10, 0x14); + /* 04 */ Cylinder mUnk_04; /* 14 */ VecFx32 mUnk_14; /* 20 */ } UnkStruct_020f3c38; @@ -1006,14 +1005,14 @@ void ActorShotArrow_194::func_ov031_020f374c(Actor *actor) { func_01ffb714(&stack.mUnk_1C, &actor->mVel, &stack.mUnk_1C); actor->vfunc_10(&stack.mUnk_0C); - stack.mUnk_00 = stack.mUnk_0C; + stack.mUnk_00 = stack.mUnk_0C.pos; func_01ffb714(&stack.mUnk_00, &stack.mUnk_1C, &stack.mUnk_00); unk32 temp = func_01ff9258(stack.mUnk_00.x, stack.mUnk_00.z); //! @bug: stack.mUnk_18 is used uninitialized? - if (temp > stack.mUnk_18 && stack.mUnk_18 > FLOAT_TO_FX32(0.15f)) { - fx32 temp_r5 = (temp - stack.mUnk_18) + FLOAT_TO_FX32(0.15f); + if (temp > stack.mUnk_0C.size && stack.mUnk_0C.size > FLOAT_TO_FX32(0.15f)) { + fx32 temp_r5 = (temp - stack.mUnk_0C.size) + FLOAT_TO_FX32(0.15f); u16 value = (u32) (s16) (s32) func_01ffbbe0(stack.mUnk_00.x, stack.mUnk_00.z); fx16 sin = SIN(value); @@ -1130,7 +1129,7 @@ bool ActorShotArrow_194::vfunc_0C(Actor *actor, VecFx32 *vector) { func_01ffb714(&actor->mVel, &this->mUnk_2C->mVel, &stack.mUnk_14); actor->vfunc_10(&stack.mUnk_04); - if (!func_01ffccf4(&this->mUnk_0C, &stack.mUnk_04, &stack.mUnk_14, &this->mUnk_30)) { + if (!func_01ffccf4(&this->mUnk_0C, &stack.mUnk_04.pos, &stack.mUnk_14, &this->mUnk_30)) { return false; } diff --git a/src/031_Land/Actor/ActorUnkNFSP.cpp b/src/031_Land/Actor/ActorUnkNFSP.cpp index 918a8958..35eac8ef 100644 --- a/src/031_Land/Actor/ActorUnkNFSP.cpp +++ b/src/031_Land/Actor/ActorUnkNFSP.cpp @@ -3,6 +3,7 @@ #include "Actor/ActorManager.hpp" #include "MapObject/MapObjectUnkSWFS.hpp" #include "System/SysNew.hpp" +#include "nitro/fx.h" class ActorUnkNFSP_vfunc_54 : public Actor { public: @@ -221,7 +222,7 @@ void ActorUnkNFSP_C0::vfunc_08() { this->Actor_C4::vfunc_08(); } -void ActorUnkNFSP_C0::vfunc_0C(unk32 param1) { +void ActorUnkNFSP_C0::vfunc_0C(VecFx32 *param1) { this->mUnk_04 = 0x1; this->GetActorPtr()->vfunc_54(0x3); this->Actor_C4::vfunc_0C(param1); diff --git a/src/063_Shrine/Actor/ActorUnkCANS.cpp b/src/063_Shrine/Actor/ActorUnkCANS.cpp index ab26d4c8..83886597 100644 --- a/src/063_Shrine/Actor/ActorUnkCANS.cpp +++ b/src/063_Shrine/Actor/ActorUnkCANS.cpp @@ -152,11 +152,6 @@ bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, return UnkStruct_027e0ce0_38_Base::vfunc_0C((const UnkStruct_ov031_020e54d4 *) param2Struct->mUnk_04, param2, param2Struct->mUnk_04); } -UnkStruct_ov000_020b19f0::UnkStruct_ov000_020b19f0(G3d_Model *pModel) : - ModelRender(pModel) {} - -UnkStruct_ov000_020b3268::UnkStruct_ov000_020b3268(G3d_Model *pModel) : - UnkStruct_ov000_020b19f0(pModel) {} UnkStruct_ov063_02162ee8::UnkStruct_ov063_02162ee8(G3d_Model *pModel) : UnkStruct_ov000_020b3268(pModel), @@ -216,8 +211,8 @@ unk32 UnkStruct_ov063_02162e88::vfunc_04(ActorRef param1, unk32 param2, unk32 pa } ActorUnkCANS::ActorUnkCANS() : - mUnk_B0(G3d_GetModelPtr(((MapObjectProfile_Derived2_20 *) GET_PROFILE(ActorProfileUnkCANS)->vfunc_04())->mUnk_50)), - mUnk_128(&mUnk_B0, GET_PROFILE(ActorProfileUnkCANS)->vfunc_04()), + mUnk_0B0(G3d_GetModelPtr(((MapObjectProfile_Derived2_20 *) GET_PROFILE(ActorProfileUnkCANS)->vfunc_04())->mUnk_50)), + mUnk_128(&mUnk_0B0, GET_PROFILE(ActorProfileUnkCANS)->vfunc_04()), mUnk_1F4(), mUnk_200(this), mUnk_224(), @@ -228,12 +223,12 @@ ActorUnkCANS::ActorUnkCANS() : mUnk_250(mUnk_5C.mInitialPos), mUnk_274(0), mUnk_270(0xCD) { - mFlags[0] |= 0x40; + SET_FLAG(mFlags, ActorFlag_6); Actor_38 *actor_38 = (Actor_38 *) &mUnk_1F4; mUnk_38 = actor_38; actor_38->mUnk_08 = 4; this->func_ov000_0209862c(4); - mUnk_200.mUnk_04 &= 0xFFFFBFFF; + UNSET_FLAG(&mUnk_200.mUnk_04, ActorFlag_14); mUnk_276 = gRandom.Next32(0) & 0x80000000 ? 1 : -1; mUnk_48 = 4; mUnk_270 *= mUnk_276; @@ -255,8 +250,8 @@ void ActorUnkCANS::vfunc_10(Cylinder *param1) { // return bool ? unk32 ActorUnkCANS::vfunc_18(void) { - this->mUnk_B0.func_ov000_02057c38(6, 2); - this->mUnk_B0.func_ov000_0209a7b8(this, (UnkSystem4_UnkCallback) ActorUnkCANS::func_ov063_0215a678); + this->mUnk_0B0.func_ov000_02057c38(6, 2); + this->mUnk_0B0.func_ov000_0209a7b8(this, (UnkSystem4_UnkCallback) ActorUnkCANS::func_ov063_0215a678); ActorRef var; ActorManager *actorManager = gpActorManager; @@ -506,7 +501,7 @@ void ActorUnkCANS::vfunc_2C(unk32 param1) { return; } - ((UnkSystem6_Derived2 *) &mUnk_B0)->func_01ffc6d4(mAngleStruct, &mPos); + ((UnkSystem6_Derived2 *) &mUnk_0B0)->func_01ffc6d4(mAngleStruct, &mPos); if (mUnk_268 != NULL) { VecFx32 vec; @@ -1202,10 +1197,10 @@ void ActorUnkCANS::func_ov063_0215a678(ActorUnkCANS *actor, UnkStruct_func_ov063 } else { var1 = 0x1F; } - func_0200eab0(modelRender->mpModel, actor->mUnk_B0.mUnk_6C, var1); + func_0200eab0(modelRender->mpModel, actor->mUnk_0B0.mUnk_6C, var1); unk32 var2 = param2->mUnk_08 & 0x10 ? param2->mUnk_AE : -1; - if (var2 == actor->mUnk_B0.mUnk_70) { + if (var2 == actor->mUnk_0B0.mUnk_70) { if (((u8 *) &modelRender->mRenderObj.mUnk_1C)[1] == 2) { param2->mUnk_92 = 3; ((u8 *) &modelRender->mRenderObj.mUnk_1C)[1] = 3; @@ -1236,7 +1231,7 @@ void ActorUnkCANS::func_ov063_0215a678(ActorUnkCANS *actor, UnkStruct_func_ov063 } unk32 var3 = param2->mUnk_08 & 0x10 ? param2->mUnk_AE : -1; - if (var3 == actor->mUnk_B0.mUnk_74) { + if (var3 == actor->mUnk_0B0.mUnk_74) { if (((u8 *) &modelRender->mRenderObj.mUnk_1C)[1] == 2) { param2->mUnk_92 = 3; ((u8 *) &modelRender->mRenderObj.mUnk_1C)[1] = 3; diff --git a/src/063_Shrine/Actor/ActorUnkCASE.cpp b/src/063_Shrine/Actor/ActorUnkCASE.cpp index 58dabde7..094aa1d2 100644 --- a/src/063_Shrine/Actor/ActorUnkCASE.cpp +++ b/src/063_Shrine/Actor/ActorUnkCASE.cpp @@ -1,9 +1,76 @@ -//! TODO: This file was generated automatically and might contain errors +#define VECFX32_CTORS //! TODO: remove this hack #include "Actor/ActorUnkCASE.hpp" +#include "Actor/Actor.hpp" +#include "Actor/ActorId.hpp" +#include "Actor/ActorManager.hpp" #include "Actor/ActorRef.hpp" -#include "System/SysNew.hpp" +#include "Actor/ActorShotArrow.hpp" +#include "Actor/ActorUnkCANS.hpp" +#include "Actor/ActorUnkITWP.hpp" +#include "MapObject/MapObjectProfile_Derived2_20.hpp" +#include "Physics/Cylinder.hpp" +#include "Render/ModelRender.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_027e0d38.hpp" +#include "flags.h" +#include "global.h" #include "nitro/fx.h" +#include "nitro/math.h" +#include "nns/g3d/g3d.h" + +extern const void *data_ov063_02162558; +extern const void *data_ov063_02162568; + +extern Mat4x3p data_027e0964; +extern "C" void func_01ffa60c(const Mat3p *, Mat3p *, Mat3p *); +extern "C" void func_01ffa7a0(VecFx32 *, Mat3p *, VecFx32 *); +extern "C" void func_01ffad5c(Mat4x3p *, Mat4x3p *, Mat4x3p *); +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *); +extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); + +// Overlay 0 +extern unk32 data_ov000_020aecf8[0x2]; //! INFO: Unsure about the size and type +extern u16 data_ov000_020aed00; +extern "C" void func_ov000_0207b70c(ActorUnkCASE_174 *param1, Actor *param2); +extern "C" void func_ov000_020990c0(ActorUnkCASE *param1, ActorShotArrow_140 *param2, unk32 param3, unk32 param4); + +// Overlay 17 +extern "C" unk32 func_ov017_020bef4c(ActorUnkCASE *param1, unk32 param2); + +// Other +extern "C" void G3d_GetCurrentMtx(Mat4x3p *mtx1, Mat3p *mtx2); + +struct UnkStruct_data_ov063_021630c8 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + + UnkStruct_data_ov063_021630c8(unk32 a, unk32 b, unk32 c, unk32 d, unk32 e, unk32 f) { + mUnk_00 = a; + mUnk_04 = b; + mUnk_08 = c; + mUnk_0C = d; + mUnk_10 = e; + mUnk_14 = f; + } +}; + +const UnkStruct_data_ov063_021630c8 data_ov063_021630c8(0x5EC, 0x785, 0xFFFFFD48, 0x7AE, 0x112, 0xFFFFECA4); + +static PTMF data_ov063_021630e0[0x6] = {ActorUnkCASE::func_ov063_0215af58, ActorUnkCASE::func_ov063_0215af60, + ActorUnkCASE::func_ov063_0215afb8, ActorUnkCASE::func_ov063_0215b090, + ActorUnkCASE::func_ov063_0215b244, ActorUnkCASE::func_ov063_0215b2c4}; + +static PTMF data_ov063_02163110[0x6] = {ActorUnkCASE::func_ov063_0215af54, ActorUnkCASE::func_ov063_0215af5c, + ActorUnkCASE::func_ov063_0215afa4, ActorUnkCASE::func_ov063_0215b054, + ActorUnkCASE::func_ov063_0215b1bc, ActorUnkCASE::func_ov063_0215b2b0}; DECL_PROFILE(ActorProfileUnkCASE); @@ -12,46 +79,505 @@ Actor *ActorProfileUnkCASE::Create() { } ActorProfileUnkCASE::ActorProfileUnkCASE() : - ActorProfile_Derived1(ActorId_CASE) {} + ActorProfile_Derived1(ActorId_CASE) { + VecFx32_Init(0, 0x666, 0, &mUnk_04.pos); + mUnk_04.size = 0x800; +} -ActorUnkCASE::ActorUnkCASE() {} +UnkStruct_ov063_021631a0::UnkStruct_ov063_021631a0(G3d_Model *pModel) : + UnkStruct_ov000_020b3268(pModel), + mUnk_6C(ModelRender::func_ov000_02057f18(&data_ov063_02162568)) {} -void ActorUnkCASE::func_ov063_0215ab70(void) {} -void ActorUnkCASE::func_ov063_0215aba4(void) {} -void ActorUnkCASE::func_ov063_0215abd8(void) {} -void ActorUnkCASE::func_ov063_0215ac4c(void) {} -void ActorUnkCASE::func_ov063_0215ac68(void) {} -void ActorUnkCASE::func_ov063_0215ac8c(void) {} -void ActorUnkCASE::func_ov063_0215acc8(void) {} -void ActorUnkCASE::func_ov063_0215acec(ActorRef *ref1, ActorRef ref2) {}; -void ActorUnkCASE::func_ov063_0215ae6c(void) {} -void ActorUnkCASE::func_ov063_0215ae80(void) {} -void ActorUnkCASE::func_ov063_0215ae94(void) {} -void ActorUnkCASE::func_ov063_0215aefc(void) {} +ActorUnkCASE_150::ActorUnkCASE_150(Actor *param1) : + Actor_C4(param1, 1) { + mUnk_20 = param1; + mUnk_04 = 1; +} + +bool ActorUnkCASE_150::vfunc_00(ActorRef ref, unk32 param2) { + ActorUnkCASE *actor = (ActorUnkCASE *) mUnk_20; + if (actor->mUnk_1F4 == 0) { + bool cond = true; + if ((u32) actor->mState != 5 && actor->mState != 4) { + cond = false; + } + if (!cond) { + return false; + } + } + + if (param2 != 0) { + actor->func_ov063_0215b814(ref); + } + + return Actor_C4::vfunc_00(ref, param2); +} + +bool ActorUnkCASE_150::vfunc_04() { + ((ActorUnkCASE *) mUnk_20)->func_ov063_0215b854(); + return Actor_C4::vfunc_04(); +} + +void ActorUnkCASE_150::vfunc_0C(VecFx32 *param1) { + ((ActorUnkCASE *) mUnk_20)->func_ov063_0215b8e8(param1); + Actor_C4::vfunc_0C(param1); +} + +ActorUnkCASE_174::ActorUnkCASE_174(Actor *param1) { + mUnk_04 = 0; + mUnk_2C = param1; +} + +void ActorUnkCASE_174::vfunc_10(Actor *actor) { + ((ActorUnkCASE *) mUnk_2C)->func_ov063_0215b724(); + func_ov000_0207b70c(this, actor); +} + +ActorUnkCASE::ActorUnkCASE() : + mUnk_0B0(G3d_GetModelPtr(((MapObjectProfile_Derived2_20 *) GET_PROFILE(ActorProfileUnkCASE)->vfunc_04())->mUnk_50)), + mUnk_120(0), + mUnk_124(this), + mUnk_14C(NULL), + mUnk_150(this), + mUnk_174(this), + mUnk_1C8(0), + mUnk_1CC(0, 0, 0), + mUnk_1D8(0), + mUnk_1DC(0), + mUnk_1E0(0), + mUnk_1E4(0), + mUnk_1F4(0) { + UNSET_FLAG(mFlags, ActorFlag_6); + mUnk_40 = &mUnk_150; + mUnk_124.mUnk_04 = 0; + SET_FLAG2(mUnk_124.mUnk_04, ActorFlag_13); + mUnk_124.mUnk_24 = 1; + mUnk_38 = (Actor_38 *) &mUnk_1E8; + mUnk_38->mUnk_08 = 4; + mUnk_A8 = &data_ov063_02162558; +} + +void ActorUnkCASE::vfunc_10(Cylinder *param1) { + if (mUnk_14C != NULL) { + ((ActorUnkCASE *) mUnk_14C)->vfunc_10(param1); + return; + } + VecFx32_Copy(&mPos, ¶m1->pos); // doesn't match + param1->size = 0x800; +} + +bool ActorUnkCASE::vfunc_18(unk32 param1) { + mUnk_14C = gpActorManager->func_01fff3b4(mUnk_5C.mUnk_28); + + mUnk_0B0.func_ov000_02057c38(6, 2); + mUnk_0B0.func_ov000_0209a7b8(this, (UnkSystem4_UnkCallback) ActorUnkCASE::func_ov063_0215b99c); + + this->func_ov063_0215aefc(0); + + VecFx32_Init(0, 0, 0, &mVel); + + return true; +} + +void ActorUnkCASE::vfunc_20() { + mUnk_150.mUnk_1C = 1; + + if (!func_ov017_020bef4c(this, 0x4000) && mUnk_48 != 0) { + bool cond = true; + if (mState != 1 && mState != 2) { + cond = false; + } + + if (!cond) { + return; + } + + if (mState == 3) { + this->func_ov063_0215b724(); + return; + } + } + + mUnk_3C = &mUnk_124; + + CALL_PTMF(PTMF, data_ov063_021630e0[mState]); + + VecFx32 *vec_base, *vec2; + u16 ret1; + fx16 x, y, z; + fx32 x_pos, x_neg, z_pos, z_neg; + + if (mUnk_14C != NULL) { + VecFx32 vec1; + VecFx32 *mUnk_14C_vec = (VecFx32 *) (((u8 *) mUnk_14C) + 0x25C); + vec1 = *mUnk_14C_vec; + func_01ffb714(&vec1, &mPos, &vec1); + + z = vec1.z; + y = vec1.y; + x = vec1.x; + + ((VecFx16 *) &mUnk_150.mUnk_0E)->x = x; + ((VecFx16 *) &mUnk_150.mUnk_0E)->y = y; + ((VecFx16 *) &mUnk_150.mUnk_0E)->z = z; + + vec2 = data_027e0ce0->func_01fff148(0); + vec_base = (VecFx32 *) (((u8 *) mUnk_14C) + 0x25C); + z_neg = vec2->z; + z_pos = vec_base->z; + x_pos = vec_base->x; + x_neg = vec2->x; + } else if (mState == 5) { + VecFx32 vec1; + vec1 = mUnk_1CC; + func_01ffb714(&vec1, &mPos, &vec1); + + z = vec1.z; + y = vec1.y; + x = vec1.x; + + ((VecFx16 *) &mUnk_150.mUnk_0E)->x = x; + ((VecFx16 *) &mUnk_150.mUnk_0E)->y = y; + ((VecFx16 *) &mUnk_150.mUnk_0E)->z = z; + + vec2 = data_027e0ce0->func_01fff148(0); + vec_base = &mUnk_1CC; + z_pos = vec_base->z; + z_neg = vec2->z; + x_pos = vec_base->x; + x_neg = vec2->x; + } else { + goto post; + } + + // Unsuccessful tries to remove the goto: duplicating raw code, duplicating an inline of the code, wrapping the code in an + // "if (cond1 || cond2) { code }" + ret1 = func_01ffbbe0(x_pos - x_neg, z_pos - z_neg); + s16 sin_val = SIN((u16) (s16) ret1); + s16 cos_val = COS((u16) (s16) ret1); + + ((VecFx16 *) &mUnk_150.mUnk_08)->y = y; + // ((VecFx16 *) &mUnk_150.mUnk_08)->x = x + (((1 - sin_val) * 0x8000) >> 0x10); + // ((VecFx16 *) &mUnk_150.mUnk_08)->z = z + (((1 - cos_val) * 0x8000) >> 0x10); + ((VecFx16 *) &mUnk_150.mUnk_08)->x = x + (s16) ((1 - sin_val) >> 1); + ((VecFx16 *) &mUnk_150.mUnk_08)->z = z + (s16) ((1 - cos_val) >> 1); + +post: + this->func_ov000_020989e0(); + + if (((u32) mState == 5 || mState == 4) && (mUnk_124.mUnk_08 & 0x3FFFF) != 0) { + switch (mUnk_124.mUnk_1C) { + case 4: + data_027e0d38->func_ov031_020d9c44(data_ov000_020aed00); + break; + case 11: + if (gpActorManager->func_01fff3b4(mUnk_124.mUnk_0C)->GetActorId() == ActorId_RollingStone) { + this->func_ov063_0215b724(); + } + break; + case 13: + break; + default: + func_ov000_020990c0(this, &mUnk_124, 1, 0); + break; + } + } + + if (GET_FLAG(mFlags, ActorFlag_Alive)) { + if (mState == 5) { + UnkStruct_ov000_0207de98 param2; + VecFx32_Copy(&mPos, ¶m2.vec); + param2.param1 = 0x548; + param2.param2 = 0x1000; + data_027e09c0->func_ov000_0207de98(mRef, ¶m2, mUnk_38); + } + } +} + +void ActorUnkCASE::vfunc_24() { + if (mState != 1 && mState != 2) { + return; + } + this->vfunc_20(); +} + +void ActorUnkCASE::vfunc_2C(unk32 param1) { + if (!this->func_01fff5d0(param1, 0)) { + return; + } + + if (mUnk_14C == NULL || ((u32 *) mUnk_14C)[0x268 >> 2] == NULL) { + fx32 sin_val = SIN((u16) mUnk_1C8); + fx32 cos_val = COS((u16) mUnk_1C8); + + Mat3p mat2; + Mat3p mat1; + Mat3p_InitZRotation(&mat1, sin_val, cos_val); + + func_01ffa60c(&mat1, &mUnk_1A4, &mat2); + mUnk_0B0.vfunc_14(&mat2, &mPos); + } +} + +// Static +void ActorUnkCASE::func_ov063_0215acec(ActorRef *ref1, ActorRef ref2) { + ActorParams params; + + params.mUnk_28 = 0; + params.func_ov000_020975f8(); + params.mUnk_28 = ref2; + Actor::func_ov000_020973f4(ref1, &data_ov000_020b539c_eur, ActorId_CASE, ¶ms, 0); +} + +void ActorUnkCASE::func_ov063_0215aefc(ActorState param1) { + mState = param1; + mUnk_2C = data_ov000_020aecf8[0]; + mUnk_120 = 0; + + CALL_PTMF(PTMF, data_ov063_02163110[mState]); +} + +// Matched void ActorUnkCASE::func_ov063_0215af54(void) {} + +// Matched void ActorUnkCASE::func_ov063_0215af58(void) {} + +// Matched void ActorUnkCASE::func_ov063_0215af5c(void) {} -void ActorUnkCASE::func_ov063_0215af60(void) {} -void ActorUnkCASE::func_ov063_0215afa4(void) {} -void ActorUnkCASE::func_ov063_0215afb8(void) {} -void ActorUnkCASE::func_ov063_0215b054(void) {} -void ActorUnkCASE::func_ov063_0215b090(void) {} -void ActorUnkCASE::func_ov063_0215b1bc(void) {} -void ActorUnkCASE::func_ov063_0215b244(void) {} -void ActorUnkCASE::func_ov063_0215b2b0(void) {} + +void ActorUnkCASE::func_ov063_0215af60(void) { + if (gpActorManager->func_01fff3b4(mUnk_1E4)) { + return; + } + + if (mUnk_14C != NULL) { + ((ActorUnkCANS *) mUnk_14C)->func_ov063_0215a428(); + } + + this->func_ov063_0215aefc(0); +} + +void ActorUnkCASE::func_ov063_0215afa4(void) { + mUnk_2C = 0; + mVel.x = 0; + mVel.z = 0; +} + +void ActorUnkCASE::func_ov063_0215afb8(void) { + ActorUnkITWP *otherActor = (ActorUnkITWP *) gpActorManager->func_01fff3b4(mUnk_1E4); + if (otherActor == NULL) { + this->func_ov063_0215aefc(4); + return; + } + + //! INFO: Actually a Mat3p, this is only used to allow a "batched" copy (all 9 elements at a time, not 3 by 3) + struct Fx32Array9 { + fx32 array[9]; + }; + *(Fx32Array9 *) &mUnk_1A4 = *(Fx32Array9 *) &otherActor->mUnk_154; + + VecFx32 vec = otherActor->mUnk_0E8; + mPos.x = vec.x; + mPos.y = vec.y; + mPos.z = vec.z; + mPrevPos.x = vec.x; + mPrevPos.y = vec.y; + mPrevPos.z = vec.z; +} + +void ActorUnkCASE::func_ov063_0215b054(void) { + mVel.x = mUnk_1D8; + mVel.y = 0; + mVel.z = mUnk_1E0; + UNSET_FLAG2(*(s16 *) &mUnk_44, ActorFlag_5); + mUnk_52 = -1; + mUnk_50 = 0; +} + +void ActorUnkCASE::func_ov063_0215b090(void) { + if (mUnk_50 < 4) { + this->func_ov063_0215afb8(); + + if (mUnk_50 < mUnk_52) { + mUnk_50++; + } + + this->vfunc_10(&mUnk_174.mUnk_0C); + data_027e09c0->func_ov000_0207e58c(mRef, 3, 4, &mUnk_174); + return; + } + + mUnk_1C8 += DEG_TO_ANG(45); + VecFx32_Copy(&mPos, &mPrevPos); + VecFx32_Add(&mPos, &mVel, &mPos); + + if (mVel.x == 0 && mVel.z == 0) { + mVel.y -= mUnk_2C; + } + + this->func_ov000_02098910(NULL, 16); + this->vfunc_10(&mUnk_174.mUnk_0C); + + data_027e09c0->func_ov000_0207e58c(mRef, 3, 4, &mUnk_174); + + if (mUnk_46) { + this->func_ov063_0215b724(); + } +} + +void ActorUnkCASE::func_ov063_0215b1bc(void) { + mVel.x = 0; + mVel.z = 0; + + VecFx32 vec; + VecFx32_Init(0, 0, FLOAT_TO_FX32(1.0f), &vec); + func_01ffa7a0(&vec, &mUnk_1A4, &vec); + + s16 angle = func_01ffbbe0(vec.x, vec.z); + Mat3p_InitYRotation(&mUnk_1A4, SIN((u16) angle), COS((u16) angle)); +} + +void ActorUnkCASE::func_ov063_0215b244(void) { + mVel.y -= mUnk_2C; + VecFx32_Copy(&mPos, &mPrevPos); + VecFx32_Add(&mPos, &mVel, &mPos); + + this->func_ov000_02098b8c(1, NULL); + + if ((mUnk_46 & 3) != 0) { + this->func_ov063_0215aefc(5); + } +} + +void ActorUnkCASE::func_ov063_0215b2b0(void) { + mVel.x = 0; + mVel.z = 0; + mUnk_2C = 0; +} + +// Matched void ActorUnkCASE::func_ov063_0215b2c4(void) {} -void ActorUnkCASE::func_ov063_0215b2c8(void) {} -void ActorUnkCASE::func_ov063_0215b2ec(void) {} -void ActorUnkCASE::func_ov063_0215b624(void) {} -void ActorUnkCASE::func_ov063_0215b6c8(VecFx32 *param1, UnkAngleStruct angle) {} -void ActorUnkCASE::func_ov063_0215b724(void) {} -void ActorUnkCASE::func_ov063_0215b7cc(void) {} -void ActorUnkCASE::func_ov063_0215b814(void) {} -void ActorUnkCASE::func_ov063_0215b854(void) {} -void ActorUnkCASE::func_ov063_0215b8e8(void) {} -void ActorUnkCASE::func_ov063_0215b99c(void) {} -void ActorUnkCASE::func_ov063_0215ba64(void) {} -void ActorUnkCASE::func_ov063_0215bab0(void) {} + +void ActorUnkCASE::func_ov063_0215b6c8(VecFx32 *param1, UnkAngleStruct angle) { + VecFx32 vec = *param1; + VecFx32_Copy(&vec, &mPos); + VecFx32_Copy(&vec, &mPrevPos); + mAngle = *(s16 *) &angle.angle; +} + +void ActorUnkCASE::func_ov063_0215b724(void) { + this->func_ov000_020984d0(); + data_027e0cec->func_ov000_0209feac(0xCC06, &mPos, 2, 0, 0); + data_027e0cec->func_ov000_0209feac(0xCC07, &mPos, 2, 0, 0); + data_027e0cec->func_ov000_0209feac(0x823, &mPos, 2, 0, 0); + data_027e09a8->func_ov000_02071b30(0x9865, &mPos, 0); +} + +void ActorUnkCASE::func_ov063_0215b814(ActorRef ref) { + mUnk_1E4 = ref; + + if (mUnk_14C != NULL) { + ((ActorUnkCANS *) mUnk_14C)->func_ov063_02158448(9); + } + + this->func_ov063_0215aefc(1); +} + +void ActorUnkCASE::func_ov063_0215b854(void) { + if (mUnk_14C != NULL) { + ActorUnkCANS *actorCans = (ActorUnkCANS *) mUnk_14C; + + VecFx32 vec = actorCans->mPos; + VecFx32_Copy(&vec, &mPos); + VecFx32_Copy(&vec, &mPrevPos); + + actorCans->mUnk_236 = 20; + actorCans->mUnk_234 = 0; + + actorCans = (ActorUnkCANS *) mUnk_14C; + actorCans->func_ov063_02158b0c(); + + actorCans = (ActorUnkCANS *) mUnk_14C; + actorCans->func_ov063_0215a428(); + mUnk_124.mUnk_04 = ~0x38000; + mUnk_14C = NULL; + } + + this->func_ov063_0215aefc(2); +} + +static inline bool VecFx32_IsZero(VecFx32 *vec) { + return vec->x == 0 && vec->y == 0 && vec->z == 0; +} + +void ActorUnkCASE::func_ov063_0215b8e8(VecFx32 *param1) { + + if (mUnk_14C != NULL) { + ((ActorUnkCANS *) mUnk_14C)->func_ov063_0215a428(); + + if (param1->x == 0 && param1->y == 0 && param1->z == 0) { + this->func_ov063_0215aefc(0); + return; + } + + ((ActorUnkCANS *) mUnk_14C)->func_ov063_02158b0c(); + mUnk_14C = NULL; + } + + if (VecFx32_IsZero((VecFx32 *) param1)) { + this->func_ov063_0215aefc(4); + } else { + unk32 x = param1->x; + unk32 y = param1->y; + unk32 z = param1->z; +#if !IS_JP + mUnk_150.mUnk_04 = 0; +#endif + VecFx32_Init(x, y, z, (VecFx32 *) &mUnk_1D8); + this->func_ov063_0215aefc(3); + } +} + +void ActorUnkCASE::func_ov063_0215b99c(ActorUnkCASE *param1, UnkStruct_func_ov063_0215a678 *param2) { + unk32 var1; + if ((param2->mUnk_08 & 0x10) != 0) { + var1 = param2->mUnk_AE; + } else { + var1 = -1; + } + + u8 *var2 = ((u8 *) param2->mUnk_04); + + // Can probably use a ternary instead of var1 + if (var1 != param1->mUnk_0B0.mUnk_6C) { + return; + } + + if (var2[0x25] == 2) { + param2->mUnk_92 = 3; + var2[0x25] = 3; + return; + } + + if (var2[0x25] != 3) { + return; + } + + Mat4x3p matx1, matx2; + G3d_GetCurrentMtx(&matx1, NULL); + func_01ffad5c(&matx1, &data_027e0964, &matx2); + // VecFx32_Copy(&matx2.wColumn, ¶m1->mUnk_1CC); + fx32 x = matx2.wColumn.x; + fx32 z = matx2.wColumn.z; + fx32 y = matx2.wColumn.y; + param1->mUnk_1CC.x = x; + param1->mUnk_1CC.y = y; + param1->mUnk_1CC.z = z; + + param2->mUnk_92 = 2; + var2[0x25] = 2; +} ActorUnkCASE::~ActorUnkCASE() {} ActorProfileUnkCASE::~ActorProfileUnkCASE() {} diff --git a/src/071_Tower/Actor/ActorTearLight.cpp b/src/071_Tower/Actor/ActorTearLight.cpp index c07206e8..b7f4ff07 100644 --- a/src/071_Tower/Actor/ActorTearLight.cpp +++ b/src/071_Tower/Actor/ActorTearLight.cpp @@ -10,6 +10,7 @@ #include "Unknown/UnkStruct_027e0cec.hpp" #include "Unknown/UnkStruct_027e0d34.hpp" #include "Unknown/UnkStruct_027e0d38.hpp" +#include "nitro/fx.h" class UnkStruct_ov071_0215f92c : public UnkStruct_ov031_Items_00 { public: @@ -453,7 +454,7 @@ bool ActorTearLight_194::vfunc_04() { return this->Actor_C4::vfunc_04(); } -void ActorTearLight_194::vfunc_0C(unk32 param1) { +void ActorTearLight_194::vfunc_0C(VecFx32 *param1) { this->GetActorPtr()->func_ov071_0215fca4(); return this->Actor_C4::vfunc_0C(param1); }