From d29bbff21fe81aac1fa6dc382ab3c6b1d085708f Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:53:32 +0100 Subject: [PATCH] more progress --- config/eur/arm9/symbols.txt | 6 +-- config/usa/arm9/symbols.txt | 6 +-- include/Player/LinkStateCutscene.hpp | 2 +- include/Unknown/UnkStruct_02037750.hpp | 29 +++++----- src/05/Player/LinkStateCutscene.cpp | 2 +- src/Main/Message/MessageManager.cpp | 2 +- src/Main/Unknown/UnkStruct_02037750.cpp | 72 +++++++++++++++++++------ 7 files changed, 83 insertions(+), 36 deletions(-) diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 6034f1ca..03d95b82 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1851,16 +1851,16 @@ _ZN18UnkStruct_020377508vfunc_28Ei kind:function(arm,size=0x3d0) addr:0x2037b88 _ZN18UnkStruct_020377508vfunc_2cEi kind:function(arm,size=0x660) addr:0x2037f58 _ZN18UnkStruct_0203775020GetLinkStateInteractEv kind:function(arm,size=0x10) addr:0x20385b8 _ZN18UnkStruct_020377508vfunc_30Ev kind:function(arm,size=0x8) addr:0x20385c8 -_ZN18UnkStruct_0203775013func_020385d0EiPi kind:function(arm,size=0xe4) addr:0x20385d0 +_ZN18UnkStruct_0203775013func_020385d0EiPh kind:function(arm,size=0xe4) addr:0x20385d0 _ZN18UnkStruct_020377508vfunc_14Ev kind:function(arm,size=0x4) addr:0x20386b4 -_ZN18UnkStruct_020377508vfunc_18Ev kind:function(arm,size=0xc) addr:0x20386b8 +_ZN18UnkStruct_020377508vfunc_18EPi kind:function(arm,size=0xc) addr:0x20386b8 _ZN18UnkStruct_020377508vfunc_1cEv kind:function(arm,size=0x8) addr:0x20386c4 _ZN18UnkStruct_020377508vfunc_20Ev kind:function(arm,size=0xc) addr:0x20386cc _ZN18UnkStruct_020386d8C2Ev kind:function(arm,size=0x40) addr:0x20386d8 _ZN18UnkStruct_020386d8C1Ev kind:function(arm,size=0x40) addr:0x2038718 _ZN18UnkStruct_020386d88vfunc_08Ej kind:function(arm,size=0x18) addr:0x2038758 _ZN18UnkStruct_020386d88vfunc_24Ei kind:function(arm,size=0x1c) addr:0x2038770 -_ZN18UnkStruct_020386d88vfunc_28Ev kind:function(arm,size=0x18) addr:0x203878c +_ZN18UnkStruct_020386d88vfunc_28Ei kind:function(arm,size=0x18) addr:0x203878c _ZN18UnkStruct_020386d88vfunc_30Ev kind:function(arm,size=0x28) addr:0x20387a4 _ZN18UnkStruct_020386d8D2Ev kind:function(arm,size=0x14) addr:0x20387cc func_020387e0 kind:function(thumb,size=0xc) addr:0x20387e0 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 5adcbf77..6d96c0ba 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1851,16 +1851,16 @@ _ZN18UnkStruct_020377508vfunc_28Ei kind:function(arm,size=0x3d0) addr:0x2037b44 _ZN18UnkStruct_020377508vfunc_2cEi kind:function(arm,size=0x660) addr:0x2037f14 _ZN18UnkStruct_0203775020GetLinkStateInteractEv kind:function(arm,size=0x10) addr:0x2038574 _ZN18UnkStruct_020377508vfunc_30Ev kind:function(arm,size=0x8) addr:0x2038584 -_ZN18UnkStruct_0203775013func_020385d0EiPi kind:function(arm,size=0xe4) addr:0x203858c +_ZN18UnkStruct_0203775013func_020385d0EiPh kind:function(arm,size=0xe4) addr:0x203858c _ZN18UnkStruct_020377508vfunc_14Ev kind:function(arm,size=0x4) addr:0x2038670 -_ZN18UnkStruct_020377508vfunc_18Ev kind:function(arm,size=0xc) addr:0x2038674 +_ZN18UnkStruct_020377508vfunc_18EPi kind:function(arm,size=0xc) addr:0x2038674 _ZN18UnkStruct_020377508vfunc_1cEv kind:function(arm,size=0x8) addr:0x2038680 _ZN18UnkStruct_020377508vfunc_20Ev kind:function(arm,size=0xc) addr:0x2038688 _ZN18UnkStruct_020386d8C2Ev kind:function(arm,size=0x40) addr:0x2038694 _ZN18UnkStruct_020386d8C1Ev kind:function(arm,size=0x40) addr:0x20386d4 _ZN18UnkStruct_020386d88vfunc_08Ej kind:function(arm,size=0x18) addr:0x2038714 _ZN18UnkStruct_020386d88vfunc_24Ei kind:function(arm,size=0x1c) addr:0x203872c -_ZN18UnkStruct_020386d88vfunc_28Ev kind:function(arm,size=0x18) addr:0x2038748 +_ZN18UnkStruct_020386d88vfunc_28Ei kind:function(arm,size=0x18) addr:0x2038748 _ZN18UnkStruct_020386d88vfunc_30Ev kind:function(arm,size=0x28) addr:0x2038760 _ZN18UnkStruct_020386d8D2Ev kind:function(arm,size=0x14) addr:0x2038788 func_020387e0 kind:function(thumb,size=0xc) addr:0x203879c diff --git a/include/Player/LinkStateCutscene.hpp b/include/Player/LinkStateCutscene.hpp index 224350fd..750f1b8a 100644 --- a/include/Player/LinkStateCutscene.hpp +++ b/include/Player/LinkStateCutscene.hpp @@ -16,7 +16,7 @@ public: /* 00 */ virtual ~UnkStruct_ov004_0210abb8() override; /* 08 */ virtual void vfunc_08(unk32 param1) override; - /* 24 */ virtual void vfunc_24(unk32 param1) override; + /* 24 */ virtual bool vfunc_24(unk32 param1) override; /* 2c */ virtual unk32 vfunc_2c(s32 param1) override; /* 34 */ }; diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp index fe1a9740..bb3d2662 100644 --- a/include/Unknown/UnkStruct_02037750.hpp +++ b/include/Unknown/UnkStruct_02037750.hpp @@ -25,26 +25,29 @@ public: /* 0c */ virtual void vfunc_0c(class UnkStruct_020397f8* param1); /* 10 */ virtual void vfunc_10(); /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual void vfunc_18(); - /* 1c */ virtual unk32 vfunc_1c(); + /* 18 */ virtual void vfunc_18(unk32* param1); + /* 1c */ virtual bool vfunc_1c(); /* 20 */ virtual void vfunc_20(); - /* 24 */ virtual void vfunc_24(unk32 param1); - /* 28 */ virtual void vfunc_28(s32 param1); + /* 24 */ virtual bool vfunc_24(unk32 param1); + /* 28 */ virtual unk8 vfunc_28(s32 param1); /* 2c */ virtual unk32 vfunc_2c(s32 param1); - /* 30 */ virtual unk32 vfunc_30(); + /* 30 */ virtual bool vfunc_30(); /* 34 */ UnkStruct_02037750(unk32 param1, unk32 param2); LinkStateInteract *GetLinkStateInteract(); - void func_020385d0(s32 param1, unk32 *param2); + unk32 func_020385d0(s32 param1, u8 *param2); }; class UnkStruct_020386d8_24 { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ u8 mUnk_00; + /* 00 */ u8 mUnk_01; + /* 00 */ u8 mUnk_02; + /* 00 */ u8 mUnk_03; /* 04 */ - void func_020376c0(Vec3p param_2); + void func_020376c0(const Vec3p* param_2); }; // astruct_15 @@ -52,7 +55,9 @@ class UnkStruct_020386d8 : public UnkStruct_02037750 { public: /* 00 (base) */ /* 20 */ unk8 mUnk_20; - /* 21 */ unk8 mUnk_21[0x3]; + /* 21 */ unk8 mUnk_21; + /* 21 */ unk8 mUnk_22; + /* 21 */ unk8 mUnk_23; /* 24 */ UnkStruct_020386d8_24 mUnk_24; /* 28 */ unk32 mUnk_28; /* 2C */ unk32 mUnk_2C; @@ -67,8 +72,8 @@ public: UnkStruct_020386d8(); /* 00 */ virtual ~UnkStruct_020386d8(); /* 08 */ virtual void vfunc_08(u32 param1); - /* 24 */ virtual void vfunc_24(unk32 param1); - /* 28 */ virtual void vfunc_28(); - /* 30 */ virtual unk32 vfunc_30(); + /* 24 */ virtual bool vfunc_24(unk32 param1); + /* 28 */ virtual unk8 vfunc_28(s32 param1); + /* 30 */ virtual bool vfunc_30(); /* 34 */ }; diff --git a/src/05/Player/LinkStateCutscene.cpp b/src/05/Player/LinkStateCutscene.cpp index 7eaf872c..6875d229 100644 --- a/src/05/Player/LinkStateCutscene.cpp +++ b/src/05/Player/LinkStateCutscene.cpp @@ -1,7 +1,7 @@ #include "Player/LinkStateCutscene.hpp" unk32 UnkStruct_ov004_0210abb8::vfunc_2c(s32 param1) {} -void UnkStruct_ov004_0210abb8::vfunc_24(unk32 param1) {} +bool UnkStruct_ov004_0210abb8::vfunc_24(unk32 param1) {} void LinkStateCutscene::func_ov005_021089c0() {} void LinkStateCutscene::func_ov005_021089f4() {} void LinkStateCutscene::func_ov005_02108d08() {} diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index c43aa5d1..923c21b3 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -173,7 +173,7 @@ ARM unk32 UnkStruct_027E0C68::func_02036798(void) { if (this->mUnk_04 == 0) { bool bVar1 = false; - if (this->mUnk_18[1] != NULL && (this->mUnk_18[1]->mUnk_18 & 0xFFFF0000) != 0x1000000) { + if (this->mUnk_18[1] != NULL && (this->mUnk_18[1]->mUnk_18 & 0xFFFF0000) != (1 << 24)) { bVar1 = true; } diff --git a/src/Main/Unknown/UnkStruct_02037750.cpp b/src/Main/Unknown/UnkStruct_02037750.cpp index b6db048e..b7342c49 100644 --- a/src/Main/Unknown/UnkStruct_02037750.cpp +++ b/src/Main/Unknown/UnkStruct_02037750.cpp @@ -1,6 +1,8 @@ #include "Unknown/UnkStruct_02037750.hpp" #include "Message/MessageManager.hpp" +extern "C" ARM unk32 func_02037628(u8*); + ARM UnkStruct_02037750::UnkStruct_02037750(unk32 param1, unk32 param2) { s32 i; @@ -21,34 +23,74 @@ ARM UnkStruct_02037750::~UnkStruct_02037750() { } } -ARM void UnkStruct_02037750::vfunc_08(u32 param1) {} +ARM void UnkStruct_02037750::vfunc_08(u32 param1) { + this->mUnk_18 = param1; + this->mUnk_1c = 0; +} + ARM void UnkStruct_02037750::vfunc_0c(UnkStruct_020397f8* param1) {} ARM void UnkStruct_02037750::vfunc_10() {} -ARM void UnkStruct_02037750::vfunc_24(unk32 param1) {} -ARM void UnkStruct_02037750::vfunc_28(s32 param1) {} + +ARM bool UnkStruct_02037750::vfunc_24(unk32 param1) { + u8 auStack_28[0x18]; + + func_02037628(auStack_28); + return this->func_020385d0(param1, auStack_28) != 0; +} + +ARM unk8 UnkStruct_02037750::vfunc_28(s32 param1) {} ARM unk32 UnkStruct_02037750::vfunc_2c(s32 param1) {} -ARM LinkStateInteract *UnkStruct_02037750::GetLinkStateInteract() {} -ARM unk32 UnkStruct_02037750::vfunc_30() {} -ARM void UnkStruct_02037750::func_020385d0(s32 param1, unk32 *param2) {} + +ARM LinkStateInteract *UnkStruct_02037750::GetLinkStateInteract() { + return (LinkStateInteract*)GetLinkState(2); +} + +ARM bool UnkStruct_02037750::vfunc_30() { + return true; +} + +ARM unk32 UnkStruct_02037750::func_020385d0(s32 param1, u8* param2) {} ARM void UnkStruct_02037750::vfunc_14() { } -ARM void UnkStruct_02037750::vfunc_18() {} -ARM unk32 UnkStruct_02037750::vfunc_1c() {} -ARM void UnkStruct_02037750::vfunc_20() {} +// non-matching +ARM void UnkStruct_02037750::vfunc_18(unk32* param1) { + param1[0] = 0; +} + +ARM bool UnkStruct_02037750::vfunc_1c() { + return false; +} + +ARM void UnkStruct_02037750::vfunc_20() { + this->mUnk_18 = 1 << 24; +} // non-matching ARM UnkStruct_020386d8::UnkStruct_020386d8() : - UnkStruct_02037750(0x1000000, 0) { + UnkStruct_02037750(1 << 24, 0) { this->mUnk_20 = -1; - this->mUnk_24.func_020376c0(gVec3p_ZERO); + this->mUnk_24.func_020376c0(&gVec3p_ZERO); } -ARM void UnkStruct_020386d8::vfunc_08(u32 param1) {} -ARM void UnkStruct_020386d8::vfunc_24(unk32 param1) {} -ARM void UnkStruct_020386d8::vfunc_28() {} -ARM unk32 UnkStruct_020386d8::vfunc_30() {} +ARM void UnkStruct_020386d8::vfunc_08(u32 param1) { + this->UnkStruct_02037750::vfunc_08(param1); + this->mUnk_20 = 0xff; +} + +ARM bool UnkStruct_020386d8::vfunc_24(unk32 param1) { + return this->func_020385d0(param1, &this->mUnk_24.mUnk_00) != 0; +} + +ARM unk8 UnkStruct_020386d8::vfunc_28(s32 param1) { + this->mUnk_20 = this->UnkStruct_02037750::vfunc_28(param1); + return this->mUnk_20; +} + +ARM bool UnkStruct_020386d8::vfunc_30() { + return data_027e0c68.func_020366c4()->mUnk_15c <= 0; +} ARM UnkStruct_020386d8::~UnkStruct_020386d8() { }