diff options
Diffstat (limited to 'src/Main/MessageManager.cpp')
| -rw-r--r-- | src/Main/MessageManager.cpp | 127 |
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; } |
