diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 17e3f6c4..8a7c227b 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1947,18 +1947,18 @@ _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1D0Ev kind:function(arm,size=0x48) addr: _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1D2Ev kind:function(arm,size=0x40) addr:0x203c310 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_38Ev kind:function(arm,size=0x8) addr:0x203c350 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub3C1Eisi kind:function(thumb,size=0x44) addr:0x203c358 -func_0203c39c kind:function(thumb,size=0x78) addr:0x203c39c -func_0203c414 kind:function(arm,size=0x4c) addr:0x203c414 -func_0203c460 kind:function(arm,size=0x4c) addr:0x203c460 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub313func_0203c39cEii kind:function(thumb,size=0x78) addr:0x203c39c +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub38vfunc_3CEi kind:function(arm,size=0x4c) addr:0x203c414 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub38vfunc_40Eii kind:function(arm,size=0x4c) addr:0x203c460 func_0203c4ac kind:function(arm,size=0x118) addr:0x203c4ac -func_0203c5c4 kind:function(arm,size=0x18) addr:0x203c5c4 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub38vfunc_14Eii kind:function(arm,size=0x18) addr:0x203c5c4 func_0203c5dc kind:function(arm,size=0x120) addr:0x203c5dc -func_0203c6fc kind:function(arm,size=0x1c) addr:0x203c6fc -func_0203c718 kind:function(arm,size=0x14) addr:0x203c718 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub3D0Ev kind:function(arm,size=0x1c) addr:0x203c6fc +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub3D2Ev kind:function(arm,size=0x14) addr:0x203c718 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub2C1Eisi kind:function(arm,size=0x110) addr:0x203c72c _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub213func_0203c83cEv kind:function(arm,size=0x4) addr:0x203c83c -func_0203c840 kind:function(arm,size=0x30) addr:0x203c840 -func_0203c870 kind:function(arm,size=0x38) addr:0x203c870 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub2D2Ev kind:function(arm,size=0x30) addr:0x203c840 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub2D0Ev kind:function(arm,size=0x38) addr:0x203c870 func_0203c8a8 kind:function(arm,size=0x58) addr:0x203c8a8 func_0203c900 kind:function(arm,size=0x4) addr:0x203c900 func_0203c904 kind:function(arm,size=0x11c) addr:0x203c904 diff --git a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp index d7b47039..a40d5982 100644 --- a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp +++ b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp @@ -286,8 +286,10 @@ public: UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114(); /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114() override; /* 0x04 */ virtual UNK_TYPE vfunc_04(UNK_TYPE); - /* 0x08 */ virtual UNK_TYPE vfunc_08(UNK_TYPE); + /* 0x08 */ virtual unk32 vfunc_08(void*, s16); /* 0x0C */ + + unk32 func_0203d1b4(void); }; // astruct_7 @@ -477,6 +479,8 @@ public: unk32 func_0203e284(UnkStruct_0203b264*, unk32, unk32); void func_0203e2ac(unk32* param_2); void func_0203fc78(unk32*, unk32*); + s16 func_0203d318(s16, s16); + void func_02038ef4(unk32, unk32); }; // does it host both choices? @@ -679,35 +683,39 @@ public: UnkStruct_027E0C68_UnkSubClass1_Sub3(unk32 param_2, unk16 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Sub3(); - /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; - /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; - /* 0x10 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? - /* 0x14 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; - /* 0x18 */ virtual unk32 vfunc_18(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override; - /* 0x1C */ virtual unk32 vfunc_1C(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override; - /* 0x20 */ virtual UNK_TYPE vfunc_20(UNK_TYPE) override; - /* 0x24 */ virtual UNK_TYPE vfunc_24(UNK_TYPE) override; - /* 0x28 */ virtual bool vfunc_28(void) override; - /* 0x2C */ virtual void vfunc_2C(void) override; - /* 0x30 */ virtual void vfunc_30(void) override; - /* 0x34 */ virtual unk32 vfunc_34(unk32 param_2) override; - /* 0x38 */ virtual bool vfunc_38(void) override; - /* 0x3C */ virtual void vfunc_3C(unk32 param_2) override; - /* 0x40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; - /* 0x44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; - /* 0x48 */ virtual void vfunc_48(void) override; - /* 0x4C */ virtual void vfunc_4C(void) override; // func_02039a3c? - /* 0x50 */ virtual void vfunc_50(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) override; - /* 0x54 */ virtual void vfunc_54(void) override; - /* 0x58 */ virtual void vfunc_58(void) override; - /* 0x5C */ virtual void vfunc_5C(void) override; - /* 0x60 */ virtual void vfunc_60(func_0203b410_param_2* param_2, unk32 param_3, unk32 param_4) override; - /* 0x64 */ virtual void vfunc_64(unk32 param_2) override; - /* 0x68 */ virtual unk32 vfunc_68(unk32 param_2) override; - /* 0x6C */ virtual void vfunc_6C(unk32* param_2, unk32* param_3) override; - /* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; + /* 0x08 */ /* func_02039228 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; + /* 0x0C */ /* func_02039578 */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; + /* 0x10 */ /* func_0203e060 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? + /* 0x14 */ /* func_0203c5c4 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; + /* 0x18 */ /* func_0203e284 */ virtual unk32 vfunc_18(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override; + /* 0x1C */ /* func_0203905c */ virtual unk32 vfunc_1C(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override; + /* 0x20 */ /* func_020390a4 */ virtual UNK_TYPE vfunc_20(UNK_TYPE) override; + /* 0x24 */ /* astruct_8::vfunc_24 */ virtual UNK_TYPE vfunc_24(UNK_TYPE) override; + /* 0x28 */ /* func_0203e0c8 */ virtual bool vfunc_28(void) override; + /* 0x2C */ /* func_02038d20 */ virtual void vfunc_2C(void) override; + /* 0x30 */ /* func_02038ed0 */ virtual void vfunc_30(void) override; + /* 0x34 */ /* func_02038c34 */ virtual unk32 vfunc_34(unk32 param_2) override; + /* 0x38 */ /* func_02039570 */ virtual bool vfunc_38(void) override; + /* 0x3C */ /* func_0203c414 */ virtual void vfunc_3C(unk32 param_2) override; + /* 0x40 */ /* func_0203c460 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; + /* 0x44 */ /* func_02038f40 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; + /* 0x48 */ /* func_02038b74 */ virtual void vfunc_48(void) override; + /* 0x4C */ /* func_0203c39c */ virtual void vfunc_4C(void) override; // func_02039a3c? + /* 0x50 */ /* func_02038f44 */ virtual void vfunc_50(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) override; + /* 0x54 */ /* func_020392b4 */ virtual void vfunc_54(void) override; + /* 0x58 */ /* func_02039398 */ virtual void vfunc_58(void) override; + /* 0x5C */ /* func_02039058 */ virtual void vfunc_5C(void) override; + /* 0x60 */ /* func_020393a4 */ virtual void vfunc_60(func_0203b410_param_2* param_2, unk32 param_3, unk32 param_4) override; + /* 0x64 */ /* func_020393a8 */ virtual void vfunc_64(unk32 param_2) override; + /* 0x68 */ /* func_020393d0 */ virtual unk32 vfunc_68(unk32 param_2) override; + /* 0x6C */ /* func_0203947c */ virtual void vfunc_6C(unk32* param_2, unk32* param_3) override; + /* 0x70 */ /* func_020394d8 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; /* 0x74 */ + //! TODO: vfunc_4C? + void func_0203c39c(unk32 param_2, unk32 param_3); + + void func_0203c4ac(unk32, unk32); }; // TEMPORARY diff --git a/src/Main/Message/func_020397f8.cpp b/src/Main/Message/func_020397f8.cpp index a4e5d909..bdb4432a 100644 --- a/src/Main/Message/func_020397f8.cpp +++ b/src/Main/Message/func_020397f8.cpp @@ -1229,6 +1229,65 @@ THUMB UnkStruct_027E0C68_UnkSubClass1_Sub3::UnkStruct_027E0C68_UnkSubClass1_Sub3 this->unk_16E = 0; } +// non-matching +THUMB void UnkStruct_027E0C68_UnkSubClass1_Sub3::func_0203c39c(unk32 param_2, unk32 param_3) { + u16 uVar1; + unk32 uVar2; + s16 uVar3; + s32 iVar4; + s32 local_20; + s32 local_1c [2]; + + this->func_02038b28(); + uVar3 = 0; + + for (iVar4 = 0; iVar4 < 2; iVar4++) { + local_1c[0] = 0xC0; + local_20 = 0x10; + + if (iVar4 != 0) { + this->func_0203fc78(local_1c, &local_20); + } + + uVar1 = this->func_0203d318((s32)(local_1c[0] + 7 + ((u32)(local_1c[0] + 7 >> 2) >> 0x1D)) >> 3, + (s32)(local_20 + 7 + ((u32)(local_20 + 7 >> 2) >> 0x1D)) >> 3); + + if (uVar3 < uVar1) { + uVar3 = uVar1; + } + } + + if (this->unk_114->vfunc_08(this, uVar3) != 0) { + this->unk_10 = this->unk_114->func_0203d1b4(); + } +} + +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub3::vfunc_3C(unk32 param_2) { + if (this->unk_15C > 0 && this->unk_122 != 1) { + if (this->func_0203de14(param_2) != 0) { + this->vfunc_40(0, 0); + } + } +} + +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub3::vfunc_40(unk32 param_2, unk32 param_3) { + param_2 += this->unk_166; + param_3 += this->unk_168; + + this->func_0203c4ac(param_2 + this->unk_16A, param_3 + this->unk_16C); + this->func_02038ef4(param_2, param_3); +} + +//! TODO: solve vfunc oddities +extern "C" bool func_0203dcb4(unk32); +// non-matching +ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub3::vfunc_14(unk32 param_2, unk32 param_3) { + return func_0203dcb4(param_2 + this->unk_162); +} + +ARM UnkStruct_027E0C68_UnkSubClass1_Sub3::~UnkStruct_027E0C68_UnkSubClass1_Sub3() { +} + // non-matching ARM UnkStruct_027E0C68_UnkSubClass1_Sub2::UnkStruct_027E0C68_UnkSubClass1_Sub2(unk32 param_2, unk16 param_3, unk32 param_4) : UnkStruct_027E0C68_UnkSubClass1_Base(1, 0, param_4) @@ -1251,5 +1310,8 @@ ARM UnkStruct_027E0C68_UnkSubClass1_Sub2::UnkStruct_027E0C68_UnkSubClass1_Sub2(u this->unk_180[3].func_ov000_020d0644(0x1E, 3, 0x8D, 0, 0); } -void UnkStruct_027E0C68_UnkSubClass1_Sub2::func_0203c83c(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub2::func_0203c83c(void) { +} + +ARM UnkStruct_027E0C68_UnkSubClass1_Sub2::~UnkStruct_027E0C68_UnkSubClass1_Sub2() { }