From 660c5e96554153dda38e8d2185db07ae70432266 Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Fri, 24 Jan 2025 22:11:59 +0100 Subject: [PATCH] convert BMGGroups to a class --- config/eur/arm9/symbols.txt | 6 +++--- config/usa/arm9/symbols.txt | 6 +++--- include/Message/BMG.hpp | 18 ++++++++++++------ include/Message/MessageManager.hpp | 1 + src/Main/Message/BMG.cpp | 22 +++++++++++----------- src/Main/Message/MessageManager.cpp | 20 ++++++++++---------- 6 files changed, 40 insertions(+), 33 deletions(-) diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 738d2d1a..140b8db1 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1825,9 +1825,9 @@ _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 _Z13func_0203728cP11BMGFileInfoi kind:function(arm,size=0x64) addr:0x203728c -_Z13func_020372f0P9BMGGroups12BMGFileIndexs kind:function(thumb,size=0xc4) addr:0x20372f0 -_Z13func_020373b4P9BMGGroupss kind:function(thumb,size=0x38) addr:0x20373b4 -_Z13func_020373ecP9BMGGroupsi kind:function(arm,size=0x60) addr:0x20373ec +_ZN9BMGGroups13func_020372f0E12BMGFileIndexs kind:function(thumb,size=0xc4) addr:0x20372f0 +_ZN9BMGGroups13func_020373b4Es kind:function(thumb,size=0x38) addr:0x20373b4 +_ZN9BMGGroups13func_020373ecEi kind:function(arm,size=0x60) addr:0x20373ec func_0203744c kind:function(thumb,size=0xc) addr:0x203744c func_02037458 kind:function(arm,size=0x28) addr:0x2037458 func_02037480 kind:function(arm,size=0x10) addr:0x2037480 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 39e9cffe..4ccd1090 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1825,9 +1825,9 @@ _Z13func_020371b4P11BMGFileInfo kind:function(thumb,size=0x14) addr:0x2037170 _Z13func_020371c8P11BMGFileInfoPjs kind:function(thumb,size=0x90) addr:0x2037184 _Z13func_02037258P11BMGFileInfoi kind:function(arm,size=0x34) addr:0x2037214 _Z13func_0203728cP11BMGFileInfoi kind:function(arm,size=0x64) addr:0x2037248 -_Z13func_020372f0P9BMGGroups12BMGFileIndexs kind:function(thumb,size=0xc4) addr:0x20372ac -_Z13func_020373b4P9BMGGroupss kind:function(thumb,size=0x38) addr:0x2037370 -_Z13func_020373ecP9BMGGroupsi kind:function(arm,size=0x60) addr:0x20373a8 +_ZN9BMGGroups13func_020372f0E12BMGFileIndexs kind:function(thumb,size=0xc4) addr:0x20372ac +_ZN9BMGGroups13func_020373b4Es kind:function(thumb,size=0x38) addr:0x2037370 +_ZN9BMGGroups13func_020373ecEi kind:function(arm,size=0x60) addr:0x20373a8 func_0203744c kind:function(thumb,size=0xc) addr:0x2037408 func_02037458 kind:function(arm,size=0x28) addr:0x2037414 func_02037480 kind:function(arm,size=0x10) addr:0x203743c diff --git a/include/Message/BMG.hpp b/include/Message/BMG.hpp index 844da446..997e41f3 100644 --- a/include/Message/BMG.hpp +++ b/include/Message/BMG.hpp @@ -2,6 +2,7 @@ #include "global.h" #include "types.h" +#include "System/SysNew.hpp" #define BMG_MAGIC "MESGbmg1" #define BMG_TAG(a, b, c, d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a)) @@ -170,13 +171,18 @@ typedef struct BMGFileInfo { /* 0x1A */ s16 groupId; // stores the group id } BMGFileInfo; // size = 0x1C -// 0x027E0C68 + 0x14 -typedef struct BMGGroups { + +class BMGGroups : public SysObject { +public: /* 0x00 */ BMGFileInfo* entries; // accessed with `groupId` /* 0x04 */ s32 numEntries; -} BMGGroups; // size = 0x8 + /* 0x08 */ + + BMGGroups(); + ~BMGGroups(); + void func_020372f0(BMGFileIndex eIndex, s16 unk_18); + void func_020373b4(s16 unk_18); + u32 func_020373ec(unk32 param_2); +}; extern EntryINF1* func_02037258(BMGFileInfo* pFileInfo, unk32 param_2); -extern void func_020372f0(BMGGroups* pGroups, BMGFileIndex eIndex, s16 unk_18); -extern void func_020373b4(BMGGroups* pGroups, s16 unk_18); -extern u32 func_020373ec(BMGGroups* pGroups, unk32 param_2); diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index 06caff2b..d6547c2f 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -159,6 +159,7 @@ public: /* 0x20 */ UnkStruct_027E0C68_UnkSubClass3* unk_20[2]; // is it actually UnkStruct_027E0C68_UnkSubClass2? /* 0x28 */ UnkStruct_027E0C68_UnkSubClass1* unk_28[6]; /* 0x40 */ UnkStruct_027E0C68_UnkSubClass1* unk_40[2]; // is array size 6? + /* 0x48 */ 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); diff --git a/src/Main/Message/BMG.cpp b/src/Main/Message/BMG.cpp index db3623b8..69dae832 100644 --- a/src/Main/Message/BMG.cpp +++ b/src/Main/Message/BMG.cpp @@ -135,7 +135,7 @@ ARM u16 func_0203728c(BMGFileInfo* pFileInfo, unk32 param_2) { return -1; } -THUMB void func_020372f0(BMGGroups* pGroups, BMGFileIndex eIndex, s16 unk_18) { +THUMB void BMGGroups::func_020372f0(BMGFileIndex eIndex, s16 unk_18) { char bmgPath[64]; BMGFileInfo bmgFile; u32* pFile; @@ -168,30 +168,30 @@ THUMB void func_020372f0(BMGGroups* pGroups, BMGFileIndex eIndex, s16 unk_18) { // assign sections and set the file info in the groups entries groupId = func_020371c8(&bmgFile, pFile, unk_18); - pGroups->entries[groupId] = bmgFile; - pGroups->entries[groupId].groupId = groupId; + this->entries[groupId] = bmgFile; + this->entries[groupId].groupId = groupId; } -THUMB void func_020373b4(BMGGroups* pGroups, s16 unk_18) { +THUMB void BMGGroups::func_020373b4(s16 unk_18) { s32 i; - for (i = 0; i < pGroups->numEntries; i++) { - if (pGroups->entries[i].unk_18 == unk_18) { - func_0202d590(pGroups->entries[i].unk_14); - func_020371b4(&pGroups->entries[i]); + for (i = 0; i < this->numEntries; i++) { + if (this->entries[i].unk_18 == unk_18) { + func_0202d590(this->entries[i].unk_14); + func_020371b4(&this->entries[i]); } } } -ARM u32 func_020373ec(BMGGroups* pGroups, unk32 param_2) { +ARM u32 BMGGroups::func_020373ec(unk32 param_2) { u16 dVar1; u16 uVar2; s32 i; dVar1 = -1; - for (i = 0; i < pGroups->numEntries; i++) { - uVar2 = func_0203728c(&pGroups->entries[i], param_2); + for (i = 0; i < this->numEntries; i++) { + uVar2 = func_0203728c(&this->entries[i], param_2); if (uVar2 != dVar1) { return uVar2 | i << 0x10; diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index e8026341..f314c86d 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -45,23 +45,23 @@ THUMB void UnkStruct_027E0C68::func_02036490(unk32 param_2, unk32 param_3, unk32 this->unk_03 = 0; this->unk_0C = 0; - func_020372f0(this->pGroups, BMG_FILE_INDEX_SYSTEM, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_SYSTEM, 2); switch (data_027e0618) { case 3: - func_020372f0(this->pGroups, BMG_FILE_INDEX_MAINSELECT, 2); - func_020372f0(this->pGroups, BMG_FILE_INDEX_BATTLE, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_MAINSELECT, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_BATTLE, 2); break; case 5: - func_020372f0(this->pGroups, BMG_FILE_INDEX_BATTLE, 2); - func_020372f0(this->pGroups, BMG_FILE_INDEX_BATTLECOMMON, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_BATTLE, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_BATTLECOMMON, 2); break; case 6: - func_020372f0(this->pGroups, BMG_FILE_INDEX_BATTLE, 2); - func_020372f0(this->pGroups, BMG_FILE_INDEX_BATTLECOMMON, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_BATTLE, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_BATTLECOMMON, 2); break; case 7: - func_020372f0(this->pGroups, BMG_FILE_INDEX_MAINSELECT, 2); + this->pGroups->func_020372f0(BMG_FILE_INDEX_MAINSELECT, 2); break; default: break; @@ -143,7 +143,7 @@ THUMB void UnkStruct_027E0C68::func_0203665c(void) { } } - func_020373b4(this->pGroups, 2); + this->pGroups->func_020373b4(2); } // non-matching @@ -405,7 +405,7 @@ ARM bool UnkStruct_027E0C68::func_02036ce4(UnkStruct_027E0C68_UnkSubClass2* para return false; } - uVar1 = func_020373ec(this->pGroups, param_3); + uVar1 = this->pGroups->func_020373ec(param_3); if (uVar1 != -1) { param_2->vfunc_08(uVar1);