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: more progress --- src/Main/Message/MessageManager.cpp | 5 --- src/Main/Message/func_020397f8.cpp | 81 ++++++++++++++++++++++++++++++++----- src/Main/Message/func_0203c8a8.cpp | 33 ++++++--------- 3 files changed, 83 insertions(+), 36 deletions(-) (limited to 'src/Main/Message') 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); - - if (this->unk_10[this->unk_121 - 0x10] == '\0') { - // pvVar1 = new(*data_027e0ce0[0], 4) UnknownClass2(); - - if (pvVar1 != NULL) { - pvVar1 = func_0203d1d0(); - } + func_02007938(0, &this->unk_54, 0xC0, 1, param_4); - 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(); - - if (pvVar1 != NULL) { - pvVar1 = func_0203d254(); - } + this->unk_114 = new(data_027e0ce0[1], 4) UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114(); + } +} - 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; } } -- cgit v1.2.3