summaryrefslogtreecommitdiff
path: root/src/Main/MessageManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Main/MessageManager.cpp')
-rw-r--r--src/Main/MessageManager.cpp127
1 files changed, 102 insertions, 25 deletions
diff --git a/src/Main/MessageManager.cpp b/src/Main/MessageManager.cpp
index 5ce577b1..f66da52d 100644
--- a/src/Main/MessageManager.cpp
+++ b/src/Main/MessageManager.cpp
@@ -3,33 +3,108 @@ extern "C" {
}
#include "Message/MessageManager.hpp"
-char* func_0202ab38(int lang);
+char* func_0202ab38(u32* lang);
u32* func_0202d550(int, u32*, char* path, int, int, int);
extern u32 *data_027e0ce0[];
extern u32 data_027e05f4; // language
extern u32* data_ov002_0210016c;
-THUMB void func_020371b4(UnknownData* pData) {
- pData->unk_00 = 0;
- pData->unk_04 = 0;
- pData->unk_08 = 0;
- pData->unk_0C = 0;
- pData->unk_10 = 0;
- pData->unk_14 = 0;
+THUMB void func_020371b4(BMGFileInfo* pData) {
+ pData->pHeader = NULL;
+ pData->pINF1 = NULL;
+ pData->pFLW1 = NULL;
+ pData->pFLI1 = NULL;
+ pData->pDAT1 = NULL;
+ pData->unk_14 = NULL;
pData->unk_18 = 0;
}
-THUMB int func_020371c8(UnknownData* pData, u32* param_2, int param_3) {
- /* TODO */
+THUMB int func_020371c8(BMGFileInfo* pData, u32* pFile, int param_3) {
+ char acVar1;
+ char* pacVar2;
+ char acVar3;
+ int dVar4;
+ u32 uVar5;
+
+ pData->unk_14 = (BMGHeader*)pFile;
+ pData->unk_18 = param_3;
+ pData->pHeader = (BMGHeader*)pFile;
+
+ acVar1 = BMG_TAG_FLI1;
+
+ // acVar1 = 'FLI1';
+ // pacVar2 = pHeader->firstSection;
+ // uVar5 = 0;
+ // dVar4 = 0xFFFF;
+
+ if (pData->pFLI1 != NULL) {
+ // do {
+ // acVar3 = *pacVar2;
+
+ if (acVar1 < acVar3) {
+ // if ('DAT1' < acVar3) {
+ // if (acVar3 == 'FLW1') {
+ // pData->pFLW1 = (int)pacVar2;
+ // }
+ // } else if ('DAT1' <= acVar3) {
+ // pData->pDAT1 = (int)(pacVar2 + 2);
+ // }
+ } else if (acVar3 < acVar1) {
+ // if (('MID1' < acVar3) && (acVar3 == 'INF1')) {
+ // pData->pINF1 = (int)pacVar2;
+ // dVar4 = pacVar2[3];
+ // }
+ } else {
+ // pData->pFLI1 = (int)pacVar2;
+ }
+
+ // uVar5 = uVar5 + 1;
+ // pacVar2++;
+ // } while (uVar5 < pData->pFLI1);
+ }
+
+ return dVar4;
}
-THUMB int func_02037258(UnknownData* pData, unk32 param_2) {
- /* TODO */
+ARM int func_02037258(BMGFileInfo* pData, unk32 param_2) {
+ // u32 iVar1;
+
+ // iVar1 = pData->pINF1;
+
+ // if (iVar1 == 0) {
+ // return 0;
+ // }
+
+ // if (param_2 < iVar1) {
+ // return (iVar1 + 10) * param_2 + iVar1 + 0x10;
+ // }
+
+ // return 0;
}
-THUMB unk16 func_0203728c(UnknownData* pData, unk32 param_2) {
- /* TODO */
+ARM s64 func_0203728c(BMGFileInfo* pData, unk32 param_2) {
+ // u32* iVar1;
+ // u32 uVar2;
+ // u32 uVar3;
+
+ // iVar1 = pData->unk_0C;
+ // if (iVar1 == 0) {
+ // return 0xFFFF;
+ // }
+
+ // uVar2 = 0;
+ // if (iVar1 + 0xC + 8 != 0) {
+ // do {
+ // if (param_2 == *(int *)(iVar1 + 0x10 + uVar2 * 8)) {
+ // return iVar1 + 0x10 + uVar2 * 8 + 4;
+ // }
+ // uVar3 = uVar2 + 1;
+ // uVar2 = uVar3 & 0xFFFF;
+ // } while ((uVar3 & 0xFFFF) < iVar1 + 0xC + 8);
+ // }
+
+ // return 0xFFFF;
}
static char* sBMGFiles[] = {
@@ -71,32 +146,34 @@ static char* sBMGFiles[] = {
THUMB void MessageManager::func_020372f0(int index, int param_3, int param_4) {
char bmgPath[64];
- UnknownData local_70;
- u32* uVar2;
+ BMGFileInfo bmgFile;
+ u32* pFile;
int iVar1;
// path to the bmg file for the current language (i.e.: "English/Message/battle.bmg")
- strcpy(bmgPath, func_0202ab38(data_027e05f4));
+ strcpy(bmgPath, func_0202ab38(&data_027e05f4));
strcat(bmgPath, "/Message/");
strcat(bmgPath, sBMGFiles[index]);
strcat(bmgPath, ".bmg");
- uVar2 = data_027e0ce0[1];
+ pFile = data_027e0ce0[1];
if (param_3 != 1) {
if (param_3 != 4) {
- uVar2 = data_027e0ce0[0];
+ pFile = data_027e0ce0[0];
} else {
- uVar2 = data_ov002_0210016c;
+ pFile = data_ov002_0210016c;
}
+ } else {
+ // pFile = data_027e0ce0[0];
}
- uVar2 = func_0202d550(0xC4, uVar2, bmgPath, 0, 0x10, 0);
+ pFile = func_0202d550(0xC4, pFile, bmgPath, 0, 0x10, 0);
- local_70.unk_1A = 0;
- func_020371b4(&local_70);
+ bmgFile.unk_1A = 0;
+ func_020371b4(&bmgFile);
- iVar1 = func_020371c8(&local_70, uVar2, param_3);
- this->aUnknownData[iVar1] = local_70;
+ iVar1 = func_020371c8(&bmgFile, pFile, param_3);
+ this->aUnknownData[iVar1] = bmgFile;
this->aUnknownData[iVar1].unk_1A = iVar1;
}