diff options
| author | Yanis002 <35189056+Yanis002@users.noreply.github.com> | 2025-01-27 18:17:33 +0100 |
|---|---|---|
| committer | Yanis002 <35189056+Yanis002@users.noreply.github.com> | 2025-01-27 18:17:33 +0100 |
| commit | 097e8853e4abe1d2827c05ef83993cd08ad6e765 (patch) | |
| tree | 2824089e5160a1766ba26f0fcf75b661f0bfd91b /src/Main | |
| parent | 1518fbfa8042ab241dc037f77739594bc11a964e (diff) | |
progress
Diffstat (limited to 'src/Main')
| -rw-r--r-- | src/Main/Message/MessageManager.cpp | 65 | ||||
| -rw-r--r-- | src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp | 187 |
2 files changed, 171 insertions, 81 deletions
diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index 0c42adb2..15573317 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -6,7 +6,7 @@ extern ARM unk32 func_ov000_020d7f18(u32*, unk32); extern ARM unk32 func_ov000_020d77e4(u32*, unk32); extern ARM unk32 func_02037628(u8*); extern THUMB unk32 func_0202ab48(void); -extern ARM void func_0203dc74(UnkStruct_027E0C68_UnkSubClass1*, unk32, unk32); +extern ARM void func_0203dc74(UnkStruct_027E0C68_UnkSubClass1_Base*, unk32, unk32); // see Actor.cpp struct UnkStruct2 { @@ -90,14 +90,14 @@ THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 switch (data_02056924[i + 1]) { case 0: if (data_027e0618 != 2) { - this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1(); + this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1_Sub1(); func_0203dc74(this->unk_28[i], 0xE0, 0x40); this->unk_28[i]->unk_2C = data_02068e6c; this->unk_28[i]->unk_50 = i != 0; } break; case 1: - this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1(); + this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1_Sub2(); func_0203dc74(this->unk_28[i], 0x50, 0x60); this->unk_28[i]->unk_2C = data_02068e6c; break; @@ -106,7 +106,7 @@ THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 break; case 3: if (func_0202ab48() == 0) { - this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1(); + this->unk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_027E0C68_UnkSubClass1_Sub3(); func_0203dc74(this->unk_28[i], 0xC0, 0x20); this->unk_28[i]->unk_2C = data_02068e8c; } else { @@ -148,21 +148,21 @@ THUMB void UnkStruct_027E0C68::func_0203665c(void) { ARM UnkStruct_027E0C68::~UnkStruct_027E0C68() {} // non-matching -ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_020366c4(void) { +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)) { - return this->unk_28[2]; + return (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2]; } - return this->unk_28[0]; + return (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[0]; } // non-matching -ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036700(void) { +ARM UnkStruct_027E0C68_UnkSubClass1_Sub1* UnkStruct_027E0C68::func_02036700(void) { if ((data_02056be4[data_027e077c.mUnk_0] & 1) && !(data_02056be4[data_027e077c.mUnk_0] & 2)) { - return this->unk_28[0]; + return (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[0]; } - return this->unk_28[2]; + return (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2]; } ARM UnkStruct_027E0C68_UnkSubClass2* UnkStruct_027E0C68::func_0203673c(void) { @@ -207,13 +207,11 @@ ARM bool UnkStruct_027E0C68::func_020367dc(int param_2) { } ARM bool UnkStruct_027E0C68::func_020367ec(void) { - //! TODO: fake? - return this->unk_28[0]->unk_15C > 0; + return ((UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[0])->unk_15C > 0; } ARM bool UnkStruct_027E0C68::func_02036808(void) { - //! TODO: fake? - return this->unk_28[2]->unk_15C > 0; + return ((UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2])->unk_15C > 0; } ARM bool UnkStruct_027E0C68::func_02036824(void) { @@ -236,9 +234,8 @@ ARM bool UnkStruct_027E0C68::func_02036850(void) { ARM void UnkStruct_027E0C68::func_02036888(UnkStruct_027E0C68_UnkSubClass2* param_2) { if ((param_2->unk_18 & ~0xFFFF) != (0x100 << 0x10)) { - UnkStruct_027E0C68_UnkSubClass1* iVar1 = this->func_020366c4(); + UnkStruct_027E0C68_UnkSubClass1_Sub1* iVar1 = this->func_020366c4(); - //! TODO: fake? if (iVar1->unk_15C <= 0) { param_2->vfunc_10(); } else { @@ -258,9 +255,9 @@ ARM bool UnkStruct_027E0C68::func_020368f4(UnkStruct_027E0C68_UnkSubClass3* para // non-matching ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 param_4) { - UnkStruct_027E0C68_UnkSubClass1* unk_28_0; - UnkStruct_027E0C68_UnkSubClass1* unk_28_2; - UnkStruct_027E0C68_UnkSubClass1 *pSVar4; + UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_28_0; + UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_28_2; + UnkStruct_027E0C68_UnkSubClass1_Base *pSVar4; ActorRef actorRef; Actor* pActor; bool iVar1; @@ -273,10 +270,10 @@ ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 p this->unk_40[1] = this->unk_40[0]; - unk_28_0 = this->unk_28[0]; + unk_28_0 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[0]; if (unk_28_0 != NULL && unk_28_0->unk_15C > 0) { - unk_28_2 = this->unk_28[2]; + unk_28_2 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2]; if (unk_28_2 != NULL && unk_28_2->unk_15C > 0) { this->unk_40[0] = this->func_020366c4(); @@ -284,7 +281,7 @@ ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 p this->unk_40[0] = unk_28_2; } } else { - unk_28_2 = this->unk_28[2]; + unk_28_2 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2]; if (unk_28_2 != NULL && unk_28_2->unk_15C > 0) { this->unk_40[0] = unk_28_0; @@ -353,7 +350,7 @@ ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 p } ARM void UnkStruct_027E0C68::func_02036bbc(void) { - UnkStruct_027E0C68_UnkSubClass1* pSVar3; + UnkStruct_027E0C68_UnkSubClass1_Base* pSVar3; bool bVar2; bool bVar4; s32 i; @@ -388,7 +385,7 @@ ARM void UnkStruct_027E0C68::func_02036ca4(unk32 param_2) { s32 i; for (i = 0; i < ARRAY_LEN(this->unk_28); i++) { - UnkStruct_027E0C68_UnkSubClass1* pSVar1 = this->unk_28[i]; + UnkStruct_027E0C68_UnkSubClass1_Base* pSVar1 = this->unk_28[i]; if (pSVar1 != NULL) { pSVar1->func_02039ccc(param_2); @@ -442,10 +439,10 @@ ARM void UnkStruct_027E0C68::func_02036d6c(void) { } // non-matching -ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036da8(u32 param_2, s16* param_3) { +ARM UnkStruct_027E0C68_UnkSubClass1_Base* UnkStruct_027E0C68::func_02036da8(u32 param_2, s16* param_3) { EntryINF1 *pEVar1; EntryINF1 *pEVar2; - UnkStruct_027E0C68_UnkSubClass1 *pSVar4; + UnkStruct_027E0C68_UnkSubClass1_Base *pSVar4; BMGGroups *pBVar5; bool bVar6; s16 iStack_38; @@ -491,7 +488,7 @@ ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036da8(u32 param // non-matching ARM void UnkStruct_027E0C68::func_02036edc(u32 param_2, u8 param_3) { - UnkStruct_027E0C68_UnkSubClass1 *pSVar1; + UnkStruct_027E0C68_UnkSubClass1_Sub1 *pSVar1; u8 auStack_28[24]; u8 local_13; @@ -514,12 +511,12 @@ ARM void UnkStruct_027E0C68::func_02036edc(u32 param_2, u8 param_3) { } // non-matching -ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036f68(u32 param_2, u8* param_3) { +ARM UnkStruct_027E0C68_UnkSubClass1_Sub1* UnkStruct_027E0C68::func_02036f68(u32 param_2, u8* param_3) { EntryINF1 *pEVar1; - UnkStruct_027E0C68_UnkSubClass1 *pSVar2; + UnkStruct_027E0C68_UnkSubClass1_Base *pSVar2; EntryINF1 *pEVar3; int iVar4; - UnkStruct_027E0C68_UnkSubClass1 *pSVar5; + UnkStruct_027E0C68_UnkSubClass1_Sub1 *pSVar5; pEVar1 = func_02037258(&this->pGroups->entries[param_2 >> 0x10], param_2 & 0xffff); @@ -528,10 +525,10 @@ ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036f68(u32 param } if (param_3[21] != 0) { - pSVar5 = this->unk_28[2]; + pSVar5 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[2]; pSVar2 = this->unk_28[3]; } else { - pSVar5 = this->unk_28[0]; + pSVar5 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)this->unk_28[0]; pSVar2 = this->unk_28[1]; } @@ -580,7 +577,7 @@ ARM UnkStruct_027E0C68_UnkSubClass2* UnkStruct_027E0C68::func_020370e8(unk32 par } ARM void UnkStruct_027E0C68::func_02037158(UnkSubClass1_02256FF8* param_2) { - UnkStruct_027E0C68_UnkSubClass1* pSVar1; + UnkStruct_027E0C68_UnkSubClass1_Base* pSVar1; pSVar1 = this->func_02037178(param_2); @@ -589,7 +586,7 @@ ARM void UnkStruct_027E0C68::func_02037158(UnkSubClass1_02256FF8* param_2) { } } -ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02037178(UnkSubClass1_02256FF8* param_2) { +ARM UnkStruct_027E0C68_UnkSubClass1_Base* UnkStruct_027E0C68::func_02037178(UnkSubClass1_02256FF8* param_2) { s32 i; for (i = 0; i < ARRAY_LEN(this->unk_28); i++) { diff --git a/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp b/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp index ddba52f8..d36396ae 100644 --- a/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp +++ b/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp @@ -8,9 +8,19 @@ extern "C" u32 func_01ff9b4c(unk32, unk32); extern "C" unk32 func_0203c084(void); -extern "C" void func_ov018_02169634(UnkStruct_027E0C68_UnkSubClass1*); +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); +extern unk32 data_020691a0; +extern unk32* data_02068894; +extern unk32 data_02056af0; +extern unk32* data_02056a00; +extern char* data_02057f08; // "MSP" +extern char* data_02057eec; // "Menu/UI_main/opening.bin" +extern char* data_02057ed8; // "MSP:opening.nclr" struct Struct_027e0db0 { /* 0x00 */ unk32 unk_00; @@ -31,6 +41,7 @@ extern u8 data_027e0618[]; class UnkClass_027e0cbc { public: unk32 func_0203d7e0(unk32); + unk32 func_0203d77c(unk32, s32, s32); }; extern UnkClass_027e0cbc data_027e0cbc; extern unk16 data_02056a10[]; @@ -83,7 +94,7 @@ public: }; extern UnkClass_027e1054 data_027e1054; -ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_02038c34(unk32 param_2) { +ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02038c34(unk32 param_2) { s16 iVar1; unk32 iVar2; unk32 iVar3; @@ -104,7 +115,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_02038c34(unk32 param_2) { return func_01ff9b4c(iVar2 + iVar3 / 2, uVar4); } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02038ed0(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02038ed0(void) { if (this->unk_15C > 0) { this->func_0203e090(); } else { @@ -113,13 +124,13 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02038ed0(void) { } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039228(unk32* param_2, unk32* param_3) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039228(unk32* param_2, unk32* param_3) { this->unk_15C = 10; this->unk_152 = 1; this->func_0203e2ac(param_3); } -ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_020393d0(unk32 param_2) { +ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_020393d0(unk32 param_2) { switch (param_2) { case 0: break; @@ -142,24 +153,24 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_020393d0(unk32 param_2) { return ((this->unk_18 << 3) - this->func_020337d8(param_2)) / 2; } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_020394d8(unk32* param_2, unk32* param_3) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_020394d8(unk32* param_2, unk32* param_3) { this->func_0203bdcc(param_2, param_3); *param_2 += this->unk_158; *param_3 += this->unk_15A; } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039578(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039578(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) { this->func_0203dc10(1, param_3); this->func_02033190(param_2, param_3, param_4, param_5); } -THUMB void UnkStruct_027E0C68_UnkSubClass1::func_02039a3c(void) { +THUMB void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039a3c(void) { this->func_02038b28(); this->func_0203dcfc(this->unk_50, 0, 0, 2); } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039a5c(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039a5c(void) { if (data_027e0618[0x101] != 0) { if (((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) != this->unk_50) { return; @@ -234,7 +245,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039a5c(void) { } } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039ccc(unk32 param_2) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039ccc(unk32 param_2) { if (this->unk_15C > 0 && this->func_0203de14(param_2) != 0) { if (this->unk_124->unk_29 != 3) { if ((this->unk_50 == 0) && func_ov000_02079e04() != 0) { @@ -254,8 +265,8 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039ccc(unk32 param_2) { } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039d74(unk32 param_2, unk32 param_3) { - UnkStruct_027E0C68_UnkSubClass1* bVar1; +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039d74(unk32 param_2, unk32 param_3) { + UnkStruct_027E0C68_UnkSubClass1_Base* bVar1; s8 cVar2; unk32 iVar4; unk32 iVar6; @@ -360,7 +371,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039d74(unk32 param_2, unk32 par } // non-matching (regalloc) -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a328(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a328(void) { if (this->unk_164 != NULL && this->unk_164->unk_15C > 0) { this->func_02038b40(); } @@ -369,7 +380,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a328(void) { } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a3fc(s32 touchLastX, s32 touchLastY) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a3fc(s32 touchLastX, s32 touchLastY) { unk32 iVar2; unk32 iVar5; unk32 iStack_14; @@ -428,18 +439,19 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a3fc(s32 touchLastX, s32 touc case 7: break; case 2: - if (this->unk_164->unk_168.unk_06 <= 0) { - if ((data_027e0d78.mFlags & 2) != 0) { - this->unk_13C = 0; - - if (this->func_0203b0bc() != 0) { - this->func_0203b0ec(1); - } - - this->unk_1F0.unk_64 = 0; - this->unk_1F0.func_020352d8(); - } - } + //! TODO: fixme + // if (this->unk_164->unk_168.unk_06 <= 0) { + // if ((data_027e0d78.mFlags & 2) != 0) { + // this->unk_13C = 0; + + // if (this->func_0203b0bc() != 0) { + // this->func_0203b0ec(1); + // } + + // this->unk_1F0.unk_64 = 0; + // this->unk_1F0.func_020352d8(); + // } + // } break; case 0: case 1: @@ -462,7 +474,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a3fc(s32 touchLastX, s32 touc } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a7f0(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a7f0(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) { bool bVar5; bool bVar2; int iVar4; @@ -472,7 +484,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a7f0(EntryINF1* param_2, u32 iVar6 = param_4[0]; if (data_027e0c54 != 0) { - UnkStruct_027E0C68_UnkSubClass1* pVar4 = data_027e0c68.func_02036700(); + UnkStruct_027E0C68_UnkSubClass1_Sub1* pVar4 = data_027e0c68.func_02036700(); if (pVar4 != NULL && pVar4->unk_15C > 0) { this->func_02038b40(); @@ -480,7 +492,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a7f0(EntryINF1* param_2, u32 } if (*((s32*)data_027e0618) == 2 && data_027e0d38->func_ov000_02078b40() == 2 && func_ov003_020f3f94(data_ov009_0211f5b4) == 0) { - UnkStruct_027E0C68_UnkSubClass1* pVar4 = data_027e0c68.unk_28[4]; + UnkStruct_027E0C68_UnkSubClass1_Sub1* pVar4 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)data_027e0c68.unk_28[4]; if (pVar4 != NULL && pVar4->unk_15C > 0) { this->func_02038b40(); @@ -509,7 +521,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a7f0(EntryINF1* param_2, u32 } // non-matching (can't get the switch decomp...) -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a988(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a988(void) { short sVar1; int iVar2; u16* puVar3; @@ -534,7 +546,8 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a988(void) { this->unk_580 = 0; this->func_020392b4(); this->unk_57C = 0; - this->unk_164->unk_168.unk_06 = 0; + //! TODO: fixme + // this->unk_164->unk_168.unk_06 = 0; this->unk_57D = 0; this->unk_57F = 0; this->unk_57A = 0; @@ -562,7 +575,9 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a988(void) { uVar5 = (local_54[iVar2][3] << 0x10) | local_54[iVar2][2]; if (0x00010017 < uVar5) { if (uVar5 == 0x00020001) { - sVar1 = this->unk_164->unk_168.unk_06; + //! TODO: fixme + // sVar1 = this->unk_164->unk_168.unk_06; + // (param_1 + sVar1 * 2 + 0x562)[0] = '\x1B'; // (param_1 + sVar1 * 2 + 0x562)[1] = 0; } @@ -702,7 +717,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a988(void) { // (**(code **)(*(int *)param_1 + 0x10))(0); } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203aea8(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203aea8(void) { if (this->unk_15F == 0 || this->unk_154->unk_06 <= 2) { this->unk_168.unk_64 = this->unk_168.unk_7C; this->unk_168.func_020352d8(); @@ -714,7 +729,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203aea8(void) { } // non-matching -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203af1c(void) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203af1c(void) { bool bVar1; unk8* puVar2; int iVar3; @@ -728,7 +743,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203af1c(void) { if ((puVar2 + 0x244) != NULL || (puVar2[0x250] == '\x02')) { puVar2 = data_027e103c->func_ov000_020cef9c(); - if ((UnkStruct_027E0C68_UnkSubClass1*)(puVar2 + 0x244) == this) { + if ((UnkStruct_027E0C68_UnkSubClass1_Sub1*)(puVar2 + 0x244) == this) { data_027e103c->func_ov000_020cfb38(); } } @@ -761,7 +776,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203af1c(void) { } // non-matching (regalloc) -ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b264(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) { +ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203b264(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) { u16 sVar1; u32 uVar4; s32 unaff_r4; @@ -799,7 +814,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b264(UnkStruct_0203b264* par } // non-matching -ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b310(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) { +ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203b310(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) { int iVar1; u16* psVar3; @@ -831,12 +846,89 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b310(unk8 param_2, UnkStruct return 0; } -ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b410(UNK_TYPE) { - // TODO +// non-matching +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203b410(func_0203b410_param_2* param_2, unk32 param_3, unk32 param_4) { + unk16 sVar1; + unk16 uVar2; + unk32 iVar3; + unk32 iVar4; + unk32 uVar5; + u32 uVar6; + + uVar6 = 0; + + if (this->func_02032fa4() == 0) { + switch(param_2->unk_0C) { + case 0: + case 1: + uVar6 = this->unk_580 != 0; + break; + case 2: + uVar6 = 2; + break; + case 3: + uVar6 = 3; + break; + case 5: + uVar6 = 4; + break; + case 6: + uVar6 = 5; + break; + default: + // why??? + switch (param_2->unk_0C) { + case 4: + uVar6 = 8; + break; + case 7: + uVar6 = 9; + break; + default: + if (this->unk_580 != 0) { + uVar6 = 7; + } else { + uVar6 = 6; + } + break; + } + break; + } + } + + // PTR_PTR_0203b5ac[(byte)param_1[0x50]] = (char)uVar6; + data_027e0c68.unk_28[this->unk_50]->unk_50 = uVar6; + + if (this->unk_15E == 7) { + uVar5 = func_0202d5b4(data_02057f08, data_02057eec, data_020691a0, 0xCC00, 1); + func_02032304(data_02068894, data_02057ed8, data_02056af0, 1, param_4); + iVar3 = func_02016fcc(uVar5); + } else { + if (this->func_02032fa4() != 0) { + uVar5 = 0x33; + } else { + uVar5 = 0x32; + } + + data_027e0cbc.func_0203d77c(uVar5, 1, 1); + iVar3 = data_027e0cbc.func_0203d77c(data_02056a00[uVar6 * 0x18] - 2, 1, 1); + } + + if (param_2->unk_10 < 0) { + iVar3 = param_2->unk_12; + } + + if (param_2->unk_10 <= 0 && iVar3 > 0) { + uVar2 = param_2->unk_12; + this->unk_158 = param_2->unk_10; + this->unk_15A = uVar2; + } else { + this->func_0203b764(); + } } // non-matching (regalloc) -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203b5d0(unk32 param_2) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203b5d0(unk32 param_2) { unk32 uVar2; if (this->unk_50 != 0 || data_027e0db0.unk_04 > 0 || func_0203c084() != 0 || (gAdventureFlags->Exists() && gAdventureFlags->func_ov00_02097738())) { @@ -864,17 +956,18 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203b5d0(unk32 param_2) { this->func_020393a8(param_2); } -ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b814(UNK_TYPE) { +// switch decomp issue +ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203b814(UNK_TYPE) { // TODO } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203bdcc(unk32* param_2, unk32* param_3) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203bdcc(unk32* param_2, unk32* param_3) { this->func_0203947c(); *param_2 += this->unk_56E; *param_3 += this->unk_570; } -ARM UnkStruct_027E0C68_UnkSubClass1::~UnkStruct_027E0C68_UnkSubClass1() { +ARM UnkStruct_027E0C68_UnkSubClass1_Sub1::~UnkStruct_027E0C68_UnkSubClass1_Sub1() { this->unk_388.func_020350ac(); this->unk_300.func_020350ac(); this->unk_278.func_020350ac(); @@ -883,12 +976,12 @@ ARM UnkStruct_027E0C68_UnkSubClass1::~UnkStruct_027E0C68_UnkSubClass1() { this->func_02038b1c(); } -ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203c350(void) { +ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203c350(void) { return true; } // non-matching -ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203dcb4(unk32 param_2, unk32 param_3) { +ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203dcb4(unk32 param_2, unk32 param_3) { unk32 uVar1; unk32 local_c; unk32 local_10; @@ -903,14 +996,14 @@ ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203dcb4(unk32 param_2, unk32 par return true; } -ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203e060(u8 param_2, u8 param_3) { +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203e060(u8 param_2, u8 param_3) { this->func_0203dc10(1, param_3); this->unk_11E = param_2; this->unk_118 = -1; this->func_020331c4(param_2, -1); } -ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203e0c8(void) { +ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203e0c8(void) { if (this->unk_122 != 0) { this->func_0203e0f8(); this->func_0203dc10(0); |
