From d02c870d1dbe8c9b5e8b3acbb3b5bfff53ad8d03 Mon Sep 17 00:00:00 2001 From: Aetias <144526980+AetiasHax@users.noreply.github.com> Date: Sat, 9 May 2026 16:31:17 +0200 Subject: [PATCH] ActorCharacterBase OK (#161) * ActorCharacterBase OK * Fix broken matches --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/eur/arm9/overlays/ov014/delinks.txt | 2 + config/eur/arm9/overlays/ov014/relocs.txt | 10 +- config/eur/arm9/overlays/ov014/symbols.txt | 24 +- config/eur/arm9/symbols.txt | 4 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov014/delinks.txt | 2 + config/usa/arm9/overlays/ov014/relocs.txt | 10 +- config/usa/arm9/overlays/ov014/symbols.txt | 24 +- config/usa/arm9/symbols.txt | 4 +- include/Actor/Actor.hpp | 4 +- include/Actor/Character/ActorCharacter.hpp | 26 ++- include/Message/MessageManager.hpp | 2 +- include/Unknown/UnkStruct_02037750.hpp | 6 +- include/Unknown/UnkStruct_ov000_020d18f4.hpp | 2 +- src/00_Core/Actor/Actor.cpp | 2 +- .../Actor/Character/ActorCharacterBase.cpp | 220 +++++++++++++++--- src/Main/Message/MessageManager.cpp | 2 +- src/Main/Unknown/UnkStruct_02037750.cpp | 4 +- 19 files changed, 265 insertions(+), 87 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index f6f84a60..b0efe540 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2751,7 +2751,7 @@ _ZN5Actor4GrabEv kind:function(arm,size=0x1c) addr:0x020c18a8 _ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c18c4 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c18fc _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c1904 -_ZN5Actor10SetUnk_11cEc kind:function(arm,size=0x8) addr:0x020c1908 +_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 diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt index fb52d807..dd2dfac8 100644 --- a/config/eur/arm9/overlays/ov014/delinks.txt +++ b/config/eur/arm9/overlays/ov014/delinks.txt @@ -22,7 +22,9 @@ src/14_Land/Actor/Player/ActorRefill.cpp: .bss start:0x0215af94 end:0x0215b034 src/14_Land/Actor/Character/ActorCharacterBase.cpp: + complete .text start:0x021447f8 end:0x02144d94 + .data start:0x021594b8 end:0x021595ac src/14_Land/Actor/Character/ActorCharacter.cpp: .text start:0x02144d94 end:0x02145a74 diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index a64144fd..49babc8e 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -4513,22 +4513,22 @@ from:0x021447e4 kind:arm_call_thumb to:0x020a95ec module:overlay(0) from:0x021447ec kind:arm_call to:0x0202ea0c module:main from:0x02144908 kind:arm_call to:0x020c1554 module:overlay(0) from:0x0214491c kind:arm_call to:0x020d18f4 module:overlay(0) -from:0x02144948 kind:load to:0x021594c0 module:overlay(14) +from:0x02144948 kind:load to:0x021594b8 module:overlay(14) add:0x8 from:0x02144970 kind:arm_call to:0x02036d4c module:main from:0x02144978 kind:arm_call to:0x020d1980 module:overlay(0) from:0x02144980 kind:arm_call to:0x020c1730 module:overlay(0) -from:0x0214498c kind:load to:0x021594c0 module:overlay(14) +from:0x0214498c kind:load to:0x021594b8 module:overlay(14) add:0x8 from:0x02144990 kind:load to:0x027e0c68 module:dtcm from:0x021449b8 kind:arm_call to:0x02036d4c module:main from:0x021449c0 kind:arm_call to:0x020d1980 module:overlay(0) from:0x021449c8 kind:arm_call to:0x020c1730 module:overlay(0) from:0x021449d0 kind:arm_call to:0x0202ea0c module:main -from:0x021449dc kind:load to:0x021594c0 module:overlay(14) +from:0x021449dc kind:load to:0x021594b8 module:overlay(14) add:0x8 from:0x021449e0 kind:load to:0x027e0c68 module:dtcm from:0x02144a08 kind:arm_call to:0x02036d4c module:main from:0x02144a10 kind:arm_call to:0x020d1980 module:overlay(0) from:0x02144a18 kind:arm_call to:0x020c1730 module:overlay(0) -from:0x02144a24 kind:load to:0x021594c0 module:overlay(14) +from:0x02144a24 kind:load to:0x021594b8 module:overlay(14) add:0x8 from:0x02144a28 kind:load to:0x027e0c68 module:dtcm from:0x02144a7c kind:load to:0x021447f8 module:overlay(14) from:0x02144a80 kind:load to:0x0214480c module:overlay(14) @@ -4574,7 +4574,7 @@ from:0x02144f44 kind:arm_call_thumb to:0x020c0c08 module:overlay(0) 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:0x021595b4 module:overlay(14) +from:0x02144ff8 kind:load to:0x021595ac module:overlay(14) add:0x8 from:0x02144ffc kind:load to:0x021596cc module:overlay(14) from:0x02145000 kind:load to:0x020a9b6d module:overlay(0) from:0x02145004 kind:load to:0x02144eb0 module:overlay(14) diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index a5b3a461..11661c0b 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1061,16 +1061,16 @@ func_ov014_02144750 kind:function(arm,size=0x38) addr:0x02144750 func_ov014_02144788 kind:function(arm,size=0x38) addr:0x02144788 func_ov014_021447c0 kind:function(arm,size=0x1c) addr:0x021447c0 func_ov014_021447dc kind:function(arm,size=0x1c) addr:0x021447dc -_Z19func_ov014_021447f8P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x021447f8 -_Z19func_ov014_0214480cP18ActorCharacterBase kind:function(arm,size=0x14) addr:0x0214480c -_Z19func_ov014_02144820P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144820 -_Z19func_ov014_02144834P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144834 -_Z19func_ov014_02144848PiiP18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x02144848 -_ZN18ActorCharacterBase8vfunc_d8Ev kind:function(arm,size=0x8) addr:0x021448d4 -_ZN18ActorCharacterBase8vfunc_dcEv kind:function(arm,size=0x8) addr:0x021448dc -_ZN18ActorCharacterBase8vfunc_e0Ev kind:function(arm,size=0x8) addr:0x021448e4 -_ZN18ActorCharacterBase8vfunc_e4Ev kind:function(arm,size=0x8) addr:0x021448ec -_ZN18ActorCharacterBase8vfunc_e8Ev kind:function(arm,size=0xc) addr:0x021448f4 +_Z19func_ov014_021447f8Pvi kind:function(arm,size=0x14) addr:0x021447f8 local +_Z19func_ov014_0214480cPvi kind:function(arm,size=0x14) addr:0x0214480c local +_Z19func_ov014_02144820Pvi kind:function(arm,size=0x14) addr:0x02144820 local +_Z19func_ov014_02144834Pvi kind:function(arm,size=0x14) addr:0x02144834 local +_Z19func_ov014_0214484824UnkStruct_ov014_02144848P18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x02144848 local +_ZN18ActorCharacterBase8vfunc_d8Ei kind:function(arm,size=0x8) addr:0x021448d4 +_ZN18ActorCharacterBase8vfunc_dcEi kind:function(arm,size=0x8) addr:0x021448dc +_ZN18ActorCharacterBase8vfunc_e0Ei kind:function(arm,size=0x8) addr:0x021448e4 +_ZN18ActorCharacterBase8vfunc_e4Ei kind:function(arm,size=0x8) addr:0x021448ec +_ZN18ActorCharacterBase8vfunc_e8Ett kind:function(arm,size=0xc) addr:0x021448f4 _ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x02144900 _ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x0214494c _ZN18ActorCharacterBaseD0Ev kind:function(arm,size=0x50) addr:0x02144994 @@ -2077,8 +2077,8 @@ data_ov014_021593d8 kind:data(any) addr:0x021593d8 data_ov014_021593dc kind:data(any) addr:0x021593dc data_ov014_02159408 kind:data(any) addr:0x02159408 data_ov014_02159478 kind:data(any) addr:0x02159478 -data_ov014_021594c0 kind:data(any) addr:0x021594c0 -data_ov014_021595b4 kind:data(any) addr:0x021595b4 +_ZTV18ActorCharacterBase kind:data(any) addr:0x021594b8 +_ZTV14ActorCharacter kind:data(any) addr:0x021595ac data_ov014_021596b0 kind:data(any) addr:0x021596b0 data_ov014_021596b8 kind:data(any) addr:0x021596b8 data_ov014_021596bc kind:data(any) addr:0x021596bc diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index ce7f52fd..7a47943d 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1807,7 +1807,7 @@ _ZN14MessageManager13func_0203690cEi kind:function(arm,size=0x2b0) addr:0x020369 _ZN14MessageManager13func_02036bbcEv kind:function(arm,size=0x94) addr:0x02036bbc _ZN14MessageManager13func_02036c50EPt kind:function(arm,size=0x54) addr:0x02036c50 _ZN14MessageManager13func_02036ca4Ei kind:function(arm,size=0x40) addr:0x02036ca4 -_ZN14MessageManager13func_02036ce4EP18UnkStruct_020386d8i kind:function(arm,size=0x4c) addr:0x02036ce4 +_ZN14MessageManager13func_02036ce4EP18UnkStruct_02037750i kind:function(arm,size=0x4c) addr:0x02036ce4 _ZN14MessageManager13func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x02036d30 _ZN14MessageManager13func_02036d4cEP18UnkStruct_02037750 kind:function(arm,size=0x20) addr:0x02036d4c _ZN14MessageManager13func_02036d6cEv kind:function(arm,size=0x3c) addr:0x02036d6c @@ -1837,7 +1837,7 @@ func_02037604 kind:function(arm,size=0x24) addr:0x02037604 func_02037628 kind:function(arm,size=0x98) addr:0x02037628 func_020376c0 kind:function(arm,size=0x64) addr:0x020376c0 func_02037724 kind:function(arm,size=0x2c) addr:0x02037724 -_ZN18UnkStruct_02037750C2Eii kind:function(arm,size=0x44) addr:0x02037750 +_ZN18UnkStruct_02037750C2EiPv kind:function(arm,size=0x44) addr:0x02037750 _ZN18UnkStruct_02037750D1Ev kind:function(arm,size=0x38) addr:0x02037794 _ZN18UnkStruct_02037750D0Ev kind:function(arm,size=0x40) addr:0x020377cc _ZN18UnkStruct_02037750D2Ev kind:function(arm,size=0x38) addr:0x0203780c diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index dc43fb71..bd7c9269 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2751,7 +2751,7 @@ _ZN5Actor4GrabEv kind:function(arm,size=0x1c) addr:0x020c1848 _ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c1864 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c189c _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c18a4 -_ZN5Actor10SetUnk_11cEc kind:function(arm,size=0x8) addr:0x020c18a8 +_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 diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt index 32dedf81..2bd19328 100644 --- a/config/usa/arm9/overlays/ov014/delinks.txt +++ b/config/usa/arm9/overlays/ov014/delinks.txt @@ -22,7 +22,9 @@ src/14_Land/Actor/Player/ActorRefill.cpp: .bss start:0x0215aef4 end:0x0215af94 src/14_Land/Actor/Character/ActorCharacterBase.cpp: + complete .text start:0x02144754 end:0x02144cf0 + .data start:0x02159418 end:0x0215950c src/14_Land/Actor/Character/ActorCharacter.cpp: .text start:0x02144cf0 end:0x021459d0 diff --git a/config/usa/arm9/overlays/ov014/relocs.txt b/config/usa/arm9/overlays/ov014/relocs.txt index 05c01539..3c9e2649 100644 --- a/config/usa/arm9/overlays/ov014/relocs.txt +++ b/config/usa/arm9/overlays/ov014/relocs.txt @@ -4513,22 +4513,22 @@ from:0x02144740 kind:arm_call_thumb to:0x020a958c module:overlay(0) from:0x02144748 kind:arm_call to:0x0202ea08 module:main from:0x02144864 kind:arm_call to:0x020c14f4 module:overlay(0) from:0x02144878 kind:arm_call to:0x020d1894 module:overlay(0) -from:0x021448a4 kind:load to:0x02159420 module:overlay(14) +from:0x021448a4 kind:load to:0x02159418 module:overlay(14) add:0x8 from:0x021448cc kind:arm_call to:0x02036d08 module:main from:0x021448d4 kind:arm_call to:0x020d1920 module:overlay(0) from:0x021448dc kind:arm_call to:0x020c16d0 module:overlay(0) -from:0x021448e8 kind:load to:0x02159420 module:overlay(14) +from:0x021448e8 kind:load to:0x02159418 module:overlay(14) add:0x8 from:0x021448ec kind:load to:0x027e0c68 module:dtcm from:0x02144914 kind:arm_call to:0x02036d08 module:main from:0x0214491c kind:arm_call to:0x020d1920 module:overlay(0) from:0x02144924 kind:arm_call to:0x020c16d0 module:overlay(0) from:0x0214492c kind:arm_call to:0x0202ea08 module:main -from:0x02144938 kind:load to:0x02159420 module:overlay(14) +from:0x02144938 kind:load to:0x02159418 module:overlay(14) add:0x8 from:0x0214493c kind:load to:0x027e0c68 module:dtcm from:0x02144964 kind:arm_call to:0x02036d08 module:main from:0x0214496c kind:arm_call to:0x020d1920 module:overlay(0) from:0x02144974 kind:arm_call to:0x020c16d0 module:overlay(0) -from:0x02144980 kind:load to:0x02159420 module:overlay(14) +from:0x02144980 kind:load to:0x02159418 module:overlay(14) add:0x8 from:0x02144984 kind:load to:0x027e0c68 module:dtcm from:0x021449d8 kind:load to:0x02144754 module:overlay(14) from:0x021449dc kind:load to:0x02144768 module:overlay(14) @@ -4574,7 +4574,7 @@ from:0x02144ea0 kind:arm_call_thumb to:0x020c0ba8 module:overlay(0) 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:0x02159514 module:overlay(14) +from:0x02144f54 kind:load to:0x0215950c module:overlay(14) add:0x8 from:0x02144f58 kind:load to:0x0215962c module:overlay(14) from:0x02144f5c kind:load to:0x020a9b0d module:overlay(0) from:0x02144f60 kind:load to:0x02144e0c module:overlay(14) diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index 735d3e12..297b3b00 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1061,16 +1061,16 @@ func_ov014_02144750 kind:function(arm,size=0x38) addr:0x021446ac func_ov014_02144788 kind:function(arm,size=0x38) addr:0x021446e4 func_ov014_021447c0 kind:function(arm,size=0x1c) addr:0x0214471c func_ov014_021447dc kind:function(arm,size=0x1c) addr:0x02144738 -_Z19func_ov014_021447f8P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144754 -_Z19func_ov014_0214480cP18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144768 -_Z19func_ov014_02144820P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x0214477c -_Z19func_ov014_02144834P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144790 -_Z19func_ov014_02144848PiiP18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x021447a4 -_ZN18ActorCharacterBase8vfunc_d8Ev kind:function(arm,size=0x8) addr:0x02144830 -_ZN18ActorCharacterBase8vfunc_dcEv kind:function(arm,size=0x8) addr:0x02144838 -_ZN18ActorCharacterBase8vfunc_e0Ev kind:function(arm,size=0x8) addr:0x02144840 -_ZN18ActorCharacterBase8vfunc_e4Ev kind:function(arm,size=0x8) addr:0x02144848 -_ZN18ActorCharacterBase8vfunc_e8Ev kind:function(arm,size=0xc) addr:0x02144850 +_Z19func_ov014_021447f8Pvi kind:function(arm,size=0x14) addr:0x02144754 local +_Z19func_ov014_0214480cPvi kind:function(arm,size=0x14) addr:0x02144768 local +_Z19func_ov014_02144820Pvi kind:function(arm,size=0x14) addr:0x0214477c local +_Z19func_ov014_02144834Pvi kind:function(arm,size=0x14) addr:0x02144790 local +_Z19func_ov014_0214484824UnkStruct_ov014_02144848P18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x021447a4 local +_ZN18ActorCharacterBase8vfunc_d8Ei kind:function(arm,size=0x8) addr:0x02144830 +_ZN18ActorCharacterBase8vfunc_dcEi kind:function(arm,size=0x8) addr:0x02144838 +_ZN18ActorCharacterBase8vfunc_e0Ei kind:function(arm,size=0x8) addr:0x02144840 +_ZN18ActorCharacterBase8vfunc_e4Ei kind:function(arm,size=0x8) addr:0x02144848 +_ZN18ActorCharacterBase8vfunc_e8Ett kind:function(arm,size=0xc) addr:0x02144850 _ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x0214485c _ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x021448a8 _ZN18ActorCharacterBaseD0Ev kind:function(arm,size=0x50) addr:0x021448f0 @@ -2077,8 +2077,8 @@ data_ov014_021593d8 kind:data(any) addr:0x02159338 data_ov014_021593dc kind:data(any) addr:0x0215933c data_ov014_02159408 kind:data(any) addr:0x02159368 data_ov014_02159478 kind:data(any) addr:0x021593d8 -data_ov014_021594c0 kind:data(any) addr:0x02159420 -data_ov014_021595b4 kind:data(any) addr:0x02159514 +_ZTV18ActorCharacterBase kind:data(any) addr:0x02159418 +_ZTV14ActorCharacter kind:data(any) addr:0x0215950c data_ov014_021596b0 kind:data(any) addr:0x02159610 data_ov014_021596b8 kind:data(any) addr:0x02159618 data_ov014_021596bc kind:data(any) addr:0x0215961c diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index d85e0d19..9e3cbdd4 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1807,7 +1807,7 @@ _ZN14MessageManager13func_0203690cEi kind:function(arm,size=0x2b0) addr:0x020368 _ZN14MessageManager13func_02036bbcEv kind:function(arm,size=0x94) addr:0x02036b78 _ZN14MessageManager13func_02036c50EPt kind:function(arm,size=0x54) addr:0x02036c0c _ZN14MessageManager13func_02036ca4Ei kind:function(arm,size=0x40) addr:0x02036c60 -_ZN14MessageManager13func_02036ce4EP18UnkStruct_020386d8i kind:function(arm,size=0x4c) addr:0x02036ca0 +_ZN14MessageManager13func_02036ce4EP18UnkStruct_02037750i kind:function(arm,size=0x4c) addr:0x02036ca0 _ZN14MessageManager13func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x02036cec _ZN14MessageManager13func_02036d4cEP18UnkStruct_02037750 kind:function(arm,size=0x20) addr:0x02036d08 _ZN14MessageManager13func_02036d6cEv kind:function(arm,size=0x3c) addr:0x02036d28 @@ -1837,7 +1837,7 @@ func_02037604 kind:function(arm,size=0x24) addr:0x020375c0 func_02037628 kind:function(arm,size=0x98) addr:0x020375e4 func_020376c0 kind:function(arm,size=0x64) addr:0x0203767c func_02037724 kind:function(arm,size=0x2c) addr:0x020376e0 -_ZN18UnkStruct_02037750C2Eii kind:function(arm,size=0x44) addr:0x0203770c +_ZN18UnkStruct_02037750C2EiPv kind:function(arm,size=0x44) addr:0x0203770c _ZN18UnkStruct_02037750D1Ev kind:function(arm,size=0x38) addr:0x02037750 _ZN18UnkStruct_02037750D0Ev kind:function(arm,size=0x40) addr:0x02037788 _ZN18UnkStruct_02037750D2Ev kind:function(arm,size=0x38) addr:0x020377c8 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 2ce19ac8..476d08f6 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -152,7 +152,7 @@ public: /* 119 */ u8 mUnk_119; /* 11a */ bool mVisible; /* 11b */ bool mGrabbed; - /* 11c */ unk8 mUnk_11c; + /* 11c */ bool mUnk_11c; /* 11d */ bool mUnk_11d; /* 11e */ q4 mYOffset; /* 120 */ s16 mUnk_120; @@ -227,7 +227,7 @@ public: unk8 func_ov00_020c1788(); void SetUnk_129(bool value); - void SetUnk_11c(unk8 value); + void SetUnk_11c(bool value); bool func_ov00_020c195c(); bool func_ov00_020c198c(); void KillPickupItemActors(); diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp index f2248628..497b0699 100644 --- a/include/Actor/Character/ActorCharacter.hpp +++ b/include/Actor/Character/ActorCharacter.hpp @@ -10,17 +10,25 @@ #include "Unknown/UnkStruct_ov000_020c5c2c.hpp" #include "Unknown/UnkStruct_ov000_020d18f4.hpp" +struct UnkStruct_ov014_021448f4 { + /* 00 */ unk32 mUnk_00; + /* 04 */ + + UnkStruct_ov014_021448f4() : + mUnk_00(0) {} +}; + class ActorCharacterBase : public Actor { public: /* 000 (base) */ /* 158 */ UnkStruct_ov000_020d18f4 mUnk_158; /* 1b4 */ unk32 mUnk_1b4; - /* 1b8 */ unk32 mUnk_1b8; + /* 1b8 */ unk32 (*mUnk_1b8)(unk32); /* 1bc */ unk32 mUnk_1bc; - /* 1c0 */ unk8 mUnk_1c0; - /* 1c1 */ unk8 mUnk_1c1; + /* 1c0 */ bool mUnk_1c0; + /* 1c1 */ bool mUnk_1c1; /* 1c2 */ unk8 mUnk_1c2; - /* 1c3 */ unk8 mUnk_1c3; + /* 1c3 */ bool mUnk_1c3; /* 1c4 */ /* 00 */ virtual ~ActorCharacterBase() override; @@ -39,11 +47,11 @@ public: /* cc */ virtual void vfunc_cc(); /* d0 */ virtual void vfunc_d0(); /* d4 */ virtual unk32 vfunc_d4(); - /* d8 */ virtual unk32 vfunc_d8(); - /* dc */ virtual unk32 vfunc_dc(); - /* e0 */ virtual unk32 vfunc_e0(); - /* e4 */ virtual unk32 vfunc_e4(); - /* e8 */ virtual void vfunc_e8(); + /* d8 */ virtual unk32 vfunc_d8(unk32 param1); + /* dc */ virtual unk32 vfunc_dc(unk32 param1); + /* e0 */ virtual unk32 vfunc_e0(unk32 param1); + /* e4 */ virtual unk32 vfunc_e4(unk32 param1); + /* e8 */ virtual UnkStruct_ov014_021448f4 vfunc_e8(u16 param2, u16 param3); /* ec */ ActorCharacterBase(); diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index 9cae73d7..bcce36f6 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -60,7 +60,7 @@ public: void func_02036bbc(void); void func_02036c50(u16 *param_2); void func_02036ca4(unk32 param_2); - bool func_02036ce4(UnkStruct_020386d8 *param_2, unk32 param_3); + bool func_02036ce4(UnkStruct_02037750 *param_2, unk32 param_3); bool func_02036d30(UnkStruct_02037750 *param_2); bool func_02036d4c(UnkStruct_02037750 *param_2); void func_02036d6c(void); diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp index 493ca6b0..e3245329 100644 --- a/include/Unknown/UnkStruct_02037750.hpp +++ b/include/Unknown/UnkStruct_02037750.hpp @@ -9,14 +9,14 @@ class LinkStateInteract; class UnkStruct_020397f8; -typedef unk32 (*UnkStruct_02037750_Callback1)(unk32); +typedef unk32 (*UnkStruct_02037750_Callback1)(void *, unk32); // astruct_14 class UnkStruct_02037750 : public SysObject { public: /* 00 (vtable) */ /* 04 */ UnkStruct_02037750_Callback1 mUnk_04[0x4]; - /* 14 */ unk32 mUnk_14; + /* 14 */ void *mUnk_14; /* 18 */ u32 mUnk_18; /* 1c */ u8 mUnk_1c; /* 1d */ u8 mUnk_1d; @@ -37,7 +37,7 @@ public: /* 30 */ virtual bool vfunc_30(); /* 34 */ - UnkStruct_02037750(unk32 param1, unk32 param2); + UnkStruct_02037750(unk32 param1, void *param2); static LinkStateInteract *GetLinkStateInteract(); unk32 func_020385d0(s32 param1, u8 *param2); }; diff --git a/include/Unknown/UnkStruct_ov000_020d18f4.hpp b/include/Unknown/UnkStruct_ov000_020d18f4.hpp index ad2b80df..39442c57 100644 --- a/include/Unknown/UnkStruct_ov000_020d18f4.hpp +++ b/include/Unknown/UnkStruct_ov000_020d18f4.hpp @@ -13,7 +13,7 @@ public: /* 28 */ unk8 mUnk_28[0x18]; /* 40 */ void *mUnk_40; /* 44 */ unk32 mUnk_44; - /* 48 */ unk32 mUnk_48; + /* 48 */ void *mUnk_48; /* 4c */ unk32 mUnk_4c; /* 50 */ unk32 mUnk_50; /* 54 */ unk32 mUnk_54; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 32915a89..19dbe4f3 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -225,7 +225,7 @@ ARM bool Actor::vfunc_60() { ARM void Actor::vfunc_64() {} -ARM void Actor::SetUnk_11c(unk8 value) { +ARM void Actor::SetUnk_11c(bool value) { mUnk_11c = value; } diff --git a/src/14_Land/Actor/Character/ActorCharacterBase.cpp b/src/14_Land/Actor/Character/ActorCharacterBase.cpp index db2ed1ee..58bbf299 100644 --- a/src/14_Land/Actor/Character/ActorCharacterBase.cpp +++ b/src/14_Land/Actor/Character/ActorCharacterBase.cpp @@ -1,32 +1,198 @@ #include "Actor/Character/ActorCharacter.hpp" +#include "Message/MessageManager.hpp" +#include "Save/AdventureFlags.hpp" -static void func_ov014_021447f8(ActorCharacterBase *actor) {} -static void func_ov014_0214480c(ActorCharacterBase *actor) {} -static void func_ov014_02144820(ActorCharacterBase *actor) {} -static void func_ov014_02144834(ActorCharacterBase *actor) {} -static void func_ov014_02144848(unk32 *param1, unk32 param2, ActorCharacterBase *actor) {} +ARM static unk32 func_ov014_021447f8(void *actor, unk32 param2) { + return ((ActorCharacterBase *) actor)->vfunc_d8(param2); +} -unk32 ActorCharacterBase::vfunc_d8() {} -unk32 ActorCharacterBase::vfunc_dc() {} -unk32 ActorCharacterBase::vfunc_e0() {} -unk32 ActorCharacterBase::vfunc_e4() {} -void ActorCharacterBase::vfunc_e8() {} +ARM static unk32 func_ov014_0214480c(void *actor, unk32 param2) { + return ((ActorCharacterBase *) actor)->vfunc_dc(param2); +} -ActorCharacterBase::ActorCharacterBase() : - mUnk_158(0x1000000) {} -ActorCharacterBase::~ActorCharacterBase() {} +ARM static unk32 func_ov014_02144820(void *actor, unk32 param2) { + return ((ActorCharacterBase *) actor)->vfunc_e0(param2); +} -bool ActorCharacterBase::Init() {} -void ActorCharacterBase::vfunc_14(u32 param1) {} -bool ActorCharacterBase::vfunc_c0() {} -void ActorCharacterBase::vfunc_18(u32 param1) {} -unk32 ActorCharacterBase::vfunc_d4() {} -void ActorCharacterBase::vfunc_b4() {} -void ActorCharacterBase::vfunc_b8() {} -void ActorCharacterBase::vfunc_80() {} -void ActorCharacterBase::vfunc_84() {} -void ActorCharacterBase::vfunc_cc() {} -void ActorCharacterBase::vfunc_c8() {} -void ActorCharacterBase::vfunc_d0() {} -void ActorCharacterBase::vfunc_68() {} -bool ActorCharacterBase::vfunc_bc() {} +ARM static unk32 func_ov014_02144834(void *actor, unk32 param2) { + return ((ActorCharacterBase *) actor)->vfunc_e4(param2); +} + +struct UnkStruct_ov014_02144848_1 { + /* 00 */ PAD(0x00, 0x03); + /* 03 */ u8 mUnk_03; + /* 04 */ u16 mUnk_04; + /* 06 */ u16 mUnk_06; + /* 08 */ + + u32 Unk1() { + return mUnk_04 | (mUnk_03 << 16); + } +}; + +struct UnkStruct_ov014_02144848 { + /* 00 */ UnkStruct_ov014_02144848_1 *mUnk_00; + /* 08 */ +}; + +static UnkStruct_ov014_021448f4 func_ov014_02144848(UnkStruct_ov014_02144848 param4, ActorCharacterBase *actor) { + u32 uVar1 = param4.mUnk_00->Unk1(); + + switch (uVar1) { + case 0xfe0001: + case 0xfe0002: + case 0xfe0003: + case 0xfe0004: + case 0xfe0005: + case 0xfe0006: + case 0xfe0007: + case 0xfe0008: + return actor->vfunc_e8(param4.mUnk_00->mUnk_06, (u16) (uVar1 - 0xfe0000)); + break; + default: + return UnkStruct_ov014_021448f4(); + } +} + +ARM unk32 ActorCharacterBase::vfunc_d8(unk32 param1) { + return 0; +} + +ARM unk32 ActorCharacterBase::vfunc_dc(unk32 param1) { + return 0; +} + +ARM unk32 ActorCharacterBase::vfunc_e0(unk32 param1) { + return 0; +} + +ARM unk32 ActorCharacterBase::vfunc_e4(unk32 param1) { + return 0; +} + +ARM UnkStruct_ov014_021448f4 ActorCharacterBase::vfunc_e8(u16 param2, u16 param3) { + return UnkStruct_ov014_021448f4(); +} + +ARM ActorCharacterBase::ActorCharacterBase() : + mUnk_158(0x1000000), + mUnk_1b4(-1), + mUnk_1b8(0), + mUnk_1c0(0), + mUnk_1c1(0), + mUnk_1c2(0), + mUnk_1c3(0) {} +ARM ActorCharacterBase::~ActorCharacterBase() { + if (gMessageManager.mUnk_20[0] == &mUnk_158) { + gMessageManager.func_02036d4c(&mUnk_158); + } +} + +ARM bool ActorCharacterBase::Init() { + mUnk_12c = 5; + mUnk_158.mUnk_20.id = mRef.id; + mUnk_158.mUnk_20.index = mRef.index; + mUnk_158.mUnk_04[0] = func_ov014_021447f8; + mUnk_158.mUnk_04[1] = func_ov014_0214480c; + mUnk_158.mUnk_04[2] = func_ov014_02144820; + mUnk_158.mUnk_04[3] = func_ov014_02144834; + mUnk_158.mUnk_14 = this; + mUnk_158.mUnk_44 = (unk32) func_ov014_02144848; // TODO: Set type of mUnk_44 after matching func_ov014_02144848 + mUnk_158.mUnk_48 = this; + return true; +} + +ARM void ActorCharacterBase::vfunc_14(u32 param1) { + if (this->func_ov00_020c313c(param1)) { + mPrevPos.x = mPos.x; + mPrevPos.y = mPos.y; + mPrevPos.z = mPos.z; + this->func_ov00_020c1cf8(); + this->vfunc_c4(); + } + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); + this->vfunc_b8(); +} + +ARM bool ActorCharacterBase::vfunc_c0() { + UnkStruct_02037750 *callback = gMessageManager.mUnk_20[0]; + bool result = true; + if (mUnk_11c == false && callback != &mUnk_158) { + bool unk = mUnk_1b4 != -1 && gAdventureFlags->func_ov00_02097b9c(mUnk_1b4); + if (!unk) { + result = false; + } + } + return result; +} + +ARM void ActorCharacterBase::vfunc_18(u32 param1) { + if (this->func_ov00_020c313c(param1)) { + mPrevPos.x = mPos.x; + mPrevPos.y = mPos.y; + mPrevPos.z = mPos.z; + mInactive = false; + if (mUnk_1c0) { + if (mUnk_1b8 != NULL) { + if (mUnk_1b8(mUnk_1bc) == 0) { + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); + return; + } + mUnk_1b8 = NULL; + } + this->vfunc_c8(); + this->vfunc_cc(); + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); + return; + }; + if (this->vfunc_c0()) { + if (mUnk_1b8 != NULL) { + if (mUnk_1b8(mUnk_1bc) == 0) { + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); + return; + } + mUnk_1b8 = NULL; + } + this->vfunc_c4(); + this->vfunc_cc(); + } else { + if (mUnk_1c3) { + this->vfunc_d0(); + } + } + } + mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); + if ((gMessageManager.mUnk_04 == false || gAdventureFlags->func_ov00_02097738()) && !mUnk_1c1) { + return; + } + this->vfunc_b8(); +} + +ARM unk32 ActorCharacterBase::vfunc_d4() { + return mUnk_020.mUnk_10; +} + +ARM void ActorCharacterBase::vfunc_b4() { + gMessageManager.func_02036ce4(&mUnk_158, this->vfunc_d4()); +} + +ARM void ActorCharacterBase::vfunc_b8() { + mUnk_158.vfunc_10(); +} + +ARM void ActorCharacterBase::vfunc_80() { + mUnk_1c0 = true; +} + +ARM void ActorCharacterBase::vfunc_84() { + mUnk_1c0 = false; +} + +ARM void ActorCharacterBase::vfunc_cc() {} +ARM void ActorCharacterBase::vfunc_c8() {} +ARM void ActorCharacterBase::vfunc_d0() {} +ARM void ActorCharacterBase::vfunc_68() {} + +bool ActorCharacterBase::vfunc_bc() { + return (mUnk_158.mUnk_18 & 0xffff0000) == 0x1000000; +} diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index f50dce30..d1eabdd0 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -371,7 +371,7 @@ ARM void MessageManager::func_02036ca4(unk32 param_2) { } } -ARM bool MessageManager::func_02036ce4(UnkStruct_020386d8 *param_2, unk32 param_3) { +ARM bool MessageManager::func_02036ce4(UnkStruct_02037750 *param_2, unk32 param_3) { u32 uVar1; if (param_3 == 0) { diff --git a/src/Main/Unknown/UnkStruct_02037750.cpp b/src/Main/Unknown/UnkStruct_02037750.cpp index b5bd2a1a..50b481e6 100644 --- a/src/Main/Unknown/UnkStruct_02037750.cpp +++ b/src/Main/Unknown/UnkStruct_02037750.cpp @@ -10,7 +10,7 @@ extern "C" ARM unk32 func_02037628(u8 *); extern u8 *data_027e0d54; extern unk32 *data_027e0cb4; -ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, unk32 param2) { +ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, void *param2) { s32 i; this->mUnk_14 = param2; @@ -66,7 +66,7 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { iVar9 = 0; if (pcVar8 != NULL) { - iVar9 = pcVar8(this->mUnk_14); + iVar9 = pcVar8(this->mUnk_14, param1); } return iVar9;