From f595c06b8d3c2199aec548a6fee5d35089d65f1c Mon Sep 17 00:00:00 2001 From: Alessevan <44125445+Alessevan@users.noreply.github.com> Date: Mon, 24 Aug 2026 11:42:52 -0400 Subject: [PATCH] Decompiling KURI (#141) * feat: begin curry decompiling * fix: create a cpp type for VecFx32 * fix: build issue * fix: jp as well * feat: improve ctor & dtor * feat: improve matching * fix: wrong value in animation tag * feat: add matching bytes * fix: change signature of Mityno's inline ctor * fix: change signature of ANOTHER Mityno's inline ctor * fix: match back function in CANS * feat: more matching * fix: build * feat: increase overall matching * feat: increase overall matching * fix: commit to stop infinite task * fix: better matching * feat: chagne jp symbols * feat: delink data and bss of KURI * fix: use VecFx32 constructor * fix: build issues --- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 32 +- config/eur/arm9/overlays/ov017/symbols.txt | 8 +- config/eur/arm9/overlays/ov032/delinks.txt | 5 +- config/eur/arm9/overlays/ov032/relocs.txt | 12 +- config/eur/arm9/overlays/ov032/symbols.txt | 58 +- config/eur1/arm9/overlays/ov000/symbols.txt | 2 +- config/jp/arm9/itcm/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/symbols.txt | 24 +- config/jp/arm9/overlays/ov017/symbols.txt | 8 +- config/jp/arm9/overlays/ov031/relocs.txt | 2 +- config/jp/arm9/overlays/ov032/delinks.txt | 5 +- config/jp/arm9/overlays/ov032/relocs.txt | 12 +- config/jp/arm9/overlays/ov032/symbols.txt | 73 +- include/Actor/Actor.hpp | 33 +- include/Actor/ActorManager.hpp | 1 + include/Actor/ActorProfile.hpp | 12 +- include/Actor/ActorTearLight.hpp | 4 +- include/Actor/ActorUnkCANS.hpp | 25 +- include/Actor/ActorUnkKURI.hpp | 229 +++-- include/Actor/ActorUnkRBLS.hpp | 2 +- include/Actor/ActorUnkRMSV.hpp | 2 +- include/Actor/ActorUnkZLSL_ZSRS.hpp | 15 +- include/Player/PlayerGet.hpp | 6 - include/Render/ModelRender.hpp | 23 +- include/Unknown/UnkStruct_027e09c0.hpp | 7 +- src/031_Land/Actor/ActorBomb.cpp | 8 +- src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp | 4 +- src/032_MapA1/Actor/ActorUnkKURI.cpp | 982 ++++++++++++++++++-- src/063_Shrine/Actor/ActorUnkCANS.cpp | 41 +- src/063_Shrine/Actor/ActorUnkCASE.cpp | 12 +- src/071_Tower/Actor/ActorTearLight.cpp | 2 +- 32 files changed, 1317 insertions(+), 336 deletions(-) diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 1ebb3fb0..a8b132cd 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -198,7 +198,7 @@ func_01fff254 kind:function(arm,size=0x2c) addr:0x01fff254 func_01fff280 kind:function(arm,size=0x28) addr:0x01fff280 func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc -func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc +_ZN12ActorManager13func_01fff2fcEPFvP5ActortEi kind:function(arm,size=0x54) addr:0x01fff2fc _ZN12ActorManager13func_01fff350EPvPP5Actor kind:function(arm,size=0x64) addr:0x01fff350 _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 62cd0f2f..76a9ea84 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -79,7 +79,7 @@ func_ov000_0205793c kind:function(arm,size=0xa4) addr:0x0205793c _ZN19func_ov000_020579e0D1Ev kind:function(arm,size=0x14) addr:0x020579e0 _ZN19func_ov000_020579f4D0Ev kind:function(arm,size=0x1c) addr:0x020579f4 func_ov000_02057a10 kind:function(thumb,size=0x14) addr:0x02057a10 -func_ov000_02057a24 kind:function(thumb,size=0x14) addr:0x02057a24 +_ZN26ModelRender_ov000_020b1a1cC1EP10G3d_Model_ 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 @@ -2337,7 +2337,7 @@ _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x0209862c func_ov000_02098654 kind:function(arm,size=0x28) addr:0x02098654 _ZN5Actor19func_ov000_0209867cEi kind:function(arm,size=0x38) addr:0x0209867c func_ov000_020986b4 kind:function(arm,size=0x48) addr:0x020986b4 -func_ov000_020986fc kind:function(arm,size=0x7c) addr:0x020986fc +_ZN5Actor19func_ov000_020986fcEi kind:function(arm,size=0x7c) addr:0x020986fc func_ov000_02098778 kind:function(arm,size=0x88) addr:0x02098778 _ZN5Actor19func_ov000_02098800Eb kind:function(arm,size=0x38) addr:0x02098800 _ZN5Actor19func_ov000_02098838Ev kind:function(arm,size=0x28) addr:0x02098838 @@ -2349,33 +2349,33 @@ _ZN5Actor19func_ov000_02098a60Ei kind:function(arm,size=0x28) addr:0x02098a60 _ZN5Actor19func_ov000_02098a88Eii kind:function(arm,size=0x2c) addr:0x02098a88 _ZN5Actor19func_ov000_02098ab4EhiiP7VecFx32 kind:function(arm,size=0x74) addr:0x02098ab4 _ZN14Actor_Derived2C2Ev kind:function(arm,size=0x64) addr:0x02098b28 -_ZN5Actor19func_ov000_02098b8cEiPv kind:function(arm,size=0x184) addr:0x02098b8c +_ZN5Actor19func_ov000_02098b8cEiP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x184) addr:0x02098b8c func_ov000_02098d10 kind:function(arm,size=0x6c) addr:0x02098d10 func_ov000_02098d7c kind:function(arm,size=0x1b8) addr:0x02098d7c -func_ov000_02098f34 kind:function(arm,size=0xd0) addr:0x02098f34 +_ZN14Actor_Derived219func_ov000_02098f34EP7VecFx32 kind:function(arm,size=0xd0) addr:0x02098f34 _ZN14Actor_Derived28vfunc_30EP14Actor_vfunc_30 kind:function(arm,size=0xc) addr:0x02099004 func_ov000_02099010 kind:function(arm,size=0xb0) addr:0x02099010 -func_ov000_020990c0 kind:function(arm,size=0x21c) addr:0x020990c0 -func_ov000_020992dc kind:function(arm,size=0x90) addr:0x020992dc +_ZN14Actor_Derived219func_ov000_020990c0EP8Actor_9Cii kind:function(arm,size=0x21c) addr:0x020990c0 +_ZN14Actor_Derived219func_ov000_020992dcEv kind:function(arm,size=0x90) addr:0x020992dc func_ov000_0209936c kind:function(arm,size=0x64) addr:0x0209936c func_ov000_020993d0 kind:function(arm,size=0x80) addr:0x020993d0 -func_ov000_02099450 kind:function(arm,size=0x50) addr:0x02099450 -func_ov000_020994a0 kind:function(arm,size=0x74) addr:0x020994a0 +_ZN14Actor_Derived219func_ov000_02099450EPvP7VecFx32it kind:function(arm,size=0x50) addr:0x02099450 +_ZN14Actor_Derived219func_ov000_020994a0Ev kind:function(arm,size=0x74) addr:0x020994a0 func_ov000_02099514 kind:function(arm,size=0x74) addr:0x02099514 _ZN14Actor_Derived28vfunc_54Ei kind:function(arm,size=0x1b0) addr:0x02099588 func_ov000_02099738 kind:function(arm,size=0x2c) addr:0x02099738 func_ov000_02099764 kind:function(arm,size=0x20) addr:0x02099764 func_ov000_02099784 kind:function(arm,size=0x20) addr:0x02099784 func_ov000_020997a4 kind:function(arm,size=0x20) addr:0x020997a4 -func_ov000_020997c4 kind:function(arm,size=0x2c) addr:0x020997c4 +_ZN14Actor_Derived219func_ov000_020997c4Ei kind:function(arm,size=0x2c) addr:0x020997c4 _ZN14Actor_Derived2D1Ev kind:function(arm,size=0x14) addr:0x020997f0 _ZN14Actor_Derived2D0Ev kind:function(arm,size=0x1c) addr:0x02099804 _ZN26UnkStruct_ActorUnkCANS_224C1Ev kind:function(arm,size=0x50) addr:0x02099820 func_ov000_02099870 kind:function(arm,size=0x80) addr:0x02099870 func_ov000_020998f0 kind:function(arm,size=0x11c) addr:0x020998f0 -func_ov000_02099a0c kind:function(arm,size=0x10) addr:0x02099a0c +_ZN26UnkStruct_ActorUnkCANS_22419func_ov000_02099a0cEv kind:function(arm,size=0x10) addr:0x02099a0c func_ov000_02099a1c kind:function(arm,size=0xc) addr:0x02099a1c -_ZN24UnkStruct_ov000_020b31a8C2EP10UnkSystem5P11ModelRenderi kind:function(thumb,size=0x54) addr:0x02099a28 +_ZN24UnkStruct_ov000_020b31a8C2EP10UnkSystem5P11ModelRenderP19UnkActorFileSystem2 kind:function(thumb,size=0x54) addr:0x02099a28 func_ov000_02099a7c kind:function(thumb,size=0x48) addr:0x02099a7c func_ov000_02099ac4 kind:function(thumb,size=0x28) addr:0x02099ac4 func_ov000_02099aec kind:function(thumb,size=0x2) addr:0x02099aec @@ -2386,7 +2386,7 @@ _ZN24UnkStruct_ov000_020b31a88vfunc_0CEv kind:function(arm,size=0x68) addr:0x020 _ZN24UnkStruct_ov000_020b31a88vfunc_20Ev kind:function(arm,size=0x110) addr:0x02099ba0 _ZN24UnkStruct_ov000_020b31a88vfunc_1CE25ActorUnkZLSL_AnimationTagiii kind:function(arm,size=0x84) addr:0x02099cb0 func_ov000_02099d34 kind:function(arm,size=0xa8) addr:0x02099d34 -func_ov000_02099ddc kind:function(arm,size=0x7c) addr:0x02099ddc +_ZN24UnkStruct_ov000_020b31a819func_ov000_02099ddcE25ActorUnkZLSL_AnimationTagii kind:function(arm,size=0x7c) addr:0x02099ddc func_ov000_02099e58 kind:function(arm,size=0x98) addr:0x02099e58 func_ov000_02099ef0 kind:function(arm,size=0x74) addr:0x02099ef0 func_ov000_02099f64 kind:function(arm,size=0x94) addr:0x02099f64 @@ -2401,7 +2401,7 @@ _ZN24UnkStruct_ov000_020b31a88vfunc_14Ev kind:function(arm,size=0x8) addr:0x0209 func_ov000_0209a14c kind:function(arm,size=0x24) addr:0x0209a14c func_ov000_0209a170 kind:function(arm,size=0x10) addr:0x0209a170 func_ov000_0209a180 kind:function(arm,size=0x8) addr:0x0209a180 -_ZN24UnkStruct_ov000_020b31f0C2EPvS0_S0_i kind:function(thumb,size=0x30) addr:0x0209a188 +_ZN24UnkStruct_ov000_020b31f0C2EP10UnkSystem5S1_P11ModelRenderP19UnkActorFileSystem2 kind:function(thumb,size=0x30) addr:0x0209a188 func_ov000_0209a1b8 kind:function(thumb,size=0x34) addr:0x0209a1b8 func_ov000_0209a1ec kind:function(thumb,size=0x3c) addr:0x0209a1ec func_ov000_0209a228 kind:function(thumb,size=0xc) addr:0x0209a228 @@ -2416,11 +2416,11 @@ _ZN24UnkStruct_ov000_020b31f08vfunc_14Ev kind:function(arm,size=0x14) addr:0x020 _ZN24UnkStruct_ov000_020b31f08vfunc_30Ev kind:function(arm,size=0x14) addr:0x0209a348 _ZN24UnkStruct_ov000_020b31f08vfunc_1CE25ActorUnkZLSL_AnimationTagiii kind:function(arm,size=0x88) addr:0x0209a35c _ZN24UnkStruct_ov000_020b31f08vfunc_20Ev kind:function(arm,size=0x238) addr:0x0209a3e4 -func_ov000_0209a61c kind:function(arm,size=0xb8) addr:0x0209a61c +_ZN24UnkStruct_ov000_020b31f019func_ov000_0209a61cEv kind:function(arm,size=0xb8) addr:0x0209a61c _ZN24UnkStruct_ov000_020b31f08vfunc_34Ev kind:function(arm,size=0x38) addr:0x0209a6d4 _ZN24UnkStruct_ov000_020b31f08vfunc_40Ev kind:function(arm,size=0x8) addr:0x0209a70c -func_ov000_0209a714 kind:function(arm,size=0x24) addr:0x0209a714 -func_ov000_0209a738 kind:function(arm,size=0x2c) addr:0x0209a738 +_ZN24UnkStruct_ov000_020b31f08vfunc_3CEv kind:function(arm,size=0x24) addr:0x0209a714 +_ZN24UnkStruct_ov000_020b31f08vfunc_38Ev kind:function(arm,size=0x2c) addr:0x0209a738 _ZN24UnkStruct_ov000_020b3268C2EP10G3d_Model_ kind:function(thumb,size=0x1c) addr:0x0209a764 func_ov000_0209a780 kind:function(thumb,size=0x1c) addr:0x0209a780 _ZN26ModelRender_ov000_020b4d648vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0x1c) addr:0x0209a79c diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 50031fe0..2bbcc9f1 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -56,14 +56,14 @@ func_ov017_020bee84 kind:function(arm,size=0x20) addr:0x020bee84 func_ov017_020beea4 kind:function(arm,size=0x28) addr:0x020beea4 func_ov017_020beecc kind:function(arm,size=0x20) addr:0x020beecc _ZN5Actor19func_ov017_020beeecEi kind:function(arm,size=0x60) addr:0x020beeec -func_ov017_020bef4c kind:function(arm,size=0x3c) addr:0x020bef4c +_ZN14Actor_Derived219func_ov017_020bef4cEi kind:function(arm,size=0x3c) addr:0x020bef4c _ZN5Actor19func_ov017_020bef88EP14Actor_vfunc_30Pvi kind:function(arm,size=0x9c) addr:0x020bef88 func_ov017_020bf024 kind:function(arm,size=0x2c) addr:0x020bf024 func_ov017_020bf050 kind:function(arm,size=0x128) addr:0x020bf050 -func_ov017_020bf178 kind:function(arm,size=0x10c) addr:0x020bf178 +_ZN14Actor_Derived219func_ov017_020bf178EP8Actor_9Ci kind:function(arm,size=0x10c) addr:0x020bf178 func_ov017_020bf284 kind:function(arm,size=0x54) addr:0x020bf284 func_ov017_020bf2d8 kind:function(arm,size=0x108) addr:0x020bf2d8 -func_ov017_020bf3e0 kind:function(arm,size=0xd0) addr:0x020bf3e0 +_ZN5Actor19func_ov017_020bf3e0Eii kind:function(arm,size=0xd0) addr:0x020bf3e0 func_ov017_020bf4b0 kind:function(arm,size=0xc4) addr:0x020bf4b0 func_ov017_020bf574 kind:function(arm,size=0x50) addr:0x020bf574 _ZN5Actor19func_ov017_020bf5c4EP7VecFx32iiii kind:function(arm,size=0x70) addr:0x020bf5c4 @@ -71,7 +71,7 @@ func_ov017_020bf634 kind:function(arm,size=0x54) addr:0x020bf634 func_ov017_020bf688 kind:function(arm,size=0x88) addr:0x020bf688 func_ov017_020bf710 kind:function(arm,size=0x98) addr:0x020bf710 func_ov017_020bf7a8 kind:function(arm,size=0xec) addr:0x020bf7a8 -func_ov017_020bf894 kind:function(arm,size=0x60) addr:0x020bf894 +_ZN14Actor_Derived219func_ov017_020bf894EP26UnkStruct_ActorUnkCANS_224 kind:function(arm,size=0x60) addr:0x020bf894 _ZN5Actor8vfunc_40Ev kind:function(arm,size=0x44) addr:0x020bf8f4 _ZN5Actor8vfunc_44Ev kind:function(arm,size=0x64) addr:0x020bf938 func_ov017_020bf99c kind:function(arm,size=0x2c) addr:0x020bf99c diff --git a/config/eur/arm9/overlays/ov032/delinks.txt b/config/eur/arm9/overlays/ov032/delinks.txt index 4a7fb5b3..3ea9a984 100644 --- a/config/eur/arm9/overlays/ov032/delinks.txt +++ b/config/eur/arm9/overlays/ov032/delinks.txt @@ -9,13 +9,14 @@ src/032_MapA1/Actor/ActorUnkKURI.cpp: .text start:0x02118fc0 end:0x0211b6cc .init start:0x02121f34 end:0x02121fa0 .ctor start:0x0212212c end:0x02122130 - .bss start:0x02122820 end:0x02122918 + .data start:0x02122160 end:0x021223a8 + .bss start:0x02122820 end:0x02122908 src/032_MapA1/Actor/ActorUnkMKUR.cpp: .text start:0x0211b6cc end:0x0211db40 .init start:0x02121fa0 end:0x02122020 .ctor start:0x02122130 end:0x02122134 - .bss start:0x02122918 end:0x02122974 + .bss start:0x02122908 end:0x02122974 src/032_MapA1/Actor/ActorUnkKETH.cpp: .text start:0x0211db40 end:0x0211fd80 diff --git a/config/eur/arm9/overlays/ov032/relocs.txt b/config/eur/arm9/overlays/ov032/relocs.txt index dd2d8259..59f59c2f 100644 --- a/config/eur/arm9/overlays/ov032/relocs.txt +++ b/config/eur/arm9/overlays/ov032/relocs.txt @@ -17,8 +17,8 @@ from:0x021191b0 kind:arm_call to:0x0211b570 module:overlay(32) from:0x02119210 kind:arm_call to:0x0209862c module:overlay(0) from:0x02119234 kind:load to:0x021222e8 add:0x8 module:overlay(32) from:0x02119238 kind:load to:0x02122830 module:overlay(32) -from:0x0211923c kind:load to:0x02122244 module:overlay(32) -from:0x02119240 kind:load to:0x021221fc module:overlay(32) +from:0x0211923c kind:load to:0x0212223c module:overlay(32) add:0x8 +from:0x02119240 kind:load to:0x021221f4 module:overlay(32) add:0x8 from:0x02119244 kind:load to:0x02122160 module:overlay(32) from:0x02119250 kind:arm_call_thumb to:0x0209a248 module:overlay(0) from:0x02119264 kind:arm_call_thumb to:0x02099afc module:overlay(0) @@ -237,7 +237,7 @@ from:0x0211b554 kind:arm_call to:0x020997c4 module:overlay(0) from:0x0211b55c kind:arm_call to:0x0211b3b0 module:overlay(32) from:0x0211b568 kind:load to:0x027e09a8 module:dtcm from:0x0211b578 kind:arm_call to:0x020982a8 module:overlay(0) -from:0x0211b59c kind:load to:0x021221bc module:overlay(32) +from:0x0211b59c kind:load to:0x021221b4 module:overlay(32) add:0x8 from:0x0211b5a8 kind:arm_call to:0x0207bffc module:overlay(0) from:0x0211b5bc kind:arm_call to:0x0207bffc module:overlay(0) from:0x0211b5c4 kind:arm_call to:0x02011ff4 module:main @@ -272,7 +272,7 @@ from:0x0211b8cc kind:arm_call to:0x0209862c module:overlay(0) from:0x0211b8e8 kind:arm_call to:0x0211be04 module:overlay(32) from:0x0211b908 kind:load to:0x02122478 add:0x8 module:overlay(32) from:0x0211b90c kind:load to:0x02122930 module:overlay(32) -from:0x0211b910 kind:load to:0x02122244 module:overlay(32) +from:0x0211b910 kind:load to:0x0212223c module:overlay(32) add:0x8 from:0x0211b914 kind:load to:0x02122924 module:overlay(32) from:0x0211b918 kind:load to:0x0212290c module:overlay(32) from:0x0211b91c kind:load to:0x021223a8 module:overlay(32) @@ -550,8 +550,8 @@ from:0x0211dda0 kind:arm_call to:0x0211de34 module:overlay(32) from:0x0211ddc0 kind:arm_call to:0x0209862c module:overlay(0) from:0x0211ddf0 kind:load to:0x0212262c add:0x8 module:overlay(32) from:0x0211ddf4 kind:load to:0x02122984 module:overlay(32) -from:0x0211ddf8 kind:load to:0x02122244 module:overlay(32) -from:0x0211ddfc kind:load to:0x021221fc module:overlay(32) +from:0x0211ddf8 kind:load to:0x0212223c module:overlay(32) add:0x8 +from:0x0211ddfc kind:load to:0x021221f4 module:overlay(32) add:0x8 from:0x0211de00 kind:load to:0x0211de20 module:overlay(32) from:0x0211de04 kind:load to:0x0211fbec module:overlay(32) from:0x0211de08 kind:load to:0x021224d8 module:overlay(32) diff --git a/config/eur/arm9/overlays/ov032/symbols.txt b/config/eur/arm9/overlays/ov032/symbols.txt index 0066c280..ae41dfb9 100644 --- a/config/eur/arm9/overlays/ov032/symbols.txt +++ b/config/eur/arm9/overlays/ov032/symbols.txt @@ -2,16 +2,16 @@ _ZN19ActorProfileUnkKURI10GetProfileEv kind:function(arm,size=0xc) addr:0x02118f _ZN19ActorProfileUnkKURI6CreateEv kind:function(arm,size=0x24) addr:0x02118fcc _ZN19ActorProfileUnkKURIC1Ev kind:function(arm,size=0x5c) addr:0x02118ff0 _ZN12ActorUnkKURIC1Ev kind:function(arm,size=0x1fc) addr:0x0211904c -_ZN12ActorUnkKURI19func_ov032_02119248Ev kind:function(arm,size=0x14) addr:0x02119248 -_ZN12ActorUnkKURI19func_ov032_0211925cEv kind:function(arm,size=0x14) addr:0x0211925c -_ZN12ActorUnkKURI19func_ov032_02119270Ev kind:function(arm,size=0x8c) addr:0x02119270 +_ZN16ActorUnkKURI_110D1Ev kind:function(arm,size=0x14) addr:0x02119248 +_ZN16ActorUnkKURI_1BCD1Ev kind:function(arm,size=0x14) addr:0x0211925c +_ZN12ActorUnkKURID1Ev kind:function(arm,size=0x8c) addr:0x02119270 _ZN12ActorUnkKURID0Ev kind:function(arm,size=0x94) addr:0x021192fc -_ZN12ActorUnkKURI19func_ov032_02119390Ev kind:function(arm,size=0xc8) addr:0x02119390 -_ZN12ActorUnkKURI19func_ov032_02119458Ev kind:function(arm,size=0x84) addr:0x02119458 -_ZN12ActorUnkKURI19func_ov032_021194dcEv kind:function(arm,size=0x60) addr:0x021194dc -_ZN12ActorUnkKURI19func_ov032_0211953cEv kind:function(arm,size=0x48) addr:0x0211953c -_ZN12ActorUnkKURI19func_ov032_02119584Ev kind:function(arm,size=0x358) addr:0x02119584 -_ZN12ActorUnkKURI19func_ov032_021198dcEv kind:function(arm,size=0xb4) addr:0x021198dc +_ZN12ActorUnkKURI8vfunc_18Ei kind:function(arm,size=0xc8) addr:0x02119390 +_ZN12ActorUnkKURI8vfunc_1CEv kind:function(arm,size=0x84) addr:0x02119458 +_ZN12ActorUnkKURI19func_ov032_021194dcEs kind:function(arm,size=0x60) addr:0x021194dc +_ZN12ActorUnkKURI8SetStateEs kind:function(arm,size=0x48) addr:0x0211953c +_ZN12ActorUnkKURI8vfunc_20Ev kind:function(arm,size=0x358) addr:0x02119584 +_ZN12ActorUnkKURI8vfunc_2CEi kind:function(arm,size=0xb4) addr:0x021198dc _ZN12ActorUnkKURI19func_ov032_02119990Ev kind:function(arm,size=0x7c) addr:0x02119990 _ZN12ActorUnkKURI19func_ov032_02119a0cEv kind:function(arm,size=0x1dc) addr:0x02119a0c _ZN12ActorUnkKURI19func_ov032_02119be8Ev kind:function(arm,size=0x98) addr:0x02119be8 @@ -37,26 +37,26 @@ _ZN12ActorUnkKURI19func_ov032_0211ac94Ev kind:function(arm,size=0xac) addr:0x021 _ZN12ActorUnkKURI19func_ov032_0211ad40Ev kind:function(arm,size=0xb4) addr:0x0211ad40 _ZN12ActorUnkKURI19func_ov032_0211adf4Ev kind:function(arm,size=0x230) addr:0x0211adf4 _ZN12ActorUnkKURI19func_ov032_0211b024Ev kind:function(arm,size=0x40) addr:0x0211b024 -_ZN12ActorUnkKURI19func_ov032_0211b064Ev kind:function(arm,size=0xb0) addr:0x0211b064 +_ZN12ActorUnkKURI19func_ov032_0211b064Ei kind:function(arm,size=0xb0) addr:0x0211b064 _ZN12ActorUnkKURI19func_ov032_0211b114Ev kind:function(arm,size=0x68) addr:0x0211b114 _ZN12ActorUnkKURI19func_ov032_0211b17cEv kind:function(arm,size=0x14) addr:0x0211b17c -_ZN12ActorUnkKURI19func_ov032_0211b190Ev kind:function(arm,size=0x50) addr:0x0211b190 +_ZN12ActorUnkKURI19func_ov032_0211b190Eii kind:function(arm,size=0x50) addr:0x0211b190 _ZN12ActorUnkKURI19func_ov032_0211b1e0Ev kind:function(arm,size=0xb8) addr:0x0211b1e0 _ZN12ActorUnkKURI19func_ov032_0211b298Ev kind:function(arm,size=0xe4) addr:0x0211b298 -_ZN12ActorUnkKURI19func_ov032_0211b37cEv kind:function(arm,size=0x34) addr:0x0211b37c +_ZN12ActorUnkKURI19func_ov032_0211b37cEPS_t kind:function(arm,size=0x34) addr:0x0211b37c _ZN12ActorUnkKURI19func_ov032_0211b3b0Ev kind:function(arm,size=0x58) addr:0x0211b3b0 -_ZN12ActorUnkKURI19func_ov032_0211b408Ev kind:function(arm,size=0x168) addr:0x0211b408 -_ZN12ActorUnkKURI19func_ov032_0211b570Ev kind:function(arm,size=0x30) addr:0x0211b570 -_ZN12ActorUnkKURID1Ev kind:function(arm,size=0x14) addr:0x0211b5a0 -_ZN12ActorUnkKURI19func_ov032_0211b5b4Ev kind:function(arm,size=0x1c) addr:0x0211b5b4 -_ZN12ActorUnkKURI19func_ov032_0211b5d0Ev kind:function(arm,size=0x24) addr:0x0211b5d0 -_ZN12ActorUnkKURI19func_ov032_0211b5f4Ev kind:function(arm,size=0x24) addr:0x0211b5f4 -_ZN12ActorUnkKURI19func_ov032_0211b618Ev kind:function(arm,size=0x10) addr:0x0211b618 -_ZN12ActorUnkKURI19func_ov032_0211b628Ev kind:function(arm,size=0x8) addr:0x0211b628 -_ZN12ActorUnkKURI19func_ov032_0211b630Ev kind:function(arm,size=0x24) addr:0x0211b630 -_ZN12ActorUnkKURI19func_ov032_0211b654Ev kind:function(arm,size=0x2c) addr:0x0211b654 -_ZN12ActorUnkKURI19func_ov032_0211b680Ev kind:function(arm,size=0x1c) addr:0x0211b680 -_ZN12ActorUnkKURI19func_ov032_0211b69cEv kind:function(arm,size=0x1c) addr:0x0211b69c +_ZN12ActorUnkKURI8vfunc_54Ei kind:function(arm,size=0x168) addr:0x0211b408 +_ZN16ActorUnkKURI_268C1Ev kind:function(arm,size=0x30) addr:0x0211b570 +_ZN16ActorUnkKURI_268D1Ev kind:function(arm,size=0x14) addr:0x0211b5a0 +_ZN16ActorUnkKURI_268D0Ev kind:function(arm,size=0x1c) addr:0x0211b5b4 +_ZN16ActorUnkKURI_2688vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x24) addr:0x0211b5d0 +_ZN16ActorUnkKURI_1BC8vfunc_3CEv kind:function(arm,size=0x24) addr:0x0211b5f4 +_ZN16ActorUnkKURI_1BC8vfunc_38Eii kind:function(arm,size=0x10) addr:0x0211b618 +_ZN16ActorUnkKURI_1BC8vfunc_30Ev kind:function(arm,size=0x8) addr:0x0211b628 +_ZN16ActorUnkKURI_1108vfunc_3CEv kind:function(arm,size=0x24) addr:0x0211b630 +_ZN16ActorUnkKURI_1108vfunc_38Eii kind:function(arm,size=0x2c) addr:0x0211b654 +_ZN16ActorUnkKURI_110D0Ev kind:function(arm,size=0x1c) addr:0x0211b680 +_ZN16ActorUnkKURI_1BCD0Ev kind:function(arm,size=0x1c) addr:0x0211b69c _ZN19ActorProfileUnkKURID1Ev kind:function(arm,size=0x14) addr:0x0211b6b8 _ZN19ActorProfileUnkMKUR10GetProfileEv kind:function(arm,size=0xc) addr:0x0211b6cc _ZN19ActorProfileUnkMKUR6CreateEv kind:function(arm,size=0x24) addr:0x0211b6d8 @@ -236,12 +236,12 @@ data_ov032_02122160 kind:data(any) addr:0x02122160 data_ov032_0212216c kind:data(any) addr:0x0212216c data_ov032_02122184 kind:data(any) addr:0x02122184 data_ov032_0212219c kind:data(any) addr:0x0212219c -data_ov032_021221bc kind:data(any) addr:0x021221bc -_ZTV19data_ov032_021221d0 kind:data(any) addr:0x021221d0 -data_ov032_021221fc kind:data(any) addr:0x021221fc -data_ov032_02122244 kind:data(any) addr:0x02122244 +_ZTV16ActorUnkKURI_268 kind:data(any) addr:0x021221b4 +_ZTV19ActorProfileUnkKURI kind:data(any) addr:0x021221d0 +_ZTV16ActorUnkKURI_1BC kind:data(any) addr:0x021221f4 +_ZTV16ActorUnkKURI_110 kind:data(any) addr:0x0212223c data_ov032_02122288 kind:data(any) addr:0x02122288 -_ZTV19data_ov032_021222e8 kind:data(any) addr:0x021222e8 +_ZTV12ActorUnkKURI kind:data(any) addr:0x021222e8 data_ov032_02122348 kind:data(any) addr:0x02122348 data_ov032_021223a8 kind:data(any) addr:0x021223a8 data_ov032_021223b4 kind:data(any) addr:0x021223b4 diff --git a/config/eur1/arm9/overlays/ov000/symbols.txt b/config/eur1/arm9/overlays/ov000/symbols.txt index a6e6aa18..3c879212 100644 --- a/config/eur1/arm9/overlays/ov000/symbols.txt +++ b/config/eur1/arm9/overlays/ov000/symbols.txt @@ -79,7 +79,7 @@ func_ov000_0205793c kind:function(arm,size=0xa4) addr:0x0205793c func_ov000_020579e0 kind:function(arm,size=0x14) addr:0x020579e0 func_ov000_020579f4 kind:function(arm,size=0x1c) addr:0x020579f4 func_ov000_02057a10 kind:function(thumb,size=0x14) addr:0x02057a10 -func_ov000_02057a24 kind:function(thumb,size=0x14) addr:0x02057a24 +_ZN26ModelRender_ov000_020b1a1cC1EP10G3d_Model_ 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 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 1ebb3fb0..a8b132cd 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -198,7 +198,7 @@ func_01fff254 kind:function(arm,size=0x2c) addr:0x01fff254 func_01fff280 kind:function(arm,size=0x28) addr:0x01fff280 func_01fff2a8 kind:function(arm,size=0x24) addr:0x01fff2a8 func_01fff2cc kind:function(arm,size=0x30) addr:0x01fff2cc -func_01fff2fc kind:function(arm,size=0x54) addr:0x01fff2fc +_ZN12ActorManager13func_01fff2fcEPFvP5ActortEi kind:function(arm,size=0x54) addr:0x01fff2fc _ZN12ActorManager13func_01fff350EPvPP5Actor kind:function(arm,size=0x64) addr:0x01fff350 _ZN12ActorManager13func_01fff3b4E8ActorRef kind:function(arm,size=0x8c) addr:0x01fff3b4 func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 146899d5..e3d47b02 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -2337,7 +2337,7 @@ _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x02099dd4 func_ov000_02099dfc kind:function(arm,size=0x28) addr:0x02099dfc _ZN5Actor19func_ov000_0209867cEi kind:function(arm,size=0x38) addr:0x02099e24 func_ov000_020986b4 kind:function(arm,size=0x48) addr:0x02099e5c -func_ov000_02099ea4 kind:function(arm,size=0x7c) addr:0x02099ea4 +_ZN5Actor19func_ov000_020986fcEi kind:function(arm,size=0x7c) addr:0x02099ea4 func_ov000_02099f20 kind:function(arm,size=0x88) addr:0x02099f20 _ZN5Actor19func_ov000_02098800Eb kind:function(arm,size=0x38) addr:0x02099fa8 _ZN5Actor19func_ov000_02098838Ev kind:function(arm,size=0x28) addr:0x02099fe0 @@ -2349,33 +2349,33 @@ _ZN5Actor19func_ov000_02098a60Ei kind:function(arm,size=0x28) addr:0x0209a208 _ZN5Actor19func_ov000_02098a88Eii kind:function(arm,size=0x2c) addr:0x0209a230 _ZN5Actor19func_ov000_02098ab4EhiiP7VecFx32 kind:function(arm,size=0x74) addr:0x0209a25c _ZN14Actor_Derived2C2Ev kind:function(arm,size=0x64) addr:0x0209a2d0 -_ZN5Actor19func_ov000_02098b8cEiPv kind:function(arm,size=0x1a8) addr:0x0209a334 +_ZN5Actor19func_ov000_02098b8cEiP24UnkStruct_ov031_Items_00 kind:function(arm,size=0x1a8) addr:0x0209a334 func_ov000_0209a4dc kind:function(arm,size=0x6c) addr:0x0209a4dc func_ov000_02098d7c kind:function(arm,size=0x1b8) addr:0x0209a548 -func_ov000_02098f34 kind:function(arm,size=0xd0) addr:0x0209a700 +_ZN14Actor_Derived219func_ov000_02098f34EP7VecFx32 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_020990c0 kind:function(arm,size=0x21c) addr:0x0209a88c +_ZN14Actor_Derived219func_ov000_020990c0EP8Actor_9Cii 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 -func_ov000_02099450 kind:function(arm,size=0x50) addr:0x0209ac1c -func_ov000_020994a0 kind:function(arm,size=0x74) addr:0x0209ac6c +_ZN14Actor_Derived219func_ov000_02099450EPvP7VecFx32it kind:function(arm,size=0x50) addr:0x0209ac1c +_ZN14Actor_Derived219func_ov000_020994a0Ev kind:function(arm,size=0x74) addr:0x0209ac6c func_ov000_0209ace0 kind:function(arm,size=0x74) addr:0x0209ace0 _ZN14Actor_Derived28vfunc_54Ei kind:function(arm,size=0x1b0) addr:0x0209ad54 func_ov000_0209af04 kind:function(arm,size=0x2c) addr:0x0209af04 func_ov000_0209af30 kind:function(arm,size=0x20) addr:0x0209af30 func_ov000_0209af50 kind:function(arm,size=0x20) addr:0x0209af50 func_ov000_0209af70 kind:function(arm,size=0x20) addr:0x0209af70 -func_ov000_0209af90 kind:function(arm,size=0x2c) addr:0x0209af90 +_ZN14Actor_Derived219func_ov000_020997c4Ei kind:function(arm,size=0x2c) addr:0x0209af90 _ZN19func_ov000_0209afbcD1Ev kind:function(arm,size=0x14) addr:0x0209afbc _ZN19func_ov000_0209afd0D0Ev kind:function(arm,size=0x1c) addr:0x0209afd0 _ZN26UnkStruct_ActorUnkCANS_224C1Ev kind:function(arm,size=0x50) addr:0x0209afec func_ov000_0209b03c kind:function(arm,size=0x80) addr:0x0209b03c func_ov000_0209b0bc kind:function(arm,size=0x11c) addr:0x0209b0bc -func_ov000_02099a0c kind:function(arm,size=0x10) addr:0x0209b1d8 +_ZN26UnkStruct_ActorUnkCANS_22419func_ov000_02099a0cEv kind:function(arm,size=0x10) addr:0x0209b1d8 func_ov000_0209b1e8 kind:function(arm,size=0xc) addr:0x0209b1e8 -_ZN24UnkStruct_ov000_020b31a8C2EP10UnkSystem5P11ModelRenderi kind:function(thumb,size=0x54) addr:0x0209b1f4 +_ZN24UnkStruct_ov000_020b31a8C2EP10UnkSystem5P11ModelRenderP19UnkActorFileSystem2 kind:function(thumb,size=0x54) addr:0x0209b1f4 func_ov000_0209b248 kind:function(thumb,size=0x48) addr:0x0209b248 func_ov000_0209b290 kind:function(thumb,size=0x28) addr:0x0209b290 func_ov000_0209b2b8 kind:function(thumb,size=0x2) addr:0x0209b2b8 @@ -2386,8 +2386,8 @@ _ZN24UnkStruct_ov000_020b31a88vfunc_0CEv kind:function(arm,size=0x68) addr:0x020 _ZN24UnkStruct_ov000_020b31a88vfunc_20Ev kind:function(arm,size=0x110) addr:0x0209b36c _ZN24UnkStruct_ov000_020b31a88vfunc_1CE25ActorUnkZLSL_AnimationTagiii kind:function(arm,size=0x84) addr:0x0209b47c func_ov000_0209b500 kind:function(arm,size=0xa8) addr:0x0209b500 -_ZN17ActorUnkZLSL_270019func_ov000_02099ddcE25ActorUnkZLSL_AnimationTagi kind:function(arm,size=0x7c) addr:0x0209b5a8 -func_ov000_02099e58 kind:function(arm,size=0x98) addr:0x0209b624 +_ZN24UnkStruct_ov000_020b31a819func_ov000_02099ddcE25ActorUnkZLSL_AnimationTagii kind:function(arm,size=0x7c) addr:0x0209b5a8 +func_ov000_0209b624 kind:function(arm,size=0x98) addr:0x0209b624 func_ov000_0209b6bc kind:function(arm,size=0x74) addr:0x0209b6bc func_ov000_02099f64 kind:function(arm,size=0x94) addr:0x0209b730 _ZN24UnkStruct_ov000_020b31a819func_ov000_02099ff8E25ActorUnkZLSL_AnimationTagi kind:function(arm,size=0x74) addr:0x0209b7c4 @@ -2401,7 +2401,7 @@ _ZN24UnkStruct_ov000_020b31a88vfunc_14Ev kind:function(arm,size=0x8) addr:0x0209 func_ov000_0209b918 kind:function(arm,size=0x24) addr:0x0209b918 func_ov000_0209b93c kind:function(arm,size=0x10) addr:0x0209b93c func_ov000_0209b94c kind:function(arm,size=0x8) addr:0x0209b94c -_ZN24UnkStruct_ov000_020b31f0C2EPvS0_S0_i kind:function(thumb,size=0x30) addr:0x0209b954 +_ZN24UnkStruct_ov000_020b31f0C2EP10UnkSystem5S1_P11ModelRenderP19UnkActorFileSystem2 kind:function(thumb,size=0x30) addr:0x0209b954 func_ov000_0209b984 kind:function(thumb,size=0x34) addr:0x0209b984 func_ov000_0209b9b8 kind:function(thumb,size=0x3c) addr:0x0209b9b8 func_ov000_0209b9f4 kind:function(thumb,size=0xc) addr:0x0209b9f4 diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 43036a7d..b48cfc61 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -56,14 +56,14 @@ func_ov017_020c06b0 kind:function(arm,size=0x20) addr:0x020c06b0 func_ov017_020c06d0 kind:function(arm,size=0x28) addr:0x020c06d0 func_ov017_020c06f8 kind:function(arm,size=0x20) addr:0x020c06f8 _ZN5Actor19func_ov017_020beeecEi kind:function(arm,size=0x60) addr:0x020c0718 -func_ov017_020bef4c kind:function(arm,size=0x3c) addr:0x020c0778 +_ZN14Actor_Derived219func_ov017_020bef4cEi kind:function(arm,size=0x3c) addr:0x020c0778 func_ov017_020c07b4 kind:function(arm,size=0x9c) addr:0x020c07b4 func_ov017_020c0850 kind:function(arm,size=0x2c) addr:0x020c0850 func_ov017_020bf050 kind:function(arm,size=0x128) addr:0x020c087c -func_ov017_020bf178 kind:function(arm,size=0x10c) addr:0x020c09a4 +_ZN14Actor_Derived219func_ov017_020bf178EP8Actor_9Ci kind:function(arm,size=0x10c) addr:0x020c09a4 func_ov017_020c0ab0 kind:function(arm,size=0x54) addr:0x020c0ab0 func_ov017_020c0b04 kind:function(arm,size=0x108) addr:0x020c0b04 -func_ov017_020c0c0c kind:function(arm,size=0xd0) addr:0x020c0c0c +_ZN5Actor19func_ov017_020bf3e0Eii kind:function(arm,size=0xd0) addr:0x020c0c0c func_ov017_020c0cdc kind:function(arm,size=0xc4) addr:0x020c0cdc func_ov017_020c0da0 kind:function(arm,size=0x50) addr:0x020c0da0 _ZN5Actor19func_ov017_020bf5c4EP7VecFx32iiii kind:function(arm,size=0x70) addr:0x020c0df0 @@ -71,7 +71,7 @@ func_ov017_020bf634 kind:function(arm,size=0x54) addr:0x020c0e60 func_ov017_020bf688 kind:function(arm,size=0x88) addr:0x020c0eb4 func_ov017_020c0f3c kind:function(arm,size=0x98) addr:0x020c0f3c func_ov017_020c0fd4 kind:function(arm,size=0xec) addr:0x020c0fd4 -func_ov017_020bf894 kind:function(arm,size=0x60) addr:0x020c10c0 +_ZN14Actor_Derived219func_ov017_020bf894EP26UnkStruct_ActorUnkCANS_224 kind:function(arm,size=0x60) addr:0x020c10c0 _ZN5Actor8vfunc_40Ev kind:function(arm,size=0x44) addr:0x020c1120 _ZN5Actor8vfunc_44Ev kind:function(arm,size=0x64) addr:0x020c1164 func_ov017_020bf99c kind:function(arm,size=0x2c) addr:0x020c11c8 diff --git a/config/jp/arm9/overlays/ov031/relocs.txt b/config/jp/arm9/overlays/ov031/relocs.txt index e056bee7..2883cb26 100644 --- a/config/jp/arm9/overlays/ov031/relocs.txt +++ b/config/jp/arm9/overlays/ov031/relocs.txt @@ -177,7 +177,7 @@ from:0x020db4f0 kind:arm_call to:0x0208eb68 module:overlay(0) from:0x020db50c kind:load to:0x0208ec7c module:overlay(0) from:0x020db51c kind:load to:0x0208f3cc module:overlay(0) from:0x020db544 kind:load to:0x02094dc8 module:overlay(0) -from:0x020db550 kind:load to:0x021241ad module:overlays(32,33,34,36,37) +from:0x020db550 kind:load to:0x021241ad module:overlays(33,34,36,37) from:0x020db55c kind:load to:0x02154761 module:overlays(29,30,58,72) from:0x020db56c kind:load to:0x027e0d34 module:dtcm from:0x020db57a kind:thumb_call_arm to:0x02011f3c module:main diff --git a/config/jp/arm9/overlays/ov032/delinks.txt b/config/jp/arm9/overlays/ov032/delinks.txt index d1b9fa6b..2d66135c 100644 --- a/config/jp/arm9/overlays/ov032/delinks.txt +++ b/config/jp/arm9/overlays/ov032/delinks.txt @@ -9,13 +9,14 @@ src/032_MapA1/Actor/ActorUnkKURI.cpp: .text start:0x0211ad60 end:0x0211d46c .init start:0x02123f0c end:0x02123f78 .ctor start:0x02124104 end:0x02124108 - .bss start:0x02124800 end:0x021248f8 + .data start:0x02124120 end:0x02124368 + .bss start:0x02124800 end:0x021248e8 src/032_MapA1/Actor/ActorUnkMKUR.cpp: .text start:0x0211d46c end:0x0211f8e0 .init start:0x02123f78 end:0x02123ff8 .ctor start:0x02124108 end:0x0212410c - .bss start:0x021248f8 end:0x02124954 + .bss start:0x021248e8 end:0x02124954 src/032_MapA1/Actor/ActorUnkKETH.cpp: .text start:0x0211f8e0 end:0x02121b20 diff --git a/config/jp/arm9/overlays/ov032/relocs.txt b/config/jp/arm9/overlays/ov032/relocs.txt index 67573858..56d11203 100644 --- a/config/jp/arm9/overlays/ov032/relocs.txt +++ b/config/jp/arm9/overlays/ov032/relocs.txt @@ -17,8 +17,8 @@ from:0x0211af50 kind:arm_call to:0x0211d310 module:overlay(32) from:0x0211afb0 kind:arm_call to:0x02099dd4 module:overlay(0) from:0x0211afd4 kind:load to:0x021242a8 add:0x8 module:overlay(32) from:0x0211afd8 kind:load to:0x02124810 module:overlay(32) -from:0x0211afdc kind:load to:0x02124204 module:overlay(32) -from:0x0211afe0 kind:load to:0x021241bc module:overlay(32) +from:0x0211afdc kind:load to:0x021241fc module:overlay(32) add:0x8 +from:0x0211afe0 kind:load to:0x021241b4 module:overlay(32) add:0x8 from:0x0211afe4 kind:load to:0x02124120 module:overlay(32) from:0x0211aff0 kind:arm_call_thumb to:0x0209ba14 module:overlay(0) from:0x0211b004 kind:arm_call_thumb to:0x0209b2c8 module:overlay(0) @@ -237,7 +237,7 @@ from:0x0211d2f4 kind:arm_call to:0x0209af90 module:overlay(0) from:0x0211d2fc kind:arm_call to:0x0211d150 module:overlay(32) from:0x0211d308 kind:load to:0x027e09a8 module:dtcm from:0x0211d318 kind:arm_call to:0x02099a50 module:overlay(0) -from:0x0211d33c kind:load to:0x0212417c module:overlay(32) +from:0x0211d33c kind:load to:0x02124174 module:overlay(32) add:0x8 from:0x0211d348 kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x0211d35c kind:arm_call to:0x0207d6b4 module:overlay(0) from:0x0211d364 kind:arm_call to:0x02011ff4 module:main @@ -272,7 +272,7 @@ from:0x0211d66c kind:arm_call to:0x02099dd4 module:overlay(0) from:0x0211d688 kind:arm_call to:0x0211dba4 module:overlay(32) from:0x0211d6a8 kind:load to:0x02124438 add:0x8 module:overlay(32) from:0x0211d6ac kind:load to:0x02124910 module:overlay(32) -from:0x0211d6b0 kind:load to:0x02124204 module:overlay(32) +from:0x0211d6b0 kind:load to:0x021241fc module:overlay(32) add:0x8 from:0x0211d6b4 kind:load to:0x02124904 module:overlay(32) from:0x0211d6b8 kind:load to:0x021248ec module:overlay(32) from:0x0211d6bc kind:load to:0x02124368 module:overlay(32) @@ -550,8 +550,8 @@ from:0x0211fb40 kind:arm_call to:0x0211fbd4 module:overlay(32) from:0x0211fb60 kind:arm_call to:0x02099dd4 module:overlay(0) from:0x0211fb90 kind:load to:0x021245ec add:0x8 module:overlay(32) from:0x0211fb94 kind:load to:0x02124964 module:overlay(32) -from:0x0211fb98 kind:load to:0x02124204 module:overlay(32) -from:0x0211fb9c kind:load to:0x021241bc module:overlay(32) +from:0x0211fb98 kind:load to:0x021241fc module:overlay(32) add:0x8 +from:0x0211fb9c kind:load to:0x021241b4 module:overlay(32) add:0x8 from:0x0211fba0 kind:load to:0x0211fbc0 module:overlay(32) from:0x0211fba4 kind:load to:0x0212198c module:overlay(32) from:0x0211fba8 kind:load to:0x02124498 module:overlay(32) diff --git a/config/jp/arm9/overlays/ov032/symbols.txt b/config/jp/arm9/overlays/ov032/symbols.txt index 3c4b3b57..0c46c8d1 100644 --- a/config/jp/arm9/overlays/ov032/symbols.txt +++ b/config/jp/arm9/overlays/ov032/symbols.txt @@ -2,16 +2,16 @@ _ZN19ActorProfileUnkKURI10GetProfileEv kind:function(arm,size=0xc) addr:0x0211ad _ZN19ActorProfileUnkKURI6CreateEv kind:function(arm,size=0x24) addr:0x0211ad6c _ZN19ActorProfileUnkKURIC1Ev kind:function(arm,size=0x5c) addr:0x0211ad90 _ZN12ActorUnkKURIC1Ev kind:function(arm,size=0x1fc) addr:0x0211adec -_ZN12ActorUnkKURI19func_ov032_02119248Ev kind:function(arm,size=0x14) addr:0x0211afe8 -_ZN12ActorUnkKURI19func_ov032_0211925cEv kind:function(arm,size=0x14) addr:0x0211affc -_ZN12ActorUnkKURI19func_ov032_02119270Ev kind:function(arm,size=0x8c) addr:0x0211b010 +_ZN16ActorUnkKURI_110D1Ev kind:function(arm,size=0x14) addr:0x0211afe8 +_ZN16ActorUnkKURI_1BCD1Ev kind:function(arm,size=0x14) addr:0x0211affc +_ZN12ActorUnkKURID1Ev kind:function(arm,size=0x8c) addr:0x0211b010 _ZN12ActorUnkKURID0Ev kind:function(arm,size=0x94) addr:0x0211b09c -_ZN12ActorUnkKURI19func_ov032_02119390Ev kind:function(arm,size=0xc8) addr:0x0211b130 -_ZN12ActorUnkKURI19func_ov032_02119458Ev kind:function(arm,size=0x84) addr:0x0211b1f8 -_ZN12ActorUnkKURI19func_ov032_021194dcEv kind:function(arm,size=0x60) addr:0x0211b27c -_ZN12ActorUnkKURI19func_ov032_0211953cEv kind:function(arm,size=0x48) addr:0x0211b2dc -_ZN12ActorUnkKURI19func_ov032_02119584Ev kind:function(arm,size=0x358) addr:0x0211b324 -_ZN12ActorUnkKURI19func_ov032_021198dcEv kind:function(arm,size=0xb4) addr:0x0211b67c +_ZN12ActorUnkKURI8vfunc_18Ei kind:function(arm,size=0xc8) addr:0x0211b130 +_ZN12ActorUnkKURI8vfunc_1CEv kind:function(arm,size=0x84) addr:0x0211b1f8 +_ZN12ActorUnkKURI19func_ov032_021194dcEs kind:function(arm,size=0x60) addr:0x0211b27c +_ZN12ActorUnkKURI8SetStateEs kind:function(arm,size=0x48) addr:0x0211b2dc +_ZN12ActorUnkKURI8vfunc_20Ev kind:function(arm,size=0x358) addr:0x0211b324 +_ZN12ActorUnkKURI8vfunc_2CEi kind:function(arm,size=0xb4) addr:0x0211b67c _ZN12ActorUnkKURI19func_ov032_02119990Ev kind:function(arm,size=0x7c) addr:0x0211b730 _ZN12ActorUnkKURI19func_ov032_02119a0cEv kind:function(arm,size=0x1dc) addr:0x0211b7ac _ZN12ActorUnkKURI19func_ov032_02119be8Ev kind:function(arm,size=0x98) addr:0x0211b988 @@ -37,26 +37,26 @@ _ZN12ActorUnkKURI19func_ov032_0211ac94Ev kind:function(arm,size=0xac) addr:0x021 _ZN12ActorUnkKURI19func_ov032_0211ad40Ev kind:function(arm,size=0xb4) addr:0x0211cae0 _ZN12ActorUnkKURI19func_ov032_0211adf4Ev kind:function(arm,size=0x230) addr:0x0211cb94 _ZN12ActorUnkKURI19func_ov032_0211b024Ev kind:function(arm,size=0x40) addr:0x0211cdc4 -_ZN12ActorUnkKURI19func_ov032_0211b064Ev kind:function(arm,size=0xb0) addr:0x0211ce04 +_ZN12ActorUnkKURI19func_ov032_0211b064Ei kind:function(arm,size=0xb0) addr:0x0211ce04 _ZN12ActorUnkKURI19func_ov032_0211b114Ev kind:function(arm,size=0x68) addr:0x0211ceb4 _ZN12ActorUnkKURI19func_ov032_0211b17cEv kind:function(arm,size=0x14) addr:0x0211cf1c -_ZN12ActorUnkKURI19func_ov032_0211b190Ev kind:function(arm,size=0x50) addr:0x0211cf30 +_ZN12ActorUnkKURI19func_ov032_0211b190Eii kind:function(arm,size=0x50) addr:0x0211cf30 _ZN12ActorUnkKURI19func_ov032_0211b1e0Ev kind:function(arm,size=0xb8) addr:0x0211cf80 _ZN12ActorUnkKURI19func_ov032_0211b298Ev kind:function(arm,size=0xe4) addr:0x0211d038 -_ZN12ActorUnkKURI19func_ov032_0211b37cEv kind:function(arm,size=0x34) addr:0x0211d11c +_ZN12ActorUnkKURI19func_ov032_0211b37cEPS_t kind:function(arm,size=0x34) addr:0x0211d11c _ZN12ActorUnkKURI19func_ov032_0211b3b0Ev kind:function(arm,size=0x58) addr:0x0211d150 -_ZN12ActorUnkKURI19func_ov032_0211b408Ev kind:function(arm,size=0x168) addr:0x0211d1a8 -_ZN12ActorUnkKURI19func_ov032_0211b570Ev kind:function(arm,size=0x30) addr:0x0211d310 -_ZN12ActorUnkKURID1Ev kind:function(arm,size=0x14) addr:0x0211d340 -_ZN12ActorUnkKURI19func_ov032_0211b5b4Ev kind:function(arm,size=0x1c) addr:0x0211d354 -_ZN12ActorUnkKURI19func_ov032_0211b5d0Ev kind:function(arm,size=0x24) addr:0x0211d370 -_ZN12ActorUnkKURI19func_ov032_0211b5f4Ev kind:function(arm,size=0x24) addr:0x0211d394 -_ZN12ActorUnkKURI19func_ov032_0211b618Ev kind:function(arm,size=0x10) addr:0x0211d3b8 -_ZN12ActorUnkKURI19func_ov032_0211b628Ev kind:function(arm,size=0x8) addr:0x0211d3c8 -_ZN12ActorUnkKURI19func_ov032_0211b630Ev kind:function(arm,size=0x24) addr:0x0211d3d0 -_ZN12ActorUnkKURI19func_ov032_0211b654Ev kind:function(arm,size=0x2c) addr:0x0211d3f4 -_ZN12ActorUnkKURI19func_ov032_0211b680Ev kind:function(arm,size=0x1c) addr:0x0211d420 -_ZN12ActorUnkKURI19func_ov032_0211b69cEv kind:function(arm,size=0x1c) addr:0x0211d43c +_ZN12ActorUnkKURI8vfunc_54Ei kind:function(arm,size=0x168) addr:0x0211d1a8 +_ZN16ActorUnkKURI_268C1Ev kind:function(arm,size=0x30) addr:0x0211d310 +_ZN16ActorUnkKURI_268D1Ev kind:function(arm,size=0x14) addr:0x0211d340 +_ZN16ActorUnkKURI_268D0Ev kind:function(arm,size=0x1c) addr:0x0211d354 +_ZN16ActorUnkKURI_2688vfunc_08EPK24UnkStruct_ov031_020f3310 kind:function(arm,size=0x24) addr:0x0211d370 +_ZN16ActorUnkKURI_1BC8vfunc_3CEv kind:function(arm,size=0x24) addr:0x0211d394 +_ZN16ActorUnkKURI_1BC8vfunc_38Eii kind:function(arm,size=0x10) addr:0x0211d3b8 +_ZN16ActorUnkKURI_1BC8vfunc_30Ev kind:function(arm,size=0x8) addr:0x0211d3c8 +_ZN16ActorUnkKURI_1108vfunc_3CEv kind:function(arm,size=0x24) addr:0x0211d3d0 +_ZN16ActorUnkKURI_1108vfunc_38Eii kind:function(arm,size=0x2c) addr:0x0211d3f4 +_ZN16ActorUnkKURI_110D0Ev kind:function(arm,size=0x1c) addr:0x0211d420 +_ZN16ActorUnkKURI_1BCD0Ev kind:function(arm,size=0x1c) addr:0x0211d43c _ZN19ActorProfileUnkKURID1Ev kind:function(arm,size=0x14) addr:0x0211d458 _ZN19ActorProfileUnkMKUR10GetProfileEv kind:function(arm,size=0xc) addr:0x0211d46c _ZN19ActorProfileUnkMKUR6CreateEv kind:function(arm,size=0x24) addr:0x0211d478 @@ -236,20 +236,17 @@ __sinit_MapObjectUnkSWSW.cpp kind:function(arm,size=0x50) addr:0x021240b4 .p__sinit_ActorUnkKETH.cpp kind:data(word) addr:0x0212410c .p__sinit_ActorUnkNSSW.cpp kind:data(word) addr:0x02124110 .p__sinit_MapObjectUnkSWSW.cpp kind:data(word) addr:0x02124114 -data_ov032_02124120 kind:data(any) addr:0x02124120 -data_ov032_0212412c kind:data(any) addr:0x0212412c -data_ov032_02124144 kind:data(any) addr:0x02124144 -data_ov032_0212415c kind:data(any) addr:0x0212415c -data_ov032_0212417c kind:data(any) addr:0x0212417c -_ZTV19data_ov032_02124190 kind:data(any) addr:0x02124190 -data_ov032_021241ad kind:data(any) addr:0x021241ad ambiguous -data_ov032_021241bc kind:data(any) addr:0x021241bc -data_ov032_02124204 kind:data(any) addr:0x02124204 -data_ov032_02124248 kind:data(any) addr:0x02124248 -_ZTV19data_ov032_021242a8 kind:data(any) addr:0x021242a8 -data_ov032_02124308 kind:data(any) addr:0x02124308 -data_ov032_02124348 kind:data(any) addr:0x02124348 ambiguous -data_ov032_02124360 kind:data(any) addr:0x02124360 ambiguous +data_ov032_02122160 kind:data(any) addr:0x02124120 +data_ov032_0212216c kind:data(any) addr:0x0212412c +data_ov032_02122184 kind:data(any) addr:0x02124144 +data_ov032_0212219c kind:data(any) addr:0x0212415c +_ZTV16ActorUnkKURI_268 kind:data(any) addr:0x02124174 +_ZTV19ActorProfileUnkKURI kind:data(any) addr:0x02124190 +_ZTV16ActorUnkKURI_1BC kind:data(any) addr:0x021241b4 +_ZTV16ActorUnkKURI_110 kind:data(any) addr:0x021241fc +data_ov032_02122288 kind:data(any) addr:0x02124248 +_ZTV12ActorUnkKURI kind:data(any) addr:0x021242a8 +data_ov032_02122348 kind:data(any) addr:0x02124308 data_ov032_02124368 kind:data(any) addr:0x02124368 data_ov032_02124374 kind:data(any) addr:0x02124374 data_ov032_0212438c kind:data(any) addr:0x0212438c diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 69aae904..3b91114d 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -97,9 +97,7 @@ public: /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ ActorRef mUnk_0C; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; + /* 10 */ VecFx32 mUnk_10; /* 1C */ u16 mUnk_1C; /* 1E */ u16 mUnk_1E; /* 20 */ @@ -228,7 +226,7 @@ public: u32 func_ov000_02098800(bool param1); bool func_ov000_02098838(); unk32 func_ov000_02098910(UnkStruct_ov031_Items_00 *param1, unk32 param2); - void func_ov000_02098b8c(unk32 param1, void *param2); + void func_ov000_02098b8c(unk32 param1, UnkStruct_ov031_Items_00 *param2); s32 func_ov000_02098518(unk32 *param1); VecFx32 *func_ov000_0209853c(unk32 param1); s32 func_ov000_02098554(); @@ -237,6 +235,7 @@ public: s32 func_ov000_02098584(); s32 func_ov000_020985f0(void *param1); void func_ov000_0209862c(unk32 param1); + bool func_ov000_020986fc(unk32 param1); void func_ov000_020989e0(); bool func_ov000_02098a60(unk32 param1); void func_ov000_02098a88(unk32 param1, unk32 param2); @@ -248,6 +247,7 @@ public: // overlay 17 bool func_ov017_020beeec(unk32 param1); void func_ov017_020bef88(Actor_vfunc_30 *param1, void *param2, unk32 param3); + void func_ov017_020bf3e0(unk32 param1, fx32 param2); void func_ov017_020bf5c4(VecFx32 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); void func_ov017_020bf9c8(Actor *param1); void func_ov017_020bfa50(VecFx32 *param1, unk32 param2); @@ -296,13 +296,23 @@ public: Actor_C4_Base(¶m1->mRef, param2) {} }; +class Actor_Derived2_A8_PTR { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ +}; + +class UnkStruct_ActorUnkCANS_224; class Actor_Derived2 : public Actor { public: /* 00 (base) */ /* 94 */ unk32 mUnk_94; /* 98 */ VecFx32 mUnk_98; - /* A4 */ unk32 mUnk_A4; - /* A8 */ void *mUnk_A8; + /* A4 */ VecFx32 const *mUnk_A4; + /* A8 */ Actor_Derived2_A8_PTR *mUnk_A8; /* AC */ unk8 mUnk_AC; /* AD */ unk8 mUnk_AD; /* AE */ @@ -312,6 +322,17 @@ public: /* 30 */ virtual void vfunc_30(Actor_vfunc_30 *param1); /* 4C */ WEAK virtual ~Actor_Derived2() {} /* 54 */ virtual void vfunc_54(unk32 param1); + + void func_ov000_020990c0(Actor_9C *param2, unk32 param3, unk32 param4); + void func_ov000_020992dc(); + unk32 func_ov000_02099450(void *param2, VecFx32 *param3, unk32 param4, u16 param5); + void func_ov000_020994a0(); + void func_ov000_020997c4(unk32 param1); + void func_ov000_02098f34(VecFx32 *); + + unk32 func_ov017_020bef4c(unk32 param1); + void func_ov017_020bf178(Actor_9C *param2, unk32 param3); + void func_ov017_020bf894(UnkStruct_ActorUnkCANS_224 *param1); }; extern UnkStruct_ov000_020b539c data_ov000_020b539c_eur; diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index 932495c7..65fa98b6 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -39,6 +39,7 @@ public: ~ActorManager(); // itcm + void func_01fff2fc(void (*callback)(Actor *, u16), unk32 param2); Actor **func_01fff350(void *param1, Actor **ppActorTable); Actor *func_01fff3b4(ActorRef ref); diff --git a/include/Actor/ActorProfile.hpp b/include/Actor/ActorProfile.hpp index 69ead0fb..b367785e 100644 --- a/include/Actor/ActorProfile.hpp +++ b/include/Actor/ActorProfile.hpp @@ -36,7 +36,7 @@ public: ~ActorProfile(); /* 00 */ virtual Actor *Create() = 0; - /* 04 */ virtual unk32 vfunc_04(); + /* 04 */ virtual UnkActorFileSystem2 *vfunc_04(); /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); @@ -59,7 +59,7 @@ public: ActorProfile_Derived1(ActorId actorId1, ActorId actorId2); ~ActorProfile_Derived1(); - /* 04 */ virtual unk32 vfunc_04() override; + /* 04 */ virtual UnkActorFileSystem2 *vfunc_04() override; /* 10 */ virtual void vfunc_10() override; /* 14 */ virtual void vfunc_14() override; /* 18 */ virtual void vfunc_18() override; @@ -73,10 +73,10 @@ public: ActorProfile_Derived2(ActorId actorId1, ActorId actorId2) : ActorProfile_Derived1(actorId1, actorId2) {} - /* 04 */ virtual unk32 vfunc_04() override; // func_ov000_02097944 - /* 10 */ virtual void vfunc_10() override; // func_ov000_0209794c - /* 14 */ virtual void vfunc_14() override; // func_ov000_0209796c - /* 18 */ virtual void vfunc_18() override; // func_ov000_02097998 + /* 04 */ virtual UnkActorFileSystem2 *vfunc_04() override; // func_ov000_02097944 + /* 10 */ virtual void vfunc_10() override; // func_ov000_0209794c + /* 14 */ virtual void vfunc_14() override; // func_ov000_0209796c + /* 18 */ virtual void vfunc_18() override; // func_ov000_02097998 }; // typedef ActorProfile *(*GetActorProfile)(); diff --git a/include/Actor/ActorTearLight.hpp b/include/Actor/ActorTearLight.hpp index 01b40466..304b3ebc 100644 --- a/include/Actor/ActorTearLight.hpp +++ b/include/Actor/ActorTearLight.hpp @@ -48,7 +48,7 @@ public: /* 00 (base) */ /* 1C */ - ActorTearLight_104_Base(UnkSystem5 *param1, ModelRender *param2, unk32 param3) : + ActorTearLight_104_Base(UnkSystem5 *param1, ModelRender *param2, UnkActorFileSystem2 *param3) : UnkStruct_ov000_020b31a8(param1, param2, param3) {} // data_ov071_021641e0 @@ -63,7 +63,7 @@ public: /* 00 (base) */ /* 1C */ - ActorTearLight_104(UnkSystem5 *param1, ModelRender *param2, unk32 param3) : + ActorTearLight_104(UnkSystem5 *param1, ModelRender *param2, UnkActorFileSystem2 *param3) : ActorTearLight_104_Base(param1, param2, param3) {} // data_ov071_02164c3c diff --git a/include/Actor/ActorUnkCANS.hpp b/include/Actor/ActorUnkCANS.hpp index d1ca2be1..104931d8 100644 --- a/include/Actor/ActorUnkCANS.hpp +++ b/include/Actor/ActorUnkCANS.hpp @@ -66,11 +66,11 @@ public: /* 7C */ UnkSystem5 mUnk_7C; /* 9C */ unk32 mUnk_9C; - UnkStruct_ov063_02162f14(void *param3, unk32 param4) : + UnkStruct_ov063_02162f14(ModelRender *param3, UnkActorFileSystem2 *param4) : UnkStruct_ov000_020b31f0(&mUnk_2C, &mUnk_7C, param3, param4), mUnk_2C(&mUnk_4C, NULL), mUnk_7C(&mUnk_9C, NULL) { - if (param4 != 0) { + if (param4 != NULL) { mUnk_7C.mpModel = mUnk_10; mUnk_2C.mpModel = mUnk_10; } @@ -92,10 +92,23 @@ public: class UnkStruct_ActorUnkCANS_224 { public: - /* 00 (base) */ - /* 04 */ + /* 00 (base) */ UnkStruct_PlayerGet_ec mUnk_00[0x2]; + /* 08 */ u16 mUnk_08; + /* 0A */ u16 mUnk_0A; + /* 0C */ STRUCT_PAD(0x0C, 0x10); + /* 10 */ UnkStruct_ActorUnkCANS_224(); // func_ov000_02099820 + + ~UnkStruct_ActorUnkCANS_224() { + for (UnkStruct_PlayerGet_ec *ptr = this->mUnk_00; ptr != this->mUnk_00 + ARRAY_LEN(this->mUnk_00); ++ptr) { + ptr->func_ov000_020a0334(); + } + this->mUnk_0A = 0x0; + this->mUnk_08 = 0x0; + } + + void func_ov000_02099a0c(); }; class ActorUnkCANS : public Actor_Derived2 { @@ -108,10 +121,6 @@ public: /* 1F4 */ Actor_Derived1_94 mUnk_1F4; /* 200 */ UnkStruct_ov063_02162e88 mUnk_200; /* 224 */ UnkStruct_ActorUnkCANS_224 mUnk_224; - /* 226 */ STRUCT_PAD(0x226, 0x22C); - /* 22C */ unk16 mUnk_22C; - /* 22E */ unk16 mUnk_22E; - /* 230 */ STRUCT_PAD(0x230, 0x234); /* 234 */ volatile u16 mUnk_234; /* 236 */ u16 mUnk_236; /* 238 */ volatile u16 mUnk_238; diff --git a/include/Actor/ActorUnkKURI.hpp b/include/Actor/ActorUnkKURI.hpp index e8696c8e..cf69f1cf 100644 --- a/include/Actor/ActorUnkKURI.hpp +++ b/include/Actor/ActorUnkKURI.hpp @@ -1,84 +1,174 @@ -//! TODO: This file was generated automatically and might contain errors - #pragma once #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "ActorUnkCANS.hpp" +#include "ActorUnkZLSL_ZSRS.hpp" #include "global.h" -#include "types.h" -class ActorUnkKURI_C4 : public Actor_C4 { -public: - ActorUnkKURI_C4(Actor *param1); - - /* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override; - /* 04 */ virtual bool vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0C(unk32 param1) override; -}; - -class ActorUnkKURI : public Actor { +class ModelRender_ov000_020b1a1c : public ModelRender { public: /* 00 (base) */ - /* 94 */ + ModelRender_ov000_020b1a1c(G3d_Model *pModel); + + // data_ov000_020b1a1c + /* 0C */ virtual void vfunc_0C() override; +}; + +enum ActorUnkKURIState_ { + ActorUnkKURIState_0 = 0, + ActorUnkKURIState_1 = 1, + ActorUnkKURIState_2 = 2, + ActorUnkKURIState_3 = 3, + ActorUnkKURIState_4 = 4, + ActorUnkKURIState_5 = 5, + ActorUnkKURIState_6 = 6, + ActorUnkKURIState_7 = 7, + ActorUnkKURIState_8 = 8, + ActorUnkKURIState_9 = 9, + ActorUnkKURIState_10 = 10, + ActorUnkKURIState_11 = 11, + ActorUnkKURIState_Max +}; + +class ActorUnkKURI_268 : public UnkStruct_ov031_Items_00 { +public: + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x04, 0x08); + /* 08 */ VecFx32 mUnk_08; + /* 14 */ + + ActorUnkKURI_268(); + + // data_ov032_021221bc + /* 00 */ virtual ~ActorUnkKURI_268(); + /* 08 */ virtual bool vfunc_08(const UnkStruct_ov031_020f3310 *param1) override; +}; + +class ActorUnkKURI_110 : public UnkStruct_ov000_020b31f0 { +public: + /* 00 (base) */ + /* 2C */ UnkSystem5 mUnk_2C; + /* 4C */ unk32 mUnk_4C; + /* 50 */ STRUCT_PAD(0x50, 0x6C); + /* 6C */ UnkSystem5 mUnk_6C; + /* 8C */ unk32 mUnk_8C; + /* 90 */ + + ActorUnkKURI_110(ModelRender *param3, UnkActorFileSystem2 *param4) : + UnkStruct_ov000_020b31f0(&this->mUnk_2C, &this->mUnk_6C, param3, param4), + mUnk_2C(&this->mUnk_4C, NULL), + mUnk_6C(&this->mUnk_8C, NULL) { + if (param4 != NULL) { + this->mUnk_6C.mpModel = this->mUnk_10; + this->mUnk_2C.mpModel = this->mUnk_10; + } + } + + // data_ov032_02122244 + /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2) override; + /* 3C */ virtual void vfunc_3C() override; +}; + +class ActorUnkKURI_1BC : public UnkStruct_ov000_020b31a8 { +public: + /* 00 (base) */ + /* 1C */ UnkSystem5 mUnk_1C; + /* 3C */ unk32 mUnk_3C; + /* 40 */ + + ActorUnkKURI_1BC(ModelRender *param2, UnkActorFileSystem2 *param3) : + UnkStruct_ov000_020b31a8(&this->mUnk_1C, param2, param3), + mUnk_1C(&this->mUnk_3C, NULL) { + if (param3 != NULL) { + this->mUnk_1C.mpModel = this->mUnk_10; + } + } + + // data data_ov032_021221fc + /* 30 */ virtual s8 vfunc_30() override; + /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2) override; + /* 3C */ virtual void vfunc_3C() override; +}; + +class ActorUnkKURI : public Actor_Derived2 { +public: + /* 000 (base) */ + /* 0AE */ STRUCT_PAD(0x0AE, 0x0B0); + /* 0B0 */ ModelRender_ov000_020b1a1c mUnk_0B0; + /* 110 */ ActorUnkKURI_110 mUnk_110; + /* 1A0 */ STRUCT_PAD(0x1A0, 0x1BC); + /* 1BC */ ActorUnkKURI_1BC mUnk_1BC; + /* 1FC */ STRUCT_PAD(0x1FC, 0x218); + /* 218 */ unk16 mUnk_218; + /* 21C */ unk32 mUnk_21C; + /* 220 */ unk32 mUnk_220; + /* 224 */ unk16 mUnk_224; + /* 228 */ Actor_9C mUnk_228; + /* 248 */ UnkStruct_ActorUnkCANS_224 mUnk_248; + /* 258 */ Actor_Derived1_94 mUnk_258; + /* 264 */ unk32 mUnk_264; + /* 268 */ ActorUnkKURI_268 mUnk_268; + /* 27C */ VecFx32 mUnk_27C; + /* 288 */ VecFx32 mUnk_288; + /* 294 */ bool mUnk_294; + /* 296 */ volatile u16 mUnk_296; + /* 298 */ u16 mUnk_298; + /* 29A */ ActorUnkKURI(); - /* 4C */ virtual ~ActorUnkKURI() override; + bool IsInternalTimerOut() { + if (this->mUnk_296 < this->mUnk_298) { + this->mUnk_296++; + return false; + } - void func_ov032_02119248(void); - void func_ov032_0211925c(void); - void func_ov032_02119270(void); - void func_ov032_02119390(void); - void func_ov032_02119458(void); - void func_ov032_021194dc(void); - void func_ov032_0211953c(void); - void func_ov032_02119584(void); - void func_ov032_021198dc(void); - void func_ov032_02119990(void); - void func_ov032_02119a0c(void); - void func_ov032_02119be8(void); - void func_ov032_02119c80(void); - void func_ov032_02119d7c(void); - void func_ov032_02119df4(void); - void func_ov032_02119e90(void); - void func_ov032_02119f40(void); - void func_ov032_0211a140(void); - void func_ov032_0211a20c(void); - void func_ov032_0211a484(void); - void func_ov032_0211a52c(void); - void func_ov032_0211a7b8(void); - void func_ov032_0211a86c(void); - void func_ov032_0211a950(void); - void func_ov032_0211a9c8(void); - void func_ov032_0211aa40(void); - void func_ov032_0211aac8(void); - void func_ov032_0211ab20(void); - void func_ov032_0211abc0(void); - void func_ov032_0211ac20(void); - void func_ov032_0211ac94(void); - void func_ov032_0211ad40(void); - void func_ov032_0211adf4(void); - void func_ov032_0211b024(void); - void func_ov032_0211b064(void); - void func_ov032_0211b114(void); - void func_ov032_0211b17c(void); - void func_ov032_0211b190(void); - void func_ov032_0211b1e0(void); - void func_ov032_0211b298(void); - void func_ov032_0211b37c(void); - void func_ov032_0211b3b0(void); - void func_ov032_0211b408(void); - void func_ov032_0211b570(void); - void func_ov032_0211b5b4(void); - void func_ov032_0211b5d0(void); - void func_ov032_0211b5f4(void); - void func_ov032_0211b618(void); - void func_ov032_0211b628(void); - void func_ov032_0211b630(void); - void func_ov032_0211b654(void); - void func_ov032_0211b680(void); - void func_ov032_0211b69c(void); + return true; + } + + /* 18 */ virtual bool vfunc_18(unk32 param1) override; + /* 1C */ virtual void vfunc_1C() override; + /* 20 */ virtual void vfunc_20() override; + /* 2C */ virtual void vfunc_2C(unk32 param1) override; + /* 4C */ virtual ~ActorUnkKURI() override; + /* 54 */ virtual void vfunc_54(unk32 param1) override; + + void func_ov032_021194dc(ActorState state); + void SetState(ActorState state); + void func_ov032_02119990(); + void func_ov032_02119a0c(); + void func_ov032_02119be8(); + void func_ov032_02119c80(); + void func_ov032_02119d7c(); + void func_ov032_02119df4(); + void func_ov032_02119e90(); + void func_ov032_02119f40(); + void func_ov032_0211a140(); + void func_ov032_0211a20c(); + void func_ov032_0211a484(); + void func_ov032_0211a52c(); + void func_ov032_0211a7b8(); + void func_ov032_0211a86c(); + void func_ov032_0211a950(); + void func_ov032_0211a9c8(); + void func_ov032_0211aa40(); + void func_ov032_0211aac8(); + void func_ov032_0211ab20(); + void func_ov032_0211abc0(); + void func_ov032_0211ac20(); + void func_ov032_0211ac94(); + void func_ov032_0211ad40(); + void func_ov032_0211adf4(); + void func_ov032_0211b024(); + bool func_ov032_0211b064(unk32 param1); + bool func_ov032_0211b114(); + bool func_ov032_0211b17c(); + void func_ov032_0211b190(s32 param1, s32 param2); + void func_ov032_0211b1e0(); + void func_ov032_0211b298(); + static void func_ov032_0211b37c(ActorUnkKURI *, u16 param1); + void func_ov032_0211b3b0(); }; class ActorProfileUnkKURI : public ActorProfile_Derived1 { @@ -86,7 +176,6 @@ public: /* 00 (base) */ ActorProfileUnkKURI(); - ~ActorProfileUnkKURI(); /* 0C */ virtual Actor *Create(); diff --git a/include/Actor/ActorUnkRBLS.hpp b/include/Actor/ActorUnkRBLS.hpp index bc2b5282..0494a748 100644 --- a/include/Actor/ActorUnkRBLS.hpp +++ b/include/Actor/ActorUnkRBLS.hpp @@ -12,7 +12,7 @@ public: /* 00 (base) */ /* 40 */ - UnkStruct_ov063_02163784(ModelRender *param1, unk32 param2) : + UnkStruct_ov063_02163784(ModelRender *param1, UnkActorFileSystem2 *param2) : UnkStruct_ov063_021632e4(param1, param2) {}; }; diff --git a/include/Actor/ActorUnkRMSV.hpp b/include/Actor/ActorUnkRMSV.hpp index 9a3e5e90..4d1474dc 100644 --- a/include/Actor/ActorUnkRMSV.hpp +++ b/include/Actor/ActorUnkRMSV.hpp @@ -16,7 +16,7 @@ public: /* 3C */ void *mUnk_3C; /* 40 */ - UnkStruct_ov063_021632e4(ModelRender *param1, unk32 param2) : + UnkStruct_ov063_021632e4(ModelRender *param1, UnkActorFileSystem2 *param2) : UnkStruct_ov000_020b31a8(&mUnk_1C, param1, param2), mUnk_1C(&mUnk_3C, NULL) { if (param2 != 0) { diff --git a/include/Actor/ActorUnkZLSL_ZSRS.hpp b/include/Actor/ActorUnkZLSL_ZSRS.hpp index 16452fee..5fbb3ebb 100644 --- a/include/Actor/ActorUnkZLSL_ZSRS.hpp +++ b/include/Actor/ActorUnkZLSL_ZSRS.hpp @@ -54,7 +54,7 @@ public: /* 19 */ STRUCT_PAD(0x19, 0x1C); /* 1C */ - UnkStruct_ov000_020b31a8(UnkSystem5 *param1, ModelRender *param2, unk32 param3); + UnkStruct_ov000_020b31a8(UnkSystem5 *param1, ModelRender *param2, UnkActorFileSystem2 *param3); // data_ov000_020b31a8 /* 00 */ virtual ~UnkStruct_ov000_020b31a8(); @@ -73,6 +73,7 @@ public: /* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2); /* 3C */ virtual void vfunc_3C(); + void func_ov000_02099ddc(ActorUnkZLSL_AnimationTag param1, unk32 param2, unk32 param3); void func_ov000_02099ff8(ActorUnkZLSL_AnimationTag param1, unk32 param2); }; @@ -84,10 +85,10 @@ public: /* 60 */ STRUCT_PAD(0x60, 0x7C); /* 7C */ - ActorUnkZLSL_27CC(UnkSystem5 *param1, ModelRender *param2, unk32 param3) : + ActorUnkZLSL_27CC(UnkSystem5 *param1, ModelRender *param2, UnkActorFileSystem2 *param3) : UnkStruct_ov000_020b31a8(param1, param2, param3), mUnk_1C(&mUnk_5C, NULL) { - if (param3 != 0x0) { + if (param3 != NULL) { this->mUnk_1C.mpModel = this->mUnk_10; } } @@ -104,7 +105,7 @@ public: /* 00 (base) */ /* 04 */ - ActorUnkZLSL_2700(UnkSystem5 *param1, ModelRender *param2, unk32 param3) : + ActorUnkZLSL_2700(UnkSystem5 *param1, ModelRender *param2, UnkActorFileSystem2 *param3) : ActorUnkZLSL_27CC(param1, param2, param3) {} // data_ov031_021136e4 @@ -122,10 +123,10 @@ public: /* 2A */ unk16 mUnk_2A; /* 2C */ - UnkStruct_ov000_020b31f0(void *param1, void *param2, void *param3, unk32 param4); + UnkStruct_ov000_020b31f0(UnkSystem5 *param1, UnkSystem5 *param2, ModelRender *param3, UnkActorFileSystem2 *param4); // data_ov000_020b31f0 - /* 00 */ virtual ~UnkStruct_ov000_020b31f0() override; + /* 00 */ virtual ~UnkStruct_ov000_020b31f0() override; // In thumb /* 08 */ virtual void vfunc_08() override; /* 0C */ virtual void vfunc_0C() override; /* 10 */ virtual UnkSystem5 *vfunc_10() override; @@ -150,7 +151,7 @@ public: /* 1C */ UnkSystem5 *mUnk_1C; /* 20 */ - UnkStruct_ov031_0211372c(void *param1, void *param2, void *param3, unk32 param4); + UnkStruct_ov031_0211372c(UnkSystem5 *param1, UnkSystem5 *param2, ModelRender *param3, UnkActorFileSystem2 *param4); // data_ov031_0211372c /* 18 */ virtual void vfunc_18() override; diff --git a/include/Player/PlayerGet.hpp b/include/Player/PlayerGet.hpp index f54d2d0f..340776be 100644 --- a/include/Player/PlayerGet.hpp +++ b/include/Player/PlayerGet.hpp @@ -116,12 +116,6 @@ public: } }; -class UnkStruct_PlayerGet_50 { -public: - unk32 func_01ff8fa8(); - unk32 func_02015080(unk32 param1); -}; - class UnkStruct_PlayerGet_fc { public: /* 00 */ UnkStruct_PlayerGet_ec *mUnk_00; diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index 1f97d30e..ef7bf543 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -9,6 +9,7 @@ #include class UnkSystem5; +class UnkStruct_PlayerGet_50; extern "C" void *func_ov000_02057750(size_t allocSize); struct ActorUnkZLSL_AnimationTag { @@ -144,16 +145,26 @@ public: unk32 func_ov000_02057ef4(); }; -class UnkSystem5 { +class UnkStruct_PlayerGet_50 { public: - /* 00 */ G3d_Model *mpModel; - /* 04 */ unk16 mUnk_04; - /* 08 */ unk32 mUnk_08; + /* 00 (base) */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ fx32 mUnk_04; + /* 08 */ fx32 mUnk_08; /* 0C */ unk32 mUnk_0C; /* 10 */ unk32 mUnk_10; /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1C */ unk32 mUnk_1C; + /* 18 */ + + unk32 func_01ff8fa8(); + unk32 func_02015080(unk32 param1); +}; + +class UnkSystem5 { +public: + /* 00 */ G3d_Model *mpModel; + /* 04 */ UnkStruct_PlayerGet_50 mUnk_04; + /* 1C */ void *mUnk_1C; // this is param1 /* 20 */ UnkSystem5(void *param1, G3d_Model *pModel); diff --git a/include/Unknown/UnkStruct_027e09c0.hpp b/include/Unknown/UnkStruct_027e09c0.hpp index 09697fe6..883cd4b7 100644 --- a/include/Unknown/UnkStruct_027e09c0.hpp +++ b/include/Unknown/UnkStruct_027e09c0.hpp @@ -10,9 +10,10 @@ class UnkStruct_027e0cd8_0C_Base; struct UnkStruct_ov000_0207de98 { - VecFx32 vec; - unk32 param1; - unk32 param2; + /* 00 */ VecFx32 vec; + /* 0C */ unk32 param1; + /* 10 */ unk32 param2; + /* 14 */ }; class UnkStruct_027e09c0_60 { diff --git a/src/031_Land/Actor/ActorBomb.cpp b/src/031_Land/Actor/ActorBomb.cpp index d201021e..eba3445e 100644 --- a/src/031_Land/Actor/ActorBomb.cpp +++ b/src/031_Land/Actor/ActorBomb.cpp @@ -263,8 +263,8 @@ void ActorBomb::func_ov031_020e1b1c() { this->mUnk_0F4.func_ov000_020577a4(param1, 0x0, param3); - this->mUnk_0F4.mUnk_08 = 0x1000; - this->mUnk_0F4.mUnk_04 = data_ov031_02112be8.unknown; + this->mUnk_0F4.mUnk_04.mUnk_04 = 0x1000; + this->mUnk_0F4.mUnk_04.mUnk_00 = data_ov031_02112be8.unknown; this->mUnk_094.func_ov000_02057cf4(); @@ -288,8 +288,8 @@ void ActorBomb::func_ov031_020e1b7c() { this->func_ov031_020e1b1c(); return; } - fx32 delta = this->mUnk_1EC - this->mUnk_1EA; - this->mUnk_0F4.mUnk_08 = FLOAT_TO_FX32(1.5f) - delta * FLOAT_TO_FX32(0.01985f); + fx32 delta = this->mUnk_1EC - this->mUnk_1EA; + this->mUnk_0F4.mUnk_04.mUnk_04 = FLOAT_TO_FX32(1.5f) - delta * FLOAT_TO_FX32(0.01985f); this->mUnk_0F4.func_01ffc3b4(); if (delta > 0x0) { diff --git a/src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp b/src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp index 7651668b..7cf47094 100644 --- a/src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp +++ b/src/031_Land/Actor/ActorUnkZLSL_ZSRS.cpp @@ -36,7 +36,7 @@ extern "C" void func_020169d4(VecFx32 *, VecFx32 *, unk16 *, const char *); extern "C" bool func_02016c68(VecFx32 *, VecFx32 *, ActorRef); extern "C" Actor *func_02016fbc(ActorId, VecFx32 *, unk32); -extern "C" void func_ov000_020578a4(unk32); +extern "C" void func_ov000_020578a4(UnkSystem5 *); extern "C" void func_ov000_02057c98(ModelRender *, UnkSystem5 *); static char data_ov031_021135f0[0x4] = "\x00 "; @@ -1424,7 +1424,7 @@ void ActorUnkZLSL_27CC::vfunc_3C() { } void ActorUnkZLSL_27CC::vfunc_38(unk32 param1, unk32 param2) { - func_ov000_020578a4((unk32) this->mUnk_04); + func_ov000_020578a4(this->mUnk_04); } s8 ActorUnkZLSL_27CC::vfunc_30() { diff --git a/src/032_MapA1/Actor/ActorUnkKURI.cpp b/src/032_MapA1/Actor/ActorUnkKURI.cpp index 1b22938a..b808bca4 100644 --- a/src/032_MapA1/Actor/ActorUnkKURI.cpp +++ b/src/032_MapA1/Actor/ActorUnkKURI.cpp @@ -1,7 +1,71 @@ -//! TODO: This file was generated automatically and might contain errors +#define VECFX32_CTORS #include "Actor/ActorUnkKURI.hpp" + +#include "Actor/ActorManager.hpp" +#include "Actor/Actor_Derived1.hpp" +#include "System/Random.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a8.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_027e0d38.hpp" +#include "nitro/os.h" + +extern "C" u16 data_ov000_020aecf4[]; +extern "C" unk32 data_ov000_020aecf8; + +extern "C" bool func_01ff916c(void *, int, int); +extern "C" unk32 func_01ff9258(fx32, fx32); +extern "C" unk32 func_01ff930c(s16 *, s16, unk32); +extern "C" void func_01ff9318(void *, unk32, unk32); +extern "C" void func_01ff941c(VecFx32 *, VecFx32 *); +extern "C" fx32 func_01ffb428(unk32, unk32); +extern "C" unk32 func_01ffb464(unk32 param1); +extern "C" fx32 func_01ffb66c(unk32, unk32); +extern "C" fx16 func_01ffbbe0(fx32, fx32); +extern "C" void func_01ffc634(ModelRender *, VecFx32 *, UnkAngleStruct, VecFx32 *); +extern "C" bool func_02016ae0(VecFx32 *, VecFx32 *, UnkAngleStruct, unk32, unk32); +extern "C" Actor *func_02016fbc(ActorId, VecFx32 *, unk32); + +extern "C" bool func_ov000_0205adfc(VecFx32 *, VecFx32 *); +extern "C" void func_ov000_020986b4(s16 *param1, Actor_Derived2 *param2, unk32 param3); + +extern "C" void func_ov017_020c2438(unk32 *, unk32, VecFx32 *, unk32, unk32); +extern "C" void func_ov017_020c26f8(unk32, VecFx32 *, unk32, unk32); + +static const VecFx32 data_ov032_02122160(FLOAT_TO_FX32(1.7f), FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(1.7f)); +static ActorUnkZLSL_AnimationTag data_ov032_02122184 = {.index = 0, .name = "walk", .unknown = 0x0}; +static ActorUnkZLSL_AnimationTag data_ov032_0212219c = {.index = 1, .name = "discover", .unknown = 0x1}; +static ActorUnkZLSL_AnimationTag data_ov032_0212216c = {.index = 0, .name = "KURI", .unknown = 0x1}; +static PTMF data_ov032_02122288[ActorUnkKURIState_Max] = { + ActorUnkKURI::func_ov032_02119a0c, // ActorUnkKURIState_0 + ActorUnkKURI::func_ov032_02119c80, // ActorUnkKURIState_1 + ActorUnkKURI::func_ov032_02119df4, // ActorUnkKURIState_2 + ActorUnkKURI::func_ov032_02119f40, // ActorUnkKURIState_3 + ActorUnkKURI::func_ov032_0211a20c, // ActorUnkKURIState_4 + ActorUnkKURI::func_ov032_0211a52c, // ActorUnkKURIState_5 + ActorUnkKURI::func_ov032_0211a86c, // ActorUnkKURIState_6 + ActorUnkKURI::func_ov032_0211aac8, // ActorUnkKURIState_7 + ActorUnkKURI::func_ov032_0211abc0, // ActorUnkKURIState_8 + ActorUnkKURI::func_ov032_0211a9c8, // ActorUnkKURIState_9 + ActorUnkKURI::func_ov032_0211ac94, // ActorUnkKURIState_10 + ActorUnkKURI::func_ov032_0211adf4 // ActorUnkKURIState_11 +}; +static PTMF data_ov032_02122348[ActorUnkKURIState_Max] = { + ActorUnkKURI::func_ov032_02119990, // ActorUnkKURIState_0 + ActorUnkKURI::func_ov032_02119be8, // ActorUnkKURIState_1 + ActorUnkKURI::func_ov032_02119d7c, // ActorUnkKURIState_2 + ActorUnkKURI::func_ov032_02119e90, // ActorUnkKURIState_3 + ActorUnkKURI::func_ov032_0211a140, // ActorUnkKURIState_4 + ActorUnkKURI::func_ov032_0211a484, // ActorUnkKURIState_5 + ActorUnkKURI::func_ov032_0211a7b8, // ActorUnkKURIState_6 + ActorUnkKURI::func_ov032_0211aa40, // ActorUnkKURIState_7 + ActorUnkKURI::func_ov032_0211ab20, // ActorUnkKURIState_8 + ActorUnkKURI::func_ov032_0211a950, // ActorUnkKURIState_9 + ActorUnkKURI::func_ov032_0211ac20, // ActorUnkKURIState_10 + ActorUnkKURI::func_ov032_0211ad40 // ActorUnkKURIState_11 +}; DECL_PROFILE(ActorProfileUnkKURI); @@ -10,63 +74,867 @@ Actor *ActorProfileUnkKURI::Create() { } ActorProfileUnkKURI::ActorProfileUnkKURI() : - ActorProfile_Derived1(ActorId_KURI) {} + ActorProfile_Derived1(ActorId_KURI) { + this->mUnk_04.Init(FLOAT_TO_FX32(0.4f)); + this->vfunc_04()->mUnk_15 = true; +} -ActorUnkKURI::ActorUnkKURI() {} +// non-matching +ActorUnkKURI::ActorUnkKURI() : + mUnk_0B0(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkKURI)->vfunc_04()->mUnk_50)), + mUnk_110(&this->mUnk_0B0, GET_PROFILE(ActorProfileUnkKURI)->vfunc_04()), + mUnk_1BC(&this->mUnk_0B0, GET_PROFILE(ActorProfileUnkKURI)->vfunc_04()), + mUnk_218(0x0), + mUnk_21C(0x0), + mUnk_220(0x7B), + mUnk_224(0x0), + mUnk_264(0x3800) { + SET_FLAG(this->mFlags, ActorFlag_6); + SET_FLAG(this->mFlags, ActorFlag_13); -void ActorUnkKURI::func_ov032_02119248(void) {} -void ActorUnkKURI::func_ov032_0211925c(void) {} -void ActorUnkKURI::func_ov032_02119270(void) {} -void ActorUnkKURI::func_ov032_02119390(void) {} -void ActorUnkKURI::func_ov032_02119458(void) {} -void ActorUnkKURI::func_ov032_021194dc(void) {} -void ActorUnkKURI::func_ov032_0211953c(void) {} -void ActorUnkKURI::func_ov032_02119584(void) {} -void ActorUnkKURI::func_ov032_021198dc(void) {} -void ActorUnkKURI::func_ov032_02119990(void) {} -void ActorUnkKURI::func_ov032_02119a0c(void) {} -void ActorUnkKURI::func_ov032_02119be8(void) {} -void ActorUnkKURI::func_ov032_02119c80(void) {} -void ActorUnkKURI::func_ov032_02119d7c(void) {} -void ActorUnkKURI::func_ov032_02119df4(void) {} -void ActorUnkKURI::func_ov032_02119e90(void) {} -void ActorUnkKURI::func_ov032_02119f40(void) {} -void ActorUnkKURI::func_ov032_0211a140(void) {} -void ActorUnkKURI::func_ov032_0211a20c(void) {} -void ActorUnkKURI::func_ov032_0211a484(void) {} -void ActorUnkKURI::func_ov032_0211a52c(void) {} -void ActorUnkKURI::func_ov032_0211a7b8(void) {} -void ActorUnkKURI::func_ov032_0211a86c(void) {} -void ActorUnkKURI::func_ov032_0211a950(void) {} -void ActorUnkKURI::func_ov032_0211a9c8(void) {} -void ActorUnkKURI::func_ov032_0211aa40(void) {} -void ActorUnkKURI::func_ov032_0211aac8(void) {} -void ActorUnkKURI::func_ov032_0211ab20(void) {} -void ActorUnkKURI::func_ov032_0211abc0(void) {} -void ActorUnkKURI::func_ov032_0211ac20(void) {} -void ActorUnkKURI::func_ov032_0211ac94(void) {} -void ActorUnkKURI::func_ov032_0211ad40(void) {} -void ActorUnkKURI::func_ov032_0211adf4(void) {} -void ActorUnkKURI::func_ov032_0211b024(void) {} -void ActorUnkKURI::func_ov032_0211b064(void) {} -void ActorUnkKURI::func_ov032_0211b114(void) {} -void ActorUnkKURI::func_ov032_0211b17c(void) {} -void ActorUnkKURI::func_ov032_0211b190(void) {} -void ActorUnkKURI::func_ov032_0211b1e0(void) {} -void ActorUnkKURI::func_ov032_0211b298(void) {} -void ActorUnkKURI::func_ov032_0211b37c(void) {} -void ActorUnkKURI::func_ov032_0211b3b0(void) {} -void ActorUnkKURI::func_ov032_0211b408(void) {} -void ActorUnkKURI::func_ov032_0211b570(void) {} -void ActorUnkKURI::func_ov032_0211b5b4(void) {} -void ActorUnkKURI::func_ov032_0211b5d0(void) {} -void ActorUnkKURI::func_ov032_0211b5f4(void) {} -void ActorUnkKURI::func_ov032_0211b618(void) {} -void ActorUnkKURI::func_ov032_0211b628(void) {} -void ActorUnkKURI::func_ov032_0211b630(void) {} -void ActorUnkKURI::func_ov032_0211b654(void) {} -void ActorUnkKURI::func_ov032_0211b680(void) {} -void ActorUnkKURI::func_ov032_0211b69c(void) {} + this->mUnk_228.mUnk_04 |= 0x8000; + this->mUnk_294 = true; + + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_288); + + Actor_38 *actor_38 = &this->mUnk_258.mUnk_00; + actor_38->mUnk_08 = 0x1; + this->mUnk_38 = actor_38; + this->mUnk_296 = 0x0; + this->mUnk_298 = 0x0; + + VecFx32_Init(FLOAT_TO_FX32(1.0f), FLOAT_TO_FX32(1.0f), FLOAT_TO_FX32(1.0f), &this->mUnk_27C); + + this->func_ov000_0209862c(0x4); + + SET_FLAG(this->mFlags, ActorFlag_9); + + this->mUnk_A4 = &data_ov032_02122160; +} ActorUnkKURI::~ActorUnkKURI() {} -ActorProfileUnkKURI::~ActorProfileUnkKURI() {} + +bool ActorUnkKURI::vfunc_18(unk32 param1) { + if (this->Actor::func_ov000_02098a60(0x1)) { + this->func_ov000_020984d0(); + return true; + } + + if (this->mUnk_5C.mParams[0] == 0x1) { + this->mUnk_1BC.func_ov000_02099ddc(data_ov032_0212216c, 0x1000, 0x1000); + this->mUnk_48 = 0xC; + } else { + this->mUnk_1BC.func_ov000_02099ddc(data_ov032_0212216c, 0x1000, 0x0); + this->mUnk_48 = 0x6; + } + return true; +} + +// non-matching +void ActorUnkKURI::vfunc_1C() { + if (this->mUnk_5C.mParams[0] == 0x2) { + this->mUnk_294 = false; + Actor *actor = func_02016fbc(ActorId_Soldier, &this->mPos, 0x0); + if (actor == NULL) { + this->SetState(ActorUnkKURIState_0); + return; + } + fx32 deltaZ = actor->mPos.z - this->mPos.z; + fx32 deltaX = actor->mPos.x - this->mPos.x; + this->mAngle = func_01ffbbe0(deltaX, deltaZ); + this->SetState(ActorUnkKURIState_11); + return; + } + this->SetState(ActorUnkKURIState_0); +} + +void ActorUnkKURI::func_ov032_021194dc(ActorState state) { + this->mUnk_2C = data_ov000_020aecf8; + this->mUnk_218 = 0x0; + + if (this->mState != ActorUnkKURIState_11) { + return; + } + + unk32 param2 = 0xA; + if (state == ActorUnkKURIState_1) { + param2 = 0x10; + } + + if (this->mUnk_294) { + return; + } + + gpActorManager->func_01fff2fc((void (*)(Actor *, u16)) &ActorUnkKURI::func_ov032_0211b37c, param2); +} + +void ActorUnkKURI::SetState(ActorState state) { + this->func_ov032_021194dc(state); + this->mState = state; + + CALL_PTMF(PTMF, data_ov032_02122348[this->mState]); +} + +void ActorUnkKURI::vfunc_20() { + if (!this->Actor_Derived2::func_ov017_020bef4c(0x4000) && mUnk_48 != 0) { + bool var_r1 = true; + bool var_r2 = true; + if (this->mState != ActorUnkKURIState_8 && this->mState != ActorUnkKURIState_7) { + var_r2 = false; + } + if (var_r2 == 0 && this->mUnk_5C.mParams[0] != 2) { + var_r1 = false; + } + if (var_r1 == 0) { + return; + } + } + + this->mUnk_3C = &this->mUnk_228; + CALL_PTMF(PTMF, data_ov032_02122288[this->mState]); + + this->Actor_Derived2::func_ov017_020bf894(&this->mUnk_248); + this->Actor::func_ov000_02098838(); + this->func_ov032_0211b298(); + + VecFx32_Copy(&this->mPos, &this->mPrevPos); + VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); + + this->Actor::func_ov000_02098b8c(0x1, &this->mUnk_268); + + if (this->mUnk_46 & 0x1) { + this->mVel.y = FLOAT_TO_FX32(0.0f); + } + + if (this->func_ov032_0211b17c()) { + return; + } + + this->Actor::func_ov000_020989e0(); + bool var = true; + + if (this->mUnk_228.mUnk_08 & 0x3FFFF) { + var = false; + switch (this->mUnk_228.mUnk_1C) { + case 0xE: + if (!this->Actor::func_ov000_020986fc(0) && !this->Actor::func_ov000_020986fc(1)) { + var = true; + break; + } + case 0xF: + this->Actor_Derived2::func_ov000_020990c0(&this->mUnk_228, 0, 0); + this->SetState(ActorUnkKURIState_6); + break; + + case 0xC: + this->Actor_Derived2::func_ov017_020bf178(&this->mUnk_228, 1); + data_027e09a8->func_ov000_02071b30(0x983C, &this->mPos, 0x0); + this->mUnk_248.func_ov000_02099a0c(); + this->SetState(ActorUnkKURIState_7); + break; + + case 0x4: + if (data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) { + this->SetState(ActorUnkKURIState_8); + } + break; + + default: + this->mUnk_48 -= this->mUnk_228.mUnk_1E; + this->Actor_Derived2::func_ov000_020990c0(&this->mUnk_228, 0x0, 0x0); + data_027e09a8->func_ov000_02071b30(0x983C, &this->mPos, 0x0); + this->SetState(ActorUnkKURIState_6); + break; + } + } + if (var && (this->Actor::func_ov000_02098ab4(0x2, 0x0, 0x1, NULL) & 1) && (this->mState == ActorUnkKURIState_3)) { + this->SetState(ActorUnkKURIState_5); + } + + if (GET_FLAG(this->mFlags, ActorFlag_14)) { + this->mUnk_110.vfunc_34(); + } + + if (!GET_FLAG(this->mFlags, ActorFlag_Alive)) { + return; + } + + if (this->func_ov032_0211b17c()) { + return; + } + + VecFx32 vec = this->mPos; + + UnkStruct_ov000_0207de98 stack; + VecFx32_Copy(&vec, &stack.vec); + stack.param1 = 0x548; + stack.param2 = 0x1000; + + data_027e09c0->func_ov000_0207de98(this->mRef, &stack, this->mUnk_38); +} + +void ActorUnkKURI::vfunc_2C(unk32 param1) { + if (!this->Actor::func_01fff5d0(param1, 0x0)) { + return; + } + this->func_ov017_020bf5c4(&this->mPos, 0x548, 0x548, 0x1F, 0x0); + VecFx32 sp14; + VecFx32_Copy(&this->mUnk_27C, &sp14); + func_01ff941c(&sp14, &this->mUnk_98); + + VecFx32 sp08 = this->mPos; + sp08.y += this->mUnk_288.y; + func_01ffc634(&this->mUnk_0B0, &sp14, this->mAngleStruct, &sp08); +} + +void ActorUnkKURI::func_ov032_02119990() { + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + this->mUnk_264 = 0x3800; + + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + this->mUnk_220 = 0x7B; +} + +// non-matching (regalloc) +void ActorUnkKURI::func_ov032_02119a0c() { + switch (this->mUnk_218) { + case 0x0: + unk32 var; + if (gRandom.Next32(0) & 0x80000000) { + var = 0x1; + } else { + var = -0x1; + } + this->mUnk_21C = var; + + this->mUnk_52 = gRandom.Next32(0x15) + 0x1E; + this->mUnk_50 = 0x00; + + ++this->mUnk_218; + break; + + case 0x1: + this->mUnk_224 = this->mUnk_21C * gRandom.Next32(0x38E) + this->mAngle; + + if (func_01ff930c(&this->mAngle, this->mUnk_224, 0x71C)) { + u16 angle = this->mAngle; + this->mVel.x = MUL_FX32(SIN(angle), this->mUnk_220); + this->mVel.z = MUL_FX32(COS(angle), this->mUnk_220); + + if (this->func_ov032_0211b064(0x0)) { + this->SetState(ActorUnkKURIState_1); + break; + } + + if (this->IsTimerOut()) { + this->SetState(ActorUnkKURIState_0); + } + } + break; + + default: + break; + } + + this->func_ov032_0211b1e0(); +} + +void ActorUnkKURI::func_ov032_02119be8() { + this->mUnk_264 = 0x4800; + this->mUnk_110.vfunc_1C(data_ov032_0212219c, 0x14CD, 0x19A, 0x0); + + data_027e09a8->func_ov000_02071b30(0x9836, &this->mPos, 0x0); + + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); +} + +// non-matching +void ActorUnkKURI::func_ov032_02119c80() { + UnkStruct_PlayerGet_50 *playerGet50 = this->mUnk_110.vfunc_28(); + + fx32 val = func_01ffb428(playerGet50->mUnk_10 - playerGet50->mUnk_08, 0x14CD); + val >>= 0xC; + + s16 var; + func_ov000_020986b4(&var, this, 0x0); + + if (val > 0x0) { + unk32 param2 = func_01ffb464(val << 0xC); + func_01ff9318(&this->mAngle, var, param2); + } + + if (this->mUnk_110.vfunc_28()->func_01ff8fa8() == 0x0) { + return; + } + + data_027e0cec->func_ov000_0209feac(0x880, &this->mPos, 0x2, 0x0, 0x0); + + if (this->mUnk_5C.mParams[0] == 0x1 && !this->func_ov032_0211b114()) { + this->SetState(ActorUnkKURIState_4); + return; + } + + this->SetState(ActorUnkKURIState_3); +} + +void ActorUnkKURI::func_ov032_02119d7c() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + this->mUnk_52 = 0x14; + this->mUnk_50 = 0x00; + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); +} + +// non-matching +void ActorUnkKURI::func_ov032_02119df4() { + s16 var; + s16 delta = this->mUnk_52 - this->mUnk_50; + func_ov000_020986b4(&var, this, 0x0); + + s16 val = var; + if (delta > 0x0) { + func_01ff9318(&this->mAngle, val, func_01ffb464(delta << 0xC)); + } + + if (this->IsTimerOut()) { + this->SetState(ActorUnkKURIState_3); + } + this->func_ov032_0211b1e0(); +} + +// non-matching +void ActorUnkKURI::func_ov032_02119e90() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + + this->mUnk_288.x = func_01ffb66c(0x1800, func_01ffb428(0x148, 0x14) >> 0xC); + + this->mUnk_50 = 0x0; + this->mUnk_52 = 0xB4; + + if (this->mUnk_5C.mParams[0] == 0x2) { + this->mUnk_264 = 0x14000; + } else { + this->mUnk_264 = 0x4800; + } + + this->mUnk_220 = 0x0; + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); +} + +// non-matching (case 1) +void ActorUnkKURI::func_ov032_02119f40() { + if (this->IsTimerOut()) { + this->mUnk_218 = 0x2; + } + + switch (this->mUnk_218) { + case 0x0: + this->mUnk_220 += 0x14; + fx32 newValAdd = this->mUnk_110.vfunc_28()->mUnk_04 + this->mUnk_288.x; + this->mUnk_110.vfunc_28()->mUnk_04 = newValAdd; + + if (this->mUnk_220 < 0x148) { + break; + } + + this->mUnk_220 = 0x148; + this->mUnk_110.vfunc_28()->mUnk_04 = FLOAT_TO_FX32(2.5f); + ++this->mUnk_218; + break; + + case 0x1: + s16 var; + s16 *r5 = &var; + func_ov000_020986b4(r5, this, 0x0); + func_01ff930c(&this->mAngle, *r5, 0x2D8); + + if (!this->func_ov032_0211b064(0x1)) { + ++this->mUnk_218; + } + break; + + case 0x2: + fx32 newValSub = this->mUnk_110.vfunc_28()->mUnk_04 - this->mUnk_288.x; + this->mUnk_110.vfunc_28()->mUnk_04 = newValSub; + this->mUnk_220 -= 0x14; + + if (this->mUnk_220 > 0x0) { + break; + } + + this->mUnk_220 = 0x0; + this->mUnk_110.vfunc_28()->mUnk_04 = FLOAT_TO_FX32(1.0f); + + this->SetState(ActorUnkKURIState_9); + break; + + default: + _OS_Panic(); + break; + } + + u16 angle = this->mAngle; + this->mVel.x = MUL_FX32(SIN(angle), this->mUnk_220); + this->mVel.z = MUL_FX32(COS(angle), this->mUnk_220); + + this->func_ov032_0211b1e0(); +} + +void ActorUnkKURI::func_ov032_0211a140() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x2000, 0x19A, 0x0); + this->mUnk_220 = 0x11F; + this->mUnk_264 = 0x4800; + + unk32 var; + if (gRandom.Next32(0) & 0x80000000) { + var = 1; + } else { + var = -1; + } + + this->mUnk_21C = var; + + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + this->mUnk_52 = 0x1E; + this->mUnk_50 = 0x00; +} + +// non-matching +void ActorUnkKURI::func_ov032_0211a20c() {} + +void ActorUnkKURI::func_ov032_0211a484() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, this->mUnk_110.vfunc_28()->mUnk_04, 0x19A, 0x0); + fx32 val = func_01ffb428(this->mUnk_220, 0x14); + this->mUnk_288.x = func_01ffb66c(0x1000 - this->mUnk_110.vfunc_28()->mUnk_04, val >> 0xC); +} + +// non-matching +void ActorUnkKURI::func_ov032_0211a52c() { + switch (this->mUnk_218) { + case 0x0: + this->mUnk_110.vfunc_28()->mUnk_04 = this->mUnk_110.vfunc_28()->mUnk_04 + this->mUnk_288.x; + + unk32 val = this->mUnk_220 - 0x14; + fx32 sinValue = SIN((u16) this->mAngle); + fx32 cosValue = COS((u16) this->mAngle); + this->mUnk_220 = val; + + this->mVel.x = MUL_FX32(sinValue, val); + this->mVel.z = MUL_FX32(cosValue, val); + + if (val > 0x0) { + return; + } + + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + this->mUnk_220 = 0x0; + + this->mUnk_110.vfunc_28()->mUnk_04 = FLOAT_TO_FX32(1.0f); + ++this->mUnk_218; + break; + + case 0x1: + this->mUnk_110.vfunc_1C(data_ov032_0212219c, 0x1000, 0x19A, 0x0); + + data_027e09a8->func_ov000_02071b30(0x9836, &this->mPos, 0x0); + ++this->mUnk_218; + break; + + case 0x2: + if (!this->mUnk_110.vfunc_28()->func_01ff8fa8()) { + return; + } + + data_027e0cec->func_ov000_0209feac(0x880, &this->mPos, 0x2, 0x0, 0x0); + + this->mUnk_110.vfunc_28()->mUnk_02 = 0x0; + this->mUnk_110.vfunc_28()->mUnk_08 = FLOAT_TO_FX32(0.0f); + + data_027e09a8->func_ov000_02071b30(0x9836, &this->mPos, 0x0); + + ++this->mUnk_218; + break; + + case 0x3: + if (!this->mUnk_110.vfunc_28()->func_01ff8fa8()) { + return; + } + + data_027e0cec->func_ov000_0209feac(0x880, &this->mPos, 0x2, 0x0, 0x0); + this->func_ov032_0211b024(); + break; + + default: + break; + } +} + +void ActorUnkKURI::func_ov032_0211a7b8() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, this->mUnk_110.vfunc_28()->mUnk_04, 0x19A, 0x0); + + this->mUnk_288.x = func_01ffb66c(0x1000 - this->mUnk_110.vfunc_28()->mUnk_04, data_ov000_020aecf4[0]); + + this->mUnk_228.func_ov000_02097bec(); + + this->mUnk_38->mUnk_08 = 0x3; +} + +// non-matching +void ActorUnkKURI::func_ov032_0211a86c() { + fx32 sum = this->mUnk_110.vfunc_28()->mUnk_04 + this->mUnk_288.x; + this->mUnk_110.vfunc_28()->mUnk_04 = sum; + + this->func_ov000_020992dc(); + + if (!GET_FLAG(this->mFlags, ActorFlag_5)) { + return; + } + Actor_38 *actor38 = this->mUnk_38; + actor38->mUnk_08 = 0x1; + + if (this->mUnk_48 <= 0x0) { + this->vfunc_54(0x0); + return; + } + + if (this->mUnk_248.mUnk_08 < this->mUnk_248.mUnk_0A) { + this->SetState(ActorUnkKURIState_7); + return; + } + + if (this->func_ov032_0211b064(0x0) || this->mUnk_5C.mParams[0] == 0x2) { + this->func_ov032_0211b024(); + return; + } + this->SetState(ActorUnkKURIState_0); +} + +void ActorUnkKURI::func_ov032_0211a950() { + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + + this->mUnk_52 = 0x14; + this->mUnk_50 = 0x00; + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); +} + +void ActorUnkKURI::func_ov032_0211a9c8() { + if (this->IsTimerOut()) { + if (this->func_ov032_0211b064(0x0) || this->mUnk_5C.mParams[0] == 0x2) { + this->SetState(ActorUnkKURIState_1); + } else { + this->SetState(ActorUnkKURIState_0); + } + } + this->func_ov032_0211b1e0(); +} + +extern "C" u16 data_ov000_020aecf0; + +void ActorUnkKURI::func_ov032_0211aa40() { + this->Actor_Derived2::func_ov000_02099450(&this->mUnk_248, &this->mUnk_228.mUnk_10, 0x0, data_ov000_020aecf0); + + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x0, 0x19A, 0x0); + + this->mUnk_228.func_ov000_02097bec(); +} + +void ActorUnkKURI::func_ov032_0211aac8() { + this->Actor_Derived2::func_ov000_020994a0(); + + if (!GET_FLAG(this->mFlags, ActorFlag_5)) { + return; + } + + if (this->func_ov032_0211b064(0x0) || this->mUnk_5C.mParams[0] == 0x2) { + this->func_ov032_0211b024(); + return; + } + + this->SetState(ActorUnkKURIState_0); +} + +void ActorUnkKURI::func_ov032_0211ab20() { + this->Actor_Derived2::func_ov000_02098f34(&this->mUnk_228.mUnk_10); + + this->vfunc_40(); + *((s16 *) &this->mUnk_44) &= ~0x20; + this->mUnk_2C = 0x0; + + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + + this->mUnk_38->mUnk_08 = 0x3; + this->mUnk_228.func_ov000_02097bec(); +} + +void ActorUnkKURI::func_ov032_0211abc0() { + this->vfunc_44(); + + if (!GET_FLAG(this->mFlags, ActorFlag_5)) { + return; + } + + this->mUnk_38->mUnk_08 = 0x1; + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_228.mUnk_10); + + this->mUnk_248.func_ov000_02099a0c(); + + this->SetState(ActorUnkKURIState_7); + + *((s16 *) &this->mUnk_44) |= 0x20; +} + +void ActorUnkKURI::func_ov032_0211ac20() { + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + + this->mUnk_52 = 0xA; + this->mUnk_50 = 0x0; + + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); +} + +void ActorUnkKURI::func_ov032_0211ac94() { + this->mUnk_27C.y -= 0x199; + + if (!this->IsTimerOut()) { + return; + } + + data_027e09a8->func_ov000_02071b30(0x983D, &this->mPos, 0x0); + + this->Actor::func_ov000_020984d0(); + + if (this->mUnk_5C.mParams[0] == 0x2) { + this->func_ov000_02098a88(0x0, 0x1); + } + this->func_ov017_020bf3e0(0x1, 0x0); + + this->Actor_Derived2::func_ov000_020997c4(0x0); +} + +void ActorUnkKURI::func_ov032_0211ad40() { + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + + this->mUnk_298 = gRandom.Next32(0xE); + this->mUnk_296 = 0x0; +} + +// non-matching +void ActorUnkKURI::func_ov032_0211adf4() { + this->IsTimerOut(); + switch (this->mUnk_218) { + case 0x0: + if (!this->IsInternalTimerOut()) { + break; + } + + ++this->mUnk_218; + this->mUnk_110.vfunc_1C(data_ov032_0212219c, 0x1000, 0x19A, 0x0); + data_027e09a8->func_ov000_02071b30(0x9836, &this->mPos, 0x0); + break; + + case 0x1: + if (this->mUnk_110.vfunc_28()->func_01ff8fa8() == 0x0) { + break; + } + + data_027e0cec->func_ov000_0209feac(0x880, &this->mPos, 0x2, 0x0, 0x0); + this->mUnk_110.vfunc_1C(data_ov032_02122184, 0x1000, 0x19A, 0x0); + if (this->func_ov032_0211b064(0x0) || (this->mUnk_294 && this->mUnk_50 >= this->mUnk_52)) { + this->SetState(ActorUnkKURIState_1); + return; + } + u16 random = gRandom.Next32(0); + this->mUnk_298 = random + 0xA; + this->mUnk_296 = 0x0; + this->mUnk_218 = 0x0; + break; + + default: + break; + } +} + +void ActorUnkKURI::func_ov032_0211b024() { + if (this->mUnk_5C.mParams[0] == 0x1 && !this->func_ov032_0211b114()) { + this->SetState(ActorUnkKURIState_4); + return; + } + this->SetState(ActorUnkKURIState_2); +} + +// non-matching +bool ActorUnkKURI::func_ov032_0211b064(unk32 param1) { + VecFx32 *vec = data_027e0ce0->func_01fff148(0x0); + bool ret = false; + if (func_ov000_0205adfc(vec, &this->mPos) && + func_01ff9258(vec->x - this->mPos.x, vec->z - this->mPos.z) < this->mUnk_264) { + ret = true; + } + + if (param1 != 0x0) { + if (!ret || !func_02016ae0(&this->mPos, vec, this->mAngleStruct, 0x4E39, 0x1) == 0x0) { + ret = true; + } else { + ret = false; + } + } + + return ret; +} + +// non-matching +bool ActorUnkKURI::func_ov032_0211b114() {} + +bool ActorUnkKURI::func_ov032_0211b17c() { + return this->mState == ActorUnkKURIState_10; +} + +// non-matching +void ActorUnkKURI::func_ov032_0211b190(s32 param1, s32 param2) {} + +void ActorUnkKURI::func_ov032_0211b1e0() { + if (this->mUnk_110.vfunc_30() != 0x0 || !GET_FLAG(this->mFlags, ActorFlag_14)) { + return; + } + + if (this->mUnk_110.vfunc_10()->mUnk_04.func_02015080(0x1000) != 0x0) { + data_027e09a8->func_ov000_02071b30(0x9838, &this->mPos, 0x0); + return; + } + + if (this->mUnk_110.vfunc_10()->mUnk_04.func_02015080(0xF000) != 0x0) { + data_027e09a8->func_ov000_02071b30(0x9839, &this->mPos, 0x0); + return; + } +} + +// non-matching +void ActorUnkKURI::func_ov032_0211b298() { + if (this->mUnk_110.vfunc_30() != 0x1) { + if (this->mUnk_288.y <= FLOAT_TO_FX32(0.0f)) { + this->mUnk_288.z = FLOAT_TO_FX32(0.0f); + return; + } + + this->mUnk_288.z -= this->mUnk_2C; + + func_01ff916c(&this->mUnk_288.y, 0x0, this->mUnk_288.z); + return; + } + + fx32 value = this->mUnk_110.vfunc_28()->mUnk_08; + + if (value > FLOAT_TO_FX32(1.0f) && value < FLOAT_TO_FX32(16.0f)) { + value -= FLOAT_TO_FX32(1.0f); + this->mUnk_288.y = MUL_FX32(value + MUL_FX32(-MUL_FX32(value, value), 0x92492493), 0x3B4); + return; + } + + this->mUnk_288.y = FLOAT_TO_FX32(0.0f); +} + +void ActorUnkKURI::func_ov032_0211b37c(ActorUnkKURI *thisx, u16 param1) { + if (thisx->GetActorId() == ActorId_KURI) { + thisx->mUnk_294 = true; + thisx->mUnk_52 = param1; + thisx->mUnk_50 = 0x0; + } +} + +void ActorUnkKURI::func_ov032_0211b3b0() { + if (this->mUnk_5C.mUnk_1A[1] != 0x0) { + UNSET_FLAG(this->mFlags, ActorFlag_Alive); + } else { + this->Actor::func_ov000_020984d0(); + } + + if (this->mUnk_5C.mParams[0] == 0x2) { + this->Actor::func_ov000_02098a88(0x0, 0x1); + UNSET_FLAG(this->mFlags, ActorFlag_Alive); + return; + } + this->Actor::func_ov000_020984d0(); +} + +void ActorUnkKURI::vfunc_54(unk32 param1) { + switch (param1) { + case 0x0: + data_027e09a8->func_ov000_02071b30(0x983D, &this->mPos, 0x0); + + this->func_ov017_020bf3e0(this->mUnk_A8->mUnk_00, 0x0); + this->func_ov000_020997c4(this->mUnk_A8->mUnk_04); + this->func_ov032_0211b3b0(); + break; + + case 0x1: + data_027e09a8->func_ov000_02071b30(0xE8, &this->mPos, 0x0); + + this->func_ov032_0211b3b0(); + break; + + case 0x3: + unk32 sp04; + func_ov017_020c2438(&sp04, this->mUnk_A8->mUnk_08, &this->mPos, 0x1, 0x1); + data_027e09a8->func_ov000_02071b30(0xEA, &this->mPos, 0x0); + + this->func_ov032_0211b3b0(); + break; + + case 0x2: + data_027e09a8->func_ov000_02071b30(0x983D, &this->mPos, 0x0); + func_ov017_020c26f8(this->mUnk_A8->mUnk_0C, &this->mPos, 0x1, 0x1); + data_027e09a8->func_ov000_02071b30(0xED, &this->mPos, 0x0); + + this->func_ov017_020bf3e0(this->mUnk_A8->mUnk_00, 0x0); + this->func_ov000_020997c4(this->mUnk_A8->mUnk_04); + this->func_ov032_0211b3b0(); + break; + + default: + break; + } +} + +ActorUnkKURI_268::ActorUnkKURI_268() { + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &this->mUnk_08); +} + +ActorUnkKURI_268::~ActorUnkKURI_268() {} + +// non-matching +bool ActorUnkKURI_268::vfunc_08(const UnkStruct_ov031_020f3310 *param1) { + VecFx16_Copy2VecFx32(¶m1->mUnk_08, &this->mUnk_08); + this->UnkStruct_ov031_Items_00::vfunc_08(param1); +} + +void ActorUnkKURI_1BC::vfunc_3C() { + this->mUnk_08->func_ov000_02057c98(this->vfunc_10()); +} + +void ActorUnkKURI_1BC::vfunc_38(unk32 param1, unk32 param2) { + this->mUnk_04->func_ov000_020578a4(param1, param2); +} + +s8 ActorUnkKURI_1BC::vfunc_30() { + return this->mUnk_18; +} + +void ActorUnkKURI_110::vfunc_3C() { + this->mUnk_08->func_ov000_02057c98(this->mUnk_04); + this->mUnk_08->func_ov000_02057c98(this->mUnk_1C); +} + +void ActorUnkKURI_110::vfunc_38(unk32 param1, unk32 param2) { + this->mUnk_04->func_ov000_020578a4(param1, param2); + this->mUnk_1C->func_ov000_020578a4(param1, param2); +} diff --git a/src/063_Shrine/Actor/ActorUnkCANS.cpp b/src/063_Shrine/Actor/ActorUnkCANS.cpp index 9f3eda18..a4ed7e49 100644 --- a/src/063_Shrine/Actor/ActorUnkCANS.cpp +++ b/src/063_Shrine/Actor/ActorUnkCANS.cpp @@ -50,7 +50,7 @@ extern "C" fx32 func_01ff9a5c(VecFx32 *, VecFx32 *, VecFx32 *); extern "C" void func_01ffad5c(Mat4x3p *, Mat4x3p *, Mat4x3p *); extern "C" fx32 func_01ffb428(unk32, unk32); extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *); -extern "C" unk32 func_01ffbbe0(unk32 param1, unk32 param2); +extern "C" unk32 func_01ffbbe0(fx32 param1, fx32 param2); extern "C" void func_01ffc6d4(ModelRender *param1, UnkAngleStruct param2, VecFx32 *param3); extern "C" void func_0200eab0(G3d_Model *, unk32, u8); @@ -66,20 +66,13 @@ extern "C" void func_ov000_02057c98(ModelRender *param1, UnkSystem5 *param2); extern "C" unk32 func_ov000_0205c384(VecFx32 *param1, VecFx32 *param2); #endif extern "C" void func_ov000_0208bd20(UnkStruct_027e0ce0 *param1, unk32 param2, unk32 param3, unk32 param4); -extern "C" void func_ov000_020986b4(s16 *param1, ActorUnkCANS *param2, unk32 param3); -extern "C" void func_ov000_02098f34(ActorUnkCANS *param1, unk16 *param2); +extern "C" void func_ov000_020986b4(s16 *param1, Actor_Derived2 *param2, unk32 param3); extern "C" unk32 func_ov000_02098d7c(ActorUnkCANS *param1, UnkStruct_ov063_02162e88 *param2); -extern "C" unk32 func_ov000_02099450(ActorUnkCANS *param1, void *param2, VecFx32 *param3, unk32 param4, u16 param5); -extern "C" void func_ov000_020994a0(ActorUnkCANS *); -extern "C" unk32 func_ov000_02099a0c(void *param1); // Overlay 17 extern "C" void func_ov017_020bf050(ActorUnkCANS *param1, UnkStruct_ov063_02162e88 *param2, unk32 param3); -extern "C" void func_ov017_020bf178(ActorUnkCANS *param1, UnkStruct_ov063_02162e88 *param2, unk32 param3); extern "C" void func_ov017_020bf634(ActorUnkCANS *param1, unk16 *param2, unk32 param3, unk32 param4); extern "C" void func_ov017_020bf688(ActorUnkCANS *param1); -extern "C" void func_ov017_020bf894(ActorUnkCANS *param1, void *param2); -extern "C" unk32 func_ov017_020bef4c(ActorUnkCANS *param1, unk32 param2); // Overlay 26 #if IS_JP @@ -257,14 +250,14 @@ void ActorUnkCANS::vfunc_20(void) { mUnk_238++; } - if (!func_ov017_020bef4c(this, 0x4000) && mUnk_48 != 0 && mState != 4) { + if (!this->func_ov017_020bef4c(0x4000) && mUnk_48 != 0 && mState != 4) { return; } mUnk_3C = (Actor_9C *) &mUnk_200; CALL_PTMF(PTMF, data_ov063_02162fb0[mState]); - func_ov017_020bf894(this, &mUnk_224); + this->func_ov017_020bf894(&mUnk_224); this->func_ov000_02098838(); VecFx32_Copy(&mPos, &mPrevPos); @@ -316,21 +309,21 @@ void ActorUnkCANS::vfunc_20(void) { mUnk_236 = func_ov000_02098d7c(this, &mUnk_200); mUnk_234 = 0; - iVar5 = this->func_ov063_0215a56c((unk16) func_01ffbbe0(*(u32 *) &mUnk_200.mUnk_10, mUnk_200.mUnk_18)); + iVar5 = this->func_ov063_0215a56c((unk16) func_01ffbbe0(mUnk_200.mUnk_10.x, mUnk_200.mUnk_10.z)); switch (mUnk_200.mUnk_1C) { case 12: if (iVar5 != 0) { Actor *iVar6 = gpActorManager->func_01fff3b4(mUnk_200.mUnk_0C.data); - if (iVar6 != 0) { + if (iVar6 != NULL) { ((ActorItemBoomerang *) iVar6)->func_ov031_020e49b0(0x8D70); } if (mState != 4) { this->func_ov063_02158448(5); } } else { - func_ov017_020bf178(this, &mUnk_200, 1); - func_ov000_02099a0c(&mUnk_224); + this->Actor_Derived2::func_ov017_020bf178(&mUnk_200, 1); + mUnk_224.func_ov000_02099a0c(); this->func_ov063_02158448(4); } break; @@ -598,7 +591,7 @@ void ActorUnkCANS::func_ov063_02159100(void) { return; } - u16 *tmpArr = (u16 *) &mUnk_22C; + u16 *tmpArr = (u16 *) &mUnk_224.mUnk_08; if (tmpArr[0] < tmpArr[1]) { this->func_ov063_02158448(4); return; @@ -659,13 +652,13 @@ void ActorUnkCANS::func_ov063_02159258(void) { } void ActorUnkCANS::func_ov063_02159408(void) { - func_ov000_02099450(this, &mUnk_224, &data_027e07d4, 0, data_ov000_020aecf0[0]); + this->func_ov000_02099450(&mUnk_224, &data_027e07d4, 0, data_ov000_020aecf0[0]); mUnk_128.vfunc_1C(data_ov063_02163068, 0, 0x19A, 0); ((Actor_9C *) &mUnk_200)->func_ov000_02097bec(); } void ActorUnkCANS::func_ov063_02159494(void) { - func_ov000_020994a0(this); + this->func_ov000_020994a0(); if (GET_FLAG(mFlags, ActorFlag_5) == 0) { return; @@ -734,7 +727,7 @@ void ActorUnkCANS::func_ov063_02159784(void) { data_027e09a8->func_ov000_02071b30(0x9862, &mPos, 0); } - if (0x7000 <= *(int *) (mUnk_128.vfunc_28() + 8) && *(int *) (mUnk_128.vfunc_28() + 8) <= 0xF000) { + if (0x7000 <= mUnk_128.vfunc_28()->mUnk_08 && mUnk_128.vfunc_28()->mUnk_08 <= 0xF000) { #if IS_JP fx32 yDiff = data_027e0ce0->func_01fff148(0)->y - mPos.y; fx32 yDiffAbs = ABS(yDiff); @@ -872,7 +865,7 @@ void ActorUnkCANS::func_ov063_02159dfc(void) { void ActorUnkCANS::func_ov063_02159e1c(void) {} void ActorUnkCANS::func_ov063_02159e20(void) { - func_ov000_02098f34(this, (unk16 *) &mUnk_200.mUnk_10); + this->func_ov000_02098f34(&mUnk_200.mUnk_10); vfunc_40(); @@ -897,11 +890,9 @@ void ActorUnkCANS::func_ov063_02159ec0(void) { mUnk_2C = data_ov000_020aecf8[0]; mAngle = mUnk_26C; - func_ov000_02099a0c(&mUnk_224); + mUnk_224.func_ov000_02099a0c(); - mUnk_200.mUnk_10 = 0; - mUnk_200.mUnk_14 = 0; - mUnk_200.mUnk_18 = 0; + VecFx32_Init(FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(0.0f), &mUnk_200.mUnk_10); this->func_ov063_02158448(4); @@ -1045,7 +1036,7 @@ unk32 ActorUnkCANS::func_ov063_0215a2c0(void) { void ActorUnkCANS::func_ov063_0215a428(void) { // A not very clean code to access 22C and 22E matching the asm - u16 *values = (u16 *) &mUnk_22C; + u16 *values = (u16 *) &mUnk_224.mUnk_08; if (values[0] < values[1]) { this->func_ov063_02158448(4); } else if (mUnk_268 == NULL) { diff --git a/src/063_Shrine/Actor/ActorUnkCASE.cpp b/src/063_Shrine/Actor/ActorUnkCASE.cpp index fb02179c..56f62899 100644 --- a/src/063_Shrine/Actor/ActorUnkCASE.cpp +++ b/src/063_Shrine/Actor/ActorUnkCASE.cpp @@ -21,7 +21,7 @@ #include "nitro/math.h" #include "nns/g3d/g3d.h" -extern const void *data_ov063_02162558; +extern const Actor_Derived2_A8_PTR data_ov063_02162558; extern const void *data_ov063_02162568; extern Mat4x3p data_027e0964; @@ -35,10 +35,6 @@ extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); 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); @@ -163,7 +159,7 @@ ActorUnkCASE::ActorUnkCASE() : mUnk_124.mUnk_24 = 1; mUnk_38 = (Actor_38 *) &mUnk_1E8; mUnk_38->mUnk_08 = 4; - mUnk_A8 = &data_ov063_02162558; + mUnk_A8 = (Actor_Derived2_A8_PTR *) &data_ov063_02162558; } bool ActorUnkCASE::vfunc_18(unk32 param1) { @@ -319,7 +315,7 @@ void ActorUnkCASE::vfunc_24() { void ActorUnkCASE::vfunc_20() { mUnk_150.mUnk_1C = 1; - if (!func_ov017_020bef4c(this, 0x4000) && mUnk_48 != 0) { + if (!this->func_ov017_020bef4c(0x4000) && mUnk_48 != 0) { bool cond = true; if (mState != 1 && mState != 2) { cond = false; @@ -415,7 +411,7 @@ post: case 13: break; default: - func_ov000_020990c0(this, &mUnk_124, 1, 0); + this->Actor_Derived2::func_ov000_020990c0(&mUnk_124, 1, 0); break; } } diff --git a/src/071_Tower/Actor/ActorTearLight.cpp b/src/071_Tower/Actor/ActorTearLight.cpp index b7f4ff07..34e42ed9 100644 --- a/src/071_Tower/Actor/ActorTearLight.cpp +++ b/src/071_Tower/Actor/ActorTearLight.cpp @@ -66,7 +66,7 @@ ActorTearLight::ActorTearLight() : mUnk_120(&this->mUnk_140, NULL), mUnk_160(*(ActorTearLight_UnkStruct *) &data_020431b8), mUnk_188(0x0), - mUnk_18C(0x1), + mUnk_18C(true), mUnk_18D(false), mUnk_190(0x0), mUnk_194(this),