diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 273b726b..5de9a047 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1803,14 +1803,14 @@ _ZN18UnkStruct_027E0C6813func_020367ecEv kind:function(arm,size=0x1c) addr:0x203 _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 -_ZN18UnkStruct_027E0C6813func_02036888EP31UnkStruct_020386d8 kind:function(arm,size=0x6c) addr:0x2036888 -_ZN18UnkStruct_027E0C6813func_020368f4EP37UnkStruct_02037750 kind:function(arm,size=0x18) addr:0x20368f4 +_ZN18UnkStruct_027E0C6813func_02036888EP18UnkStruct_020386d8 kind:function(arm,size=0x6c) addr:0x2036888 +_ZN18UnkStruct_027E0C6813func_020368f4EP18UnkStruct_02037750 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_020386d8i kind:function(arm,size=0x4c) addr:0x2036ce4 -_ZN18UnkStruct_027E0C6813func_02036d30EP37UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x2036d30 +_ZN18UnkStruct_027E0C6813func_02036ce4EP18UnkStruct_020386d8i kind:function(arm,size=0x4c) addr:0x2036ce4 +_ZN18UnkStruct_027E0C6813func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x2036d30 _ZN18UnkStruct_027E0C6813func_02036d4cEP18UnkStruct_02037750 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 @@ -1887,7 +1887,7 @@ _ZN18UnkStruct_02038aa013func_02038cf4Ev kind:function(arm,size=0x1c) addr:0x203 _ZN18UnkStruct_02038aa013func_02038d10Ev kind:function(arm,size=0x10) addr:0x2038d10 _ZN18UnkStruct_02038aa013func_02038d20Ev kind:function(arm,size=0x1b0) addr:0x2038d20 _ZN18UnkStruct_02038aa08vfunc_2cEv kind:function(arm,size=0x24) addr:0x2038ed0 -_ZN18UnkStruct_02038aa08vfunc_30Ev kind:function(arm,size=0x4c) addr:0x2038ef4 +_ZN18UnkStruct_02038aa08vfunc_30Eii kind:function(arm,size=0x4c) addr:0x2038ef4 _ZN18UnkStruct_02038aa013func_02038f40Eii kind:function(arm,size=0x4) addr:0x2038f40 _ZN18UnkStruct_02038aa08vfunc_44Ev kind:function(arm,size=0x114) addr:0x2038f44 _ZN18UnkStruct_02038aa08vfunc_50Eiiii kind:function(arm,size=0x4) addr:0x2039058 @@ -1950,7 +1950,7 @@ _ZN13MsgProc_Type2C1Eisi kind:function(thumb,size=0x44) addr:0x203c358 _ZN13MsgProc_Type213func_0203c39cEii kind:function(thumb,size=0x78) addr:0x203c39c _ZN13MsgProc_Type28vfunc_3CEi kind:function(arm,size=0x4c) addr:0x203c414 _ZN13MsgProc_Type28vfunc_40Eii kind:function(arm,size=0x4c) addr:0x203c460 -func_0203c4ac kind:function(arm,size=0x118) addr:0x203c4ac +_ZN13MsgProc_Type213func_0203c4acEii kind:function(arm,size=0x118) addr:0x203c4ac _ZN13MsgProc_Type28vfunc_14Eii kind:function(arm,size=0x18) addr:0x203c5c4 func_0203c5dc kind:function(arm,size=0x120) addr:0x203c5dc _ZN13MsgProc_Type2D0Ev kind:function(arm,size=0x1c) addr:0x203c6fc @@ -2034,7 +2034,7 @@ _ZN18UnkStruct_0203dae08vfunc_14Eii kind:function(arm,size=0x48) addr:0x203dcb4 _ZN18UnkStruct_0203dae013func_0203dcfcEhiii kind:function(arm,size=0xf0) addr:0x203dcfc _ZN18UnkStruct_0203dae013func_0203ddecEv kind:function(arm,size=0x10) addr:0x203ddec _ZN18UnkStruct_0203dae013func_0203ddfcEv kind:function(arm,size=0x18) addr:0x203ddfc -_ZN18UnkStruct_0203dae013func_0203de14Ev kind:function(arm,size=0x10) addr:0x203de14 +_ZN18UnkStruct_02038aa013func_0203de14Ei kind:function(arm,size=0x10) addr:0x203de14 _ZN18UnkStruct_0203dae013func_0203de24Ev kind:function(arm,size=0x34) addr:0x203de24 _ZN18UnkStruct_0203dae013func_0203de58Ei kind:function(arm,size=0x208) addr:0x203de58 _ZN18UnkStruct_0203dae08vfunc_10Eji kind:function(arm,size=0x30) addr:0x203e060 @@ -2800,7 +2800,7 @@ data_02057ed4 kind:data(any) addr:0x2057ed4 data_02057ed8 kind:data(any) addr:0x2057ed8 data_02057eec kind:data(any) addr:0x2057eec data_02057f08 kind:data(any) addr:0x2057f08 -data_02057f14 kind:data(any) addr:0x2057f14 +_ZTV13MsgProc_Type2 kind:data(any) addr:0x2057f14 data_02057f90 kind:data(any) addr:0x2057f90 data_0205800c kind:data(any) addr:0x205800c data_02058024 kind:data(any) addr:0x2058024 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index de3d48e3..177c5404 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1803,14 +1803,14 @@ _ZN18UnkStruct_027E0C6813func_020367ecEv kind:function(arm,size=0x1c) addr:0x203 _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 -_ZN18UnkStruct_027E0C6813func_02036888EP31UnkStruct_020386d8 kind:function(arm,size=0x6c) addr:0x2036844 -_ZN18UnkStruct_027E0C6813func_020368f4EP37UnkStruct_02037750 kind:function(arm,size=0x18) addr:0x20368b0 +_ZN18UnkStruct_027E0C6813func_02036888EP18UnkStruct_020386d8 kind:function(arm,size=0x6c) addr:0x2036844 +_ZN18UnkStruct_027E0C6813func_020368f4EP18UnkStruct_02037750 kind:function(arm,size=0x18) addr:0x20368b0 _ZN18UnkStruct_027E0C6813func_0203690cEiii kind:function(arm,size=0x2b0) addr:0x20368c8 _ZN18UnkStruct_027E0C6813func_02036bbcEv kind:function(arm,size=0x94) addr:0x2036b78 _ZN18UnkStruct_027E0C6813func_02036c50Ei kind:function(arm,size=0x54) addr:0x2036c0c _ZN18UnkStruct_027E0C6813func_02036ca4Ei kind:function(arm,size=0x40) addr:0x2036c60 -_ZN18UnkStruct_027E0C6813func_02036ce4EP31UnkStruct_020386d8i kind:function(arm,size=0x4c) addr:0x2036ca0 -_ZN18UnkStruct_027E0C6813func_02036d30EP37UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x2036cec +_ZN18UnkStruct_027E0C6813func_02036ce4EP18UnkStruct_020386d8i kind:function(arm,size=0x4c) addr:0x2036ca0 +_ZN18UnkStruct_027E0C6813func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x2036cec _ZN18UnkStruct_027E0C6813func_02036d4cEP18UnkStruct_02037750 kind:function(arm,size=0x20) addr:0x2036d08 _ZN18UnkStruct_027E0C6813func_02036d6cEv kind:function(arm,size=0x3c) addr:0x2036d28 _ZN18UnkStruct_027E0C6813func_02036da8EjPs kind:function(arm,size=0x134) addr:0x2036d64 @@ -1887,7 +1887,7 @@ _ZN18UnkStruct_02038aa013func_02038cf4Ev kind:function(arm,size=0x1c) addr:0x203 _ZN18UnkStruct_02038aa013func_02038d10Ev kind:function(arm,size=0x10) addr:0x2038ccc _ZN18UnkStruct_02038aa013func_02038d20Ev kind:function(arm,size=0x1b0) addr:0x2038cdc _ZN18UnkStruct_02038aa08vfunc_2cEv kind:function(arm,size=0x24) addr:0x2038e8c -_ZN18UnkStruct_02038aa08vfunc_30Ev kind:function(arm,size=0x4c) addr:0x2038eb0 +_ZN18UnkStruct_02038aa08vfunc_30Eii kind:function(arm,size=0x4c) addr:0x2038eb0 _ZN18UnkStruct_02038aa013func_02038f40Eii kind:function(arm,size=0x4) addr:0x2038efc _ZN18UnkStruct_02038aa08vfunc_44Ev kind:function(arm,size=0x114) addr:0x2038f00 _ZN18UnkStruct_02038aa08vfunc_50Eiiii kind:function(arm,size=0x4) addr:0x2039014 @@ -1950,7 +1950,7 @@ _ZN13MsgProc_Type2C1Eisi kind:function(thumb,size=0x44) addr:0x203c314 _ZN13MsgProc_Type213func_0203c39cEii kind:function(thumb,size=0x78) addr:0x203c358 _ZN13MsgProc_Type28vfunc_3CEi kind:function(arm,size=0x4c) addr:0x203c3d0 _ZN13MsgProc_Type28vfunc_40Eii kind:function(arm,size=0x4c) addr:0x203c41c -func_0203c4ac kind:function(arm,size=0x118) addr:0x203c468 +_ZN13MsgProc_Type213func_0203c4acEii kind:function(arm,size=0x118) addr:0x203c468 _ZN13MsgProc_Type28vfunc_14Eii kind:function(arm,size=0x18) addr:0x203c580 func_0203c5dc kind:function(arm,size=0x120) addr:0x203c598 _ZN13MsgProc_Type2D0Ev kind:function(arm,size=0x1c) addr:0x203c6b8 @@ -2034,7 +2034,7 @@ _ZN18UnkStruct_0203dae08vfunc_14Eii kind:function(arm,size=0x48) addr:0x203dc70 _ZN18UnkStruct_0203dae013func_0203dcfcEhiii kind:function(arm,size=0xf0) addr:0x203dcb8 _ZN18UnkStruct_0203dae013func_0203ddecEv kind:function(arm,size=0x10) addr:0x203dda8 _ZN18UnkStruct_0203dae013func_0203ddfcEv kind:function(arm,size=0x18) addr:0x203ddb8 -_ZN18UnkStruct_0203dae013func_0203de14Ev kind:function(arm,size=0x10) addr:0x203ddd0 +_ZN18UnkStruct_02038aa013func_0203de14Ei kind:function(arm,size=0x10) addr:0x203ddd0 _ZN18UnkStruct_0203dae013func_0203de24Ev kind:function(arm,size=0x34) addr:0x203dde0 _ZN18UnkStruct_0203dae013func_0203de58Ei kind:function(arm,size=0x208) addr:0x203de14 _ZN18UnkStruct_0203dae08vfunc_10Eji kind:function(arm,size=0x30) addr:0x203e01c @@ -2801,7 +2801,7 @@ data_02057ed4 kind:data(any) addr:0x2057e8c data_02057ed8 kind:data(any) addr:0x2057e90 data_02057eec kind:data(any) addr:0x2057ea4 data_02057f08 kind:data(any) addr:0x2057ec0 -data_02057f14 kind:data(any) addr:0x2057ecc +_ZTV13MsgProc_Type2 kind:data(any) addr:0x2057ecc data_02057f90 kind:data(any) addr:0x2057f48 data_0205800c kind:data(any) addr:0x2057fc4 data_02058024 kind:data(any) addr:0x2057fdc diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index ddb1df59..76a6bc87 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -33,11 +33,11 @@ public: /* 0x14 */ BMGGroups* pGroups; /* 0x18 */ UnkStruct_020386d8* mUnk_18[2]; /* 0x20 */ UnkStruct_02037750* mUnk_20[2]; - /* 0x28 */ UnkStruct_02038aa0* mUnk_28[6]; + /* 0x28 */ UnkStruct_02038aa0* mUnk_28[6]; //! TODO: is it the right type? /* 0x40 */ UnkStruct_020397f8* mUnk_40[2]; // is array size 6? /* 0x48 */ - static void func_0203643c(int *param_1, UnkStruct_027E0C68* param_2, u32 param_3); + static void func_0203643c(u32 *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(); diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index fecdd18c..efe42b56 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -73,7 +73,6 @@ struct func_02038f44_param4 { extern "C" u32 func_01ff9b4c(unk32, unk32); extern "C" unk32 func_0203c084(void); -extern "C" void func_ov018_02169634(UnkStruct_020397f8*); extern "C" unk32 func_ov000_02079e04(void); extern "C" unk32 func_02016fcc(unk32); extern "C" void func_02032304(unk32*, char*, unk32, unk32, unk32); @@ -100,7 +99,6 @@ struct UnkStruct2 { }; extern UnkStruct2 data_027e077c; extern u8 data_02056be4[]; -extern u8 data_027e0618[]; class UnkClass_027e0cbc { public: @@ -117,7 +115,7 @@ extern "C" void func_020347b0(unk32, unk16, unk32*, unk32*, unk32, unk32); extern THUMB unk32 func_0202ab48(void); extern "C" void func_02034984(unk32, u8, unk32, unk32); extern "C" void func_02034698(unk32, unk32, unk32*, unk32*); -extern struct TouchControl data_027e0d78; +extern struct TouchControl gTouchControl; class UnkClass_027e0e28 { public: diff --git a/include/Unknown/UnkStruct_02038aa0.hpp b/include/Unknown/UnkStruct_02038aa0.hpp index f9904674..6b53dde3 100644 --- a/include/Unknown/UnkStruct_02038aa0.hpp +++ b/include/Unknown/UnkStruct_02038aa0.hpp @@ -74,11 +74,11 @@ public: /* 00 */ virtual ~UnkStruct_02038aa0(); /* 08 */ virtual void vfunc_08(s32 param1, unk32* param2, s16 *param3, unk32 param4); /* 0c */ virtual void vfunc_0c(u8 param_2, u8 param_3, u8 param_4, unk32 param_5); - /* 10 */ virtual void vfunc_10(unk32 param1); + /* 10 */ virtual void vfunc_10(); /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4); /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2); /* 2c */ virtual void vfunc_2c(); - /* 30 */ virtual void vfunc_30(); + /* 30 */ virtual void vfunc_30(unk32 param_2, unk32 param_3); /* 34 */ virtual unk32 vfunc_34(s32 param1); /* 38 */ virtual bool vfunc_38(); /* 3c */ virtual void vfunc_3c(); diff --git a/include/Unknown/UnkStruct_020397f8.hpp b/include/Unknown/UnkStruct_020397f8.hpp index ca626fec..ee969e08 100644 --- a/include/Unknown/UnkStruct_020397f8.hpp +++ b/include/Unknown/UnkStruct_020397f8.hpp @@ -199,36 +199,11 @@ public: MsgProc_Type2(); MsgProc_Type2(unk32 param_2, unk16 param_3, unk32 param_4); - //! TODO: remove the function declarations that are not overridden /* 00 */ virtual ~MsgProc_Type2(); - /* 08 */ /* func_02039228 */ virtual void vfunc_08(unk32* param_2, unk32* param_3) override; - /* 0c */ /* func_02039578 */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; - /* 10 */ /* func_0203e060 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? /* 14 */ /* func_0203c5c4 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; - /* 18 */ /* func_0203e284 */ virtual unk32 vfunc_18(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override; - /* 1c */ /* func_0203905c */ virtual unk32 vfunc_1C(u16* param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override; - /* 20 */ /* func_020390a4 */ virtual void vfunc_20(void) override; - /* 24 */ /* astruct_8::vfunc_24 */ virtual void vfunc_24(void) override; - /* 28 */ /* func_0203e0c8 */ virtual bool vfunc_28(void) override; - /* 2c */ /* func_02038d20 */ virtual void vfunc_2C(void) override; - /* 30 */ /* func_02038ed0 */ virtual void vfunc_30(void) override; - /* 34 */ /* func_02038c34 */ virtual unk32 vfunc_34(unk32 param_2) override; - /* 38 */ /* func_02039570 */ virtual bool vfunc_38(void) override; /* 3c */ /* func_0203c414 */ virtual void vfunc_3C(unk32 param_2) override; /* 40 */ /* func_0203c460 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; - /* 44 */ /* func_02038f40 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; - /* 48 */ /* func_02038b74 */ virtual void vfunc_48(void) override; /* 4c */ /* func_0203c39c */ virtual void vfunc_4C(void) override; // func_02039a3c? - /* 50 */ /* func_02038f44 */ virtual void vfunc_50(EntryINF1* param_2, u32 param_3, s16* param_4, UnkSubClass1_02256FF8* param_5) override; - /* 54 */ /* func_020392b4 */ virtual void vfunc_54(void) override; - /* 58 */ /* func_02039398 */ virtual void vfunc_58(void) override; - /* 5c */ /* func_02039058 */ virtual void vfunc_5C(void) override; - /* 60 */ /* func_020393a4 */ virtual void vfunc_60(func_0203b410_param1* param_2, unk32 param_3, unk32 param_4) override; - /* 64 */ /* func_020393a8 */ virtual void vfunc_64(s16* param_2) override; - /* 68 */ /* func_020393d0 */ virtual unk32 vfunc_68(unk32 param_2) override; - /* 6c */ /* func_0203947c */ virtual void vfunc_6C(unk32* param_2, unk32* param_3) override; - /* 70 */ /* func_020394d8 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override; - /* 74 */ //! TODO: vfunc_4C? void func_0203c39c(unk32 param_2, unk32 param_3); diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index 7a1e0726..f663ad59 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -5,27 +5,30 @@ extern ARM unk32 func_ov000_020d7f18(u32*, unk32); extern ARM unk32 func_02037628(u8*); -extern ARM void func_0203dc74(UnkStruct_02038aa0*, unk32, unk32); -extern u32** data_027e0ce0[]; +extern u32* data_027e0ce0[]; extern u32 data_02056924[]; extern UnkStruct_MsgProc_Base_unk_2C* data_02068e6c; extern UnkStruct_MsgProc_Base_unk_2C* data_02068e8c; extern u16 data_02056918[]; extern ActorTypeId data_0205691c[]; -// this should be `data_027e0ffc->func_ov000_020cec60(u16, Vec3p*, s32);` -extern u32* data_027e0ffc; -extern void func_ov000_020cec60(u32*, u16, Vec3p*, Actor*, unk32); +struct UnkStruct_027e0ffc { + void func_ov000_020cec60(u16, Vec3p*, Actor*, unk32); +}; +extern UnkStruct_027e0ffc* data_027e0ffc; -ARM void UnkStruct_027E0C68::func_0203643c(int *param_1, UnkStruct_027E0C68* param_2, u32 param_3) { +extern u32 data_027e0618[]; + +// non-matching +ARM void UnkStruct_027E0C68::func_0203643c(u32 *param_1, UnkStruct_027E0C68* param_2, u32 param_3) { BMGGroups *pBVar2 = param_2->pGroups; - *param_1 = BMG_GET_MSG_ADDR(pBVar2, param_3); + + *param_1 = ((u32)pBVar2->entries[param_3 >> 0x10].pDAT1 + (pBVar2->entries[param_3 >> 0x10].func_02037258(param_3 & 0xFFFF)->offset & ~1)); } +// non-matching THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 param_4) { - s32 i; - this->mUnk_03 = 0; this->mUnk_0c = 0; @@ -51,40 +54,35 @@ THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 break; } - for (i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { - if (this->mUnk_18[i] != NULL) { - this->mUnk_18[i] = NULL; - } + for (s32 i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { + this->mUnk_18[i] = NULL; } - for (i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { - if (this->mUnk_28[i] != NULL) { - this->mUnk_28[i] = NULL; - } + for (s32 i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { + this->mUnk_28[i] = NULL; } - for (i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { - this->mUnk_18[i] = new(*data_027e0ce0[0], 4) UnkStruct_020386d8(); + for (s32 i = 0; i < ARRAY_LEN(this->mUnk_18); i++) { + this->mUnk_18[i] = new(data_027e0ce0[1], 4) UnkStruct_020386d8(); } this->mUnk_18[0]->mUnk_39 = 0; this->mUnk_18[1]->mUnk_39 = 1; - // switch? if (*data_027e0618 == 2 || *data_027e0618 == 3 || *data_027e0618 == 6) { - for (i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { + for (s32 i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { switch (data_02056924[i + 1]) { case 0: if (*data_027e0618 != 2) { - this->mUnk_28[i] = new(*data_027e0ce0[0], 4) UnkStruct_020397f8(); - func_0203dc74(this->mUnk_28[i], 0xE0, 0x40); + this->mUnk_28[i] = new(data_027e0ce0[1], 4) UnkStruct_020397f8(); + this->mUnk_28[i]->func_0203dc74(0xE0, 0x40); this->mUnk_28[i]->mUnk_2c = &data_02068e6c; this->mUnk_28[i]->mUnk_50 = i != 0; } break; case 1: - this->mUnk_28[i] = new(*data_027e0ce0[0], 4) MsgProc_Type3(); - func_0203dc74(this->mUnk_28[i], 0x50, 0x60); + this->mUnk_28[i] = new(data_027e0ce0[1], 4) MsgProc_Type3(); + this->mUnk_28[i]->func_0203dc74(0x50, 0x60); this->mUnk_28[i]->mUnk_2c = &data_02068e6c; break; case 2: @@ -92,8 +90,8 @@ THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 break; case 3: if (func_0202ab48() == 0) { - this->mUnk_28[i] = new(*data_027e0ce0[0], 4) MsgProc_Type2(); - func_0203dc74(this->mUnk_28[i], 0xC0, 0x20); + this->mUnk_28[i] = new(data_027e0ce0[1], 4) MsgProc_Type2(); + this->mUnk_28[i]->func_0203dc74(0xC0, 0x20); this->mUnk_28[i]->mUnk_2c = &data_02068e8c; } else { this->mUnk_28[i] = NULL; @@ -327,7 +325,7 @@ ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 p pActor = gActorManager->GetActor(&actorRef); if (pActor != NULL) { - func_ov000_020cec60(data_027e0ffc, data_02056918[this->mUnk_10], &pActor->mPos, pActor, 0); + data_027e0ffc->func_ov000_020cec60(data_02056918[this->mUnk_10], &pActor->mPos, pActor, 0); } } } @@ -349,7 +347,7 @@ ARM void UnkStruct_027E0C68::func_02036bbc(void) { pSVar3 = this->mUnk_28[i]; if (pSVar3 != NULL && ((bVar2 && pSVar3->mUnk_50 == 0) || (bVar4 && pSVar3->mUnk_50 != 0))) { - pSVar3->vfunc_44(data_027e0d78.mTouchLastX, data_027e0d78.mTouchLastY); + pSVar3->vfunc_44(gTouchControl.mTouchLastX, gTouchControl.mTouchLastY); } } } @@ -416,7 +414,7 @@ ARM void UnkStruct_027E0C68::func_02036d6c(void) { for (i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { if (func_0202ab48() == 0 || i != 5) { - this->mUnk_28[i]->func_02038b40(); + this->mUnk_28[i]->UnkStruct_02038aa0::vfunc_10(); } } } diff --git a/src/Main/Message/func_0203c358.cpp b/src/Main/Message/func_0203c358.cpp index 717849ee..329c08fd 100644 --- a/src/Main/Message/func_0203c358.cpp +++ b/src/Main/Message/func_0203c358.cpp @@ -67,14 +67,11 @@ ARM void MsgProc_Type2::vfunc_40(unk32 param_2, unk32 param_3) { param_3 += this->mUnk_168; this->func_0203c4ac(param_2 + this->mUnk_16a, param_3 + this->mUnk_16c); - this->func_02038ef4(param_2, param_3); + this->UnkStruct_02038aa0::vfunc_30(param_2, param_3); } -//! TODO: solve vfunc oddities -extern "C" bool func_0203dcb4(unk32); -// non-matching ARM bool MsgProc_Type2::vfunc_14(unk32 param_2, unk32 param_3) { - return func_0203dcb4(param_2 + this->mUnk_162); + return this->UnkStruct_0203dae0::vfunc_14(param_2 + this->mUnk_162, param_3); } ARM MsgProc_Type2::~MsgProc_Type2() { diff --git a/src/Main/Unknown/UnkStruct_02038aa0.cpp b/src/Main/Unknown/UnkStruct_02038aa0.cpp index 55f0af77..94d37f4c 100644 --- a/src/Main/Unknown/UnkStruct_02038aa0.cpp +++ b/src/Main/Unknown/UnkStruct_02038aa0.cpp @@ -2,6 +2,8 @@ #include "DTCM/UnkStruct_027e103c.hpp" #include "Message/MessageManager.hpp" +extern u32 data_027e0618[]; + ARM UnkStruct_0203881c::UnkStruct_0203881c() { this->mUnk_14 = 0x1000; this->mUnk_18 = 0; @@ -39,7 +41,7 @@ ARM void UnkStruct_02038aa0::vfunc_4c(u32 param1, unk32 param2) { this->UnkStruct_0203dae0::vfunc_10(param1, param2); } -ARM void UnkStruct_02038aa0::vfunc_10(unk32 param1) {} +ARM void UnkStruct_02038aa0::vfunc_10() {} ARM void UnkStruct_02038aa0::func_02038b40() { this->mUnk_15c = -1; @@ -115,7 +117,7 @@ ARM s32 UnkStruct_02038aa0::func_02038d10() { ARM void UnkStruct_02038aa0::vfunc_2c() {} -ARM void UnkStruct_02038aa0::vfunc_30() { +ARM void UnkStruct_02038aa0::vfunc_30(unk32 param_2, unk32 param_3) { if (this->mUnk_15c > 0) { this->func_0203e090(); } else { diff --git a/src/Main/Unknown/UnkStruct_020397f8.cpp b/src/Main/Unknown/UnkStruct_020397f8.cpp index 61c6a44e..3ecaaf6f 100644 --- a/src/Main/Unknown/UnkStruct_020397f8.cpp +++ b/src/Main/Unknown/UnkStruct_020397f8.cpp @@ -8,9 +8,11 @@ extern "C" void func_ov000_020d0460(void*); extern "C" void func_0203efd8(void*, void*); extern "C" void func_0203ee48(void*); +extern "C" void func_ov018_02169634(UnkStruct_020397f8*); extern unk16 data_02056a0e[]; extern u8 data_02056a08[]; +extern u32 data_027e0618[]; THUMB UnkStruct_020397f8::UnkStruct_020397f8() : UnkStruct_02038aa0(0, 0), mUnk_164(NULL) { @@ -402,7 +404,7 @@ ARM void UnkStruct_020397f8::vfunc_44(s32 touchLastX, s32 touchLastY) { } if ((data_02056be4[data_027e077c.mUnk_0] & 2) == 0) { - if ((data_027e0d78.mFlags & 1) != 0) { + if ((gTouchControl.mFlags & 1) != 0) { if (this->mUnk_50 == 0 && data_027e0d38 != 0) { if (func_ov000_02079e04() == 0 && data_027e0e28->func_ov000_0207bc48() == 0) { if (data_027e0618[0x101] == 0 && data_027e103c->mUnk_24 == 0) { @@ -415,12 +417,12 @@ ARM void UnkStruct_020397f8::vfunc_44(s32 touchLastX, s32 touchLastY) { this->mUnk_57f = 1; } } else { - if (data_027e0d78.mTouch != 0) { + if (gTouchControl.mTouch != 0) { this->func_0203a6d0(iVar5, iVar2); return; } - if (data_027e0d78.mTouch == 0) { + if (gTouchControl.mTouch == 0) { switch(this->mUnk_150[1]) { case 3: case 4: @@ -440,7 +442,7 @@ ARM void UnkStruct_020397f8::vfunc_44(s32 touchLastX, s32 touchLastY) { case 2: //! TODO: fixme // if (this->mUnk_164->mUnk_168.mUnk_06 <= 0) { - // if ((data_027e0d78.mFlags & 2) != 0) { + // if ((gTouchControl.mFlags & 2) != 0) { // this->mUnk_128.mUnk_14 = 0; // if (this->func_0203b0bc() != 0) { @@ -455,7 +457,7 @@ ARM void UnkStruct_020397f8::vfunc_44(s32 touchLastX, s32 touchLastY) { case 0: case 1: default: - if ((data_027e0d78.mFlags & 2) != 0) { + if ((gTouchControl.mFlags & 2) != 0) { this->mUnk_128.mUnk_14 = 0; if (this->func_0203b0bc() != 0) {