diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 533362da..691f94db 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -19,13 +19,13 @@ src/Main/Message/BmgRelatedFunctions.cpp: .text start:0x0202d3bc end:0x0202d56c src/Main/Message/func_02032f0c.cpp: - .text start:0x02032f0c end:0x0203643c + .text start:0x02032e7c end:0x0203643c src/Main/Message/MessageManager.cpp: - .text start:0x0203643c end:0x020371b0 + .text start:0x0203643c end:0x020371b4 src/Main/Message/BMG.cpp: - .text start:0x020371b0 end:0x0203744c + .text start:0x020371b4 end:0x0203744c .data start:0x02057b78 end:0x02057cb8 .rodata start:0x02056958 end:0x020569e0 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index b19d6098..78a95ed9 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1422,7 +1422,7 @@ func_0202dc38 kind:function(arm,size=0xc4) addr:0x202dc38 func_0202dcfc kind:function(arm,size=0x140) addr:0x202dcfc func_0202de3c kind:function(arm,size=0x1f4) addr:0x202de3c func_0202e030 kind:function(arm,size=0x170) addr:0x202e030 -func_0202e1a0 kind:function(arm,size=0x24) addr:0x202e1a0 +_ZN30UnkSubClass1_UnkownClass1_Sub1C1Ev kind:function(arm,size=0x24) addr:0x202e1a0 func_0202e1c4 kind:function(arm,size=0x24) addr:0x202e1c4 func_0202e1e8 kind:function(arm,size=0x128) addr:0x202e1e8 func_0202e310 kind:function(arm,size=0x234) addr:0x202e310 @@ -1645,8 +1645,8 @@ func_02032d40 kind:function(thumb,size=0x28) addr:0x2032d40 func_02032d68 kind:function(arm,size=0xdc) addr:0x2032d68 func_02032e44 kind:function(arm,size=0x1c) addr:0x2032e44 func_02032e60 kind:function(arm,size=0x1c) addr:0x2032e60 -func_02032e7c kind:function(arm,size=0x48) addr:0x2032e7c -func_02032ec4 kind:function(arm,size=0x48) addr:0x2032ec4 +_ZN31UnkSubClass1_UnkownClass2_Base1C2Ev kind:function(arm,size=0x48) addr:0x2032e7c +_ZN31UnkSubClass1_UnkownClass2_Base1C1Ev kind:function(arm,size=0x48) addr:0x2032ec4 _ZN38UnkStruct_027E0C68_UnkSubClass1_Base_1C2Ev kind:function(thumb,size=0x78) addr:0x2032f0c func_02032f84 kind:function(thumb,size=0x4) addr:0x2032f84 func_02032f88 kind:function(thumb,size=0xc) addr:0x2032f88 @@ -1732,10 +1732,10 @@ func_02034fac kind:function(arm,size=0x14) addr:0x2034fac func_02034fc0 kind:function(arm,size=0x14) addr:0x2034fc0 func_02034fd4 kind:function(arm,size=0x38) addr:0x2034fd4 func_0203500c kind:function(arm,size=0x10) addr:0x203500c -func_0203501c kind:function(arm,size=0x48) addr:0x203501c +_ZN25UnkSubClass1_UnkownClass1C2Ev kind:function(arm,size=0x48) addr:0x203501c _ZN25UnkSubClass1_UnkownClass1C1Ev kind:function(arm,size=0x48) addr:0x2035064 -func_020350ac kind:function(arm,size=0x4) addr:0x20350ac -func_020350b0 kind:function(arm,size=0x4) addr:0x20350b0 +_ZN25UnkSubClass1_UnkownClass1D1Ev kind:function(arm,size=0x4) addr:0x20350ac +_ZN25UnkSubClass1_UnkownClass1D2Ev kind:function(arm,size=0x4) addr:0x20350b0 func_020350b4 kind:function(arm,size=0xb8) addr:0x20350b4 func_0203516c kind:function(arm,size=0x3c) addr:0x203516c func_020351a8 kind:function(arm,size=0x8) addr:0x20351a8 @@ -1792,7 +1792,7 @@ func_020363c8 kind:function(arm,size=0x74) addr:0x20363c8 _ZN18UnkStruct_027E0C6813func_0203643cEPiPS_j kind:function(arm,size=0x54) addr:0x203643c _ZN18UnkStruct_027E0C6813func_02036490Eiii kind:function(thumb,size=0x1cc) addr:0x2036490 _ZN18UnkStruct_027E0C6813func_0203665cEv kind:function(thumb,size=0x4c) addr:0x203665c -_ZN18UnkStruct_027E0C68D2Ev kind:function(arm,size=0x1c) addr:0x20366a8 +func_020366a8 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 @@ -1804,14 +1804,14 @@ _ZN18UnkStruct_027E0C6813func_02036808Ev kind:function(arm,size=0x1c) addr:0x203 _ZN18UnkStruct_027E0C6813func_02036824Ev kind:function(arm,size=0x2c) addr:0x2036824 _ZN18UnkStruct_027E0C6813func_02036850Ev kind:function(arm,size=0x38) addr:0x2036850 _ZN18UnkStruct_027E0C6813func_02036888EP31UnkStruct_027E0C68_UnkSubClass2 kind:function(arm,size=0x6c) addr:0x2036888 -_ZN18UnkStruct_027E0C6813func_020368f4EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x18) addr:0x20368f4 +_ZN18UnkStruct_027E0C6813func_020368f4EP37UnkStruct_027E0C68_UnkSubClass2_Base1 kind:function(arm,size=0x18) addr:0x20368f4 _ZN18UnkStruct_027E0C6813func_0203690cEiii kind:function(arm,size=0x2b0) addr:0x203690c _ZN18UnkStruct_027E0C6813func_02036bbcEv kind:function(arm,size=0x94) addr:0x2036bbc _ZN18UnkStruct_027E0C6813func_02036c50Ei kind:function(arm,size=0x54) addr:0x2036c50 _ZN18UnkStruct_027E0C6813func_02036ca4Ei kind:function(arm,size=0x40) addr:0x2036ca4 _ZN18UnkStruct_027E0C6813func_02036ce4EP31UnkStruct_027E0C68_UnkSubClass2i kind:function(arm,size=0x4c) addr:0x2036ce4 -_ZN18UnkStruct_027E0C6813func_02036d30EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x1c) addr:0x2036d30 -_ZN18UnkStruct_027E0C6813func_02036d4cEP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x20) addr:0x2036d4c +_ZN18UnkStruct_027E0C6813func_02036d30EP37UnkStruct_027E0C68_UnkSubClass2_Base1 kind:function(arm,size=0x1c) addr:0x2036d30 +_ZN18UnkStruct_027E0C6813func_02036d4cEP37UnkStruct_027E0C68_UnkSubClass2_Base1 kind:function(arm,size=0x20) addr:0x2036d4c _ZN18UnkStruct_027E0C6813func_02036d6cEv kind:function(arm,size=0x3c) addr:0x2036d6c _ZN18UnkStruct_027E0C6813func_02036da8EjPs kind:function(arm,size=0x134) addr:0x2036da8 _ZN18UnkStruct_027E0C6813func_02036edcEjh kind:function(arm,size=0x8c) addr:0x2036edc @@ -1820,7 +1820,7 @@ _ZN18UnkStruct_027E0C6813func_020370d0Eii kind:function(arm,size=0x18) addr:0x20 _ZN18UnkStruct_027E0C6813func_020370e8Eissi kind:function(arm,size=0x70) addr:0x20370e8 _ZN18UnkStruct_027E0C6813func_02037158EP21UnkSubClass1_02256FF8 kind:function(arm,size=0x20) addr:0x2037158 _ZN18UnkStruct_027E0C6813func_02037178EP21UnkSubClass1_02256FF8 kind:function(arm,size=0x38) addr:0x2037178 -_Z13func_020371b0v kind:function(arm,size=0x4) addr:0x20371b0 +_ZN18UnkStruct_027E0C68D2Ev kind:function(arm,size=0x4) addr:0x20371b0 _Z13func_020371b4P11BMGFileInfo kind:function(thumb,size=0x14) addr:0x20371b4 _Z13func_020371c8P11BMGFileInfoPjs kind:function(thumb,size=0x90) addr:0x20371c8 _Z13func_02037258P11BMGFileInfoi kind:function(arm,size=0x34) addr:0x2037258 @@ -1839,10 +1839,10 @@ func_02037604 kind:function(arm,size=0x24) addr:0x2037604 func_02037628 kind:function(arm,size=0x98) addr:0x2037628 func_020376c0 kind:function(arm,size=0x64) addr:0x20376c0 func_02037724 kind:function(arm,size=0x2c) addr:0x2037724 -func_02037750 kind:function(arm,size=0x44) addr:0x2037750 -func_02037794 kind:function(arm,size=0x38) addr:0x2037794 -func_020377cc kind:function(arm,size=0x40) addr:0x20377cc -func_0203780c kind:function(arm,size=0x38) addr:0x203780c +_ZN37UnkStruct_027E0C68_UnkSubClass2_Base1C2Eii kind:function(arm,size=0x44) addr:0x2037750 +_ZN37UnkStruct_027E0C68_UnkSubClass2_Base1D1Ev kind:function(arm,size=0x38) addr:0x2037794 +_ZN37UnkStruct_027E0C68_UnkSubClass2_Base1D0Ev kind:function(arm,size=0x40) addr:0x20377cc +_ZN37UnkStruct_027E0C68_UnkSubClass2_Base1D2Ev kind:function(arm,size=0x38) addr:0x203780c func_02037844 kind:function(arm,size=0x10) addr:0x2037844 func_02037854 kind:function(arm,size=0xc4) addr:0x2037854 func_02037918 kind:function(arm,size=0x234) addr:0x2037918 @@ -1856,26 +1856,26 @@ func_020386b4 kind:function(arm,size=0x4) addr:0x20386b4 func_020386b8 kind:function(arm,size=0xc) addr:0x20386b8 func_020386c4 kind:function(arm,size=0x8) addr:0x20386c4 func_020386cc kind:function(arm,size=0xc) addr:0x20386cc -func_020386d8 kind:function(arm,size=0x40) addr:0x20386d8 +_ZN31UnkStruct_027E0C68_UnkSubClass2C2Ev kind:function(arm,size=0x40) addr:0x20386d8 _ZN31UnkStruct_027E0C68_UnkSubClass2C1Ev kind:function(arm,size=0x40) addr:0x2038718 func_02038758 kind:function(arm,size=0x18) addr:0x2038758 func_02038770 kind:function(arm,size=0x1c) addr:0x2038770 func_0203878c kind:function(arm,size=0x18) addr:0x203878c func_020387a4 kind:function(arm,size=0x28) addr:0x20387a4 -func_020387cc kind:function(arm,size=0x14) addr:0x20387cc +_ZN31UnkStruct_027E0C68_UnkSubClass2D2Ev kind:function(arm,size=0x14) addr:0x20387cc func_020387e0 kind:function(thumb,size=0xc) addr:0x20387e0 func_020387ec kind:function(arm,size=0x18) addr:0x20387ec func_02038804 kind:function(arm,size=0x18) addr:0x2038804 -func_0203881c kind:function(arm,size=0x3c) addr:0x203881c +_ZN25UnkSubClass1_UnkownClass2C1Ev kind:function(arm,size=0x3c) addr:0x203881c func_02038858 kind:function(arm,size=0x30) addr:0x2038858 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_BaseC1Eic kind:function(thumb,size=0x5c) addr:0x2038aa0 -func_02038afc kind:function(thumb,size=0xc) addr:0x2038afc -func_02038b08 kind:function(thumb,size=0x14) addr:0x2038b08 -func_02038b1c kind:function(thumb,size=0xc) addr:0x2038b1c +_ZN36UnkStruct_027E0C68_UnkSubClass1_BaseC1Eisi 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 @@ -2024,10 +2024,10 @@ func_0203d848 kind:function(arm,size=0x8c) addr:0x203d848 func_0203d8d4 kind:function(arm,size=0x8c) addr:0x203d8d4 func_0203d960 kind:function(arm,size=0xc0) addr:0x203d960 func_0203da20 kind:function(arm,size=0xc0) addr:0x203da20 -_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_0C2Ecii kind:function(thumb,size=0x98) addr:0x203dae0 -func_0203db78 kind:function(thumb,size=0x30) addr:0x203db78 -func_0203dba8 kind:function(thumb,size=0x38) addr:0x203dba8 -func_0203dbe0 kind:function(thumb,size=0x30) addr:0x203dbe0 +_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_0C2Eiii kind:function(thumb,size=0x98) addr:0x203dae0 +_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_0D1Ev kind:function(thumb,size=0x30) addr:0x203db78 +_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_0D0Ev kind:function(thumb,size=0x38) addr:0x203dba8 +_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_0D2Ev kind:function(thumb,size=0x30) addr:0x203dbe0 func_0203dc10 kind:function(arm,size=0x64) addr:0x203dc10 func_0203dc74 kind:function(arm,size=0x40) addr:0x203dc74 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_14Eii kind:function(arm,size=0x48) addr:0x203dcb4 diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index 2cfe20ab..988ec1cd 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -6,19 +6,53 @@ #include "System/SysNew.hpp" #include "Message/BMG.hpp" #include "Message/UnkStruct_027E0C68_UnkSubClass1.hpp" +#include "lib/math.h" -class UnkStruct_027E0C68_UnkSubClass2 : public SysObject { +// astruct_14 +class UnkStruct_027E0C68_UnkSubClass2_Base1 : public SysObject { public: /* 0x00 (vtable) */ - /* 0x04 */ unk32 unk_04; - /* 0x08 */ unk32 unk_08; - /* 0x0C */ unk32 unk_0C; - /* 0x10 */ unk32 unk_10; + /* 0x04 */ unk32 unk_04[4]; /* 0x14 */ unk32 unk_14; /* 0x18 */ u32 unk_18; - /* 0x1C */ unk32 unk_1C; - /* 0x20 */ unk32 unk_20; - /* 0x24 */ unk32 unk_24; + /* 0x1C */ unk8 unk_1C; + /* 0x1D */ u8 unk_1D; + /* 0x1E */ unk16 unk_1E; + /* 0x20 */ + + UnkStruct_027E0C68_UnkSubClass2_Base1(unk32 param_2, unk32 param_3); + + /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass2_Base1(); + /* 0x08 */ virtual void vfunc_08(u32 param_1); + /* 0x0C */ virtual void vfunc_0C(UnkStruct_027E0C68_UnkSubClass1_Sub1* param_2); + /* 0x10 */ virtual void vfunc_10(void); + /* 0x14 */ virtual UNK_TYPE vfunc_14(void); + /* 0x18 */ virtual UNK_TYPE vfunc_18(void); + /* 0x1C */ virtual UNK_TYPE vfunc_1C(void); + /* 0x20 */ virtual UNK_TYPE vfunc_20(void); + /* 0x24 */ virtual UNK_TYPE vfunc_24(void); + /* 0x28 */ virtual UNK_TYPE vfunc_28(void); + /* 0x2C */ virtual UNK_TYPE vfunc_2C(void); + /* 0x30 */ virtual UNK_TYPE vfunc_30(void); + /* 0x34 */ +}; + +class UnkStruct_027E0C68_UnkSubClass2_unk_24 { +public: + /* 0x00 */ unk32 unk_00; + /* 0x04 */ + + void func_020376c0(Vec3p param_2); +}; + +// astruct_15 +class UnkStruct_027E0C68_UnkSubClass2 : public UnkStruct_027E0C68_UnkSubClass2_Base1 { +public: + /* 0x20 */ unk8 unk_20; + /* 0x21 */ unk8 unk_21; + /* 0x22 */ unk8 unk_22; + /* 0x23 */ unk8 unk_23; + /* 0x24 */ UnkStruct_027E0C68_UnkSubClass2_unk_24 unk_24; /* 0x28 */ unk32 unk_28; /* 0x2C */ unk32 unk_2C; /* 0x30 */ unk32 unk_30; @@ -45,32 +79,6 @@ public: /* 0x34 */ }; -class UnkStruct_027E0C68_UnkSubClass3 : public SysObject { -public: - /* 0x00 (vtable) */ - /* 0x04 */ unk32 unk_04; - /* 0x08 */ unk32 unk_08; - /* 0x0C */ unk32 unk_0C; - /* 0x10 */ unk32 unk_10; - /* 0x14 */ unk32 unk_14; - /* 0x18 */ u32 unk_18; - - UnkStruct_027E0C68_UnkSubClass3(); - /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass3() override; - /* 0x08 */ virtual UNK_TYPE vfunc_08(void) override; - /* 0x0C */ virtual UNK_TYPE vfunc_0C(void) override; - /* 0x10 */ virtual void vfunc_10(void) override; - /* 0x14 */ virtual UNK_TYPE vfunc_14(void) override; - /* 0x1C */ virtual UNK_TYPE vfunc_1C(void) override; - /* 0x20 */ virtual UNK_TYPE vfunc_20(void) override; - /* 0x24 */ virtual UNK_TYPE vfunc_24(void) override; - /* 0x28 */ virtual UNK_TYPE vfunc_28(void) override; - /* 0x2C */ virtual UNK_TYPE vfunc_2C(void) override; - /* 0x30 */ virtual UNK_TYPE vfunc_30(void) override; - /* 0x34 */ virtual UNK_TYPE vfunc_34(void) override; - /* 0x38 */ virtual UNK_TYPE vfunc_38(void) override; -}; - class UnkStruct_027E0C68 : public SysObject { public: /* 0x00 */ unk16 unk_00; @@ -87,7 +95,7 @@ public: /* 0x10 */ unk16 unk_12; /* 0x14 */ BMGGroups* pGroups; /* 0x18 */ UnkStruct_027E0C68_UnkSubClass2* unk_18[2]; - /* 0x20 */ UnkStruct_027E0C68_UnkSubClass3* unk_20[2]; // is it actually UnkStruct_027E0C68_UnkSubClass2? + /* 0x20 */ UnkStruct_027E0C68_UnkSubClass2_Base1* unk_20[2]; /* 0x28 */ UnkStruct_027E0C68_UnkSubClass1_Base* unk_28[6]; /* 0x40 */ UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_40[2]; // is array size 6? /* 0x48 */ @@ -95,6 +103,7 @@ public: static void func_0203643c(int *param_1, UnkStruct_027E0C68* param_2, u32 param_3); void func_02036490(unk32 param_2, unk32 param_3, unk32 param_4); void func_0203665c(void); + UnkStruct_027E0C68(); ~UnkStruct_027E0C68(); UnkStruct_027E0C68_UnkSubClass1_Sub1* func_020366c4(void); UnkStruct_027E0C68_UnkSubClass1_Sub1* func_02036700(void); @@ -107,14 +116,14 @@ public: bool func_02036824(void); bool func_02036850(void); void func_02036888(UnkStruct_027E0C68_UnkSubClass2* param_2); - bool func_020368f4(UnkStruct_027E0C68_UnkSubClass3* param_2); + bool func_020368f4(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2); void func_0203690c(unk32 param_2, unk32 param_3, unk32 param_4); void func_02036bbc(void); void func_02036c50(unk32 param_2); void func_02036ca4(unk32 param_2); bool func_02036ce4(UnkStruct_027E0C68_UnkSubClass2* param_2, unk32 param_3); - bool func_02036d30(UnkStruct_027E0C68_UnkSubClass3* param_2); - bool func_02036d4c(UnkStruct_027E0C68_UnkSubClass3* param_2); + bool func_02036d30(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2); + bool func_02036d4c(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2); void func_02036d6c(void); UnkStruct_027E0C68_UnkSubClass1_Base* func_02036da8(u32 param_2, s16* param_3); void func_02036edc(u32 param_2, u8 param_3); diff --git a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp index c457ff32..0bd03ee1 100644 --- a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp +++ b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp @@ -35,14 +35,25 @@ typedef struct UnkSubClass1_unk_154 { typedef u32 (*UnkCallback1)(void); -typedef struct UnkStruct1 { - /* 0x00 */ UnkCallback1 unk_00; - /* 0x04 */ UnkCallback1 unk_04; -} UnkStruct1; // size = 0x8 +// astruct_11 +class UnkSubClass1_UnkownClass1_Sub1 { +public: + /* 0x00 */ unk16 unk_00; + /* 0x02 */ unk16 unk_02; + /* 0x04 */ unk32 unk_04; + /* 0x08 */ unk32 unk_08; + /* 0x0C */ unk32 unk_0C; + /* 0x10 */ unk32 unk_10; + /* 0x14 */ unk32 unk_14; + /* 0x18 */ + UnkSubClass1_UnkownClass1_Sub1(); +}; + +// astruct_10 class UnkSubClass1_UnkownClass1 { public: - /* 0x00 */ UnkStruct1* unk_00; + /* 0x00 (vtable) */ /* 0x04 */ unk16 unk_04; /* 0x06 */ unk16 unk_06; /* 0x08 */ u32* unk_08; @@ -66,29 +77,60 @@ public: /* 0x50 */ unk32 unk_50; /* 0x54 */ unk32 unk_54; /* 0x58 */ unk32 unk_58; - /* 0x5C */ unk32 unk_5C; - /* 0x60 */ unk32 unk_60; - /* 0x64 */ unk32 unk_64; - /* 0x68 */ unk32 unk_68; - /* 0x6C */ unk32 unk_6C; - /* 0x70 */ unk32 unk_70; + /* 0x5C */ UnkSubClass1_UnkownClass1_Sub1 unk_5C; /* 0x74 */ u32* unk_74; /* 0x78 */ u32* unk_78; /* 0x7C */ unk32 unk_7C; - /* 0x80 */ unk32 unk_80; - /* 0x84 */ unk32 unk_84; + /* 0x80 */ unk16 unk_80; + /* 0x80 */ unk16 unk_82; + /* 0x84 */ unk16 unk_84; + /* 0x84 */ unk8 unk_86; + /* 0x84 */ unk8 unk_87; /* 0x88 */ + /* 0x00 */ virtual unk16 func_020351a8(void); + /* 0x04 */ virtual unk16 func_020351b0(void); + /* 0x08 */ + UnkSubClass1_UnkownClass1(); + ~UnkSubClass1_UnkownClass1(); void func_02034a1c(unk32, unk32, struct UnkStruct_01ffbe34*); void func_02034b0c(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6); - void func_020350ac(void); void func_020350b4(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6); void func_0203516c(void); void func_020351b8(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); void func_020352d8(void); }; +class UnkSubClass1_UnkownClass2_Base1 { +public: + /* 0x00 (vtable) */ + /* 0x04 */ u16* unk_00; // pointer to the current position in the message to display + /* 0x08 */ unk16 unk_08; + /* 0x0A */ unk16 unk_0A; + /* 0x0C */ unk16 unk_0C; + /* 0x0E */ unk16 unk_0E; + /* 0x10 */ unk32 unk_10; + + UnkSubClass1_UnkownClass2_Base1(); + /* 0x00 */ virtual ~UnkSubClass1_UnkownClass2_Base1() override; + /* 0x08 */ +}; + +class UnkSubClass1_UnkownClass2 : public UnkSubClass1_UnkownClass2_Base1 { +public: + /* 0x14 */ unk32 unk_14; + /* 0x18 */ unk32 unk_18; + /* 0x1C */ unk32 unk_1C; + /* 0x20 */ unk32 unk_20; + /* 0x24 */ unk32 unk_24; + /* 0x2C */ + + UnkSubClass1_UnkownClass2(); + /* 0x00 */ virtual ~UnkSubClass1_UnkownClass2() override; + /* 0x08 */ +}; + class UnknownClass2 : public SysObject { public: /* 0x00 (vtable) */ @@ -303,10 +345,7 @@ public: /* 0x123 */ u8 unk_123; /* 0x124 */ - //! TODO: fake? - UnkStruct_027E0C68_UnkSubClass1_Base_0(); - - UnkStruct_027E0C68_UnkSubClass1_Base_0(unk8 param_2, unk32 param_3, unk32 param_4); + UnkStruct_027E0C68_UnkSubClass1_Base_0(unk32 param_2, unk32 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Base_0(); /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; @@ -339,22 +378,11 @@ public: /* 0x74 */ }; +// astruct_6 class UnkStruct_027E0C68_UnkSubClass1_Base : public UnkStruct_027E0C68_UnkSubClass1_Base_0 { public: /* 0x124 */ UnkSubClass1_unk_124* unk_124; - /* 0x128 */ UnkStruct1* unk_128; - - //! TODO: confirm this is part of this class - /* 0x12C */ u16* unk_12C; // pointer to the current position in the message to display - /* 0x130 */ unk16 unk_130; - /* 0x132 */ unk16 unk_132; - /* 0x134 */ unk32 unk_134; - /* 0x138 */ unk32 unk_138; - /* 0x13C */ unk32 unk_13C; - /* 0x140 */ unk32 unk_140; - /* 0x144 */ unk32 unk_144; - /* 0x148 */ unk32 unk_148; - /* 0x14C */ unk32 unk_14C; + /* 0x128 */ UnkSubClass1_UnkownClass2 unk_128; /* 0x150 */ u8 unk_150[4]; /* 0x154 */ UnkSubClass1_unk_154* unk_154; /* 0x158 */ unk16 unk_158; @@ -371,7 +399,7 @@ public: //! TODO: fake? UnkStruct_027E0C68_UnkSubClass1_Base(); - UnkStruct_027E0C68_UnkSubClass1_Base(unk32 param_2, unk8 param_3); + 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(); /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; @@ -403,8 +431,7 @@ public: /* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; /* 0x74 */ - static void func_0203881c(UnkStruct1** param_2); - static void func_020387e0(unk8* param_2); + static void func_020387e0(u8* param_2); unk32 func_02032fa4(void); unk32 func_02032fb4(void); @@ -443,7 +470,6 @@ public: void func_02033190(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); void func_020331c4(unk32, unk32); unk32 func_02038cf4(void); - void func_02038b1c(void); void func_0203947c(void); unk32 func_0203951c(void); void func_0203cabc(unk32); @@ -518,7 +544,6 @@ public: /* 0x588 */ UnkSubClass1_unk_124 unk_588; /* 0x5B4 */ - UnkStruct_027E0C68_UnkSubClass1_Sub1(); //! TODO: remove the function declarations that are not overridden /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Sub1() override; @@ -557,6 +582,7 @@ public: unk32 func_02038b78(void); unk32 func_02039250(void); void func_02039ca8(void); + void func_0203a188(unk32 param_2, unk32 param_3, unk32 param_4); bool func_0203a2c0(void); unk32 func_0203a30c(void); bool func_0203a3e0(void); @@ -687,7 +713,7 @@ extern unk32 data_027e0c38[]; extern "C" void func_0203489c(unk32, unk16, unk32*, unk32*); extern "C" void func_020347b0(unk32, unk16, unk32*, unk32*, unk32, unk32); extern THUMB unk32 func_0202ab48(void); -extern "C" void func_02034984(unk32, unk32, unk32, unk32, unk32); +extern "C" void func_02034984(unk32, u8, unk32, unk32); extern "C" void func_02034698(unk32, unk32, unk32*, unk32*); extern struct TouchControl data_027e0d78; diff --git a/src/Main/Message/BMG.cpp b/src/Main/Message/BMG.cpp index 69dae832..8d899b5b 100644 --- a/src/Main/Message/BMG.cpp +++ b/src/Main/Message/BMG.cpp @@ -48,9 +48,6 @@ static char* sBMGFileNames[BMG_FILE_INDEX_MAX] = { "kaitei_F", // BMG_FILE_INDEX_KAITEI_F }; -ARM void func_020371b0(void) { -} - THUMB void func_020371b4(BMGFileInfo* pFileInfo) { pFileInfo->pHeader = NULL; pFileInfo->pINF1 = NULL; diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index 282ed162..f0c7bc9f 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -133,7 +133,9 @@ THUMB void UnkStruct_027E0C68::func_0203665c(void) { } // non-matching -ARM UnkStruct_027E0C68::~UnkStruct_027E0C68() {} +ARM UnkStruct_027E0C68_UnkSubClass2_Base1::~UnkStruct_027E0C68_UnkSubClass2_Base1() { + +} // non-matching ARM UnkStruct_027E0C68_UnkSubClass1_Sub1* UnkStruct_027E0C68::func_020366c4(void) { @@ -232,7 +234,7 @@ ARM void UnkStruct_027E0C68::func_02036888(UnkStruct_027E0C68_UnkSubClass2* para } } -ARM bool UnkStruct_027E0C68::func_020368f4(UnkStruct_027E0C68_UnkSubClass3* param_2) { +ARM bool UnkStruct_027E0C68::func_020368f4(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2) { if (this->unk_20[1] != NULL) { return false; } @@ -398,7 +400,7 @@ ARM bool UnkStruct_027E0C68::func_02036ce4(UnkStruct_027E0C68_UnkSubClass2* para return false; } -ARM bool UnkStruct_027E0C68::func_02036d30(UnkStruct_027E0C68_UnkSubClass3* param_2) { +ARM bool UnkStruct_027E0C68::func_02036d30(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2) { if (this->unk_20[0] != NULL && this->unk_20[0] != param_2) { return false; } @@ -407,7 +409,7 @@ ARM bool UnkStruct_027E0C68::func_02036d30(UnkStruct_027E0C68_UnkSubClass3* para return true; } -ARM bool UnkStruct_027E0C68::func_02036d4c(UnkStruct_027E0C68_UnkSubClass3* param_2) { +ARM bool UnkStruct_027E0C68::func_02036d4c(UnkStruct_027E0C68_UnkSubClass2_Base1* param_2) { if (this->unk_20[0] == param_2) { this->unk_20[0] = NULL; return true; @@ -521,7 +523,7 @@ ARM UnkStruct_027E0C68_UnkSubClass1_Sub1* UnkStruct_027E0C68::func_02036f68(u32 } //! TODO: fake? - pSVar5->unk_164 = pSVar2; + pSVar5->unk_164 = (UnkStruct_027E0C68_UnkSubClass1_Sub1*)pSVar2; pSVar5->unk_418 = this->unk_28[5]; pSVar5->vfunc_50(pEVar1, BMG_GET_MSG_ADDR(this->pGroups, param_2), (s16*)param_3, 0); @@ -585,3 +587,6 @@ ARM UnkStruct_027E0C68_UnkSubClass1_Base* UnkStruct_027E0C68::func_02037178(UnkS return NULL; } + +ARM UnkStruct_027E0C68::~UnkStruct_027E0C68() { +} diff --git a/src/Main/Message/func_02032f0c.cpp b/src/Main/Message/func_02032f0c.cpp index b6d77ed2..35cfbef0 100644 --- a/src/Main/Message/func_02032f0c.cpp +++ b/src/Main/Message/func_02032f0c.cpp @@ -9,6 +9,20 @@ extern "C" void func_020078f4(unk32, void*, unk32); extern "C" void func_020078c0(unk32, void*, unk32); +ARM UnkSubClass1_UnkownClass2_Base1::UnkSubClass1_UnkownClass2_Base1() { + this->unk_00 = NULL; + this->unk_08 = 0; + this->unk_0A = 0; + this->unk_0C = 0; + this->unk_0E = 0; + + if (func_0202ab48() == 0) { + this->unk_10 = 2; + } else { + this->unk_10 = 3; + } +} + THUMB UnkStruct_027E0C68_UnkSubClass1_Base_1::UnkStruct_027E0C68_UnkSubClass1_Base_1() { this->unk_04 = 0; this->unk_08 = 0; @@ -30,3 +44,17 @@ THUMB UnkStruct_027E0C68_UnkSubClass1_Base_1::UnkStruct_027E0C68_UnkSubClass1_Ba this->unk_30 = 2; this->unk_34 = 3; } + +ARM UnkSubClass1_UnkownClass1::UnkSubClass1_UnkownClass1() { + this->unk_74 = NULL; + this->unk_78 = 0; + this->unk_7C = 0; + this->unk_80 = 0; + this->unk_82 = 0; + this->unk_84 = 0; + this->unk_86 = 0; + this->unk_87 = 0; +} + +ARM UnkSubClass1_UnkownClass1::~UnkSubClass1_UnkownClass1() { +} diff --git a/src/Main/Message/func_0203744c.cpp b/src/Main/Message/func_0203744c.cpp index 42ac32d2..067e0ae4 100644 --- a/src/Main/Message/func_0203744c.cpp +++ b/src/Main/Message/func_0203744c.cpp @@ -6,15 +6,56 @@ #include "Player/TouchControl.hpp" #include "Item/ItemManager.hpp" -THUMB UnkStruct_027E0C68_UnkSubClass1_Base::UnkStruct_027E0C68_UnkSubClass1_Base(unk32 param_2, unk8 param_3) { - this->unk_124 = 0; - this->func_0203881c(&this->unk_128); +ARM UnkStruct_027E0C68_UnkSubClass2_Base1::UnkStruct_027E0C68_UnkSubClass2_Base1(unk32 param_2, unk32 param_3) { + s32 i; + + this->unk_14 = param_3; + this->unk_18 = param_2; + this->unk_1C = 0; + this->unk_1D = 0xFF; + this->unk_1E = 0; + + for (i = 0; i < ARRAY_LEN(this->unk_04); i++) { + this->unk_04[i] = 0; + } +} + +ARM UnkStruct_027E0C68_UnkSubClass2_Base1::~UnkStruct_027E0C68_UnkSubClass2_Base1() { + if (data_027e0c68.unk_20[0] == this) { + data_027e0c68.func_02036d4c(this); + } +} + +// non-matching +ARM UnkStruct_027E0C68_UnkSubClass2::UnkStruct_027E0C68_UnkSubClass2() : UnkStruct_027E0C68_UnkSubClass2_Base1(0x1000000, 0) { + this->unk_20 = -1; + this->unk_24.func_020376c0(gVec3p_ZERO); +} + +ARM UnkStruct_027E0C68_UnkSubClass2::~UnkStruct_027E0C68_UnkSubClass2() { +} + +ARM UnkSubClass1_UnkownClass2::UnkSubClass1_UnkownClass2() { + this->unk_14 = 0x1000; + this->unk_18 = 0; + this->unk_1C = 0; + this->unk_20 = 0; + this->unk_24 = 0; +} + +THUMB UnkStruct_027E0C68_UnkSubClass1_Base::UnkStruct_027E0C68_UnkSubClass1_Base(unk32 param_2, unk16 param_3, unk32 param_4) + : UnkStruct_027E0C68_UnkSubClass1_Base_0(param_2, param_3, param_4), + unk_124(0) +{ this->func_020387e0(this->unk_150); this->unk_154 = 0; this->unk_15A = 0; this->unk_15C = 0; - this->unk_15E = 0xff; - this->unk_15F = 0xff; + this->unk_15E = 0xFF; + this->unk_15F = 0xFF; this->unk_160 = 1; this->unk_11E = param_3; } + +THUMB UnkStruct_027E0C68_UnkSubClass1_Base::~UnkStruct_027E0C68_UnkSubClass1_Base() { +} diff --git a/src/Main/Message/func_020397f8.cpp b/src/Main/Message/func_020397f8.cpp index e9f32362..a24c1b38 100644 --- a/src/Main/Message/func_020397f8.cpp +++ b/src/Main/Message/func_020397f8.cpp @@ -10,6 +10,9 @@ extern "C" void func_ov000_020d0460(void*); extern "C" void func_0203efd8(void*, void*); extern "C" void func_0203ee48(void*); +extern unk16 data_02056a0e[]; +extern u8 data_02056a08[]; + THUMB UnkStruct_027E0C68_UnkSubClass1_Sub1::UnkStruct_027E0C68_UnkSubClass1_Sub1() : unk_164(NULL) { u16** ppuVar3; @@ -101,8 +104,8 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_2C(void) { } if (this->unk_15C > 0) { - if ((this->unk_12C == NULL || this->unk_12C[0] == 0) != 0) { - this->unk_424.func_0203ef78(this->unk_130); + if ((this->unk_128.unk_00 == NULL || this->unk_128.unk_00[0] == 0) != 0) { + this->unk_424.func_0203ef78(this->unk_128.unk_08); } this->func_0203be64(); @@ -225,7 +228,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_40(unk32 param_2, unk32 par bVar1 = data_027e0c68.unk_28[this->unk_50]; this->vfunc_6C(&local_8c, &local_90); - this->func_0203a188(local_8c + param_2, local_90 + param_3); + this->func_0203a188(local_8c + param_2, local_90 + param_3, 0); this->func_0203e1b0(param_2 + local_8c + (this->unk_158 - (this->unk_14 << 3) / 2), param_3 + local_90 + (this->unk_15A - (this->unk_18 << 3) / 2), 0); if (this->unk_584 != 0) { @@ -259,7 +262,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_40(unk32 param_2, unk32 par iVar5 = this->func_02032fa4(); iVar8 = bVar1->unk_18; uVar9 = data_02056a04[iVar8]; - func_0203489c(uVar9, data_02056a16[iVar8], &local_94, &local_98); + // func_0203489c(uVar9, data_02056a16[iVar8], &local_94, &local_98); iVar6 = this->unk_158 - local_94; iVar7 = this->unk_15A - local_98; @@ -286,7 +289,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_40(unk32 param_2, unk32 par aStack_68.mUnk_0a = 1; this->unk_1F0.func_02034a1c(local_9c, local_a0, &aStack_68); } else { - func_02034984(iVar5 != 0 ? 0x11F : 0x18, 0, local_9c, local_a0 + 2, 0); + // func_02034984(iVar5 != 0 ? 0x11F : 0x18, 0, local_9c, local_a0 + 2, 0); } } @@ -304,6 +307,49 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_40(unk32 param_2, unk32 par } } +ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203a188(unk32 param_2, unk32 param_3, unk32 param_4) { + unk16 sVar1; + unk16 sVar2; + unk32 iVar3; + unk32 iVar4; + unk32 uVar5; + unk32 iVar6; + unk32 iStack_54; + unk32 iStack_50; + unk32 iStack_4c; + unk32 iStack_48; + UnkStruct_01ffbe34 aStack_44; + unk32 uStack_24; + + if (this->unk_15E == 7) { + return; + } + + // (short)(ushort)*(byte *)((int)data_027e0c68.unk_28[(this->unk_50 - 0x28) * 0x18]; + + iVar6 = data_027e0c68.unk_10 + this->unk_50; + // uStack_24 = param_4; + + if (data_027e0cbc.func_0203d7e0(data_02056a00[iVar6]) != 0) { + uVar5 = data_02056a04[iVar6]; + + func_0203489c(uVar5, data_02056a16[iVar6], &iStack_48, &iStack_4c); + iVar3 = iStack_50 + (this->unk_158 - iStack_48); + + func_02034698(uVar5, data_02056a0e[iVar6], &iStack_50, &iStack_54); + iVar4 = iStack_54 + (this->unk_15A - iStack_4c); + + func_01ffbe34(&aStack_44); + aStack_44.mUnk_0a = 1; + + if (this->unk_580 != 0) { + this->unk_168.func_02034a1c(param_2 + iVar3, param_3 + iVar4, &aStack_44); + } else { + func_02034984(uVar5, data_02056a08[iVar6], param_2 + iVar3, param_3 + iVar4); + } + } +} + // non-matching (regalloc) ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_48(void) { if (this->unk_164 != NULL && this->unk_164->unk_15C > 0) { @@ -380,13 +426,13 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_44(s32 touchLastX, s32 touc //! TODO: fixme // if (this->unk_164->unk_168.unk_06 <= 0) { // if ((data_027e0d78.mFlags & 2) != 0) { - // this->unk_13C = 0; + // this->unk_128.unk_14 = 0; // if (this->func_0203b0bc() != 0) { // this->func_0203b0ec(1); // } - // this->unk_1F0.unk_64 = 0; + // this->unk_1F0.unk_5C.unk_08 = 0; // this->unk_1F0.func_020352d8(); // } // } @@ -395,13 +441,13 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_44(s32 touchLastX, s32 touc case 1: default: if ((data_027e0d78.mFlags & 2) != 0) { - this->unk_13C = 0; + this->unk_128.unk_14 = 0; if (this->func_0203b0bc() != 0) { this->func_0203b0ec(1); } - this->unk_1F0.unk_64 = 0; + this->unk_1F0.unk_5C.unk_08 = 0; this->unk_1F0.func_020352d8(); } break; @@ -496,7 +542,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { this->unk_424.func_0203ee48(); this->unk_150[1] = 1; - puVar3 = this->unk_12C; + puVar3 = this->unk_128.unk_00; local_54[0] = puVar3; iVar2 = 0; @@ -642,14 +688,14 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { this->func_0203b764(); if (this->unk_15F == 0 || this->unk_154->unk_06 < 3) { - this->unk_168.unk_64 = this->unk_168.unk_7C; + this->unk_168.unk_5C.unk_08 = this->unk_168.unk_7C; this->unk_168.func_020352d8(); } else { this->unk_168.func_020351b8(1, 0, 0, 0); } } - this->unk_1F0.unk_64 = 0; + this->unk_1F0.unk_5C.unk_08 = 0; this->unk_1F0.func_020352d8(); this->vfunc_0C(0, 0, 0, 0); // (**(code **)(*(int *)param_1 + 0x10))(0); @@ -657,10 +703,10 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_5C(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.unk_5C.unk_08 = this->unk_168.unk_7C; this->unk_168.func_020352d8(); } else { - this->unk_168.unk_64 = 0; + this->unk_168.unk_5C.unk_08 = 0; this->unk_168.func_020352d8(); this->unk_168.func_020351b8(1, 0, 0, 0); } @@ -744,7 +790,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_18(UnkStruct_0203b264* par } if (bVar5) { - this->unk_424.func_0203ee80(this->unk_130); + this->unk_424.func_0203ee80(this->unk_128.unk_08); } } @@ -759,7 +805,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_1C(unk8 param_2, UnkStruct psVar3 = param_3->mUnk_4; if (psVar3[0] == 10) { - this->unk_424.func_0203ef78(this->unk_130, psVar3[0], param_4); + this->unk_424.func_0203ef78(this->unk_128.unk_08, psVar3[0], param_4); this->unk_574++; if (this->func_0203a30c() == 0) { @@ -906,12 +952,6 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_6C(unk32* param_2, unk32* p } ARM UnkStruct_027E0C68_UnkSubClass1_Sub1::~UnkStruct_027E0C68_UnkSubClass1_Sub1() { - this->unk_388.func_020350ac(); - this->unk_300.func_020350ac(); - this->unk_278.func_020350ac(); - this->unk_1F0.func_020350ac(); - this->unk_168.func_020350ac(); - this->func_02038b1c(); } ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_38(void) { diff --git a/src/Main/Message/func_0203c8a8.cpp b/src/Main/Message/func_0203c8a8.cpp index 34042c3c..1345b7c8 100644 --- a/src/Main/Message/func_0203c8a8.cpp +++ b/src/Main/Message/func_0203c8a8.cpp @@ -11,7 +11,7 @@ extern "C" void func_02007938(unk32, unk32, unk32, unk32, unk32); extern "C" UnknownClass2* func_0203d1d0(void); extern "C" UnknownClass2* func_0203d254(void); -THUMB UnkStruct_027E0C68_UnkSubClass1_Base_0::UnkStruct_027E0C68_UnkSubClass1_Base_0(unk8 param_2, unk32 param_3, unk32 param_4) { +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;