From 27e9ac2396ae3c6c3d8002c04dd258e935166caa Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Wed, 29 Jan 2025 16:36:55 +0100 Subject: [PATCH] more progress --- config/eur/arm9/symbols.txt | 12 +-- .../UnkStruct_027E0C68_UnkSubClass1.hpp | 90 ++++++++++++------- include/Unknown/func_ov000_020d0644.hpp | 19 ++++ src/Main/Message/MessageManager.cpp | 5 -- src/Main/Message/func_020397f8.cpp | 81 ++++++++++++++--- src/Main/Message/func_0203c8a8.cpp | 33 +++---- 6 files changed, 164 insertions(+), 76 deletions(-) create mode 100644 include/Unknown/func_ov000_020d0644.hpp diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 78a95ed9..8af38d21 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1872,13 +1872,13 @@ func_02038888 kind:function(arm,size=0xc8) addr:0x2038888 func_02038950 kind:function(arm,size=0x130) addr:0x2038950 func_02038a80 kind:function(arm,size=0x1c) addr:0x2038a80 func_02038a9c kind:function(thumb,size=0x4) addr:0x2038a9c -_ZN36UnkStruct_027E0C68_UnkSubClass1_BaseC1Eisi kind:function(thumb,size=0x5c) addr:0x2038aa0 +_ZN36UnkStruct_027E0C68_UnkSubClass1_BaseC2Eisi kind:function(thumb,size=0x5c) addr:0x2038aa0 _ZN36UnkStruct_027E0C68_UnkSubClass1_BaseD1Ev kind:function(thumb,size=0xc) addr:0x2038afc _ZN36UnkStruct_027E0C68_UnkSubClass1_BaseD0Ev kind:function(thumb,size=0x14) addr:0x2038b08 _ZN36UnkStruct_027E0C68_UnkSubClass1_BaseD2Ev kind:function(thumb,size=0xc) addr:0x2038b1c func_02038b28 kind:function(thumb,size=0xc) addr:0x2038b28 func_02038b34 kind:function(arm,size=0xc) addr:0x2038b34 -_Z13func_02038b40P31UnkStruct_027E0C68_UnkSubClass1_Sub1 kind:function(arm,size=0x34) addr:0x2038b40 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Base13func_02038b40Ev kind:function(arm,size=0x34) addr:0x2038b40 func_02038b74 kind:function(arm,size=0x4) addr:0x2038b74 func_02038b78 kind:function(arm,size=0xbc) addr:0x2038b78 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_34Ei kind:function(arm,size=0x84) addr:0x2038c34 @@ -1915,7 +1915,7 @@ _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_2CEv kind:function(arm,size=0x24 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_02039ca8Ev kind:function(arm,size=0x24) addr:0x2039ca8 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_3CEi kind:function(arm,size=0xa8) addr:0x2039ccc _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_40Eii kind:function(arm,size=0x414) addr:0x2039d74 -func_0203a188 kind:function(arm,size=0x138) addr:0x203a188 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203a188Eiii kind:function(arm,size=0x138) addr:0x203a188 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203a2c0Ev kind:function(arm,size=0x4c) addr:0x203a2c0 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203a30cEv kind:function(arm,size=0x1c) addr:0x203a30c _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_48Ev kind:function(arm,size=0x34) addr:0x203a328 @@ -1946,7 +1946,7 @@ func_0203c25c kind:function(arm,size=0x6c) addr:0x203c25c _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1D0Ev kind:function(arm,size=0x48) addr:0x203c2c8 _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_Sub3C1Ev kind:function(thumb,size=0x44) addr:0x203c358 +_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 @@ -1955,8 +1955,8 @@ func_0203c5c4 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_Sub2C1Ev kind:function(arm,size=0x110) addr:0x203c72c -func_0203c83c kind:function(arm,size=0x4) addr:0x203c83c +_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 func_0203c8a8 kind:function(arm,size=0x58) addr:0x203c8a8 diff --git a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp index 0bd03ee1..ffe5f92e 100644 --- a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp +++ b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp @@ -2,6 +2,7 @@ #include "System/SysNew.hpp" #include "Message/BMG.hpp" +#include "Unknown/func_ov000_020d0644.hpp" // temp #define UNK_TYPE void @@ -131,19 +132,6 @@ public: /* 0x08 */ }; -class UnknownClass2 : public SysObject { -public: - /* 0x00 (vtable) */ - /* 0x04 */ unk32* unk_04; - /* 0x08 */ - - UnknownClass2(); - /* 0x00 */ virtual ~UnknownClass2(); - /* 0x08 */ virtual UNK_TYPE vfunc_08(UNK_TYPE); - /* 0x0C */ virtual UNK_TYPE vfunc_0C(UNK_TYPE); - /* 0x10 */ -}; - class UnkSubClass1_unk_410 { public: /* 0x00 */ struct UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_00; @@ -217,13 +205,14 @@ public: /* 0x3C */ }; +// astruct_8? class UnkStruct_027E0C68_UnkSubClass1_Base_1 : public SysObject { public: /* 0x000 (vtable) */ /* 0x004 */ unk32* unk_04; /* 0x008 */ UnkSubClass1_02256FF8* unk_08; /* 0x00C */ unk32* unk_0C; - /* 0x010 */ unk32* unk_10; + /* 0x010 */ unk32 unk_10; /* 0x014 */ unk32 unk_14; /* 0x018 */ s32 unk_18; /* 0x01C */ unk32 unk_1C; @@ -281,6 +270,20 @@ public: /* 0x74 */ }; +class UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114 : public SysObject { +public: + /* 0x00 (vtable) */ + /* 0x04 */ unk32* unk_04; + /* 0x08 */ + + 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); + /* 0x0C */ +}; + +// astruct_7 class UnkStruct_027E0C68_UnkSubClass1_Base_0 : public UnkStruct_027E0C68_UnkSubClass1_Base_1 { public: /* 0x052 */ unk16 unk_52; @@ -333,14 +336,13 @@ public: /* 0x108 */ unk32 unk_108; /* 0x10C */ unk32 unk_10C; /* 0x110 */ unk32 unk_110; - /* 0x118 */ void* unk_114; + /* 0x118 */ UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114* unk_114; /* 0x118 */ s32 unk_118; - /* 0x11C */ unk8 unk_11C; - /* 0x11D */ unk8 unk_11D; - /* 0x11E */ u8 unk_11E; + /* 0x11C */ unk16 unk_11C; + /* 0x11E */ unk8 unk_11E; /* 0x11F */ unk8 unk_11F; /* 0x120 */ u8 unk_120; - /* 0x121 */ u8 unk_121; + /* 0x121 */ s8 unk_121; /* 0x122 */ u8 unk_122; /* 0x123 */ u8 unk_123; /* 0x124 */ @@ -392,13 +394,9 @@ public: /* 0x15F */ s8 unk_15F; /* 0x160 */ unk8 unk_160; /* 0x160 */ unk8 unk_161; - /* 0x160 */ unk8 unk_162; - /* 0x160 */ unk8 unk_163; + /* 0x160 */ unk16 unk_162; /* 0x164 */ - //! TODO: fake? - UnkStruct_027E0C68_UnkSubClass1_Base(); - UnkStruct_027E0C68_UnkSubClass1_Base(unk32 param_2, unk16 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Base(); @@ -439,6 +437,7 @@ public: u16* func_02037604(u16**); void func_02038b28(void); void func_02038b40(void); + void func_02039208(unk32 param_2); unk32 func_02038d10(void); void func_02038d20(void); void func_02038f44(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5, unk32 param_6); @@ -447,7 +446,6 @@ public: void func_02039398(void); void func_020393a8(unk32 param_2); void func_0203a188(unk32, unk32); - void func_0203a35c(void); unk32 func_0203a3e0(void); unk32 func_0203a6d0(unk32, unk32); unk32 func_0203b0bc(void); @@ -478,6 +476,14 @@ public: void func_0203fc78(unk32*, unk32*); }; +// does it host both choices? +struct UnknownMsgChoiceStruct { + /* 0x00 */ UnkStruct_0203b264* unk_00; + /* 0x04 */ unk32 unk_04; + /* 0x08 */ +}; + +// astruct_2 class UnkStruct_027E0C68_UnkSubClass1_Sub1 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: /* 0x164 */ UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_164; @@ -494,12 +500,8 @@ public: /* 0x420 */ unk16 unk_420; /* 0x420 */ unk16 unk_422; /* 0x424 */ UnkSubClass1_unk_424 unk_424; - /* 0x428 */ u16* unk_428; - /* 0x42C */ unk32 unk_42C; - /* 0x430 */ unk32 unk_430; - /* 0x434 */ u8 unk_434[0xF4]; - /* 0x528 */ u16* unk_528; - /* 0x52C */ u8 unk_52C; + /* 0x428 */ UnknownMsgChoiceStruct unk_428[0x20]; + /* 0x528 */ unk16 unk_528[4]; // number of choices? /* 0x55C */ unk32 unk_530; /* 0x55C */ unk32 unk_534; /* 0x55C */ unk32 unk_538; @@ -545,6 +547,7 @@ public: /* 0x5B4 */ UnkStruct_027E0C68_UnkSubClass1_Sub1(); + UnkStruct_027E0C68_UnkSubClass1_Sub1(unk32 param_2, unk16 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Sub1() override; /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; @@ -585,15 +588,28 @@ public: void func_0203a188(unk32 param_2, unk32 param_3, unk32 param_4); bool func_0203a2c0(void); unk32 func_0203a30c(void); + void func_0203a35c(void); bool func_0203a3e0(void); }; class UnkStruct_027E0C68_UnkSubClass1_Sub2 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: - /* 0x164 */ u8 unk_164[0x5C]; + /* 0x164 */ unk16 unk_164; + /* 0x166 */ unk16 unk_166; + /* 0x168 */ unk16 unk_168; + /* 0x16A */ unk16 unk_16A; + /* 0x16C */ unk16 unk_16C; + /* 0x16E */ unk16 unk_16E; + /* 0x170 */ unk16 unk_170; + /* 0x172 */ unk16 unk_172; + /* 0x174 */ unk16 unk_174; + /* 0x178 */ unk32 unk_178; + /* 0x17C */ unk32 unk_17C; + /* 0x180 */ UnkClass_func_ov000_020d0644 unk_180[4]; /* 0x1C0 */ UnkStruct_027E0C68_UnkSubClass1_Sub2(); + UnkStruct_027E0C68_UnkSubClass1_Sub2(unk32 param_2, unk16 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Sub2(); /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; @@ -625,14 +641,21 @@ public: /* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; /* 0x74 */ + static void func_0203c83c(void); }; class UnkStruct_027E0C68_UnkSubClass1_Sub3 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: - /* 0x164 */ u8 unk_164[0xC]; + /* 0x164 */ unk16 unk_164; + /* 0x164 */ unk16 unk_166; + /* 0x164 */ unk16 unk_168; + /* 0x164 */ unk16 unk_16A; + /* 0x164 */ unk16 unk_16C; + /* 0x164 */ unk16 unk_16E; /* 0x170 */ UnkStruct_027E0C68_UnkSubClass1_Sub3(); + 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; @@ -672,7 +695,6 @@ extern "C" u32 func_01ff9b4c(unk32, unk32); extern "C" unk32 func_0203c084(void); extern "C" void func_ov018_02169634(UnkStruct_027E0C68_UnkSubClass1_Sub1*); extern "C" unk32 func_ov000_02079e04(void); -extern "C" unk32 func_01ff9b88(unk32, unk32); extern "C" unk32 func_02016fcc(unk32); extern "C" void func_02032304(unk32*, char*, unk32, unk32, unk32); extern "C" unk32 func_0202d5b4(char*, char*, unk32, unk32, unk32); diff --git a/include/Unknown/func_ov000_020d0644.hpp b/include/Unknown/func_ov000_020d0644.hpp new file mode 100644 index 00000000..ff03d603 --- /dev/null +++ b/include/Unknown/func_ov000_020d0644.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "global.h" +#include "System/SysNew.hpp" + +class UnkClass_func_ov000_020d0644 { +public: + /* 0x00 */ unk32 unk_00; + /* 0x04 */ unk32 unk_04; + /* 0x08 */ unk32 unk_08; + // /* 0x0C */ unk32 unk_0C; + /* 0x10 */ + + static void func_020d060c(void); + + UnkClass_func_ov000_020d0644(); + virtual ~UnkClass_func_ov000_020d0644(); + void func_ov000_020d0644(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6); +}; diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index f0c7bc9f..15446045 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -132,11 +132,6 @@ THUMB void UnkStruct_027E0C68::func_0203665c(void) { this->pGroups->func_020373b4(2); } -// non-matching -ARM UnkStruct_027E0C68_UnkSubClass2_Base1::~UnkStruct_027E0C68_UnkSubClass2_Base1() { - -} - // non-matching ARM UnkStruct_027E0C68_UnkSubClass1_Sub1* UnkStruct_027E0C68::func_020366c4(void) { if ((data_02056be4[data_027e077c.mUnk_0] & 1) && !(data_02056be4[data_027e077c.mUnk_0] & 2)) { diff --git a/src/Main/Message/func_020397f8.cpp b/src/Main/Message/func_020397f8.cpp index a24c1b38..250b1df2 100644 --- a/src/Main/Message/func_020397f8.cpp +++ b/src/Main/Message/func_020397f8.cpp @@ -9,12 +9,16 @@ extern "C" void func_ov000_020d0460(void*); extern "C" void func_0203efd8(void*, void*); extern "C" void func_0203ee48(void*); +extern "C" void func_0204f614(UnkClass_func_ov000_020d0644*, unk32, unk32, void*, void*); extern unk16 data_02056a0e[]; extern u8 data_02056a08[]; -THUMB UnkStruct_027E0C68_UnkSubClass1_Sub1::UnkStruct_027E0C68_UnkSubClass1_Sub1() : unk_164(NULL) { - u16** ppuVar3; +THUMB UnkStruct_027E0C68_UnkSubClass1_Sub1::UnkStruct_027E0C68_UnkSubClass1_Sub1(unk32 param_2, unk16 param_3, unk32 param_4) : + UnkStruct_027E0C68_UnkSubClass1_Base(0, 0, param_4), + unk_164(NULL) +{ + UnknownMsgChoiceStruct* puVar3; this->unk_410.unk_00 = this; this->unk_414 = 0; @@ -25,11 +29,11 @@ THUMB UnkStruct_027E0C68_UnkSubClass1_Sub1::UnkStruct_027E0C68_UnkSubClass1_Sub1 this->unk_424.unk_00 = this; // ??? - ppuVar3 = &this->unk_428; + puVar3 = this->unk_428; do { - *ppuVar3 = NULL; - ppuVar3 += 2; - } while (ppuVar3 < &this->unk_528); + puVar3->unk_00 = NULL; + puVar3 += 1; + } while ((unk32*)puVar3 < (unk32*)this->unk_528); func_0203ee48(&this->unk_424); func_ov000_020d0460(&this->unk_534); @@ -179,7 +183,7 @@ ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a2c0(void) { } ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a30c(void) { - return func_01ff9b88(this->unk_574, this->unk_154->unk_06); + return this->unk_574 / this->unk_154->unk_06; } ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_3C(unk32 param_2) { @@ -359,6 +363,22 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_48(void) { this->unk_410.func_0203ec34(); } +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a35c(void) { + if ((this->unk_57C == 1 || this->unk_150[3] != 0) || (this->unk_128.unk_00 == NULL || this->unk_128.unk_00[0] == 0) != 0) { + if (this->func_0203a3e0()) { + s16 unk_56E = this->unk_56E; + s16 unk_570 = this->unk_570; + UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_164 = this->unk_164; + + unk_164->unk_168.unk_10 = unk_56E; + unk_164->unk_168.unk_14 = unk_570; + this->unk_164->func_02039208(4); + } + } else { + this->unk_164->func_02038b40(); + } +} + ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a3e0(void) { return this->unk_164->unk_168.unk_06 > 0; } @@ -546,7 +566,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { local_54[0] = puVar3; iVar2 = 0; - for (iVar2 = 0; func_01ff9b88(iVar2, this->unk_154->unk_06) == 0; iVar2++, puVar3 = this->func_02037604(local_54)) { + for (iVar2 = 0; (iVar2 / this->unk_154->unk_06) == 0; iVar2++, puVar3 = this->func_02037604(local_54)) { if (local_54[iVar2] != NULL) { puVar3 = local_54[iVar2]; } @@ -645,7 +665,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { } } else if (*local_54[iVar2] == '\n') { iVar2 = iVar2 + 1; - iVar4 = func_01ff9b88(iVar2, this->unk_154->unk_06); + iVar4 = (iVar2 / this->unk_154->unk_06); if (iVar4 == 0) { break; @@ -821,8 +841,10 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_1C(unk8 param_2, UnkStruct case 0: return this->func_0203905c(param_2, param_3, param_4, param_5); case 1: - iVar1 = this->func_0203a30c(); - return this->unk_164->func_0203cb5c(param_2, ((this->unk_428[this->unk_528[iVar1]] & ~0xFFFF))); + UnknownMsgChoiceStruct* pChoiceData; + s32 i = this->func_0203a30c(); + pChoiceData = &this->unk_428[this->unk_528[i]]; + return this->unk_164->func_0203cb5c(param_2, (((pChoiceData->unk_00->mUnk_0[3] << 0x10) | ((u16*)pChoiceData->unk_00->mUnk_0)[2]) + ~0xFFFE)); default: break; } @@ -957,3 +979,40 @@ ARM UnkStruct_027E0C68_UnkSubClass1_Sub1::~UnkStruct_027E0C68_UnkSubClass1_Sub1( ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_38(void) { return true; } + +THUMB UnkStruct_027E0C68_UnkSubClass1_Sub3::UnkStruct_027E0C68_UnkSubClass1_Sub3(unk32 param_2, unk16 param_3, unk32 param_4) : + UnkStruct_027E0C68_UnkSubClass1_Base(0, 0, param_4) +{ + this->unk_162 = 4; + this->unk_164 = 1; + this->unk_166 = 0; + this->unk_168 = -1; + this->unk_16A = 0; + this->unk_16C = 1; + this->unk_16E = 0; +} + +// 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) +{ + this->unk_162 = 1; + this->unk_164 = 0x1A; + this->unk_166 = 0xA6; + this->unk_168 = 0x1D; + this->unk_16A = 0; + this->unk_16C = 1; + this->unk_170 = -1; + this->unk_172 = -1; + this->unk_174 = -1; + + func_0204f614(this->unk_180, ARRAY_LEN(this->unk_180), sizeof(UnkClass_func_ov000_020d0644), UnkClass_func_ov000_020d0644::func_020d060c, this->func_0203c83c); + + this->unk_180[0].func_ov000_020d0644(0x1E, 0, 0x8A, 0, 0); + this->unk_180[1].func_ov000_020d0644(0x1E, 1, 0x8B, 0, 0); + this->unk_180[2].func_ov000_020d0644(0x1E, 2, 0x8C, 0, 0); + this->unk_180[3].func_ov000_020d0644(0x1E, 3, 0x8D, 0, 0); +} + +void UnkStruct_027E0C68_UnkSubClass1_Sub2::func_0203c83c(void) { +} diff --git a/src/Main/Message/func_0203c8a8.cpp b/src/Main/Message/func_0203c8a8.cpp index 1345b7c8..fdb6d4a3 100644 --- a/src/Main/Message/func_0203c8a8.cpp +++ b/src/Main/Message/func_0203c8a8.cpp @@ -5,15 +5,13 @@ #include "DTCM/UnkStruct_027e103c.hpp" #include "Player/TouchControl.hpp" #include "Item/ItemManager.hpp" +#include "System/SysNew.hpp" extern u32 *data_027e0ce0[]; -extern "C" void func_02007938(unk32, unk32, unk32, unk32, unk32); -extern "C" UnknownClass2* func_0203d1d0(void); -extern "C" UnknownClass2* func_0203d254(void); +extern "C" void func_02007938(unk32, unk32*, unk32, unk32, unk32); +// non-matching THUMB UnkStruct_027E0C68_UnkSubClass1_Base_0::UnkStruct_027E0C68_UnkSubClass1_Base_0(unk32 param_2, unk32 param_3, unk32 param_4) { - UnknownClass2 *pvVar1; - this->unk_114 = NULL; this->unk_118 = -1; this->unk_11C = 0; @@ -23,24 +21,19 @@ THUMB UnkStruct_027E0C68_UnkSubClass1_Base_0::UnkStruct_027E0C68_UnkSubClass1_Ba this->unk_121 = param_2; this->unk_122 = 0; - func_02007938(0, this->unk_54, 0xc0, 1, param_4); + func_02007938(0, &this->unk_54, 0xC0, 1, param_4); - if (this->unk_10[this->unk_121 - 0x10] == '\0') { - // pvVar1 = new(*data_027e0ce0[0], 4) UnknownClass2(); - - if (pvVar1 != NULL) { - pvVar1 = func_0203d1d0(); - } - - this->unk_114 = pvVar1; + if (this->unk_121 == 0) { + this->unk_114 = new(data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114(); } else { - // pvVar1 = new(*data_027e0ce0[0], 4) UnknownClass2(); + this->unk_114 = new(data_027e0ce0[1], 4) UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114(); + } +} - if (pvVar1 != NULL) { - pvVar1 = func_0203d254(); - } - - this->unk_114 = pvVar1; +THUMB UnkStruct_027E0C68_UnkSubClass1_Base_0::~UnkStruct_027E0C68_UnkSubClass1_Base_0() { + if (this->unk_114 != NULL) { + delete this->unk_114; + this->unk_114 = NULL; } }