From 2d57d12209e26ad09107f52e9e94e01939d6d91c Mon Sep 17 00:00:00 2001 From: Yanis002 <35189056+Yanis002@users.noreply.github.com> Date: Tue, 21 Jan 2025 00:17:29 +0100 Subject: [PATCH] work --- config/eur/arm9/delinks.txt | 3 + config/eur/arm9/symbols.txt | 14 ++-- config/usa/arm9/symbols.txt | 14 ++-- include/Message/MessageManager.hpp | 23 +++++++ src/Main/MessageManager.cpp | 102 +++++++++++++++++++++++++++++ tools/transform_dep.py | 0 6 files changed, 142 insertions(+), 14 deletions(-) create mode 100644 include/Message/MessageManager.hpp create mode 100644 src/Main/MessageManager.cpp mode change 100644 => 100755 tools/transform_dep.py diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 97a31c17..26f602ff 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -14,3 +14,6 @@ libs/cpp/src/__register_global_object.cpp: complete .text start:0x0204f8d4 end:0x0204f8f4 .bss start:0x02076da8 end:0x02076dac + +src/Main/MessageManager.cpp: + .text start:0x020371b4 end:0x020373b4 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 18cbd72b..a98893d2 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1304,7 +1304,7 @@ func_0202a8dc kind:function(arm,size=0x1cc) addr:0x202a8dc func_0202aaa8 kind:function(arm,size=0x40) addr:0x202aaa8 func_0202aae8 kind:function(thumb,size=0x10) addr:0x202aae8 func_0202aaf8 kind:function(thumb,size=0x40) addr:0x202aaf8 -func_0202ab38 kind:function(thumb,size=0x10) addr:0x202ab38 +_Z13func_0202ab38i kind:function(thumb,size=0x10) addr:0x202ab38 func_0202ab48 kind:function(thumb,size=0x4) addr:0x202ab48 func_0202ab4c kind:function(thumb,size=0x8) addr:0x202ab4c func_0202ab54 kind:function(thumb,size=0x10) addr:0x202ab54 @@ -1397,7 +1397,7 @@ func_0202d21c kind:function(thumb,size=0x20) addr:0x202d21c func_0202d23c kind:function(thumb,size=0x180) addr:0x202d23c func_0202d3bc kind:function(thumb,size=0xb8) addr:0x202d3bc func_0202d474 kind:function(thumb,size=0xdc) addr:0x202d474 -func_0202d550 kind:function(thumb,size=0x1c) addr:0x202d550 +_Z13func_0202d550iPjPciii kind:function(thumb,size=0x1c) addr:0x202d550 func_0202d56c kind:function(thumb,size=0x24) addr:0x202d56c func_0202d590 kind:function(thumb,size=0x8) addr:0x202d590 func_0202d598 kind:function(thumb,size=0x1c) addr:0x202d598 @@ -1821,11 +1821,11 @@ func_020370e8 kind:function(arm,size=0x70) addr:0x20370e8 func_02037158 kind:function(arm,size=0x20) addr:0x2037158 func_02037178 kind:function(arm,size=0x38) addr:0x2037178 func_020371b0 kind:function(arm,size=0x4) addr:0x20371b0 -func_020371b4 kind:function(thumb,size=0x14) addr:0x20371b4 -func_020371c8 kind:function(thumb,size=0x90) addr:0x20371c8 -func_02037258 kind:function(arm,size=0x34) addr:0x2037258 -func_0203728c kind:function(arm,size=0x64) addr:0x203728c -func_020372f0 kind:function(thumb,size=0xc4) addr:0x20372f0 +_Z13func_020371b4P11UnknownData kind:function(thumb,size=0x14) addr:0x20371b4 +_Z13func_020371c8P11UnknownDataPji kind:function(thumb,size=0x90) addr:0x20371c8 +_Z13func_02037258P11UnknownDatai kind:function(arm,size=0x34) addr:0x2037258 +_Z13func_0203728cP11UnknownDatai kind:function(arm,size=0x64) addr:0x203728c +_ZN14MessageManager13func_020372f0Eiii kind:function(thumb,size=0xc4) addr:0x20372f0 func_020373b4 kind:function(thumb,size=0x38) addr:0x20373b4 func_020373ec kind:function(arm,size=0x60) addr:0x20373ec func_0203744c kind:function(thumb,size=0xc) addr:0x203744c diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 64e4c14a..d597cc11 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1304,7 +1304,7 @@ func_0202a8dc kind:function(arm,size=0x1cc) addr:0x202a8dc func_0202aaa8 kind:function(arm,size=0x40) addr:0x202aaa8 func_0202aae8 kind:function(thumb,size=0x10) addr:0x202aae8 func_0202aaf8 kind:function(thumb,size=0x28) addr:0x202aaf8 -func_0202ab38 kind:function(thumb,size=0x10) addr:0x202ab20 +_Z13func_0202ab38i kind:function(thumb,size=0x10) addr:0x202ab20 func_0202ab48 kind:function(thumb,size=0x4) addr:0x202ab30 func_0202ab4c kind:function(thumb,size=0x8) addr:0x202ab34 func_0202ab54 kind:function(thumb,size=0x10) addr:0x202ab3c @@ -1397,7 +1397,7 @@ func_0202d21c kind:function(thumb,size=0x20) addr:0x202d218 func_0202d23c kind:function(thumb,size=0x180) addr:0x202d238 func_0202d3bc kind:function(thumb,size=0xb8) addr:0x202d3b8 func_0202d474 kind:function(thumb,size=0xdc) addr:0x202d470 -func_0202d550 kind:function(thumb,size=0x1c) addr:0x202d54c +_Z13func_0202d550iPjPciii kind:function(thumb,size=0x1c) addr:0x202d54c func_0202d56c kind:function(thumb,size=0x24) addr:0x202d568 func_0202d590 kind:function(thumb,size=0x8) addr:0x202d58c func_0202d598 kind:function(thumb,size=0x1c) addr:0x202d594 @@ -1821,11 +1821,11 @@ func_020370e8 kind:function(arm,size=0x70) addr:0x20370a4 func_02037158 kind:function(arm,size=0x20) addr:0x2037114 func_02037178 kind:function(arm,size=0x38) addr:0x2037134 func_020371b0 kind:function(arm,size=0x4) addr:0x203716c -func_020371b4 kind:function(thumb,size=0x14) addr:0x2037170 -func_020371c8 kind:function(thumb,size=0x90) addr:0x2037184 -func_02037258 kind:function(arm,size=0x34) addr:0x2037214 -func_0203728c kind:function(arm,size=0x64) addr:0x2037248 -func_020372f0 kind:function(thumb,size=0xc4) addr:0x20372ac +_Z13func_020371b4P11UnknownData kind:function(thumb,size=0x14) addr:0x2037170 +_Z13func_020371c8P11UnknownDataPji kind:function(thumb,size=0x90) addr:0x2037184 +_Z13func_02037258P11UnknownDatai kind:function(arm,size=0x34) addr:0x2037214 +_Z13func_0203728cP11UnknownDatai kind:function(arm,size=0x64) addr:0x2037248 +_ZN14MessageManager13func_020372f0Eiii kind:function(thumb,size=0xc4) addr:0x20372ac func_020373b4 kind:function(thumb,size=0x38) addr:0x2037370 func_020373ec kind:function(arm,size=0x60) addr:0x20373a8 func_0203744c kind:function(thumb,size=0xc) addr:0x2037408 diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp new file mode 100644 index 00000000..6d61c627 --- /dev/null +++ b/include/Message/MessageManager.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "global.h" +#include "types.h" + +typedef struct UnknownData { + unk32 unk_00; + unk32 unk_04; + unk32 unk_08; + unk32 unk_0C; + unk32 unk_10; + unk32 unk_14; + unk16 unk_18; + unk16 unk_1A; +} UnknownData; + +class MessageManager { +private: + UnknownData* aUnknownData; + +public: + void func_020372f0(int index, int param_3, int param_4); +}; diff --git a/src/Main/MessageManager.cpp b/src/Main/MessageManager.cpp new file mode 100644 index 00000000..5ce577b1 --- /dev/null +++ b/src/Main/MessageManager.cpp @@ -0,0 +1,102 @@ +extern "C" { +#include +} +#include "Message/MessageManager.hpp" + +char* func_0202ab38(int 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; + pData->unk_18 = 0; +} + +THUMB int func_020371c8(UnknownData* pData, u32* param_2, int param_3) { + /* TODO */ +} + +THUMB int func_02037258(UnknownData* pData, unk32 param_2) { + /* TODO */ +} + +THUMB unk16 func_0203728c(UnknownData* pData, unk32 param_2) { + /* TODO */ +} + +static char* sBMGFiles[] = { + "system", + "regular", + "battle", + "test", + "default", + "sea", + "kaitei", + "main_isl", + "brave", + "flame", + "wind", + "frost", + "power", + "wisdom", + "ghost", + "hidari", + "sennin", + "ship", + "collect", + "mainselect", + "field", + "wisdom_dngn", + "demo", + "battleCommon", + "bossLast1", + "bossLast3", + "torii", + "myou", + "kojima1", + "kojima2", + "kojima5", + "kojima3", + "staff", + "kaitei_F", +}; + +THUMB void MessageManager::func_020372f0(int index, int param_3, int param_4) { + char bmgPath[64]; + UnknownData local_70; + u32* uVar2; + int iVar1; + + // path to the bmg file for the current language (i.e.: "English/Message/battle.bmg") + strcpy(bmgPath, func_0202ab38(data_027e05f4)); + strcat(bmgPath, "/Message/"); + strcat(bmgPath, sBMGFiles[index]); + strcat(bmgPath, ".bmg"); + + uVar2 = data_027e0ce0[1]; + + if (param_3 != 1) { + if (param_3 != 4) { + uVar2 = data_027e0ce0[0]; + } else { + uVar2 = data_ov002_0210016c; + } + } + + uVar2 = func_0202d550(0xC4, uVar2, bmgPath, 0, 0x10, 0); + + local_70.unk_1A = 0; + func_020371b4(&local_70); + + iVar1 = func_020371c8(&local_70, uVar2, param_3); + this->aUnknownData[iVar1] = local_70; + this->aUnknownData[iVar1].unk_1A = iVar1; +} diff --git a/tools/transform_dep.py b/tools/transform_dep.py old mode 100644 new mode 100755