From f04fd8f032a61d6498a48d0b5cd7ec8884a94fee Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Tue, 28 Jan 2025 01:37:09 +0100 Subject: [PATCH] reverse ctor adventure --- config/eur/arm9/symbols.txt | 14 +- config/usa/arm9/symbols.txt | 10 +- .../UnkStruct_027E0C68_UnkSubClass1.hpp | 302 +++++++++++++----- .../UnkStruct_027E0C68_UnkSubClass1.cpp | 2 +- src/Main/Message/func_02032f0c.cpp | 25 ++ src/Main/Message/func_0203744c.cpp | 13 + src/Main/Message/func_020397f8.cpp | 80 ++++- src/Main/Message/func_0203c8a8.cpp | 38 +++ 8 files changed, 383 insertions(+), 101 deletions(-) diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index cf99695c..d61f2970 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1647,7 +1647,7 @@ 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 -func_02032f0c kind:function(thumb,size=0x78) addr:0x2032f0c +_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 func_02032f94 kind:function(thumb,size=0x4) addr:0x2032f94 @@ -1733,7 +1733,7 @@ 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 -func_02035064 kind:function(arm,size=0x48) addr:0x2035064 +_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 func_020350b4 kind:function(arm,size=0xb8) addr:0x20350b4 @@ -1872,7 +1872,7 @@ 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 -func_02038aa0 kind:function(thumb,size=0x5c) addr:0x2038aa0 +_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 @@ -1908,8 +1908,8 @@ func_0203951c kind:function(arm,size=0x40) addr:0x203951c func_0203955c kind:function(arm,size=0x14) addr:0x203955c func_02039570 kind:function(arm,size=0x8) addr:0x2039570 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_0CEhhhi kind:function(arm,size=0x3c) addr:0x2039578 -func_020395b4 kind:function(thumb,size=0x244) addr:0x20395b4 -_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1C1Ev kind:function(thumb,size=0x244) addr:0x20397f8 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1C2Eic kind:function(thumb,size=0x244) addr:0x20395b4 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1C1Eic kind:function(thumb,size=0x244) addr:0x20397f8 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_02039a3cEv kind:function(thumb,size=0x20) addr:0x2039a3c _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_2CEv kind:function(arm,size=0x24c) addr:0x2039a5c func_02039ca8 kind:function(arm,size=0x24) addr:0x2039ca8 @@ -2024,7 +2024,7 @@ 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 -func_0203dae0 kind:function(thumb,size=0x98) addr:0x203dae0 +_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 @@ -2034,7 +2034,7 @@ _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_14Eii kind:function(arm,size=0x4 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_0203de14P31UnkStruct_027E0C68_UnkSubClass1_Sub1i kind:function(arm,size=0x10) addr:0x203de14 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Base13func_0203de14Ei 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 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203e060Ehh kind:function(arm,size=0x30) addr:0x203e060 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index f7d7b31a..764f42f0 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1647,7 +1647,7 @@ func_02032e44 kind:function(arm,size=0x1c) addr:0x2032e40 func_02032e60 kind:function(arm,size=0x1c) addr:0x2032e5c func_02032e7c kind:function(arm,size=0x48) addr:0x2032e78 func_02032ec4 kind:function(arm,size=0x48) addr:0x2032ec0 -func_02032f0c kind:function(thumb,size=0x78) addr:0x2032f08 +_ZN38UnkStruct_027E0C68_UnkSubClass1_Base_1C2Ev kind:function(thumb,size=0x78) addr:0x2032f08 func_02032f84 kind:function(thumb,size=0x4) addr:0x2032f80 func_02032f88 kind:function(thumb,size=0xc) addr:0x2032f84 func_02032f94 kind:function(thumb,size=0x4) addr:0x2032f90 @@ -1733,7 +1733,7 @@ func_02034fc0 kind:function(arm,size=0x14) addr:0x2034f7c func_02034fd4 kind:function(arm,size=0x38) addr:0x2034f90 func_0203500c kind:function(arm,size=0x10) addr:0x2034fc8 func_0203501c kind:function(arm,size=0x48) addr:0x2034fd8 -func_02035064 kind:function(arm,size=0x48) addr:0x2035020 +_ZN25UnkSubClass1_UnkownClass1C1Ev kind:function(arm,size=0x48) addr:0x2035020 func_020350ac kind:function(arm,size=0x4) addr:0x2035068 func_020350b0 kind:function(arm,size=0x4) addr:0x203506c func_020350b4 kind:function(arm,size=0xb8) addr:0x2035070 @@ -1872,7 +1872,7 @@ func_02038888 kind:function(arm,size=0xc8) addr:0x2038844 func_02038950 kind:function(arm,size=0x130) addr:0x203890c func_02038a80 kind:function(arm,size=0x1c) addr:0x2038a3c func_02038a9c kind:function(thumb,size=0x4) addr:0x2038a58 -func_02038aa0 kind:function(thumb,size=0x5c) addr:0x2038a5c +_ZN36UnkStruct_027E0C68_UnkSubClass1_BaseC1Eic kind:function(thumb,size=0x5c) addr:0x2038a5c func_02038afc kind:function(thumb,size=0xc) addr:0x2038ab8 func_02038b08 kind:function(thumb,size=0x14) addr:0x2038ac4 func_02038b1c kind:function(thumb,size=0xc) addr:0x2038ad8 @@ -1908,7 +1908,7 @@ func_0203951c kind:function(arm,size=0x40) addr:0x20394d8 func_0203955c kind:function(arm,size=0x14) addr:0x2039518 func_02039570 kind:function(arm,size=0x8) addr:0x203952c _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_0CEhhhi kind:function(arm,size=0x3c) addr:0x2039534 -func_020395b4 kind:function(thumb,size=0x244) addr:0x2039570 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1C2Ev kind:function(thumb,size=0x244) addr:0x2039570 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1C1Ev kind:function(thumb,size=0x244) addr:0x20397b4 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_02039a3cEv kind:function(thumb,size=0x20) addr:0x20399f8 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_2CEv kind:function(arm,size=0x24c) addr:0x2039a18 @@ -2034,7 +2034,7 @@ _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_14Eii kind:function(arm,size=0x4 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_0203de14P31UnkStruct_027E0C68_UnkSubClass1_Sub1i kind:function(arm,size=0x10) addr:0x203ddd0 +_ZN36UnkStruct_027E0C68_UnkSubClass1_Base13func_0203de14Ei 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 _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203e060Ehh kind:function(arm,size=0x30) addr:0x203e01c diff --git a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp index e6a985f9..71651f3f 100644 --- a/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp +++ b/include/Message/UnkStruct_027E0C68_UnkSubClass1.hpp @@ -79,6 +79,7 @@ public: /* 0x84 */ unk32 unk_84; /* 0x88 */ + 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); @@ -88,9 +89,22 @@ public: void func_020352d8(void); }; +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 */ unk32 unk_00; + /* 0x00 */ struct UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_00; /* 0x04 */ void func_0203ec34(void); @@ -98,9 +112,10 @@ public: void func_0203ebf8(void); }; +// same as UnkSubClass1_unk_410? class UnkSubClass1_unk_424 { public: - /* 0x00 */ unk32 unk_00; + /* 0x00 */ struct UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_00; /* 0x04 */ void func_0203ee80(unk32); @@ -111,22 +126,21 @@ public: class UnkSubClass1_unk_124 { public: - /* 0x00 */ unk32 unk_00; - /* 0x00 */ unk32 unk_04; - /* 0x00 */ unk32 unk_08; - /* 0x00 */ unk32 unk_0C; - /* 0x00 */ unk32 unk_10; - /* 0x00 */ unk32 unk_14; - /* 0x00 */ unk32 unk_18; - /* 0x00 */ unk32 unk_1C; - /* 0x00 */ unk32 unk_20; - /* 0x00 */ unk32 unk_24; - /* 0x00 */ unk8 unk_28; - /* 0x00 */ unk8 unk_29; - /* 0x00 */ unk8 unk_2A; - /* 0x00 */ unk8 unk_2B; - /* 0x00 */ unk32 unk_2C; - /* 0x04 */ + /* 0x00 */ void* unk_00; // pointer to UnkStruct_027E0C68_UnkSubClass1_Base (well, the first members of the base class) + /* 0x04 */ unk32 unk_04; + /* 0x08 */ unk32 unk_08; + /* 0x0C */ unk32 unk_0C; + /* 0x10 */ unk32 unk_10; + /* 0x14 */ unk32 unk_14; + /* 0x18 */ unk32 unk_18; + /* 0x1C */ unk32 unk_1C; + /* 0x20 */ unk32 unk_20; + /* 0x24 */ unk32 unk_24; + /* 0x28 */ unk8 unk_28; + /* 0x29 */ unk8 unk_29; + /* 0x2A */ unk8 unk_2A; + /* 0x2B */ unk8 unk_2B; + /* 0x2C */ void func_0203f020(unk32, unk32); }; @@ -161,7 +175,7 @@ public: /* 0x3C */ }; -class UnkStruct_027E0C68_UnkSubClass1_Base : public SysObject { +class UnkStruct_027E0C68_UnkSubClass1_Base_1 : public SysObject { public: /* 0x000 (vtable) */ /* 0x004 */ unk32* unk_04; @@ -178,56 +192,22 @@ public: /* 0x030 */ unk32 unk_30; /* 0x034 */ unk32 unk_34; /* 0x038 */ unk32 unk_38; - /* 0x03C */ unk32 unk_3C; + /* 0x03C */ unk16 unk_3C; + /* 0x03E */ unk16 unk_3E; /* 0x040 */ unk32 unk_40; /* 0x044 */ unk32 unk_44; /* 0x048 */ u8 unk_48; /* 0x049 */ u8 unk_49; /* 0x04A */ unk16 unk_4A; - /* 0x04C */ unk32 unk_4C; + /* 0x04C */ unk8 unk_4C; + /* 0x04C */ unk8 unk_4D; + /* 0x04C */ unk8 unk_4E; + /* 0x04C */ unk8 unk_4F; /* 0x050 */ u8 unk_50; /* 0x051 */ unk8 unk_51; - /* 0x052 */ unk16 unk_52; - /* 0x054 */ unk32 unk_54; - /* 0x058 */ unk32 unk_58; - /* 0x05C */ s16 unk_5C; - /* 0x05E */ s16 unk_5E; - /* 0x060 */ unk32 unk_60[0x2E]; - /* 0x118 */ s32 unk_118; - /* 0x11C */ unk8 unk_11C; - /* 0x11D */ unk8 unk_11D; - /* 0x11E */ u8 unk_11E; - /* 0x11F */ unk8 unk_11F; - /* 0x120 */ u8 unk_120; - /* 0x120 */ u8 unk_121; - /* 0x122 */ u8 unk_122; - /* 0x122 */ u8 unk_123; - /* 0x124 */ UnkSubClass1_unk_124* unk_124; - /* 0x128 */ UnkStruct1* unk_128; - //! TODO: confirm this is part of the base 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; - /* 0x150 */ unk8 unk_150; - /* 0x151 */ u8 unk_151; - /* 0x152 */ unk8 unk_152; - /* 0x153 */ unk8 unk_153; - /* 0x154 */ UnkSubClass1_unk_154* unk_154; - /* 0x158 */ unk16 unk_158; - /* 0x15A */ unk16 unk_15A; - /* 0x15C */ s16 unk_15C; - /* 0x15E */ - - UnkStruct_027E0C68_UnkSubClass1_Base(); - /* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1_Base(); + UnkStruct_027E0C68_UnkSubClass1_Base_1(); + /* 0x00*/ virtual ~UnkStruct_027E0C68_UnkSubClass1_Base_1(); /* 0x08 */ virtual void vfunc_08(unk32* param_2, unk32* param_3); /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5); /* 0x10 */ virtual void vfunc_10(u8 param_2, u8 param_3); // func_0203e060? @@ -256,6 +236,147 @@ public: /* 0x6C */ virtual void vfunc_6C(unk32* param_2, unk32* param_3); /* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3); /* 0x74 */ +}; + +class UnkStruct_027E0C68_UnkSubClass1_Base_0 : public UnkStruct_027E0C68_UnkSubClass1_Base_1 { +public: + /* 0x052 */ unk16 unk_52; + /* 0x054 */ unk32 unk_54; + /* 0x058 */ unk32 unk_58; + /* 0x05C */ s16 unk_5C; + /* 0x05E */ s16 unk_5E; + /* 0x060 */ unk32 unk_60; + /* 0x064 */ unk32 unk_64; + /* 0x068 */ unk32 unk_68; + /* 0x06C */ unk32 unk_6C; + /* 0x070 */ unk32 unk_70; + /* 0x074 */ unk32 unk_74; + /* 0x078 */ unk32 unk_78; + /* 0x07C */ unk32 unk_7C; + /* 0x080 */ unk32 unk_80; + /* 0x084 */ unk32 unk_84; + /* 0x088 */ unk32 unk_88; + /* 0x08C */ unk32 unk_8C; + /* 0x090 */ unk32 unk_90; + /* 0x094 */ unk32 unk_94; + /* 0x098 */ unk32 unk_98; + /* 0x09C */ unk32 unk_9C; + /* 0x100 */ unk32 unk_100; + /* 0x104 */ unk32 unk_104; + /* 0x108 */ unk32 unk_108; + /* 0x10C */ unk32 unk_10C; + /* 0x110 */ unk32 unk_110; + /* 0x118 */ void* unk_114; + /* 0x118 */ s32 unk_118; + /* 0x11C */ unk8 unk_11C; + /* 0x11D */ unk8 unk_11D; + /* 0x11E */ u8 unk_11E; + /* 0x11F */ unk8 unk_11F; + /* 0x120 */ u8 unk_120; + /* 0x121 */ u8 unk_121; + /* 0x122 */ u8 unk_122; + /* 0x123 */ u8 unk_123; + /* 0x124 */ + + UnkStruct_027E0C68_UnkSubClass1_Base_0(unk8 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; + /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; + /* 0x10 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? + /* 0x14 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; + /* 0x18 */ virtual unk32 vfunc_18(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override; + /* 0x1C */ virtual unk32 vfunc_1C(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override; + /* 0x20 */ virtual UNK_TYPE vfunc_20(UNK_TYPE) override; + /* 0x24 */ virtual UNK_TYPE vfunc_24(UNK_TYPE) override; + /* 0x28 */ virtual bool vfunc_28(void) override; + /* 0x2C */ virtual void vfunc_2C(void) override; + /* 0x30 */ virtual void vfunc_30(void) override; + /* 0x34 */ virtual unk32 vfunc_34(unk32 param_2) override; + /* 0x38 */ virtual bool vfunc_38(void) override; + /* 0x3C */ virtual void vfunc_3C(unk32 param_2) override; + /* 0x40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; + /* 0x44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; + /* 0x48 */ virtual void vfunc_48(void) override; + /* 0x4C */ virtual void vfunc_4C(void) override; // func_02039a3c? + /* 0x50 */ virtual void vfunc_50(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) override; + /* 0x54 */ virtual void vfunc_54(void) override; + /* 0x58 */ virtual void vfunc_58(void) override; + /* 0x5C */ virtual void vfunc_5C(void) override; + /* 0x60 */ virtual void vfunc_60(func_0203b410_param_2* param_2, unk32 param_3, unk32 param_4) override; + /* 0x64 */ virtual void vfunc_64(unk32 param_2) override; + /* 0x68 */ virtual unk32 vfunc_68(unk32 param_2) override; + /* 0x6C */ virtual void vfunc_6C(unk32* param_2, unk32* param_3) override; + /* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; + /* 0x74 */ +}; + +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 the base 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; + /* 0x150 */ unk8 unk_150[4]; + /* 0x154 */ UnkSubClass1_unk_154* unk_154; + /* 0x158 */ unk16 unk_158; + /* 0x15A */ unk16 unk_15A; + /* 0x15C */ s16 unk_15C; + /* 0x15E */ s8 unk_15E; + /* 0x15F */ s8 unk_15F; + /* 0x160 */ unk8 unk_160; + /* 0x160 */ unk8 unk_161; + /* 0x160 */ unk8 unk_162; + /* 0x160 */ unk8 unk_163; + /* 0x164 */ + + //! TODO: fake? + UnkStruct_027E0C68_UnkSubClass1_Base(); + + UnkStruct_027E0C68_UnkSubClass1_Base(unk32 param_2, unk8 param_3); + //! 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; + /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; + /* 0x10 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? + /* 0x14 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; + /* 0x18 */ virtual unk32 vfunc_18(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override; + /* 0x1C */ virtual unk32 vfunc_1C(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override; + /* 0x20 */ virtual UNK_TYPE vfunc_20(UNK_TYPE) override; + /* 0x24 */ virtual UNK_TYPE vfunc_24(UNK_TYPE) override; + /* 0x28 */ virtual bool vfunc_28(void) override; + /* 0x2C */ virtual void vfunc_2C(void) override; + /* 0x30 */ virtual void vfunc_30(void) override; + /* 0x34 */ virtual unk32 vfunc_34(unk32 param_2) override; + /* 0x38 */ virtual bool vfunc_38(void) override; + /* 0x3C */ virtual void vfunc_3C(unk32 param_2) override; + /* 0x40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; + /* 0x44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; + /* 0x48 */ virtual void vfunc_48(void) override; + /* 0x4C */ virtual void vfunc_4C(void) override; // func_02039a3c? + /* 0x50 */ virtual void vfunc_50(EntryINF1* param_2, u32 param_3, s16* param_4, unk32 param_5) override; + /* 0x54 */ virtual void vfunc_54(void) override; + /* 0x58 */ virtual void vfunc_58(void) override; + /* 0x5C */ virtual void vfunc_5C(void) override; + /* 0x60 */ virtual void vfunc_60(func_0203b410_param_2* param_2, unk32 param_3, unk32 param_4) override; + /* 0x64 */ virtual void vfunc_64(unk32 param_2) override; + /* 0x68 */ virtual unk32 vfunc_68(unk32 param_2) override; + /* 0x6C */ virtual void vfunc_6C(unk32* param_2, unk32* param_3) override; + /* 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); unk32 func_02032fa4(void); unk32 func_02032fb4(void); @@ -307,9 +428,6 @@ public: class UnkStruct_027E0C68_UnkSubClass1_Sub1 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: - /* 0x15E */ s8 unk_15E; - /* 0x15F */ s8 unk_15F; - /* 0x160 */ unk32 unk_160; /* 0x164 */ UnkStruct_027E0C68_UnkSubClass1_Base* unk_164; /* 0x168 */ UnkSubClass1_UnkownClass1 unk_168; /* 0x1F0 */ UnkSubClass1_UnkownClass1 unk_1F0; @@ -319,18 +437,36 @@ public: /* 0x410 */ UnkSubClass1_unk_410 unk_410; /* 0x414 */ unk32 unk_414; /* 0x418 */ UnkStruct_027E0C68_UnkSubClass1_Base* unk_418; - /* 0x41C */ unk32 unk_41C; - /* 0x420 */ unk32 unk_420; + /* 0x41C */ unk16 unk_41C; + /* 0x41C */ unk16 unk_41E; + /* 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 */ s16* unk_528; - /* 0x52C */ u8 unk_52C[0x30]; + /* 0x528 */ u16* unk_528; + /* 0x52C */ u8 unk_52C; + /* 0x55C */ unk32 unk_530; + /* 0x55C */ unk32 unk_534; + /* 0x55C */ unk32 unk_538; + /* 0x55C */ unk32 unk_53C; + /* 0x55C */ unk32 unk_540; + /* 0x55C */ unk8 unk_544; + /* 0x55C */ unk8 unk_545; + /* 0x55C */ unk8 unk_546; + /* 0x55C */ unk8 unk_547; + /* 0x55C */ unk32 unk_548; + /* 0x55C */ unk32 unk_54C; + /* 0x55C */ unk32 unk_550; + /* 0x55C */ unk32 unk_554; + /* 0x55C */ unk8 unk_558; + /* 0x55C */ unk8 unk_559; + /* 0x55C */ unk8 unk_55A; + /* 0x55C */ unk8 unk_55B; /* 0x55C */ unk32 unk_55C; - /* 0x560 */ unk16 unk_560; - /* 0x560 */ unk16 unk_562; + /* 0x560 */ unk32 unk_560; /* 0x564 */ unk32 unk_564; /* 0x568 */ unk32 unk_568; /* 0x56C */ unk16 unk_56C; @@ -338,12 +474,11 @@ public: /* 0x570 */ unk16 unk_570; /* 0x572 */ u16 unk_572; /* 0x574 */ s16 unk_574; - /* 0x576 */ u8 unk_576; - /* 0x577 */ u8 unk_577; - /* 0x578 */ u8 unk_578; - /* 0x579 */ u8 unk_579; + /* 0x576 */ unk16 unk_576; + /* 0x578 */ s16 unk_578; + // /* 0x579 */ u8 unk_579; /* 0x57A */ u8 unk_57A; - /* 0x57B */ u8 unk_57B; + /* 0x57B */ s8 unk_57B; /* 0x57C */ u8 unk_57C; /* 0x57D */ u8 unk_57D; /* 0x57E */ u8 unk_57E; @@ -355,12 +490,13 @@ public: /* 0x584 */ u8 unk_584; /* 0x585 */ u8 unk_585; /* 0x586 */ u8 unk_586; - /* 0x588 */ u8 unk_588[0x2C]; + /* 0x586 */ u8 unk_587; + /* 0x588 */ UnkSubClass1_unk_124 unk_588; /* 0x5B4 */ - //! TODO: remove the function declarations that are not overridden UnkStruct_027E0C68_UnkSubClass1_Sub1(); + //! 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; /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; @@ -393,16 +529,17 @@ public: void func_0203e060(u8 param_2, u8 param_3); void func_02039a3c(void); + + void func_02039ca8(void); }; class UnkStruct_027E0C68_UnkSubClass1_Sub2 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: - /* 0x15E */ u8 unk_15E[0x62]; + /* 0x164 */ u8 unk_164[0x5C]; /* 0x1C0 */ - //! TODO: remove the function declarations that are not overridden - UnkStruct_027E0C68_UnkSubClass1_Sub2(); + //! 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; /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; @@ -437,12 +574,11 @@ public: class UnkStruct_027E0C68_UnkSubClass1_Sub3 : public UnkStruct_027E0C68_UnkSubClass1_Base { public: - /* 0x15E */ u8 unk_15E[0x12]; + /* 0x164 */ u8 unk_164[0xC]; /* 0x170 */ - //! TODO: remove the function declarations that are not overridden - UnkStruct_027E0C68_UnkSubClass1_Sub3(); + //! 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; /* 0x0C */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; diff --git a/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp b/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp index 3c206b20..cd4c14de 100644 --- a/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp +++ b/src/Main/Message/UnkStruct_027E0C68_UnkSubClass1.cpp @@ -38,7 +38,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_30(void) { // non-matching ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_08(unk32* param_2, unk32* param_3) { this->unk_15C = 10; - this->unk_152 = 1; + this->unk_150[2] = 1; this->func_0203e2ac(param_3); } diff --git a/src/Main/Message/func_02032f0c.cpp b/src/Main/Message/func_02032f0c.cpp index 49121b43..b6d77ed2 100644 --- a/src/Main/Message/func_02032f0c.cpp +++ b/src/Main/Message/func_02032f0c.cpp @@ -5,3 +5,28 @@ #include "DTCM/UnkStruct_027e103c.hpp" #include "Player/TouchControl.hpp" #include "Item/ItemManager.hpp" + +extern "C" void func_020078f4(unk32, void*, unk32); +extern "C" void func_020078c0(unk32, void*, unk32); + +THUMB UnkStruct_027E0C68_UnkSubClass1_Base_1::UnkStruct_027E0C68_UnkSubClass1_Base_1() { + this->unk_04 = 0; + this->unk_08 = 0; + this->unk_0C = NULL; + this->unk_38 = 0; + this->unk_3C = 0; + this->unk_4A = 0; + this->unk_4C = 0; + this->unk_4D = 0; + this->unk_4E = 0; + this->unk_4F = 0; + this->unk_50 = 0; + this->unk_51 = 0; + func_020078f4(0, &this->unk_10, 0x18); + func_020078f4(0, &this->unk_28, 0x10); + func_020078c0(0, &this->unk_3E, 0xC); + this->unk_10 = NULL; + this->unk_2C = NULL; + this->unk_30 = 2; + this->unk_34 = 3; +} diff --git a/src/Main/Message/func_0203744c.cpp b/src/Main/Message/func_0203744c.cpp index 49121b43..42ac32d2 100644 --- a/src/Main/Message/func_0203744c.cpp +++ b/src/Main/Message/func_0203744c.cpp @@ -5,3 +5,16 @@ #include "DTCM/UnkStruct_027e103c.hpp" #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); + 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_160 = 1; + this->unk_11E = param_3; +} diff --git a/src/Main/Message/func_020397f8.cpp b/src/Main/Message/func_020397f8.cpp index 96616221..a54af5f1 100644 --- a/src/Main/Message/func_020397f8.cpp +++ b/src/Main/Message/func_020397f8.cpp @@ -6,6 +6,76 @@ #include "Player/TouchControl.hpp" #include "Item/ItemManager.hpp" +extern "C" void func_ov000_020d0460(void*); +extern "C" void func_0203efd8(void*, void*); +extern "C" void func_0203ee48(void*); + +THUMB UnkStruct_027E0C68_UnkSubClass1_Sub1::UnkStruct_027E0C68_UnkSubClass1_Sub1() : unk_164(NULL) { + u16** ppuVar3; + + this->unk_410.unk_00 = this; + this->unk_414 = 0; + this->unk_418 = NULL; + this->unk_41C = 0; + this->unk_41E = 0; + this->unk_420 = 0; + this->unk_424.unk_00 = this; + + // ??? + ppuVar3 = &this->unk_428; + do { + *ppuVar3 = NULL; + ppuVar3 += 2; + } while (ppuVar3 < &this->unk_528); + + func_0203ee48(&this->unk_424); + func_ov000_020d0460(&this->unk_534); + this->unk_53C = 0; + this->unk_540 = ~0x7FFF; + this->unk_544 = 3; + func_ov000_020d0460(&this->unk_548); + this->unk_550 = 0; + this->unk_554 = 0x00016000; + this->unk_558 = 3; + this->unk_55C = -1; + this->unk_560 = -1; + this->unk_56C = 0; + this->unk_56E = 0; + this->unk_570 = 0; + this->unk_572 = 0; + this->unk_574 = 0; + this->unk_576 = 0; + this->unk_578 = 3; + this->unk_57A = 0; + this->unk_57B = -1; + this->unk_57C = 0; + this->unk_57D = 0; + this->unk_57E = 0; + this->unk_57F = 0; + this->unk_580 = 0; + this->unk_581 = 0; + this->unk_582 = 0; + this->unk_583 = 0; + this->unk_585 = 0; + this->unk_586 = 0; + func_0203efd8(&this->unk_588, this); + this->unk_124 = (UnkSubClass1_unk_124*)&this->unk_588; + this->func_02039ca8(); + + if (this->func_02032fa4() != 0) { + this->unk_168.func_020350b4(0x39, 0, 2, 0, 0); + this->unk_1F0.func_020350b4(0x33, 0, 2, 0, 0); + this->unk_278.func_020350b4(0x33, 1, 2, 0, 0); + } else { + this->unk_168.func_020350b4(0x34, 0, 2, 0, 0); + this->unk_1F0.func_020350b4(0x32, 0, 2, 0, 0); + this->unk_278.func_020350b4(0x32, 1, 2, 0, 0); + } + + this->unk_168.func_020351b8(true, false, false, false); + this->unk_1F0.func_020351b8(false, false, false, false); + this->unk_278.func_020351b8(false, false, false, false); +} THUMB void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_02039a3c(void) { this->func_02038b28(); @@ -71,7 +141,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_2C(void) { if (this->unk_15C == 1) { if (this->unk_586 == ((data_02056be4[data_027e077c.mUnk_0] & 1) != 0) ) { - switch (this->unk_151) { + switch (this->unk_150[1]) { case 0: this->func_0203b0ec(1); break; @@ -265,7 +335,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_44(s32 touchLastX, s32 touc } if (data_027e0d78.mTouch == 0) { - switch(this->unk_151) { + switch(this->unk_150[1]) { case 3: case 4: break; @@ -400,7 +470,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { } this->unk_424.func_0203ee48(); - this->unk_151 = 1; + this->unk_150[1] = 1; puVar3 = this->unk_12C; local_54[0] = puVar3; iVar2 = 0; @@ -442,7 +512,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_54(void) { // this->unk_580 = 1; // } else { - // this->unk_151 = 4 + // this->unk_150[1] = 4 // } // break; // case 5: @@ -668,7 +738,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_1C(unk8 param_2, UnkStruct this->unk_574++; if (this->func_0203a30c() == 0) { - this->unk_153 = 1; + this->unk_150[3] = 1; } } diff --git a/src/Main/Message/func_0203c8a8.cpp b/src/Main/Message/func_0203c8a8.cpp index 90fc7dd3..34042c3c 100644 --- a/src/Main/Message/func_0203c8a8.cpp +++ b/src/Main/Message/func_0203c8a8.cpp @@ -6,6 +6,44 @@ #include "Player/TouchControl.hpp" #include "Item/ItemManager.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); + +THUMB UnkStruct_027E0C68_UnkSubClass1_Base_0::UnkStruct_027E0C68_UnkSubClass1_Base_0(unk8 param_2, unk32 param_3, unk32 param_4) { + UnknownClass2 *pvVar1; + + this->unk_114 = NULL; + this->unk_118 = -1; + this->unk_11C = 0; + this->unk_11E = 0; + this->unk_11F = 0; + this->unk_120 = 1; + 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(); + } + + this->unk_114 = pvVar1; + } else { + // pvVar1 = new(*data_027e0ce0[0], 4) UnknownClass2(); + + if (pvVar1 != NULL) { + pvVar1 = func_0203d254(); + } + + this->unk_114 = pvVar1; + } +} + // non-matching ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_14(unk32 param_2, unk32 param_3) { unk32 uVar1;