From e704ec994219540b71da323a61ffa930f80ce492 Mon Sep 17 00:00:00 2001 From: Aetias <144526980+AetiasHax@users.noreply.github.com> Date: Mon, 11 May 2026 20:34:17 +0200 Subject: [PATCH] ActorCharacter OK (#162) * ActorCharacter 93% * ActorCharacter 98% * ActorCharacter OK * Fix broken matches --- config/eur/arm9/overlays/ov000/symbols.txt | 46 +- config/eur/arm9/overlays/ov014/delinks.txt | 2 + config/eur/arm9/overlays/ov014/relocs.txt | 6 +- config/eur/arm9/overlays/ov014/symbols.txt | 36 +- config/usa/arm9/overlays/ov000/symbols.txt | 46 +- config/usa/arm9/overlays/ov014/delinks.txt | 2 + config/usa/arm9/overlays/ov014/relocs.txt | 6 +- config/usa/arm9/overlays/ov014/symbols.txt | 36 +- include/Actor/Actor.hpp | 8 +- include/Actor/Character/ActorCharacter.hpp | 177 +++++-- include/Actor/Navi/ActorNaviBase.hpp | 8 +- include/Actor/Player/ActorRope.hpp | 2 +- include/Save/AdventureFlags.hpp | 34 +- include/Unknown/UnkStruct_ov000_020c5c2c.hpp | 31 +- include/Unknown/UnkStruct_ov000_020e8b08.hpp | 15 + libs/nds/include/nds/math.h | 6 + src/00_Core/Actor/Actor.cpp | 8 +- src/00_Core/Actor/Navi/ActorNaviBase.cpp | 7 +- src/00_Core/Save/AdventureFlags.cpp | 6 +- .../Actor/Character/ActorCharacter.cpp | 447 ++++++++++++++++-- src/57_Rope/Actor/Player/ActorRope.cpp | 2 +- 21 files changed, 722 insertions(+), 209 deletions(-) create mode 100644 include/Unknown/UnkStruct_ov000_020e8b08.hpp diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index b0efe540..91e423f4 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1277,7 +1277,7 @@ _ZN7MapData8GetFlag4Ej kind:function(arm,size=0x20) addr:0x02097608 _ZN14AdventureFlags6ExistsEv kind:function(arm,size=0x1c) addr:0x02097628 _ZN14AdventureFlags6CopyToEP9FlagsData kind:function(arm,size=0x30) addr:0x02097644 _ZN14AdventureFlags18func_ov00_02097674Ev kind:function(arm,size=0x10) addr:0x02097674 -_ZN14AdventureFlags18func_ov00_02097684Ev kind:function(arm,size=0x10) addr:0x02097684 +_ZN14AdventureFlags18func_ov00_02097684EiiPPv kind:function(arm,size=0x10) addr:0x02097684 _ZN14AdventureFlags4LoadEv kind:function(arm,size=0x34) addr:0x02097694 _ZN14AdventureFlags18func_ov00_020976c8Ev kind:function(arm,size=0x38) addr:0x020976c8 _ZN14AdventureFlags18func_ov00_02097700Ev kind:function(arm,size=0x38) addr:0x02097700 @@ -1285,14 +1285,14 @@ _ZN14AdventureFlags18func_ov00_02097738Ev kind:function(arm,size=0x18) addr:0x02 _ZN14AdventureFlags18func_ov00_02097750Ev kind:function(arm,size=0x10) addr:0x02097750 _ZN14AdventureFlags3GetEj kind:function(arm,size=0x3c) addr:0x02097760 _ZN14AdventureFlags3SetEjb kind:function(arm,size=0x74) addr:0x0209779c -_ZN14AdventureFlags18func_ov00_02097810Ei kind:function(arm,size=0x158) addr:0x02097810 +_ZN14AdventureFlags18func_ov00_02097810EP24UnkStruct_ov000_0209a50c kind:function(arm,size=0x158) addr:0x02097810 _ZN14AdventureFlags18func_ov00_02097968Ei kind:function(arm,size=0xdc) addr:0x02097968 _ZN14AdventureFlags18func_ov00_02097a44Eii kind:function(arm,size=0x158) addr:0x02097a44 _ZN14AdventureFlags18func_ov00_02097b9cEi kind:function(arm,size=0x10) addr:0x02097b9c _ZN14AdventureFlags18func_ov00_02097bacEv kind:function(arm,size=0x10) addr:0x02097bac _ZN14AdventureFlags18func_ov00_02097bbcEv kind:function(arm,size=0x10) addr:0x02097bbc _ZN14AdventureFlags18func_ov00_02097bccEi kind:function(arm,size=0x10) addr:0x02097bcc -_ZN14AdventureFlags18func_ov00_02097bccEP10astruct_23 kind:function(arm,size=0x2c) addr:0x02097bdc +_ZN14AdventureFlags18func_ov00_02097bccEP24UnkStruct_ov000_0209a50c kind:function(arm,size=0x2c) addr:0x02097bdc _ZN14AdventureFlags18func_ov00_02097c08Ev kind:function(arm,size=0x10) addr:0x02097c08 _ZN14AdventureFlags20Get_FlagsUnk_30_FlagEi kind:function(arm,size=0x20) addr:0x02097c18 _ZN14AdventureFlags15Get_FlagsUnk_49Ei kind:function(arm,size=0x18) addr:0x02097c38 @@ -1377,8 +1377,8 @@ func_ov000_0209a440 kind:function(arm,size=0x28) addr:0x0209a440 func_ov000_0209a468 kind:function(arm,size=0x8) addr:0x0209a468 func_ov000_0209a470 kind:function(arm,size=0x3c) addr:0x0209a470 func_ov000_0209a4ac kind:function(arm,size=0x48) addr:0x0209a4ac -func_ov000_0209a4f4 kind:function(arm,size=0x14) addr:0x0209a4f4 -func_ov000_0209a508 kind:function(arm,size=0x4) addr:0x0209a508 +_ZN24UnkStruct_ov000_0209a50cC1Ev kind:function(arm,size=0x14) addr:0x0209a4f4 +_ZN24UnkStruct_ov000_0209a50cD1Ev kind:function(arm,size=0x4) addr:0x0209a508 func_ov000_0209a50c kind:function(arm,size=0xa8) addr:0x0209a50c func_ov000_0209a5b4 kind:function(arm,size=0x924) addr:0x0209a5b4 func_ov000_0209aed8 kind:function(arm,size=0x2c) addr:0x0209aed8 @@ -2030,7 +2030,7 @@ func_ov000_020a9b2c kind:function(thumb,size=0xc) addr:0x020a9b2c func_ov000_020a9b38 kind:function(thumb,size=0x12) addr:0x020a9b38 func_ov000_020a9b4c kind:function(thumb,size=0xc) addr:0x020a9b4c func_ov000_020a9b58 kind:function(thumb,size=0x12) addr:0x020a9b58 -func_ov000_020a9b6c kind:function(thumb,size=0xc) addr:0x020a9b6c +_ZN21ActorCharacter_1d8_b0D1Ev kind:function(thumb,size=0xc) addr:0x020a9b6c func_ov000_020a9b78 kind:function(thumb,size=0x12) addr:0x020a9b78 func_ov000_020a9b8c kind:function(arm,size=0x2c) addr:0x020a9b8c func_ov000_020a9bb8 kind:function(arm,size=0x34) addr:0x020a9bb8 @@ -2478,11 +2478,11 @@ _ZN13ActorNaviBase8vfunc_80Ev kind:function(arm,size=0x24) addr:0x020ba5b0 _ZN13ActorNaviBase8vfunc_84Ev kind:function(arm,size=0x18) addr:0x020ba5d4 _ZN13ActorNaviBase8vfunc_78Ev kind:function(arm,size=0x288) addr:0x020ba5ec _ZN13ActorNaviBase8vfunc_bcEici kind:function(arm,size=0x400) addr:0x020ba874 -_ZN13ActorNaviBase8vfunc_74Ev kind:function(arm,size=0x34) addr:0x020bac74 +_ZN13ActorNaviBase8vfunc_74EP8ActorRef kind:function(arm,size=0x34) addr:0x020bac74 _ZN13ActorNaviBase19func_ov000_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x020baca8 _ZN13ActorNaviBase19func_ov000_020bad18Ev kind:function(arm,size=0x2c) addr:0x020bad18 -_ZN13ActorNaviBase8vfunc_90Ev kind:function(arm,size=0x224) addr:0x020bad44 -_ZN13ActorNaviBase8vfunc_94Ev kind:function(arm,size=0x144) addr:0x020baf68 +_ZN13ActorNaviBase8vfunc_90Eii kind:function(arm,size=0x224) addr:0x020bad44 +_ZN13ActorNaviBase8vfunc_94Eii kind:function(arm,size=0x144) addr:0x020baf68 _ZN13ActorNaviBase19func_ov000_020bb0acEv kind:function(arm,size=0x34) addr:0x020bb0ac _ZN13ActorNaviBase19func_ov000_020bb0e0Ev kind:function(arm,size=0x34) addr:0x020bb0e0 _ZN13ActorNaviBase8vfunc_ecEv kind:function(arm,size=0x4) addr:0x020bb114 @@ -2755,15 +2755,15 @@ _ZN5Actor10SetUnk_11cEb kind:function(arm,size=0x8) addr:0x020c1908 _ZN5Actor8vfunc_68Ev kind:function(arm,size=0x4) addr:0x020c1910 _ZN5Actor8vfunc_6cEv kind:function(arm,size=0x8) addr:0x020c1914 _ZN5Actor8vfunc_70Ev kind:function(arm,size=0x8) addr:0x020c191c -_ZN5Actor8vfunc_74Ev kind:function(arm,size=0x4) addr:0x020c1924 -_ZN5Actor8vfunc_7cEv kind:function(arm,size=0x4) addr:0x020c1928 +_ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c1924 +_ZN5Actor8vfunc_7cEP8ActorRef kind:function(arm,size=0x4) addr:0x020c1928 _ZN5Actor8vfunc_78Ev kind:function(arm,size=0x8) addr:0x020c192c _ZN5Actor8vfunc_80Ev kind:function(arm,size=0x4) addr:0x020c1934 _ZN5Actor8vfunc_84Ev kind:function(arm,size=0x4) addr:0x020c1938 _ZN5Actor8vfunc_88Ev kind:function(arm,size=0x4) addr:0x020c193c _ZN5Actor8vfunc_8cEv kind:function(arm,size=0x8) addr:0x020c1940 -_ZN5Actor8vfunc_90Ev kind:function(arm,size=0x8) addr:0x020c1948 -_ZN5Actor8vfunc_94Ev kind:function(arm,size=0x4) addr:0x020c1950 +_ZN5Actor8vfunc_90Eii kind:function(arm,size=0x8) addr:0x020c1948 +_ZN5Actor8vfunc_94Eii kind:function(arm,size=0x4) addr:0x020c1950 _ZN5Actor8vfunc_98Ev kind:function(arm,size=0x4) addr:0x020c1954 _ZN5Actor8vfunc_9cEv kind:function(arm,size=0x4) addr:0x020c1958 _ZN5Actor18func_ov00_020c195cEv kind:function(arm,size=0x30) addr:0x020c195c @@ -2924,7 +2924,7 @@ _Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x020c5a24 func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x020c5a5c func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x020c5b34 func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x020c5bec -func_ov000_020c5c2c kind:function(arm,size=0x38) addr:0x020c5c2c +_ZN24UnkStruct_ov000_020c5c2cC2EPvP11ModelRenderP24UnkStruct_ov000_020c0c08 kind:function(arm,size=0x38) addr:0x020c5c2c func_ov000_020c5c64 kind:function(arm,size=0x34) addr:0x020c5c64 func_ov000_020c5c98 kind:function(arm,size=0x4c) addr:0x020c5c98 func_ov000_020c5ce4 kind:function(arm,size=0x50) addr:0x020c5ce4 @@ -2935,7 +2935,7 @@ func_ov000_020c5e54 kind:function(arm,size=0x4) addr:0x020c5e54 func_ov000_020c5e58 kind:function(arm,size=0x30) addr:0x020c5e58 func_ov000_020c5e88 kind:function(arm,size=0x38) addr:0x020c5e88 func_ov000_020c5ec0 kind:function(arm,size=0x5c) addr:0x020c5ec0 -func_ov000_020c5f1c kind:function(arm,size=0x18) addr:0x020c5f1c +_ZN24UnkStruct_ov000_020c5c2c19func_ov000_020c5f1cEv kind:function(arm,size=0x18) addr:0x020c5f1c func_ov000_020c5f34 kind:function(arm,size=0x4c) addr:0x020c5f34 func_ov000_020c5f80 kind:function(arm,size=0x40) addr:0x020c5f80 func_ov000_020c5fc0 kind:function(arm,size=0x64) addr:0x020c5fc0 @@ -2948,12 +2948,12 @@ func_ov000_020c62f0 kind:function(arm,size=0x1e8) addr:0x020c62f0 func_ov000_020c64d8 kind:function(arm,size=0x30) addr:0x020c64d8 func_ov000_020c6508 kind:function(arm,size=0x30) addr:0x020c6508 func_ov000_020c6538 kind:function(arm,size=0x184) addr:0x020c6538 -func_ov000_020c66bc kind:function(arm,size=0x14) addr:0x020c66bc -func_ov000_020c66d0 kind:function(arm,size=0x14) addr:0x020c66d0 -func_ov000_020c66e4 kind:function(arm,size=0xa4) addr:0x020c66e4 +_ZN18ActorCharacter_430C1Ev kind:function(arm,size=0x14) addr:0x020c66bc +_ZN18ActorCharacter_430D1Ev kind:function(arm,size=0x14) addr:0x020c66d0 +_ZN18ActorCharacter_43019func_ov000_020c66e4EP5Vec3psi kind:function(arm,size=0xa4) addr:0x020c66e4 func_ov000_020c6788 kind:function(arm,size=0xc) addr:0x020c6788 -func_ov000_020c6794 kind:function(arm,size=0xa4) addr:0x020c6794 -func_ov000_020c6838 kind:function(arm,size=0xd0) addr:0x020c6838 +_ZN18ActorCharacter_43019func_ov000_020c6794EP5Vec3p kind:function(arm,size=0xa4) addr:0x020c6794 +_ZN18ActorCharacter_43019func_ov000_020c6838EP5Vec3pisiS1_Pt kind:function(arm,size=0xd0) addr:0x020c6838 func_ov000_020c6908 kind:function(arm,size=0x20) addr:0x020c6908 func_ov000_020c6928 kind:function(arm,size=0x4) addr:0x020c6928 func_ov000_020c692c kind:function(arm,size=0x14) addr:0x020c692c @@ -2971,9 +2971,9 @@ func_ov000_020c6d34 kind:function(arm,size=0x48) addr:0x020c6d34 func_ov000_020c6d7c kind:function(arm,size=0x20) addr:0x020c6d7c func_ov000_020c6d9c kind:function(arm,size=0x6c) addr:0x020c6d9c func_ov000_020c6e08 kind:function(arm,size=0x28) addr:0x020c6e08 -func_ov000_020c6e30 kind:function(arm,size=0x5c) addr:0x020c6e30 +_ZN18ActorCharacter_43019func_ov000_020c6e30EP5Vec3p kind:function(arm,size=0x5c) addr:0x020c6e30 func_ov000_020c6e8c kind:function(arm,size=0x7c) addr:0x020c6e8c -func_ov000_020c6f08 kind:function(arm,size=0x58) addr:0x020c6f08 +_ZN18ActorCharacter_43019func_ov000_020c6f08EP5Vec3p kind:function(arm,size=0x58) addr:0x020c6f08 func_ov000_020c6f60 kind:function(arm,size=0x80) addr:0x020c6f60 func_ov000_020c6fe0 kind:function(arm,size=0xcc) addr:0x020c6fe0 func_ov000_020c70ac kind:function(arm,size=0xa8) addr:0x020c70ac @@ -3164,7 +3164,7 @@ func_ov000_020ccd9c kind:function(arm,size=0x1c) addr:0x020ccd9c func_ov000_020ccdb8 kind:function(arm,size=0x1c) addr:0x020ccdb8 func_ov000_020ccdd4 kind:function(arm,size=0x118) addr:0x020ccdd4 func_ov000_020cceec kind:function(arm,size=0x4) addr:0x020cceec -func_ov000_020ccef0 kind:function(arm,size=0x1c) addr:0x020ccef0 +_ZN18ActorCharacter_1c4C1Ev kind:function(arm,size=0x1c) addr:0x020ccef0 func_ov000_020ccf0c kind:function(arm,size=0x34) addr:0x020ccf0c func_ov000_020ccf40 kind:function(arm,size=0x3c) addr:0x020ccf40 func_ov000_020ccf7c kind:function(arm,size=0x94) addr:0x020ccf7c diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt index dd2dfac8..477a8e81 100644 --- a/config/eur/arm9/overlays/ov014/delinks.txt +++ b/config/eur/arm9/overlays/ov014/delinks.txt @@ -27,7 +27,9 @@ src/14_Land/Actor/Character/ActorCharacterBase.cpp: .data start:0x021594b8 end:0x021595ac src/14_Land/Actor/Character/ActorCharacter.cpp: + complete .text start:0x02144d94 end:0x02145a74 + .data start:0x021595ac end:0x021596a8 src/14_Land/Actor/Character/ActorGenericCharacter.cpp: .text start:0x021476d0 end:0x02148234 diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index 49babc8e..2d69e72a 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -4564,7 +4564,7 @@ from:0x02144e70 kind:load to:0x02097760 module:overlay(0) from:0x02144e84 kind:arm_call to:0x02144e58 module:overlay(14) from:0x02144ea4 kind:arm_call_thumb to:0x020a95ec module:overlay(0) from:0x02144ec0 kind:arm_call_thumb to:0x020c0c08 module:overlay(0) -from:0x02144ed4 kind:load to:0x021596b0 module:overlay(14) +from:0x02144ed4 kind:load to:0x021596a8 module:overlay(14) add:0x8 from:0x02144ee4 kind:arm_call to:0x02144900 module:overlay(14) from:0x02144ef4 kind:arm_call to:0x020ccef0 module:overlay(0) from:0x02144f08 kind:arm_call to:0x020c5c2c module:overlay(0) @@ -4575,10 +4575,10 @@ from:0x02144f94 kind:arm_call to:0x020c66bc module:overlay(0) from:0x02144fd4 kind:arm_call to:0x020078f4 module:main from:0x02144fe8 kind:arm_call to:0x020078f4 module:main from:0x02144ff8 kind:load to:0x021595ac module:overlay(14) add:0x8 -from:0x02144ffc kind:load to:0x021596cc module:overlay(14) +from:0x02144ffc kind:load to:0x021596c4 module:overlay(14) add:0x8 from:0x02145000 kind:load to:0x020a9b6d module:overlay(0) from:0x02145004 kind:load to:0x02144eb0 module:overlay(14) -from:0x02145008 kind:load to:0x021596b0 module:overlay(14) +from:0x02145008 kind:load to:0x021596a8 module:overlay(14) add:0x8 from:0x0214501c kind:arm_call to:0x020c66d0 module:overlay(0) from:0x02145024 kind:arm_call_thumb to:0x020a9b6c module:overlay(0) from:0x02145038 kind:arm_call to:0x0204f754 module:main diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 11661c0b..17f4d1bf 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1096,8 +1096,8 @@ _ZN14ActorCharacter19func_ov014_02144e28Ev kind:function(arm,size=0x14) addr:0x0 _ZN14ActorCharacter19func_ov014_02144e3cEv kind:function(arm,size=0x1c) addr:0x02144e3c _ZN14ActorCharacter19func_ov014_02144e58Ev kind:function(arm,size=0x1c) addr:0x02144e58 _ZN14ActorCharacter19func_ov014_02144e74Ev kind:function(arm,size=0x28) addr:0x02144e74 -_ZN19ActorCharacterModelD0Ev kind:function(arm,size=0x14) addr:0x02144e9c -_ZN18ActorCharacter_288C1Ev kind:function(arm,size=0x28) addr:0x02144eb0 +_ZN19ActorCharacterModelD1Ev kind:function(arm,size=0x14) addr:0x02144e9c +_ZN21ActorCharacter_1d8_b0C1Ev kind:function(arm,size=0x28) addr:0x02144eb0 _ZN14ActorCharacterC2Ev kind:function(arm,size=0x138) addr:0x02144ed8 _ZN14ActorCharacterD1Ev kind:function(arm,size=0x48) addr:0x02145010 _ZN14ActorCharacterD0Ev kind:function(arm,size=0x50) addr:0x02145058 @@ -1109,26 +1109,26 @@ _ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x _ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x02145258 _ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x021452b0 _ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145318 -_ZN14ActorCharacter19func_ov014_021453f4Ev kind:function(arm,size=0x20) addr:0x021453f4 -_ZN14ActorCharacter19func_ov014_02145414Ev kind:function(arm,size=0x78) addr:0x02145414 -_ZN14ActorCharacter19func_ov014_0214548cEv kind:function(arm,size=0x7c) addr:0x0214548c +_ZN14ActorCharacter19func_ov014_021453f4Ei kind:function(arm,size=0x20) addr:0x021453f4 +_ZN14ActorCharacter19func_ov014_02145414Eii kind:function(arm,size=0x78) addr:0x02145414 +_ZN14ActorCharacter19func_ov014_0214548cEi kind:function(arm,size=0x7c) addr:0x0214548c _ZN14ActorCharacter19func_ov014_02145508Ev kind:function(arm,size=0x18) addr:0x02145508 -_Z19func_ov014_02145520P14ActorCharacter kind:function(arm,size=0xc) addr:0x02145520 +_ZN14ActorCharacter19func_ov014_02145520EP18ActorCharacterBase kind:function(arm,size=0xc) addr:0x02145520 _ZN14ActorCharacter19func_ov014_0214552cEv kind:function(arm,size=0x4c) addr:0x0214552c _ZN14ActorCharacter8vfunc_80Ev kind:function(arm,size=0x38) addr:0x02145578 _ZN14ActorCharacter8vfunc_84Ev kind:function(arm,size=0x34) addr:0x021455b0 _ZN14ActorCharacter8vfunc_ccEv kind:function(arm,size=0x94) addr:0x021455e4 _ZN14ActorCharacter8vfunc_c8Ev kind:function(arm,size=0x18) addr:0x02145678 _ZN14ActorCharacter8vfunc_78Ev kind:function(arm,size=0x8) addr:0x02145690 -_ZN14ActorCharacter8vfunc_74Ev kind:function(arm,size=0xa4) addr:0x02145698 -_ZN14ActorCharacter8vfunc_7cEv kind:function(arm,size=0x24) addr:0x0214573c -_ZN14ActorCharacter8vfunc_90Ev kind:function(arm,size=0xb4) addr:0x02145760 -_ZN14ActorCharacter8vfunc_94Ev kind:function(arm,size=0x60) addr:0x02145814 +_ZN14ActorCharacter8vfunc_74EP8ActorRef kind:function(arm,size=0xa4) addr:0x02145698 +_ZN14ActorCharacter8vfunc_7cEP8ActorRef kind:function(arm,size=0x24) addr:0x0214573c +_ZN14ActorCharacter8vfunc_90Eii kind:function(arm,size=0xb4) addr:0x02145760 +_ZN14ActorCharacter8vfunc_94Eii kind:function(arm,size=0x60) addr:0x02145814 _ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x02145874 _ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021458a0 _ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x021458b0 _ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x021458cc -_ZN14ActorCharacter8vfunc_f0Ei kind:function(arm,size=0x1c) addr:0x02145900 +_ZN14ActorCharacter8vfunc_f0Eii kind:function(arm,size=0x1c) addr:0x02145900 _ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x0214591c _ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x02145974 func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x02145a74 @@ -1136,9 +1136,9 @@ func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145ae8 func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145b18 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145bcc func_ov014_02145c7c kind:function(arm,size=0x30) addr:0x02145c7c -func_ov014_02145cac kind:function(arm,size=0x19c) addr:0x02145cac +_ZN18ActorCharacter_1d819func_ov014_02145cacEv kind:function(arm,size=0x19c) addr:0x02145cac func_ov014_02145e48 kind:function(arm,size=0xc4) addr:0x02145e48 -func_ov014_02145f0c kind:function(arm,size=0x1ac) addr:0x02145f0c +_ZN18ActorCharacter_1d819func_ov014_02145f0cEi kind:function(arm,size=0x1ac) addr:0x02145f0c func_ov014_021460b8 kind:function(arm,size=0x54) addr:0x021460b8 func_ov014_0214610c kind:function(arm,size=0x14) addr:0x0214610c func_ov014_02146120 kind:function(arm,size=0x74) addr:0x02146120 @@ -1254,12 +1254,12 @@ func_ov014_0214a4bc kind:function(arm,size=0x8) addr:0x0214a4bc func_ov014_0214a4c4 kind:function(arm,size=0x20) addr:0x0214a4c4 func_ov014_0214a4e4 kind:function(arm,size=0x18) addr:0x0214a4e4 func_ov014_0214a4fc kind:function(arm,size=0x64) addr:0x0214a4fc -func_ov014_0214a560 kind:function(arm,size=0xa4) addr:0x0214a560 +_ZN19ActorCharacterModelC1Ev kind:function(arm,size=0xa4) addr:0x0214a560 func_ov014_0214a604 kind:function(arm,size=0x14) addr:0x0214a604 func_ov014_0214a618 kind:function(arm,size=0x108) addr:0x0214a618 func_ov014_0214a720 kind:function(arm,size=0x20c) addr:0x0214a720 -func_ov014_0214a92c kind:function(arm,size=0xe0) addr:0x0214a92c -func_ov014_0214aa0c kind:function(arm,size=0x20) addr:0x0214aa0c +_ZN19ActorCharacterModel19func_ov014_0214a92cEP5Vec3pS1_s kind:function(arm,size=0xe0) addr:0x0214a92c +_ZN19ActorCharacterModel19func_ov014_0214aa0cEP5Vec3ps kind:function(arm,size=0x20) addr:0x0214aa0c func_ov014_0214aa2c kind:function(arm,size=0xe8) addr:0x0214aa2c func_ov014_0214ab14 kind:function(arm,size=0x1c) addr:0x0214ab14 func_ov014_0214ab30 kind:function(arm,size=0x30) addr:0x0214ab30 @@ -2079,10 +2079,10 @@ data_ov014_02159408 kind:data(any) addr:0x02159408 data_ov014_02159478 kind:data(any) addr:0x02159478 _ZTV18ActorCharacterBase kind:data(any) addr:0x021594b8 _ZTV14ActorCharacter kind:data(any) addr:0x021595ac -data_ov014_021596b0 kind:data(any) addr:0x021596b0 +_ZTV21ActorCharacter_1d8_b0 kind:data(any) addr:0x021596a8 data_ov014_021596b8 kind:data(any) addr:0x021596b8 data_ov014_021596bc kind:data(any) addr:0x021596bc -data_ov014_021596cc kind:data(any) addr:0x021596cc +_ZTV18ActorCharacter_1d8 kind:data(any) addr:0x021596c4 data_ov014_021596d8 kind:data(any) addr:0x021596d8 data_ov014_021596dc kind:data(any) addr:0x021596dc data_ov014_021596e0 kind:data(any) addr:0x021596e0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index bd7c9269..af5a5991 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -1277,7 +1277,7 @@ _ZN7MapData8GetFlag4Ej kind:function(arm,size=0x20) addr:0x020975a8 _ZN14AdventureFlags6ExistsEv kind:function(arm,size=0x1c) addr:0x020975c8 _ZN14AdventureFlags6CopyToEP9FlagsData kind:function(arm,size=0x30) addr:0x020975e4 _ZN14AdventureFlags18func_ov00_02097674Ev kind:function(arm,size=0x10) addr:0x02097614 -_ZN14AdventureFlags18func_ov00_02097684Ev kind:function(arm,size=0x10) addr:0x02097624 +_ZN14AdventureFlags18func_ov00_02097684EiiPPv kind:function(arm,size=0x10) addr:0x02097624 _ZN14AdventureFlags4LoadEv kind:function(arm,size=0x34) addr:0x02097634 _ZN14AdventureFlags18func_ov00_020976c8Ev kind:function(arm,size=0x38) addr:0x02097668 _ZN14AdventureFlags18func_ov00_02097700Ev kind:function(arm,size=0x38) addr:0x020976a0 @@ -1285,14 +1285,14 @@ _ZN14AdventureFlags18func_ov00_02097738Ev kind:function(arm,size=0x18) addr:0x02 _ZN14AdventureFlags18func_ov00_02097750Ev kind:function(arm,size=0x10) addr:0x020976f0 _ZN14AdventureFlags3GetEj kind:function(arm,size=0x3c) addr:0x02097700 _ZN14AdventureFlags3SetEjb kind:function(arm,size=0x74) addr:0x0209773c -_ZN14AdventureFlags18func_ov00_02097810Ei kind:function(arm,size=0x158) addr:0x020977b0 +_ZN14AdventureFlags18func_ov00_02097810EP24UnkStruct_ov000_0209a50c kind:function(arm,size=0x158) addr:0x020977b0 _ZN14AdventureFlags18func_ov00_02097968Ei kind:function(arm,size=0xdc) addr:0x02097908 _ZN14AdventureFlags18func_ov00_02097a44Eii kind:function(arm,size=0x158) addr:0x020979e4 _ZN14AdventureFlags18func_ov00_02097b9cEi kind:function(arm,size=0x10) addr:0x02097b3c _ZN14AdventureFlags18func_ov00_02097bacEv kind:function(arm,size=0x10) addr:0x02097b4c _ZN14AdventureFlags18func_ov00_02097bbcEv kind:function(arm,size=0x10) addr:0x02097b5c _ZN14AdventureFlags18func_ov00_02097bccEi kind:function(arm,size=0x10) addr:0x02097b6c -_ZN14AdventureFlags18func_ov00_02097bccEP10astruct_23 kind:function(arm,size=0x2c) addr:0x02097b7c +_ZN14AdventureFlags18func_ov00_02097bccEP24UnkStruct_ov000_0209a50c kind:function(arm,size=0x2c) addr:0x02097b7c _ZN14AdventureFlags18func_ov00_02097c08Ev kind:function(arm,size=0x10) addr:0x02097ba8 _ZN14AdventureFlags20Get_FlagsUnk_30_FlagEi kind:function(arm,size=0x20) addr:0x02097bb8 _ZN14AdventureFlags15Get_FlagsUnk_49Ei kind:function(arm,size=0x18) addr:0x02097bd8 @@ -1377,8 +1377,8 @@ func_ov000_0209a440 kind:function(arm,size=0x28) addr:0x0209a3e0 func_ov000_0209a468 kind:function(arm,size=0x8) addr:0x0209a408 func_ov000_0209a470 kind:function(arm,size=0x3c) addr:0x0209a410 func_ov000_0209a4ac kind:function(arm,size=0x48) addr:0x0209a44c -func_ov000_0209a4f4 kind:function(arm,size=0x14) addr:0x0209a494 -func_ov000_0209a508 kind:function(arm,size=0x4) addr:0x0209a4a8 +_ZN24UnkStruct_ov000_0209a50cC1Ev kind:function(arm,size=0x14) addr:0x0209a494 +_ZN24UnkStruct_ov000_0209a50cD1Ev kind:function(arm,size=0x4) addr:0x0209a4a8 func_ov000_0209a50c kind:function(arm,size=0xa8) addr:0x0209a4ac func_ov000_0209a5b4 kind:function(arm,size=0x924) addr:0x0209a554 func_ov000_0209aed8 kind:function(arm,size=0x2c) addr:0x0209ae78 @@ -2030,7 +2030,7 @@ func_ov000_020a9b2c kind:function(thumb,size=0xc) addr:0x020a9acc func_ov000_020a9b38 kind:function(thumb,size=0x12) addr:0x020a9ad8 func_ov000_020a9b4c kind:function(thumb,size=0xc) addr:0x020a9aec func_ov000_020a9b58 kind:function(thumb,size=0x12) addr:0x020a9af8 -func_ov000_020a9b6c kind:function(thumb,size=0xc) addr:0x020a9b0c +_ZN21ActorCharacter_1d8_b0D1Ev kind:function(thumb,size=0xc) addr:0x020a9b0c func_ov000_020a9b78 kind:function(thumb,size=0x12) addr:0x020a9b18 func_ov000_020a9b8c kind:function(arm,size=0x2c) addr:0x020a9b2c func_ov000_020a9bb8 kind:function(arm,size=0x34) addr:0x020a9b58 @@ -2478,11 +2478,11 @@ _ZN13ActorNaviBase8vfunc_80Ev kind:function(arm,size=0x24) addr:0x020ba550 _ZN13ActorNaviBase8vfunc_84Ev kind:function(arm,size=0x18) addr:0x020ba574 _ZN13ActorNaviBase8vfunc_78Ev kind:function(arm,size=0x288) addr:0x020ba58c _ZN13ActorNaviBase8vfunc_bcEici kind:function(arm,size=0x400) addr:0x020ba814 -_ZN13ActorNaviBase8vfunc_74Ev kind:function(arm,size=0x34) addr:0x020bac14 +_ZN13ActorNaviBase8vfunc_74EP8ActorRef kind:function(arm,size=0x34) addr:0x020bac14 _ZN13ActorNaviBase19func_ov000_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x020bac48 _ZN13ActorNaviBase19func_ov000_020bad18Ev kind:function(arm,size=0x2c) addr:0x020bacb8 -_ZN13ActorNaviBase8vfunc_90Ev kind:function(arm,size=0x224) addr:0x020bace4 -_ZN13ActorNaviBase8vfunc_94Ev kind:function(arm,size=0x144) addr:0x020baf08 +_ZN13ActorNaviBase8vfunc_90Eii kind:function(arm,size=0x224) addr:0x020bace4 +_ZN13ActorNaviBase8vfunc_94Eii kind:function(arm,size=0x144) addr:0x020baf08 _ZN13ActorNaviBase19func_ov000_020bb0acEv kind:function(arm,size=0x34) addr:0x020bb04c _ZN13ActorNaviBase19func_ov000_020bb0e0Ev kind:function(arm,size=0x34) addr:0x020bb080 _ZN13ActorNaviBase8vfunc_ecEv kind:function(arm,size=0x4) addr:0x020bb0b4 @@ -2755,15 +2755,15 @@ _ZN5Actor10SetUnk_11cEb kind:function(arm,size=0x8) addr:0x020c18a8 _ZN5Actor8vfunc_68Ev kind:function(arm,size=0x4) addr:0x020c18b0 _ZN5Actor8vfunc_6cEv kind:function(arm,size=0x8) addr:0x020c18b4 _ZN5Actor8vfunc_70Ev kind:function(arm,size=0x8) addr:0x020c18bc -_ZN5Actor8vfunc_74Ev kind:function(arm,size=0x4) addr:0x020c18c4 -_ZN5Actor8vfunc_7cEv kind:function(arm,size=0x4) addr:0x020c18c8 +_ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c18c4 +_ZN5Actor8vfunc_7cEP8ActorRef kind:function(arm,size=0x4) addr:0x020c18c8 _ZN5Actor8vfunc_78Ev kind:function(arm,size=0x8) addr:0x020c18cc _ZN5Actor8vfunc_80Ev kind:function(arm,size=0x4) addr:0x020c18d4 _ZN5Actor8vfunc_84Ev kind:function(arm,size=0x4) addr:0x020c18d8 _ZN5Actor8vfunc_88Ev kind:function(arm,size=0x4) addr:0x020c18dc _ZN5Actor8vfunc_8cEv kind:function(arm,size=0x8) addr:0x020c18e0 -_ZN5Actor8vfunc_90Ev kind:function(arm,size=0x8) addr:0x020c18e8 -_ZN5Actor8vfunc_94Ev kind:function(arm,size=0x4) addr:0x020c18f0 +_ZN5Actor8vfunc_90Eii kind:function(arm,size=0x8) addr:0x020c18e8 +_ZN5Actor8vfunc_94Eii kind:function(arm,size=0x4) addr:0x020c18f0 _ZN5Actor8vfunc_98Ev kind:function(arm,size=0x4) addr:0x020c18f4 _ZN5Actor8vfunc_9cEv kind:function(arm,size=0x4) addr:0x020c18f8 _ZN5Actor18func_ov00_020c195cEv kind:function(arm,size=0x30) addr:0x020c18fc @@ -2924,7 +2924,7 @@ _Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x020c59c4 func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x020c59fc func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x020c5ad4 func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x020c5b8c -func_ov000_020c5c2c kind:function(arm,size=0x38) addr:0x020c5bcc +_ZN24UnkStruct_ov000_020c5c2cC2EPvP11ModelRenderP24UnkStruct_ov000_020c0c08 kind:function(arm,size=0x38) addr:0x020c5bcc func_ov000_020c5c64 kind:function(arm,size=0x34) addr:0x020c5c04 func_ov000_020c5c98 kind:function(arm,size=0x4c) addr:0x020c5c38 func_ov000_020c5ce4 kind:function(arm,size=0x50) addr:0x020c5c84 @@ -2935,7 +2935,7 @@ func_ov000_020c5e54 kind:function(arm,size=0x4) addr:0x020c5df4 func_ov000_020c5e58 kind:function(arm,size=0x30) addr:0x020c5df8 func_ov000_020c5e88 kind:function(arm,size=0x38) addr:0x020c5e28 func_ov000_020c5ec0 kind:function(arm,size=0x5c) addr:0x020c5e60 -func_ov000_020c5f1c kind:function(arm,size=0x18) addr:0x020c5ebc +_ZN24UnkStruct_ov000_020c5c2c19func_ov000_020c5f1cEv kind:function(arm,size=0x18) addr:0x020c5ebc func_ov000_020c5f34 kind:function(arm,size=0x4c) addr:0x020c5ed4 func_ov000_020c5f80 kind:function(arm,size=0x40) addr:0x020c5f20 func_ov000_020c5fc0 kind:function(arm,size=0x64) addr:0x020c5f60 @@ -2948,12 +2948,12 @@ func_ov000_020c62f0 kind:function(arm,size=0x1e8) addr:0x020c6290 func_ov000_020c64d8 kind:function(arm,size=0x30) addr:0x020c6478 func_ov000_020c6508 kind:function(arm,size=0x30) addr:0x020c64a8 func_ov000_020c6538 kind:function(arm,size=0x184) addr:0x020c64d8 -func_ov000_020c66bc kind:function(arm,size=0x14) addr:0x020c665c -func_ov000_020c66d0 kind:function(arm,size=0x14) addr:0x020c6670 -func_ov000_020c66e4 kind:function(arm,size=0xa4) addr:0x020c6684 +_ZN18ActorCharacter_430C1Ev kind:function(arm,size=0x14) addr:0x020c665c +_ZN18ActorCharacter_430D1Ev kind:function(arm,size=0x14) addr:0x020c6670 +_ZN18ActorCharacter_43019func_ov000_020c66e4EP5Vec3psi kind:function(arm,size=0xa4) addr:0x020c6684 func_ov000_020c6788 kind:function(arm,size=0xc) addr:0x020c6728 -func_ov000_020c6794 kind:function(arm,size=0xa4) addr:0x020c6734 -func_ov000_020c6838 kind:function(arm,size=0xd0) addr:0x020c67d8 +_ZN18ActorCharacter_43019func_ov000_020c6794EP5Vec3p kind:function(arm,size=0xa4) addr:0x020c6734 +_ZN18ActorCharacter_43019func_ov000_020c6838EP5Vec3pisiS1_Pt kind:function(arm,size=0xd0) addr:0x020c67d8 func_ov000_020c6908 kind:function(arm,size=0x20) addr:0x020c68a8 func_ov000_020c6928 kind:function(arm,size=0x4) addr:0x020c68c8 func_ov000_020c692c kind:function(arm,size=0x14) addr:0x020c68cc @@ -2971,9 +2971,9 @@ func_ov000_020c6d34 kind:function(arm,size=0x48) addr:0x020c6cd4 func_ov000_020c6d7c kind:function(arm,size=0x20) addr:0x020c6d1c func_ov000_020c6d9c kind:function(arm,size=0x6c) addr:0x020c6d3c func_ov000_020c6e08 kind:function(arm,size=0x28) addr:0x020c6da8 -func_ov000_020c6e30 kind:function(arm,size=0x5c) addr:0x020c6dd0 +_ZN18ActorCharacter_43019func_ov000_020c6e30EP5Vec3p kind:function(arm,size=0x5c) addr:0x020c6dd0 func_ov000_020c6e8c kind:function(arm,size=0x7c) addr:0x020c6e2c -func_ov000_020c6f08 kind:function(arm,size=0x58) addr:0x020c6ea8 +_ZN18ActorCharacter_43019func_ov000_020c6f08EP5Vec3p kind:function(arm,size=0x58) addr:0x020c6ea8 func_ov000_020c6f60 kind:function(arm,size=0x80) addr:0x020c6f00 func_ov000_020c6fe0 kind:function(arm,size=0xcc) addr:0x020c6f80 func_ov000_020c70ac kind:function(arm,size=0xa8) addr:0x020c704c @@ -3164,7 +3164,7 @@ func_ov000_020ccd9c kind:function(arm,size=0x1c) addr:0x020ccd3c func_ov000_020ccdb8 kind:function(arm,size=0x1c) addr:0x020ccd58 func_ov000_020ccdd4 kind:function(arm,size=0x118) addr:0x020ccd74 func_ov000_020cceec kind:function(arm,size=0x4) addr:0x020cce8c -func_ov000_020ccef0 kind:function(arm,size=0x1c) addr:0x020cce90 +_ZN18ActorCharacter_1c4C1Ev kind:function(arm,size=0x1c) addr:0x020cce90 func_ov000_020ccf0c kind:function(arm,size=0x34) addr:0x020cceac func_ov000_020ccf40 kind:function(arm,size=0x3c) addr:0x020ccee0 func_ov000_020ccf7c kind:function(arm,size=0x94) addr:0x020ccf1c diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt index 2bd19328..b433af80 100644 --- a/config/usa/arm9/overlays/ov014/delinks.txt +++ b/config/usa/arm9/overlays/ov014/delinks.txt @@ -27,7 +27,9 @@ src/14_Land/Actor/Character/ActorCharacterBase.cpp: .data start:0x02159418 end:0x0215950c src/14_Land/Actor/Character/ActorCharacter.cpp: + complete .text start:0x02144cf0 end:0x021459d0 + .data start:0x0215950c end:0x02159608 src/14_Land/Actor/Character/ActorGenericCharacter.cpp: .text start:0x0214762c end:0x02148190 diff --git a/config/usa/arm9/overlays/ov014/relocs.txt b/config/usa/arm9/overlays/ov014/relocs.txt index 3c9e2649..612b8ca1 100644 --- a/config/usa/arm9/overlays/ov014/relocs.txt +++ b/config/usa/arm9/overlays/ov014/relocs.txt @@ -4564,7 +4564,7 @@ from:0x02144dcc kind:load to:0x02097700 module:overlay(0) from:0x02144de0 kind:arm_call to:0x02144db4 module:overlay(14) from:0x02144e00 kind:arm_call_thumb to:0x020a958c module:overlay(0) from:0x02144e1c kind:arm_call_thumb to:0x020c0ba8 module:overlay(0) -from:0x02144e30 kind:load to:0x02159610 module:overlay(14) +from:0x02144e30 kind:load to:0x02159608 module:overlay(14) add:0x8 from:0x02144e40 kind:arm_call to:0x0214485c module:overlay(14) from:0x02144e50 kind:arm_call to:0x020cce90 module:overlay(0) from:0x02144e64 kind:arm_call to:0x020c5bcc module:overlay(0) @@ -4575,10 +4575,10 @@ from:0x02144ef0 kind:arm_call to:0x020c665c module:overlay(0) from:0x02144f30 kind:arm_call to:0x020078f4 module:main from:0x02144f44 kind:arm_call to:0x020078f4 module:main from:0x02144f54 kind:load to:0x0215950c module:overlay(14) add:0x8 -from:0x02144f58 kind:load to:0x0215962c module:overlay(14) +from:0x02144f58 kind:load to:0x02159624 module:overlay(14) add:0x8 from:0x02144f5c kind:load to:0x020a9b0d module:overlay(0) from:0x02144f60 kind:load to:0x02144e0c module:overlay(14) -from:0x02144f64 kind:load to:0x02159610 module:overlay(14) +from:0x02144f64 kind:load to:0x02159608 module:overlay(14) add:0x8 from:0x02144f78 kind:arm_call to:0x020c6670 module:overlay(0) from:0x02144f80 kind:arm_call_thumb to:0x020a9b0c module:overlay(0) from:0x02144f94 kind:arm_call to:0x0204f710 module:main diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 297b3b00..c8730b51 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1096,8 +1096,8 @@ _ZN14ActorCharacter19func_ov014_02144e28Ev kind:function(arm,size=0x14) addr:0x0 _ZN14ActorCharacter19func_ov014_02144e3cEv kind:function(arm,size=0x1c) addr:0x02144d98 _ZN14ActorCharacter19func_ov014_02144e58Ev kind:function(arm,size=0x1c) addr:0x02144db4 _ZN14ActorCharacter19func_ov014_02144e74Ev kind:function(arm,size=0x28) addr:0x02144dd0 -_ZN19ActorCharacterModelD0Ev kind:function(arm,size=0x14) addr:0x02144df8 -_ZN18ActorCharacter_288C1Ev kind:function(arm,size=0x28) addr:0x02144e0c +_ZN19ActorCharacterModelD1Ev kind:function(arm,size=0x14) addr:0x02144df8 +_ZN21ActorCharacter_1d8_b0C1Ev kind:function(arm,size=0x28) addr:0x02144e0c _ZN14ActorCharacterC2Ev kind:function(arm,size=0x138) addr:0x02144e34 _ZN14ActorCharacterD1Ev kind:function(arm,size=0x48) addr:0x02144f6c _ZN14ActorCharacterD0Ev kind:function(arm,size=0x50) addr:0x02144fb4 @@ -1109,26 +1109,26 @@ _ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x _ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x021451b4 _ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x0214520c _ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145274 -_ZN14ActorCharacter19func_ov014_021453f4Ev kind:function(arm,size=0x20) addr:0x02145350 -_ZN14ActorCharacter19func_ov014_02145414Ev kind:function(arm,size=0x78) addr:0x02145370 -_ZN14ActorCharacter19func_ov014_0214548cEv kind:function(arm,size=0x7c) addr:0x021453e8 +_ZN14ActorCharacter19func_ov014_021453f4Ei kind:function(arm,size=0x20) addr:0x02145350 +_ZN14ActorCharacter19func_ov014_02145414Eii kind:function(arm,size=0x78) addr:0x02145370 +_ZN14ActorCharacter19func_ov014_0214548cEi kind:function(arm,size=0x7c) addr:0x021453e8 _ZN14ActorCharacter19func_ov014_02145508Ev kind:function(arm,size=0x18) addr:0x02145464 -_Z19func_ov014_02145520P14ActorCharacter kind:function(arm,size=0xc) addr:0x0214547c +_ZN14ActorCharacter19func_ov014_02145520EP18ActorCharacterBase kind:function(arm,size=0xc) addr:0x0214547c _ZN14ActorCharacter19func_ov014_0214552cEv kind:function(arm,size=0x4c) addr:0x02145488 _ZN14ActorCharacter8vfunc_80Ev kind:function(arm,size=0x38) addr:0x021454d4 _ZN14ActorCharacter8vfunc_84Ev kind:function(arm,size=0x34) addr:0x0214550c _ZN14ActorCharacter8vfunc_ccEv kind:function(arm,size=0x94) addr:0x02145540 _ZN14ActorCharacter8vfunc_c8Ev kind:function(arm,size=0x18) addr:0x021455d4 _ZN14ActorCharacter8vfunc_78Ev kind:function(arm,size=0x8) addr:0x021455ec -_ZN14ActorCharacter8vfunc_74Ev kind:function(arm,size=0xa4) addr:0x021455f4 -_ZN14ActorCharacter8vfunc_7cEv kind:function(arm,size=0x24) addr:0x02145698 -_ZN14ActorCharacter8vfunc_90Ev kind:function(arm,size=0xb4) addr:0x021456bc -_ZN14ActorCharacter8vfunc_94Ev kind:function(arm,size=0x60) addr:0x02145770 +_ZN14ActorCharacter8vfunc_74EP8ActorRef kind:function(arm,size=0xa4) addr:0x021455f4 +_ZN14ActorCharacter8vfunc_7cEP8ActorRef kind:function(arm,size=0x24) addr:0x02145698 +_ZN14ActorCharacter8vfunc_90Eii kind:function(arm,size=0xb4) addr:0x021456bc +_ZN14ActorCharacter8vfunc_94Eii kind:function(arm,size=0x60) addr:0x02145770 _ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x021457d0 _ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021457fc _ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x0214580c _ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x02145828 -_ZN14ActorCharacter8vfunc_f0Ei kind:function(arm,size=0x1c) addr:0x0214585c +_ZN14ActorCharacter8vfunc_f0Eii kind:function(arm,size=0x1c) addr:0x0214585c _ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x02145878 _ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x021458d0 func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x021459d0 @@ -1136,9 +1136,9 @@ func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145a44 func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145a74 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145b28 func_ov014_02145c7c kind:function(arm,size=0x30) addr:0x02145bd8 -func_ov014_02145cac kind:function(arm,size=0x19c) addr:0x02145c08 +_ZN18ActorCharacter_1d819func_ov014_02145cacEv kind:function(arm,size=0x19c) addr:0x02145c08 func_ov014_02145e48 kind:function(arm,size=0xc4) addr:0x02145da4 -func_ov014_02145f0c kind:function(arm,size=0x1ac) addr:0x02145e68 +_ZN18ActorCharacter_1d819func_ov014_02145f0cEi kind:function(arm,size=0x1ac) addr:0x02145e68 func_ov014_021460b8 kind:function(arm,size=0x54) addr:0x02146014 func_ov014_0214610c kind:function(arm,size=0x14) addr:0x02146068 func_ov014_02146120 kind:function(arm,size=0x74) addr:0x0214607c @@ -1254,12 +1254,12 @@ func_ov014_0214a4bc kind:function(arm,size=0x8) addr:0x0214a418 func_ov014_0214a4c4 kind:function(arm,size=0x20) addr:0x0214a420 func_ov014_0214a4e4 kind:function(arm,size=0x18) addr:0x0214a440 func_ov014_0214a4fc kind:function(arm,size=0x64) addr:0x0214a458 -func_ov014_0214a560 kind:function(arm,size=0xa4) addr:0x0214a4bc +_ZN19ActorCharacterModelC1Ev kind:function(arm,size=0xa4) addr:0x0214a4bc func_ov014_0214a604 kind:function(arm,size=0x14) addr:0x0214a560 func_ov014_0214a618 kind:function(arm,size=0x108) addr:0x0214a574 func_ov014_0214a720 kind:function(arm,size=0x20c) addr:0x0214a67c -func_ov014_0214a92c kind:function(arm,size=0xe0) addr:0x0214a888 -func_ov014_0214aa0c kind:function(arm,size=0x20) addr:0x0214a968 +_ZN19ActorCharacterModel19func_ov014_0214a92cEP5Vec3pS1_s kind:function(arm,size=0xe0) addr:0x0214a888 +_ZN19ActorCharacterModel19func_ov014_0214aa0cEP5Vec3ps kind:function(arm,size=0x20) addr:0x0214a968 func_ov014_0214aa2c kind:function(arm,size=0xe8) addr:0x0214a988 func_ov014_0214ab14 kind:function(arm,size=0x1c) addr:0x0214aa70 func_ov014_0214ab30 kind:function(arm,size=0x30) addr:0x0214aa8c @@ -2079,10 +2079,10 @@ data_ov014_02159408 kind:data(any) addr:0x02159368 data_ov014_02159478 kind:data(any) addr:0x021593d8 _ZTV18ActorCharacterBase kind:data(any) addr:0x02159418 _ZTV14ActorCharacter kind:data(any) addr:0x0215950c -data_ov014_021596b0 kind:data(any) addr:0x02159610 +_ZTV21ActorCharacter_1d8_b0 kind:data(any) addr:0x02159608 data_ov014_021596b8 kind:data(any) addr:0x02159618 data_ov014_021596bc kind:data(any) addr:0x0215961c -data_ov014_021596cc kind:data(any) addr:0x0215962c +_ZTV18ActorCharacter_1d8 kind:data(any) addr:0x02159624 data_ov014_021596d8 kind:data(any) addr:0x02159638 data_ov014_021596dc kind:data(any) addr:0x0215963c data_ov014_021596e0 kind:data(any) addr:0x02159640 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 476d08f6..565d0eb7 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -203,15 +203,15 @@ public: /* 68 */ virtual void vfunc_68(); /* 6c */ virtual bool vfunc_6c(); /* 70 */ virtual bool vfunc_70(); - /* 74 */ virtual void vfunc_74(); + /* 74 */ virtual void vfunc_74(ActorRef *ref); /* 78 */ virtual bool vfunc_78(); - /* 7c */ virtual void vfunc_7c(); + /* 7c */ virtual void vfunc_7c(ActorRef *ref); /* 80 */ virtual void vfunc_80(); /* 84 */ virtual void vfunc_84(); /* 88 */ virtual void vfunc_88(); /* 8c */ virtual bool vfunc_8c(); - /* 90 */ virtual bool vfunc_90(); - /* 94 */ virtual void vfunc_94(); + /* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2); + /* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2); /* 98 */ virtual bool vfunc_98(); /* 9c */ virtual bool vfunc_9c(); /* a0 */ virtual bool TrySetTransform(Transform *transform); diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp index 497b0699..8c9968a2 100644 --- a/include/Actor/Character/ActorCharacter.hpp +++ b/include/Actor/Character/ActorCharacter.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorRef.hpp" #include "Render/ModelRender.hpp" #include "global.h" #include "nds/math.h" @@ -23,11 +24,11 @@ public: /* 000 (base) */ /* 158 */ UnkStruct_ov000_020d18f4 mUnk_158; /* 1b4 */ unk32 mUnk_1b4; - /* 1b8 */ unk32 (*mUnk_1b8)(unk32); - /* 1bc */ unk32 mUnk_1bc; + /* 1b8 */ bool (*mUnk_1b8)(ActorCharacterBase *); + /* 1bc */ ActorCharacterBase *mUnk_1bc; /* 1c0 */ bool mUnk_1c0; /* 1c1 */ bool mUnk_1c1; - /* 1c2 */ unk8 mUnk_1c2; + /* 1c2 */ bool mUnk_1c2; /* 1c3 */ bool mUnk_1c3; /* 1c4 */ @@ -58,12 +59,12 @@ public: }; struct ActorCharacter_1c4 { - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; + /* 00 */ Vec3p mUnk_00; /* 0c */ unk32 mUnk_0c; /* 10 */ unk32 mUnk_10; /* 14 */ + + ActorCharacter_1c4(); }; class ActorCharacterModel : public ModelRender { @@ -77,8 +78,7 @@ public: /* 6a */ unk16 mUnk_6a; /* 6c */ unk16 mUnk_6c; /* 6e */ unk16 mUnk_6e; - /* 70 */ unk32 mUnk_70; - /* 74 */ unk32 mUnk_74; + /* 70 */ ActorRef mUnk_70; /* 78 */ Vec3p mUnk_78; /* 84 */ unk32 mUnk_84; /* 88 */ unk32 mUnk_88; @@ -88,58 +88,128 @@ public: /* 8f */ unk8 mUnk_8f; /* 90 */ - /* 00 */ virtual ~ActorCharacterModel() override; + /* 00 */ virtual ~ActorCharacterModel() override {} /* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override; /* 40 */ ActorCharacterModel(); + + void func_ov014_0214a92c(Vec3p *param1, Vec3p *param2, s16 angle); + unk32 func_ov014_0214aa0c(Vec3p *param1, s16 angle); }; -class ActorCharacter_288 : public UnkStruct_ov000_020c0c08 { +class ActorCharacter_1d8_b0 : public UnkStruct_ov000_020c0c08 { public: /* 00 (base) */ - /* 24 */ UnkStruct_ov000_020c0c08_04 *mUnk_24; - /* 28 */ PAD(0x28, 0x80); + /* 24 */ UnkStruct_ov000_020c0c08_04 mUnk_24; + /* 44 */ PAD(0x44, 0x80); /* 80 */ - ActorCharacter_288(); + /* 00 */ virtual ~ActorCharacter_1d8_b0() override; + /* 08 */ + + inline ActorCharacter_1d8_b0(); +}; + +struct ActorCharacter_430_04_04 { + /* 00 */ PAD(0x00, 0x04); + /* 04 */ Vec3p mUnk_04; + /* 10 */ PAD(0x10, 0x24); + /* 24 */ +}; + +struct ActorCharacter_430_04 { + /* 00 */ u8 *mUnk_00; + /* 04 */ ActorCharacter_430_04_04 *mUnk_04; + /* 08 */ }; struct ActorCharacter_430 { - /* 00 */ PAD(0x00, 0x18); + /* 00 */ PAD(0x00, 0x4); + /* 04 */ ActorCharacter_430_04 *mUnk_04; + /* 08 */ PAD(0x08, 0xc); + /* 0c */ unk8 mUnk_0c; + /* 0d */ PAD(0x0d, 0x18); /* 18 */ + + ActorCharacter_430(); + ~ActorCharacter_430(); + + bool func_ov000_020c66e4(Vec3p *pos, s16 angle, unk32 param3); + bool func_ov000_020c6794(Vec3p *pos); + void func_ov000_020c6838(Vec3p *pos, unk32 param2, s16 angle, unk32 param4, Vec3p *vel, u16 *pAngle); + bool func_ov000_020c6e30(Vec3p *vec); + void func_ov000_020c6f08(Vec3p *vec); +}; + +struct ActorCharacter_1d8_248 { + /* 00 */ unk32 mUnk_00[2]; + /* 08 */ unk32 mUnk_08; + /* 0c */ PAD(0x0c, 0x0e); + /* 0e */ unk8 mUnk_0e; + /* 0f */ unk8 mUnk_0f; + /* 10 */ + + inline ActorCharacter_1d8_248() { + mUnk_08 = 0; + mUnk_0e = 1; + mUnk_0f = 0; + mUnk_00[0] = -1; + mUnk_00[1] = -1; + } +}; + +class ActorCharacter_1d8 : public UnkStruct_ov000_020c5c2c { +public: + /* 000 (base) */ + /* 020 */ ActorCharacterModel mUnk_020; + /* 0b0 */ ActorCharacter_1d8_b0 mUnk_0b0[2]; + /* 1b0 */ ActorCharacter_1d8_b0 mUnk_1b0; + /* 230 */ unk32 mUnk_230; + /* 234 */ unk32 mUnk_234; + /* 238 */ unk32 mUnk_238; + /* 23c */ unk32 mUnk_23c; + /* 240 */ unk32 mUnk_240; + /* 244 */ unk32 mUnk_244; + /* 248 */ ActorCharacter_1d8_248 mUnk_248; + + /* 00 */ virtual void vfunc_00(unk32 param1, unk32 *param2, unk32 *param3) override; // func_ov014_02145bcc + /* 04 */ virtual void vfunc_04() override; // func_ov014_02146194 + /* 0c */ + + inline ActorCharacter_1d8(void *param1) : + UnkStruct_ov000_020c5c2c(param1, &mUnk_020, &mUnk_0b0[0]), + mUnk_230(0), + mUnk_234(0), + mUnk_238(0), + mUnk_23c(0), + mUnk_240(0x1000), + mUnk_244(0x11f) {} + + void func_ov014_02145cac(); + bool func_ov014_02145f0c(unk32 param1); + + inline bool UnkFunc1(unk32 param1) { + return param1 == mUnk_248.mUnk_00[mUnk_248.mUnk_08]; + } }; class ActorCharacter : public ActorCharacterBase { public: /* 000 (base) */ /* 1c4 */ ActorCharacter_1c4 mUnk_1c4; - /* 1d8 */ UnkStruct_ov000_020c5c2c mUnk_1d8; - /* 1f8 */ ActorCharacterModel mUnk_1f8; - /* 288 */ ActorCharacter_288 mUnk_288[2]; - /* 388 */ ActorCharacter_288 mUnk_388; - /* 408 */ unk32 mUnk_408; - /* 40c */ unk32 mUnk_40c; - /* 410 */ unk32 mUnk_410; - /* 414 */ unk32 mUnk_414; - /* 418 */ unk32 mUnk_418; - /* 41c */ unk32 mUnk_41c; - /* 420 */ unk32 mUnk_420; - /* 424 */ unk32 mUnk_424; - /* 428 */ unk32 mUnk_428; - /* 428 */ PAD(0x42c, 0x42e); - /* 42e */ unk8 mUnk_42e; - /* 42f */ unk8 mUnk_42f; + /* 1d8 */ ActorCharacter_1d8 mUnk_1d8; /* 430 */ ActorCharacter_430 mUnk_430; /* 448 */ unk32 mUnk_448; - /* 44c */ PAD(0x44c, 0x454); + /* 44c */ unk32 mUnk_44c; + /* 450 */ unk32 mUnk_450; /* 454 */ unk32 mUnk_454; /* 458 */ unk32 mUnk_458; - /* 44c */ PAD(0x45c, 0x460); + /* 44c */ unk32 mUnk_45c; /* 460 */ unk32 mUnk_460; /* 464 */ unk32 mUnk_464; - /* 468 */ unk8 mUnk_468; - /* 469 */ unk8 mUnk_469; + /* 468 */ bool mUnk_468; + /* 469 */ bool mUnk_469; /* 46a */ PAD(0x46a, 0x46c); /* 46c */ unk32 mUnk_46c[1]; /* 470 */ @@ -148,44 +218,53 @@ public: /* 08 */ virtual bool Init() override; /* 20 */ virtual void vfunc_20(bool param1) override; /* 40 */ virtual bool IsHitboxTouched(bool param1) override; - /* 68 */ virtual void vfunc_68() override; - /* 74 */ virtual void vfunc_74() override; + /* 74 */ virtual void vfunc_74(ActorRef *ref) override; /* 78 */ virtual bool vfunc_78() override; - /* 7c */ virtual void vfunc_7c() override; + /* 7c */ virtual void vfunc_7c(ActorRef *ref) override; /* 80 */ virtual void vfunc_80() override; /* 84 */ virtual void vfunc_84() override; - /* 90 */ virtual bool vfunc_90() override; - /* 94 */ virtual void vfunc_94() override; + /* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2) override; + /* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2) override; /* 98 */ virtual bool vfunc_98() override; /* 9c */ virtual bool vfunc_9c() override; /* c8 */ virtual void vfunc_c8() override; /* cc */ virtual void vfunc_cc() override; /* d0 */ virtual void vfunc_d0() override; /* ec */ virtual void vfunc_ec(unk32 param1); - /* f0 */ virtual void vfunc_f0(unk32 param1); + /* f0 */ virtual void vfunc_f0(unk32 param1, unk32 param2); /* f4 */ ActorCharacter(); void func_ov014_02144d94(); void func_ov014_02144dec(); - void func_ov014_02144e14(); - void func_ov014_02144e28(); - void func_ov014_02144e3c(); - void func_ov014_02144e58(); - void func_ov014_02144e74(); + bool func_ov014_02144e14(); + bool func_ov014_02144e28(); + bool func_ov014_02144e3c(); + bool func_ov014_02144e58(); + bool func_ov014_02144e74(); void func_ov014_02145178(); void func_ov014_021451f0(unk32 *param1); void func_ov014_02145258(); unk32 func_ov014_021452b0(); unk32 func_ov014_02145318(); - void func_ov014_021453f4(); - void func_ov014_02145414(); - void func_ov014_0214548c(); + void func_ov014_021453f4(unk32 param1); + void func_ov014_02145414(unk32 param1, unk32 param2); + void func_ov014_0214548c(unk32 param1); void func_ov014_02145508(); - void func_ov014_0214552c(); + static bool func_ov014_02145520(ActorCharacterBase *actor); + bool func_ov014_0214552c(); void func_ov014_0214591c(); + + inline unk32 UnkInline1() { + unk32 ret = 1; + if (mUnk_458 != -1) { + ret = mUnk_458; + mUnk_458 = -1; + } + return ret; + } }; class ActorGenericCharacter : public ActorCharacter { diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp index 4434c1ff..8abe0f62 100644 --- a/include/Actor/Navi/ActorNaviBase.hpp +++ b/include/Actor/Navi/ActorNaviBase.hpp @@ -43,7 +43,7 @@ public: class ActorNaviBase_Unk3 : public ModelRender { public: /* 00 */ virtual ~ActorNaviBase_Unk3() {} - /* 3c */ virtual void vfunc_3c() override; + /* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override; /* 40 */ ActorNaviBase_Unk3(ItemModel *param1); @@ -85,12 +85,12 @@ public: /* 30 */ virtual unk32 vfunc_30() override; /* 34 */ virtual void GetOffsetPos(Vec3p *pos) override; /* 38 */ virtual unk32 vfunc_38() override; - /* 74 */ virtual void vfunc_74() override; + /* 74 */ virtual void vfunc_74(ActorRef *) override; /* 78 */ virtual bool vfunc_78() override; /* 80 */ virtual void vfunc_80() override; /* 84 */ virtual void vfunc_84() override; - /* 90 */ virtual bool vfunc_90() override; - /* 94 */ virtual void vfunc_94() override; + /* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2) override; + /* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2) override; /* b4 */ virtual FairyId GetFairyId() = 0; /* b8 */ virtual s32 vfunc_b8(); /* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3); diff --git a/include/Actor/Player/ActorRope.hpp b/include/Actor/Player/ActorRope.hpp index 65e7fa50..728cc662 100644 --- a/include/Actor/Player/ActorRope.hpp +++ b/include/Actor/Player/ActorRope.hpp @@ -14,7 +14,7 @@ public: /* c */ /* 00 */ virtual ~ActorRope_Unk_0219a3b0() override; - /* 08 */ virtual void vfunc_08(unk16 *param1) override; + /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1) override; /* 10 */ virtual bool vfunc_10(s32 *param1) override; /* 1c */ diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index f4c550a0..a67f32c8 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -117,12 +117,21 @@ struct FlagsData { /* 40 */ }; -struct astruct_23 { +struct UnkStruct_ov000_0209a50c { /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0c */ unk32 mUnk_0c; - /* 10 */ unk32 mUnk_10; + /* 08 */ unk8 mUnk_08; + /* 09 */ unk8 mUnk_09; + /* 0a */ unk8 mUnk_0a; + /* 0b */ unk8 mUnk_0b; + /* 0c */ unk8 mUnk_0c; + /* 0d */ unk8 mUnk_0d; + /* 0e */ unk8 mUnk_0e; + /* 0f */ unk8 mUnk_0f; + /* 10 */ unk8 mUnk_10; + /* 11 */ unk8 mUnk_11; + /* 12 */ unk8 mUnk_12; + /* 13 */ unk8 mUnk_13; /* 14 */ unk8 mUnk_14; /* 15 */ unk8 mUnk_15; /* 16 */ bool mUnk_16; @@ -133,7 +142,12 @@ struct astruct_23 { /* 1c */ unk16 mUnk_1c; /* 1e */ unk8 mUnk_1e; /* 1f */ unk8 mUnk_1f; - /* 20 */ unk8 mUnk_20[0x94 - 0x20]; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2c */ PAD(0x2c, 0x34); + /* 34 */ unk32 mUnk_34; + /* 38 */ PAD(0x38, 0x94); /* 94 */ unk32 mUnk_94; /* 98 */ unk16 mUnk_98; /* 9a */ unk16 mUnk_9a; @@ -146,8 +160,8 @@ struct astruct_23 { /* ac */ unk32 mUnk_ac; /* b0 */ - astruct_23(); - ~astruct_23(); + UnkStruct_ov000_0209a50c(); + ~UnkStruct_ov000_0209a50c(); }; struct AdventureFlags_44 { @@ -156,7 +170,7 @@ struct AdventureFlags_44 { bool func_ov000_02098c68(); bool func_ov000_02098d20(); bool func_ov000_02098fa4(s32 param1); - bool func_ov000_020990a4(astruct_23 *param1); + bool func_ov000_020990a4(UnkStruct_ov000_0209a50c *param1); s32 func_ov000_0209907c(); }; @@ -178,14 +192,14 @@ public: bool func_ov00_02097750(); bool Get(AdventureFlag flag); void Set(AdventureFlag flag, bool value); - void func_ov00_02097810(s32 param1, astruct_23 *param2); + unk32 func_ov00_02097810(UnkStruct_ov000_0209a50c *param2); unk32 func_ov00_02097968(unk32 param1); unk32 func_ov00_02097a44(unk32 param1, s32 param2); bool func_ov00_02097b9c(s32 param1); bool func_ov00_02097bac(); bool func_ov00_02097bbc(); bool func_ov00_02097bcc(s32 param1); - bool func_ov00_02097bcc(astruct_23 *param1); + bool func_ov00_02097bcc(UnkStruct_ov000_0209a50c *param1); s32 func_ov00_02097c08(); bool Get_FlagsUnk_30_Flag(s32 index); u8 Get_FlagsUnk_49(s32 index); diff --git a/include/Unknown/UnkStruct_ov000_020c5c2c.hpp b/include/Unknown/UnkStruct_ov000_020c5c2c.hpp index 2b47f19b..a80d2a95 100644 --- a/include/Unknown/UnkStruct_ov000_020c5c2c.hpp +++ b/include/Unknown/UnkStruct_ov000_020c5c2c.hpp @@ -3,6 +3,33 @@ #include "global.h" #include "types.h" -struct UnkStruct_ov000_020c5c2c { - PAD(0x00, 0x20); +#include "Actor/Actor.hpp" +#include "Render/ModelRender.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_0202e1a0.hpp" +#include "Unknown/UnkStruct_ov000_020c0c08.hpp" + +struct UnkStruct_ov000_020c5c2c_10 { + /* 00 */ PAD(0x00, 0x0c); + /* 0c */ UnkStruct_0202e1a0 mUnk_0c; + /* 24 */ +}; + +class UnkStruct_ov000_020c5c2c : public SysObject { +public: + /* 00 (vtable) */ + /* 04 */ PAD(0x04, 0x10); + /* 10 */ UnkStruct_ov000_020c5c2c_10 *mUnk_10; + /* 14 */ PAD(0x14, 0x1c); + /* 1c */ Actor *mActor; + /* 20 */ + + /* 00 */ virtual void vfunc_00(unk32 param1, unk32 *param2, unk32 *param3); // func_ov000_020c5d34 + /* 04 */ virtual void vfunc_04(); // func_ov000_020c5e54 + /* 08 */ virtual void vfunc_08(); // func_ov000_020c5e58 + /* 0c*/ + + UnkStruct_ov000_020c5c2c(void *param1, ModelRender *param2, UnkStruct_ov000_020c0c08 *param3); + + void func_ov000_020c5f1c(); }; diff --git a/include/Unknown/UnkStruct_ov000_020e8b08.hpp b/include/Unknown/UnkStruct_ov000_020e8b08.hpp new file mode 100644 index 00000000..0ff79ace --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020e8b08.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include "Actor/ActorRef.hpp" +#include "global.h" +#include "types.h" + +struct UnkStruct_ov000_020e8b08 { + /* 00 */ PAD(0x00, 0x20); + /* 20 */ ActorRef mUnk_20[1]; // more than 1, unclear how many + /* 28 */ PAD(0x28, 0x55); + /* 55 */ u8 mUnk_55; + /* 56 */ +}; + +extern UnkStruct_ov000_020e8b08 *data_ov000_020e8b08; diff --git a/libs/nds/include/nds/math.h b/libs/nds/include/nds/math.h index c021bc0f..3ad44511 100644 --- a/libs/nds/include/nds/math.h +++ b/libs/nds/include/nds/math.h @@ -145,6 +145,12 @@ inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) { out->z = vec->z; } +inline void Vec3p_Set(Vec3p *vec, q20 x, q20 y, q20 z) { + vec->x = x; + vec->y = y; + vec->z = z; +} + void Mat2p_InitIdentity(Mat2p *m); void Mat2p_InitRotation(Mat2p *m, q20 sin, q20 cos); void Mat2p_Multiply(Mat2p *a, Mat2p *b, Mat2p *out); diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 19dbe4f3..9e5b4202 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -239,8 +239,8 @@ ARM bool Actor::vfunc_70() { return true; } -ARM void Actor::vfunc_74() {} -ARM void Actor::vfunc_7c() {} +ARM void Actor::vfunc_74(ActorRef *ref) {} +ARM void Actor::vfunc_7c(ActorRef *ref) {} ARM bool Actor::vfunc_78() { return true; @@ -254,11 +254,11 @@ ARM bool Actor::vfunc_8c() { return true; } -ARM bool Actor::vfunc_90() { +ARM bool Actor::vfunc_90(unk32 param1, unk32 param2) { return true; } -ARM void Actor::vfunc_94() {} +ARM void Actor::vfunc_94(unk32 param1, unk32 param2) {} ARM bool Actor::vfunc_98() {} ARM bool Actor::vfunc_9c() {} diff --git a/src/00_Core/Actor/Navi/ActorNaviBase.cpp b/src/00_Core/Actor/Navi/ActorNaviBase.cpp index 0bbe0f8a..3e907fd4 100644 --- a/src/00_Core/Actor/Navi/ActorNaviBase.cpp +++ b/src/00_Core/Actor/Navi/ActorNaviBase.cpp @@ -1,4 +1,5 @@ #include "Actor/Navi/ActorNaviBase.hpp" +#include "Actor/ActorRef.hpp" u16 ActorNaviBase::vfunc_c4() {} u16 ActorNaviBase::vfunc_c8() {} @@ -36,11 +37,11 @@ void ActorNaviBase::vfunc_80() {} void ActorNaviBase::vfunc_84() {} bool ActorNaviBase::vfunc_78() {} bool ActorNaviBase::vfunc_bc(unk32 param1, unk8 param2, s32 param3) {} -void ActorNaviBase::vfunc_74() {} +void ActorNaviBase::vfunc_74(ActorRef *ref) {} void ActorNaviBase::func_ov000_020baca8(Vec3p *param1, unk32 param2) {} void ActorNaviBase::func_ov000_020bad18() {} -bool ActorNaviBase::vfunc_90() {} -void ActorNaviBase::vfunc_94() {} +bool ActorNaviBase::vfunc_90(unk32 param1, unk32 param2) {} +void ActorNaviBase::vfunc_94(unk32 param1, unk32 param2) {} void ActorNaviBase::func_ov000_020bb0ac() {} void ActorNaviBase::func_ov000_020bb0e0() {} void ActorNaviBase::vfunc_ec() {} diff --git a/src/00_Core/Save/AdventureFlags.cpp b/src/00_Core/Save/AdventureFlags.cpp index 7851fd62..59ed44c3 100644 --- a/src/00_Core/Save/AdventureFlags.cpp +++ b/src/00_Core/Save/AdventureFlags.cpp @@ -75,7 +75,7 @@ ARM void AdventureFlags::Set(AdventureFlag flag, bool value) { } } -ARM void AdventureFlags::func_ov00_02097810(s32 param1, astruct_23 *param2) {} +ARM unk32 AdventureFlags::func_ov00_02097810(UnkStruct_ov000_0209a50c *param2) {} // non-matching ARM unk32 AdventureFlags::func_ov00_02097968(unk32 param1) { @@ -83,7 +83,7 @@ ARM unk32 AdventureFlags::func_ov00_02097968(unk32 param1) { return -1; } - astruct_23 aStack_c0; + UnkStruct_ov000_0209a50c aStack_c0; aStack_c0.mUnk_16 = data_027e0db0.mUnk_04 > 0; FlagsUnk2 FStack_d8; @@ -120,7 +120,7 @@ ARM bool AdventureFlags::func_ov00_02097bcc(s32 param1) { return this->mUnk_44->func_ov000_02098fa4(param1); } -ARM bool AdventureFlags::func_ov00_02097bcc(astruct_23 *param1) { +ARM bool AdventureFlags::func_ov00_02097bcc(UnkStruct_ov000_0209a50c *param1) { if (this->func_ov00_02097738()) { return this->mUnk_44->func_ov000_020990a4(param1); } diff --git a/src/14_Land/Actor/Character/ActorCharacter.cpp b/src/14_Land/Actor/Character/ActorCharacter.cpp index b3d2b273..1b679778 100644 --- a/src/14_Land/Actor/Character/ActorCharacter.cpp +++ b/src/14_Land/Actor/Character/ActorCharacter.cpp @@ -1,49 +1,416 @@ #include "Actor/Character/ActorCharacter.hpp" +#include "Physics/Cylinder.hpp" +#include "Player/TouchControl.hpp" +#include "Save/AdventureFlags.hpp" #include "Unknown/UnkStruct_ov000_020c0c08.hpp" +#include "Unknown/UnkStruct_ov000_020e8b08.hpp" +#include "nds/math.h" -void ActorCharacter::func_ov014_02144d94() {} -void ActorCharacter::func_ov014_02144dec() {} -void ActorCharacter::func_ov014_02144e14() {} -void ActorCharacter::func_ov014_02144e28() {} -void ActorCharacter::func_ov014_02144e3c() {} -void ActorCharacter::func_ov014_02144e58() {} -void ActorCharacter::func_ov014_02144e74() {} +extern "C" void func_ov000_0209a4f4(UnkStruct_ov000_0209a50c *); +ARM void ActorCharacter::func_ov014_02144d94() { + UnkStruct_ov000_0209a50c UStack_b8; + UStack_b8.mUnk_04 = -1; + UStack_b8.mUnk_09 = 0x32; + UStack_b8.mUnk_0a = 0; + UStack_b8.mUnk_0b = 0; + mUnk_1b4 = gAdventureFlags->func_ov00_02097810(&UStack_b8); +} -ActorCharacter_288::ActorCharacter_288() : - UnkStruct_ov000_020c0c08(mUnk_24, NULL) {} -ActorCharacter::ActorCharacter() {} +ARM void ActorCharacter::func_ov014_02144dec() { + gAdventureFlags->func_ov00_02097bcc(mUnk_1b4); + mUnk_1b4 = -1; +} -ActorCharacter::~ActorCharacter() {} -bool ActorCharacter::Init() {} -void ActorCharacter::vfunc_20(bool param1) {} +ARM bool ActorCharacter::func_ov014_02144e14() { + return mUnk_020.mUnk_00[1] != 0; +} -void ActorCharacter::func_ov014_02145178() {} -void ActorCharacter::func_ov014_021451f0(unk32 *param1) {} -void ActorCharacter::func_ov014_02145258() {} -unk32 ActorCharacter::func_ov014_021452b0() {} -unk32 ActorCharacter::func_ov014_02145318() {} -void ActorCharacter::func_ov014_021453f4() {} -void ActorCharacter::func_ov014_02145414() {} -void ActorCharacter::func_ov014_0214548c() {} -void ActorCharacter::func_ov014_02145508() {} -static void func_ov014_02145520(ActorCharacter *actor) {} -void ActorCharacter::func_ov014_0214552c() {} +ARM bool ActorCharacter::func_ov014_02144e28() { + return mUnk_020.mUnk_00[3] != 0; +} -void ActorCharacter::vfunc_80() {} -void ActorCharacter::vfunc_84() {} -void ActorCharacter::vfunc_cc() {} -void ActorCharacter::vfunc_c8() {} -bool ActorCharacter::vfunc_78() {} -void ActorCharacter::vfunc_74() {} -void ActorCharacter::vfunc_7c() {} -bool ActorCharacter::vfunc_90() {} -void ActorCharacter::vfunc_94() {} -bool ActorCharacter::vfunc_98() {} -void ActorCharacter::vfunc_d0() {} -bool ActorCharacter::vfunc_9c() {} -void ActorCharacter::vfunc_ec(unk32 param1) {} -void ActorCharacter::vfunc_f0(unk32 param1) {} +ARM bool ActorCharacter::func_ov014_02144e3c() { + return gAdventureFlags->Get(mUnk_020.mUnk_00[1]); +} -void ActorCharacter::func_ov014_0214591c() {} +ARM bool ActorCharacter::func_ov014_02144e58() { + return gAdventureFlags->Get(mUnk_020.mUnk_00[3]); +} -bool ActorCharacter::IsHitboxTouched(bool param1) {} \ No newline at end of file +ARM bool ActorCharacter::func_ov014_02144e74() { + return mInactive && this->func_ov014_02144e58(); +} + +ARM ActorCharacter_1d8_b0::ActorCharacter_1d8_b0() : + UnkStruct_ov000_020c0c08(&mUnk_24, NULL) {} + +extern "C" void Fill32(unk32, unk32 *, unk32); +ARM ActorCharacter::ActorCharacter() : + mUnk_1d8(this) { + mUnk_448 = 3; + mUnk_454 = -1; + mUnk_458 = -1; + mUnk_460 = 0x153; + mUnk_464 = 0x71; + mUnk_468 = 0; + mUnk_469 = 0; + Fill32(0, mUnk_46c, 4); + Fill32(0, mUnk_46c, 4); +} + +ARM ActorCharacter::~ActorCharacter() {} + +ARM bool ActorCharacter::Init() { + ActorCharacterBase::Init(); + return true; +} + +extern unk32 data_ov000_020e9370; +extern "C" void func_ov005_02102c2c(unk32 *, unk32, Vec3p *, unk32, unk32, unk32, unk32, unk32, unk32, unk32); +ARM void ActorCharacter::vfunc_20(bool param1) { + if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) { + mUnk_1d8.func_ov000_020c5f1c(); + if (mUnk_45c > 0) { + func_ov005_02102c2c(&data_ov000_020e9370, 0, &mPos, mUnk_45c, mUnk_45c, 0, 0x1f, 1, 1, 1); + } + } +} + +struct UnkStruct_ov005_021082e4 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk32 mUnk_10; + /* 14 */ +}; + +extern unk32 data_027e0ff8; +extern "C" void func_ov005_021082e4(unk32, ActorRef *, Vec3p *, Vec3p *, UnkStruct_ov005_021082e4 *, unk32, unk32); +ARM void ActorCharacter::func_ov014_02145178() { + UnkStruct_ov005_021082e4 unk; + unk.mUnk_0c = 0; + unk.mUnk_00 = 0; + unk.mUnk_04 = 0; + unk.mUnk_08 = 0; + unk32 size = mHitbox.size; + unk.mUnk_10 = size * 2; + unk.mUnk_00 = 0; + unk.mUnk_04 = size; + unk.mUnk_0c = size; + unk.mUnk_08 = 0; + func_ov005_021082e4(data_027e0ff8, &mRef, &mPos, &mPrevPos, &unk, mUnk_448, -1); +} + +ARM void ActorCharacter::func_ov014_021451f0(unk32 *param1) { + unk32 iVar1 = param1[0]; + mHitbox.pos.x = 0; + mHitbox.pos.y = iVar1; + mHitbox.pos.z = 0; + mHitbox.size = iVar1; + mUnk_08c.pos.x = mHitbox.pos.x; + mUnk_08c.pos.y = mHitbox.pos.y; + mUnk_08c.pos.z = mHitbox.pos.z; + mUnk_08c.size = mHitbox.size; + mUnk_0a4.mUnk_04.pos.x = 0; + mUnk_0a4.mUnk_04.pos.y = iVar1; + mUnk_0a4.mUnk_04.pos.z = 0; + mUnk_0a4.mUnk_04.size = iVar1 + 0x1000; + mUnk_45c = param1[1]; + mYOffset = param1[2]; +} + +extern "C" bool func_ov000_020ccf0c(void *, ActorRef *); +ARM void ActorCharacter::func_ov014_02145258() { + Vec3p vel = mVel; + if (func_ov000_020ccf0c(&mUnk_1c4, &mRef)) { + Vec3p_Add(&vel, &mUnk_1c4.mUnk_00, &vel); + } + Vec3p_Add(&mPos, &vel, &mPos); +} + +ARM unk32 ActorCharacter::func_ov014_021452b0() { + Vec3p offsetPos; + mUnk_1d8.mActor->GetOffsetPos(&offsetPos); + mUnk_1d8.mUnk_020.func_ov014_0214a92c(&offsetPos, &mUnk_1d8.mActor->mPos, mUnk_1d8.mActor->mAngle); + mVel.x = 0; + mVel.z = 0; + this->ApplyGravity(); + this->func_ov014_02145258(); + this->func_ov00_020c3094(); + return 0; +} + +extern "C" void ApproachAngle_thunk(u16 *src, unk32 dst, s16 param3); +ARM unk32 ActorCharacter::func_ov014_02145318() { + Vec3p offsetPos; + mUnk_1d8.mActor->GetOffsetPos(&offsetPos); + unk32 angle = mUnk_1d8.mUnk_020.func_ov014_0214aa0c(&offsetPos, mUnk_1d8.mActor->mAngle); + + if (!mUnk_468) { + s16 angleDiff = angle - (s16) mAngle; + if (angleDiff < -0x7fff) { + angleDiff = (u32) -0x7fff >> 0x11; + } else if (angleDiff < 0) { + angleDiff = -angleDiff; + } + + unk32 speed = (angleDiff << 0xa) >> 0xc; + if (speed > FLOAT_TO_Q20(0.6667)) { + speed = FLOAT_TO_Q20(0.6667); + } else if (speed < FLOAT_TO_Q20(0.0888)) { + speed = FLOAT_TO_Q20(0.0888); + } + + ApproachAngle_thunk(&this->mAngle, angle, speed); + } + + mVel.x = 0; + mVel.z = 0; + this->ApplyGravity(); + this->func_ov014_02145258(); + this->func_ov00_020c3094(); + return 0; +} + +ARM void ActorCharacter::func_ov014_021453f4(unk32 param1) { + mUnk_430.func_ov000_020c66e4(&mPos, mAngle, param1); +} + +ARM void ActorCharacter::func_ov014_02145414(unk32 param1, unk32 param2) { + Vec3p offsetPos; + mUnk_430.func_ov000_020c6838(&mPos, param1, mAngle, param2, &mVel, &mAngle); + mUnk_1d8.mActor->GetOffsetPos(&offsetPos); + mUnk_1d8.mUnk_020.func_ov014_0214a92c(&offsetPos, &mUnk_1d8.mActor->mPos, mUnk_1d8.mActor->mAngle); + this->ApplyGravity(); + this->func_ov014_02145258(); +} + +ARM void ActorCharacter::func_ov014_0214548c(unk32 param1) { + Vec3p vec; + if (!mUnk_430.func_ov000_020c66e4(&mPos, mAngle, param1)) { + return; + } + if (!mUnk_430.func_ov000_020c6e30(&vec)) { + return; + } + mPos.x = vec.x; + mPos.y = vec.y; + mPos.z = vec.z; + mPrevPos.x = vec.x; + mPrevPos.y = vec.y; + mPrevPos.z = vec.z; +} + +ARM void ActorCharacter::func_ov014_02145508() { + mUnk_430.func_ov000_020c6f08(&mPos); +} + +ARM bool ActorCharacter::func_ov014_02145520(ActorCharacterBase *actor) { + return ((ActorCharacter *) actor)->func_ov014_0214552c(); +} + +ARM bool ActorCharacter::func_ov014_0214552c() { + mUnk_1d8.func_ov014_02145cac(); + this->func_ov014_02145414(mUnk_460, 0xaab); + this->func_ov00_020c3094(); + bool result = mUnk_430.func_ov000_020c6794(&mPos); + if (result) { + mUnk_460 = 0x153; + } + return result; +} + +ARM void ActorCharacter::vfunc_80() { + ActorCharacterBase::vfunc_80(); + if (mUnk_469) { + return; + } + mUnk_44c = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08]; + mUnk_1d8.func_ov014_02145f0c(0); +} + +ARM void ActorCharacter::vfunc_84() { + ActorCharacterBase::vfunc_84(); + if (mUnk_469) { + return; + } + mUnk_1d8.mUnk_020.mUnk_70.Reset(); + mUnk_1d8.func_ov014_02145f0c(mUnk_44c); +} + +// non-matching +ARM void ActorCharacter::vfunc_cc() { + bool unk; + ActorCharacter_1d8 *pUnk_1d8 = &mUnk_1d8; + if (mUnk_454 == pUnk_1d8->mUnk_248.mUnk_00[pUnk_1d8->mUnk_248.mUnk_08] && mUnk_1d8.mUnk_10->mUnk_0c.func_0202e58c()) { + unk = data_ov000_020e8b08 != NULL && mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id; + this->vfunc_f0(unk, 1); + mUnk_454 = -1; + } + mUnk_46c[0] &= ~1; +} + +ARM void ActorCharacter::vfunc_c8() { + this->func_ov014_02145318(); + mUnk_1d8.func_ov014_02145cac(); +} + +ARM bool ActorCharacter::vfunc_78() { + return true; +} + +ARM void ActorCharacter::vfunc_74(ActorRef *ref) { + int iVar1; + int iVar2; + + if (ref->id == mRef.id) { + mUnk_1d8.mUnk_020.mUnk_70.Reset(); + if (mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08] == 2) { + return; + } + if (mUnk_469) { + return; + } + if ((mUnk_46c[0] & 1U) != 0) { + return; + } + mUnk_1d8.func_ov014_02145f0c(2); + } else { + mUnk_1d8.mUnk_020.mUnk_70.id = ref->id; + mUnk_1d8.mUnk_020.mUnk_70.index = ref->index; + if (mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08] == 0) { + return; + } + if (mUnk_469) { + return; + } + if ((mUnk_46c[0] & 1U) != 0) { + return; + } + mUnk_1d8.func_ov014_02145f0c(0); + } +} + +ARM void ActorCharacter::vfunc_7c(ActorRef *ref) { + if (ref->id != mRef.id) { + mUnk_1d8.mUnk_020.mUnk_70.id = ref->id; + mUnk_1d8.mUnk_020.mUnk_70.index = ref->index; + } else { + mUnk_1d8.mUnk_020.mUnk_70.Reset(); + } +} + +// non-matching +ARM bool ActorCharacter::vfunc_90(unk32 param1, unk32 param2) { + u32 iVar1; + u32 iVar2; + + if (!mUnk_1c2) { + this->func_ov014_021453f4((unk8) param1); + mUnk_430.mUnk_0c = param2; + if (mUnk_1b8 == NULL) { + mUnk_1b8 = func_ov014_02145520; + mUnk_1bc = this; + } + mUnk_450 = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08]; + mUnk_1d8.func_ov014_02145f0c(this->UnkInline1()); + mUnk_1c2 = true; + } + + bool result = mUnk_1b8 != func_ov014_02145520; + if (result) { + mUnk_1c2 = false; + mUnk_1d8.func_ov014_02145f0c(mUnk_450); + } + return result; +} + +ARM void ActorCharacter::vfunc_94(unk32 param1, unk32 param2) { + ActorCharacter_430_04 *unk1; + ActorCharacter_430_04_04 *unk2; + + this->func_ov014_021453f4((unk8) param1); + unk1 = mUnk_430.mUnk_04; + if (param2 == 0) { + unk2 = &unk1->mUnk_04[unk1->mUnk_00[1] - 1]; + } else { + unk2 = &unk1->mUnk_04[0]; + } + + Vec3p vec; + Vec3p_Set(&vec, unk2->mUnk_04.x, unk2->mUnk_04.y, unk2->mUnk_04.z); + vec.z = unk2->mUnk_04.z; + + mPos.x = vec.x; + mPos.y = vec.y; + mPos.z = vec.z; + mPrevPos.x = vec.x; + mPrevPos.y = vec.y; + mPrevPos.z = vec.z; +} + +ARM bool ActorCharacter::vfunc_98() { + mUnk_1c3 = true; + mUnk_44c = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08]; + return mUnk_1d8.func_ov014_02145f0c(0); +} + +ARM void ActorCharacter::vfunc_d0() { + mUnk_1d8.func_ov014_02145cac(); +} + +ARM bool ActorCharacter::vfunc_9c() { + mUnk_1c3 = false; + return mUnk_1d8.func_ov014_02145f0c(mUnk_44c); +} + +ARM void ActorCharacter::vfunc_ec(unk32 param1) { + mUnk_1d8.func_ov014_02145f0c(param1); + mUnk_46c[0] |= 1; + if (mUnk_1d8.mUnk_10->mUnk_0c.mUnk_00 == 1) { + mUnk_454 = param1; + } +} + +ARM void ActorCharacter::vfunc_f0(unk32 param1, unk32 param2) { + mUnk_1d8.func_ov014_02145f0c(param1 ? 2 : 0); +} + +ARM void ActorCharacter::func_ov014_0214591c() { + if ((mUnk_46c[0] & 1U) == 0) { + bool unk = data_ov000_020e8b08 == NULL || mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id; + mUnk_1d8.func_ov014_02145f0c(unk ? 2 : 0); + } +} + +struct UnkStruct_ov014_02145974 { + /* 00 */ PAD(0x00, 0x18); + /* 18 */ Cylinder mUnk_18; + /* 28 */ Cylinder mUnk_28; + /* 38 */ +}; + +ARM bool ActorCharacter::IsHitboxTouched(bool param1) { + UnkStruct_ov014_02145974 sp_0; + { + sp_0.mUnk_28.size = (mYOffset + (mYOffset << 1)) >> 3; + Vec3p pos = {mPos.x, mPos.y, mPos.z}; + sp_0.mUnk_28.pos = pos; + sp_0.mUnk_28.pos.y += mYOffset >> 1; + } + { + sp_0.mUnk_18.size = FLOAT_TO_Q20(0.3); + Vec3p pos = {mPos.x, mPos.y, mPos.z}; + sp_0.mUnk_18.pos = pos; + sp_0.mUnk_18.pos.y += mYOffset + FLOAT_TO_Q20(0.3); + } + + if (param1) { + return TouchControl::func_0202b864(&sp_0.mUnk_28.pos, sp_0.mUnk_28.size, 8) || + TouchControl::func_0202b864(&sp_0.mUnk_18.pos, sp_0.mUnk_18.size, 8); + } else { + return TouchControl::func_0202b894(&sp_0.mUnk_28.pos, sp_0.mUnk_28.size, 8) || + TouchControl::func_0202b894(&sp_0.mUnk_18.pos, sp_0.mUnk_18.size, 8); + } +} diff --git a/src/57_Rope/Actor/Player/ActorRope.cpp b/src/57_Rope/Actor/Player/ActorRope.cpp index bbcf4115..45e8925b 100644 --- a/src/57_Rope/Actor/Player/ActorRope.cpp +++ b/src/57_Rope/Actor/Player/ActorRope.cpp @@ -2,7 +2,7 @@ ActorRope_Unk_0219a3b0 gUnk_0219a3b0; -void ActorRope_Unk_0219a3b0::vfunc_08(unk16 *param1) {} +bool ActorRope_Unk_0219a3b0::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) {} bool ActorRope_Unk_0219a3b0::vfunc_10(s32 *param1) {} ActorRope::ActorRope() {} bool ActorRope::Init() {}