From dea4060fb5eca12980e578b820e6ee349d721c8e Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Fri, 24 Jan 2025 03:37:43 +0100 Subject: [PATCH] more progress --- config/eur/arm9/symbols.txt | 18 ++++---- config/usa/arm9/symbols.txt | 18 ++++---- include/Message/MessageManager.hpp | 14 +++++- src/Main/Message/MessageManager.cpp | 70 ++++++++++++++++++++++++++++- 4 files changed, 98 insertions(+), 22 deletions(-) diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index db1ffeac..478f8f21 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1792,14 +1792,14 @@ func_020363c8 kind:function(arm,size=0x74) addr:0x20363c8 func_0203643c kind:function(arm,size=0x54) addr:0x203643c func_02036490 kind:function(thumb,size=0x1cc) addr:0x2036490 func_0203665c kind:function(thumb,size=0x4c) addr:0x203665c -func_020366a8 kind:function(arm,size=0x1c) addr:0x20366a8 -func_020366c4 kind:function(arm,size=0x3c) addr:0x20366c4 -func_02036700 kind:function(arm,size=0x3c) addr:0x2036700 -func_0203673c kind:function(arm,size=0x34) addr:0x203673c +_ZN18UnkStruct_027E0C68D2Ev kind:function(arm,size=0x1c) addr:0x20366a8 +_ZN18UnkStruct_027E0C6813func_020366c4Ev kind:function(arm,size=0x3c) addr:0x20366c4 +_ZN18UnkStruct_027E0C6813func_02036700Ev kind:function(arm,size=0x3c) addr:0x2036700 +_ZN18UnkStruct_027E0C6813func_0203673cEv kind:function(arm,size=0x34) addr:0x203673c func_02036770 kind:function(arm,size=0x28) addr:0x2036770 -func_02036798 kind:function(arm,size=0x44) addr:0x2036798 -func_020367dc kind:function(arm,size=0x10) addr:0x20367dc -func_020367ec kind:function(arm,size=0x1c) addr:0x20367ec +_ZN18UnkStruct_027E0C6813func_02036798Ev kind:function(arm,size=0x44) addr:0x2036798 +_ZN18UnkStruct_027E0C6813func_020367dcEi kind:function(arm,size=0x10) addr:0x20367dc +_ZN18UnkStruct_027E0C6813func_020367ecEv kind:function(arm,size=0x1c) addr:0x20367ec _ZN18UnkStruct_027E0C6813func_02036808Ev kind:function(arm,size=0x1c) addr:0x2036808 _ZN18UnkStruct_027E0C6813func_02036824Ev kind:function(arm,size=0x2c) addr:0x2036824 _ZN18UnkStruct_027E0C6813func_02036850Ev kind:function(arm,size=0x38) addr:0x2036850 @@ -1878,7 +1878,7 @@ func_02038b08 kind:function(thumb,size=0x14) addr:0x2038b08 func_02038b1c 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_02038b40P22Struct_027E0C68_unk_28 kind:function(arm,size=0x34) addr:0x2038b40 +_Z13func_02038b40P31UnkStruct_027E0C68_UnkSubClass1 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 func_02038c34 kind:function(arm,size=0x84) addr:0x2038c34 @@ -2034,7 +2034,7 @@ func_0203dcb4 kind:function(arm,size=0x48) addr:0x203dcb4 func_0203dcfc kind:function(arm,size=0xf0) addr:0x203dcfc func_0203ddec kind:function(arm,size=0x10) addr:0x203ddec func_0203ddfc kind:function(arm,size=0x18) addr:0x203ddfc -_Z13func_0203de14P22Struct_027E0C68_unk_28i kind:function(arm,size=0x10) addr:0x203de14 +_Z13func_0203de14P31UnkStruct_027E0C68_UnkSubClass1i kind:function(arm,size=0x10) addr:0x203de14 func_0203de24 kind:function(arm,size=0x34) addr:0x203de24 func_0203de58 kind:function(arm,size=0x208) addr:0x203de58 func_0203e060 kind:function(arm,size=0x30) addr:0x203e060 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 4d1f8a0a..35ce8b88 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1792,14 +1792,14 @@ func_020363c8 kind:function(arm,size=0x74) addr:0x2036384 func_0203643c kind:function(arm,size=0x54) addr:0x20363f8 func_02036490 kind:function(thumb,size=0x1cc) addr:0x203644c func_0203665c kind:function(thumb,size=0x4c) addr:0x2036618 -func_020366a8 kind:function(arm,size=0x1c) addr:0x2036664 -func_020366c4 kind:function(arm,size=0x3c) addr:0x2036680 -func_02036700 kind:function(arm,size=0x3c) addr:0x20366bc -func_0203673c kind:function(arm,size=0x34) addr:0x20366f8 +_ZN18UnkStruct_027E0C68D2Ev kind:function(arm,size=0x1c) addr:0x2036664 +_ZN18UnkStruct_027E0C6813func_020366c4Ev kind:function(arm,size=0x3c) addr:0x2036680 +_ZN18UnkStruct_027E0C6813func_02036700Ev kind:function(arm,size=0x3c) addr:0x20366bc +_ZN18UnkStruct_027E0C6813func_0203673cEv kind:function(arm,size=0x34) addr:0x20366f8 func_02036770 kind:function(arm,size=0x28) addr:0x203672c -func_02036798 kind:function(arm,size=0x44) addr:0x2036754 -func_020367dc kind:function(arm,size=0x10) addr:0x2036798 -func_020367ec kind:function(arm,size=0x1c) addr:0x20367a8 +_ZN18UnkStruct_027E0C6813func_02036798Ev kind:function(arm,size=0x44) addr:0x2036754 +_ZN18UnkStruct_027E0C6813func_020367dcEi kind:function(arm,size=0x10) addr:0x2036798 +_ZN18UnkStruct_027E0C6813func_020367ecEv kind:function(arm,size=0x1c) addr:0x20367a8 _ZN18UnkStruct_027E0C6813func_02036808Ev kind:function(arm,size=0x1c) addr:0x20367c4 _ZN18UnkStruct_027E0C6813func_02036824Ev kind:function(arm,size=0x2c) addr:0x20367e0 _ZN18UnkStruct_027E0C6813func_02036850Ev kind:function(arm,size=0x38) addr:0x203680c @@ -1878,7 +1878,7 @@ func_02038b08 kind:function(thumb,size=0x14) addr:0x2038ac4 func_02038b1c kind:function(thumb,size=0xc) addr:0x2038ad8 func_02038b28 kind:function(thumb,size=0xc) addr:0x2038ae4 func_02038b34 kind:function(arm,size=0xc) addr:0x2038af0 -_Z13func_02038b40P22Struct_027E0C68_unk_28 kind:function(arm,size=0x34) addr:0x2038afc +_Z13func_02038b40P31UnkStruct_027E0C68_UnkSubClass1 kind:function(arm,size=0x34) addr:0x2038afc func_02038b74 kind:function(arm,size=0x4) addr:0x2038b30 func_02038b78 kind:function(arm,size=0xbc) addr:0x2038b34 func_02038c34 kind:function(arm,size=0x84) addr:0x2038bf0 @@ -2034,7 +2034,7 @@ func_0203dcb4 kind:function(arm,size=0x48) addr:0x203dc70 func_0203dcfc kind:function(arm,size=0xf0) addr:0x203dcb8 func_0203ddec kind:function(arm,size=0x10) addr:0x203dda8 func_0203ddfc kind:function(arm,size=0x18) addr:0x203ddb8 -_Z13func_0203de14P22Struct_027E0C68_unk_28i kind:function(arm,size=0x10) addr:0x203ddd0 +_Z13func_0203de14P31UnkStruct_027E0C68_UnkSubClass1i kind:function(arm,size=0x10) addr:0x203ddd0 func_0203de24 kind:function(arm,size=0x34) addr:0x203dde0 func_0203de58 kind:function(arm,size=0x208) addr:0x203de14 func_0203e060 kind:function(arm,size=0x30) addr:0x203e01c diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index 8d10c0b6..b20e846c 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -3,6 +3,7 @@ #include "global.h" #include "types.h" +#include "System/SysNew.hpp" #include "Message/BMG.hpp" // temp @@ -36,6 +37,8 @@ public: /* 0x54 */ unk32 unk_54; /* 0x58 */ unk32 unk_58; /* 0x5C */ s16 unk_5C; + /* 0x60 */ unk32 unk_60[0x3D]; + /* 0x5C */ s16 unk_15C; /* 0x00 */ virtual UNK_TYPE vfunc_00(void); /* 0x04 */ virtual UNK_TYPE vfunc_04(void); @@ -106,7 +109,7 @@ public: /* 0x34 */ virtual UNK_TYPE vfunc_34(void); }; -class UnkStruct_027E0C68 { +class UnkStruct_027E0C68 : public SysObject { private: /* 0x00 */ unk16 unk_00; /* 0x02 */ unk16 unk_02; @@ -121,10 +124,17 @@ private: /* 0x1C */ UnkStruct_027E0C68_UnkSubClass2* unk_1C; /* 0x20 */ u32* unk_20; /* 0x24 */ unk32 unk_24; - /* 0x28 */ UnkStruct_027E0C68_UnkSubClass1* unk_28[6]; // 022172B0 + /* 0x28 */ UnkStruct_027E0C68_UnkSubClass1* unk_28[6]; public: + UnkStruct_027E0C68(); + ~UnkStruct_027E0C68(); UnkStruct_027E0C68_UnkSubClass1* func_020366c4(void); + UnkStruct_027E0C68_UnkSubClass1* func_02036700(void); + UnkStruct_027E0C68_UnkSubClass2* func_0203673c(void); + unk32 func_02036798(void); + bool func_020367dc(int param_2); + bool UnkStruct_027E0C68::func_020367ec(void); bool func_02036808(void); bool func_02036824(void); bool func_02036850(void); diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index f4ef6438..92a2f965 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -17,8 +17,72 @@ extern UnkStruct2 data_027e077c; extern u32 data_ov000_020eec9c[]; extern u8 data_02056be4[]; +// non-matching +ARM UnkStruct_027E0C68::~UnkStruct_027E0C68() {} + +// non-matching +ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_020366c4(void) { + if (((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) && ((data_02056be4[data_027e077c.mUnk_0] & 2) == 0)) { + return this->unk_28[2]; + } + + return this->unk_28[0]; +} + +// non-matching +ARM UnkStruct_027E0C68_UnkSubClass1* UnkStruct_027E0C68::func_02036700(void) { + if (((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) && ((data_02056be4[data_027e077c.mUnk_0] & 2) == 0)) { + return this->unk_28[0]; + } + + return this->unk_28[2]; +} + +ARM UnkStruct_027E0C68_UnkSubClass2* UnkStruct_027E0C68::func_0203673c(void) { + bool iVar1 = this->func_02036824(); + bool iVar2 = this->func_02036850(); + + if (iVar1) { + return this->unk_18; + } + + if (iVar2) { + return this->unk_1C; + } + + return NULL; +} + +ARM unk32 UnkStruct_027E0C68::func_02036798(void) { + unk32 uVar2 = 1; + + if (this->unk_04 == 0) { + bool bVar1 = false; + + if (this->unk_1C != NULL && (this->unk_1C->unk_18 & 0xFFFF0000) != 0x1000000) { + bVar1 = true; + } + + if (!bVar1) { + uVar2 = 0; + } + } + + return uVar2; +} + +ARM bool UnkStruct_027E0C68::func_020367dc(int param_2) { + return param_2 == 0; +} + +ARM bool UnkStruct_027E0C68::func_020367ec(void) { + //! TODO: fake? + return this->unk_28[0]->unk_15C > 0; +} + ARM bool UnkStruct_027E0C68::func_02036808(void) { - return this->unk_28[2]->unk_15[0x2E] > 0; + //! TODO: fake? + return this->unk_28[2]->unk_15C > 0; } ARM bool UnkStruct_027E0C68::func_02036824(void) { @@ -34,6 +98,7 @@ ARM bool UnkStruct_027E0C68::func_02036824(void) { return false; } +// non-matching ARM bool UnkStruct_027E0C68::func_02036850(void) { bool ret = false; u8 value; @@ -52,7 +117,8 @@ ARM void UnkStruct_027E0C68::func_02036888(UnkStruct_027E0C68_UnkSubClass2* para if ((param_2->unk_18 & 0xFFFF0000) != 0x1000000) { UnkStruct_027E0C68_UnkSubClass1* iVar1 = this->func_020366c4(); - if (iVar1->unk_5C <= 0) { + //! TODO: fake? + if (iVar1->unk_15C <= 0) { param_2->vfunc_10(); } else { param_2->vfunc_0C(this->func_020366c4());