From cb3e751f5f8990f7e36e141869a14f62e44eceff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:13:33 -0400 Subject: Decompile mailbox_pc and dump decorations --- src/mailbox_pc.c | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/mailbox_pc.c (limited to 'src') diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c new file mode 100644 index 000000000..3c72b9b5a --- /dev/null +++ b/src/mailbox_pc.c @@ -0,0 +1,143 @@ +#include "global.h" +#include "malloc.h" +#include "window.h" +#include "menu.h" +#include "string_util.h" +#include "new_menu_helpers.h" +#include "list_menu.h" +#include "player_pc.h" +#include "strings.h" +#include "menu_indicators.h" +#include "sound.h" +#include "constants/songs.h" + +EWRAM_DATA u8 gUnknown_203ADDC[3] = {}; +EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL; + +void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list); + +static const struct WindowTemplate gUnknown_8453FE8[] = { + { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 2, + .paletteNum = 15, + .baseBlock = 0x008 + }, { + .bg = 0, + .tilemapLeft = 19, + .tilemapTop = 1, + .width = 10, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x01c + }, { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 15, + .height = 8, + .paletteNum = 15, + .baseBlock = 0x01c + } +}; + +static const u8 gUnknown_8454000[3] = {1, 2, 3}; +static const u8 gUnknown_8454003[] = _(""); + +bool8 sub_810EB6C(u8 num) +{ + u8 i; + + gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1)); + if (gUnknown_203ADE0 == NULL) + return FALSE; + for (i = 0; i < NELEMS(gUnknown_203ADDC); i++) + gUnknown_203ADDC[i] = 0xFF; + return TRUE; +} + +u8 sub_810EBAC(u8 winIdx) +{ + if (gUnknown_203ADDC[winIdx] == 0xFF) + { + gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]); + SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0); + } + return gUnknown_203ADDC[winIdx]; +} + +void sub_810EBE0(u8 winIdx) +{ + ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE); + ClearWindowTilemap(gUnknown_203ADDC[winIdx]); + RemoveWindow(gUnknown_203ADDC[winIdx]); + gUnknown_203ADDC[winIdx] = 0xFF; +} + +u8 sub_810EC10(u8 winIdx) +{ + return gUnknown_203ADDC[winIdx]; +} + +void sub_810EC20(u8 windowId, s32 itemId, u8 y) +{ + u8 strbuf[30]; + if (itemId != -2) + { + StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName); + if (StringLength(strbuf) <= 5) + ConvertInternationalString(strbuf, LANGUAGE_JAPANESE); + AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf); + } +} + +u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +{ + u16 i; + for (i = 0; i < playerPcStruct->unk_5; i++) + { + gUnknown_203ADE0[i].label = gUnknown_8454003; + gUnknown_203ADE0[i].index = i; + } + gUnknown_203ADE0[i].label = gFameCheckerText_Cancel; + gUnknown_203ADE0[i].index = -2; + + gMultiuseListMenuTemplate.items = gUnknown_203ADE0; + gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1; + gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1]; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0); + gMultiuseListMenuTemplate.cursor_X = 0; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.maxShowed = 8; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.upText_Y = 10; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 1; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C; + gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.scrollMultiple = 0; + return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow); +} + +void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list) +{ + if (onInit != TRUE) + PlaySE(SE_SELECT); +} + +void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +{ + playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset); +} + +void sub_810EDB0(void) +{ + Free(gUnknown_203ADE0); +} -- cgit v1.2.3 From 69cb422b78644c60e5471eea8c82ea9347d48b60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 12:25:18 -0400 Subject: Name functions in mailbox_pc --- src/mailbox_pc.c | 76 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 3c72b9b5a..80c3f7e0b 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -11,12 +11,12 @@ #include "sound.h" #include "constants/songs.h" -EWRAM_DATA u8 gUnknown_203ADDC[3] = {}; -EWRAM_DATA struct ListMenuItem * gUnknown_203ADE0 = NULL; +EWRAM_DATA u8 sWindowIds[3] = {}; +EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; -void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list); +static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); -static const struct WindowTemplate gUnknown_8453FE8[] = { +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, .tilemapLeft = 1, @@ -44,45 +44,45 @@ static const struct WindowTemplate gUnknown_8453FE8[] = { } }; -static const u8 gUnknown_8454000[3] = {1, 2, 3}; -static const u8 gUnknown_8454003[] = _(""); +static const u8 sTextColor[3] = {1, 2, 3}; +static const u8 sString_Dummy[] = _(""); -bool8 sub_810EB6C(u8 num) +bool8 MailboxPC_InitBuffers(u8 num) { u8 i; - gUnknown_203ADE0 = Alloc(sizeof(struct ListMenuItem) * (num + 1)); - if (gUnknown_203ADE0 == NULL) + sListMenuItems = Alloc(sizeof(struct ListMenuItem) * (num + 1)); + if (sListMenuItems == NULL) return FALSE; - for (i = 0; i < NELEMS(gUnknown_203ADDC); i++) - gUnknown_203ADDC[i] = 0xFF; + for (i = 0; i < NELEMS(sWindowIds); i++) + sWindowIds[i] = 0xFF; return TRUE; } -u8 sub_810EBAC(u8 winIdx) +u8 MailboxPC_GetAddWindow(u8 winIdx) { - if (gUnknown_203ADDC[winIdx] == 0xFF) + if (sWindowIds[winIdx] == 0xFF) { - gUnknown_203ADDC[winIdx] = AddWindow(&gUnknown_8453FE8[winIdx]); - SetStdWindowBorderStyle(gUnknown_203ADDC[winIdx], 0); + sWindowIds[winIdx] = AddWindow(&sWindowTemplates[winIdx]); + SetStdWindowBorderStyle(sWindowIds[winIdx], 0); } - return gUnknown_203ADDC[winIdx]; + return sWindowIds[winIdx]; } -void sub_810EBE0(u8 winIdx) +void MailboxPC_RemoveWindow(u8 winIdx) { - ClearStdWindowAndFrameToTransparent(gUnknown_203ADDC[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203ADDC[winIdx]); - RemoveWindow(gUnknown_203ADDC[winIdx]); - gUnknown_203ADDC[winIdx] = 0xFF; + ClearStdWindowAndFrameToTransparent(sWindowIds[winIdx], FALSE); + ClearWindowTilemap(sWindowIds[winIdx]); + RemoveWindow(sWindowIds[winIdx]); + sWindowIds[winIdx] = 0xFF; } -u8 sub_810EC10(u8 winIdx) +u8 MailboxPC_GetWindowId(u8 winIdx) { - return gUnknown_203ADDC[winIdx]; + return sWindowIds[winIdx]; } -void sub_810EC20(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc(u8 windowId, s32 itemId, u8 y) { u8 strbuf[30]; if (itemId != -2) @@ -90,24 +90,24 @@ void sub_810EC20(u8 windowId, s32 itemId, u8 y) StringCopy(strbuf, gSaveBlock1Ptr->mail[itemId + PARTY_SIZE].playerName); if (StringLength(strbuf) <= 5) ConvertInternationalString(strbuf, LANGUAGE_JAPANESE); - AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, gUnknown_8454000, -1, strbuf); + AddTextPrinterParameterized4(windowId, 2, 8, y, 0, 0, sTextColor, -1, strbuf); } } -u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +u8 MailboxPC_InitListMenu(struct PlayerPC_Unk_203AAC4 * playerPcStruct) { u16 i; for (i = 0; i < playerPcStruct->unk_5; i++) { - gUnknown_203ADE0[i].label = gUnknown_8454003; - gUnknown_203ADE0[i].index = i; + sListMenuItems[i].label = sString_Dummy; + sListMenuItems[i].index = i; } - gUnknown_203ADE0[i].label = gFameCheckerText_Cancel; - gUnknown_203ADE0[i].index = -2; + sListMenuItems[i].label = gFameCheckerText_Cancel; + sListMenuItems[i].index = -2; - gMultiuseListMenuTemplate.items = gUnknown_203ADE0; + gMultiuseListMenuTemplate.items = sListMenuItems; gMultiuseListMenuTemplate.totalItems = playerPcStruct->unk_5 + 1; - gMultiuseListMenuTemplate.windowId = gUnknown_203ADDC[1]; + gMultiuseListMenuTemplate.windowId = sWindowIds[1]; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = GetMenuCursorDimensionByFont(2, 0); gMultiuseListMenuTemplate.cursor_X = 0; @@ -119,25 +119,25 @@ u8 sub_810EC98(struct PlayerPC_Unk_203AAC4 * playerPcStruct) gMultiuseListMenuTemplate.cursorPal = 2; gMultiuseListMenuTemplate.fillValue = 1; gMultiuseListMenuTemplate.cursorShadowPal = 3; - gMultiuseListMenuTemplate.moveCursorFunc = sub_810ED6C; - gMultiuseListMenuTemplate.itemPrintFunc = sub_810EC20; + gMultiuseListMenuTemplate.moveCursorFunc = MoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = ItemPrintFunc; gMultiuseListMenuTemplate.cursorKind = 0; gMultiuseListMenuTemplate.scrollMultiple = 0; return ListMenuInit(&gMultiuseListMenuTemplate, playerPcStruct->scrollOffset, playerPcStruct->selectedRow); } -void sub_810ED6C(s32 itemIndex, bool8 onInit, struct ListMenu * list) +static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) { if (onInit != TRUE) PlaySE(SE_SELECT); } -void sub_810ED80(struct PlayerPC_Unk_203AAC4 * playerPcStruct) +void MailboxPC_AddScrollIndicatorArrows(struct PlayerPC_Unk_203AAC4 * playerPcStruct) { playerPcStruct->unk_A = AddScrollIndicatorArrowPairParameterized(2, 0xC2, 0xC, 0x94, playerPcStruct->unk_5 - playerPcStruct->unk_4 + 1, 110, 110, &playerPcStruct->scrollOffset); } -void sub_810EDB0(void) +void MailboxPC_DestroyListMenuBuffer(void) { - Free(gUnknown_203ADE0); + Free(sListMenuItems); } -- cgit v1.2.3 From 29cb480fa897389f915a163704c0b66057d513df Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 13:14:40 -0400 Subject: make ewram static again --- src/mailbox_pc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mailbox_pc.c b/src/mailbox_pc.c index 80c3f7e0b..0ebffc67e 100644 --- a/src/mailbox_pc.c +++ b/src/mailbox_pc.c @@ -11,8 +11,8 @@ #include "sound.h" #include "constants/songs.h" -EWRAM_DATA u8 sWindowIds[3] = {}; -EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; +static EWRAM_DATA u8 sWindowIds[3] = {}; +static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; static void MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); -- cgit v1.2.3 From a8211f39b5736b0f47b4cd80e81395e7c0aff28e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 5 Oct 2019 13:50:32 -0400 Subject: Move the string vars to string_util --- src/string_util.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/string_util.c b/src/string_util.c index e1129a5a5..d5b5202df 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -2,6 +2,10 @@ #include "string_util.h" #include "text.h" +EWRAM_DATA u8 gStringVar1[32] = {}; +EWRAM_DATA u8 gStringVar2[20] = {}; +EWRAM_DATA u8 gStringVar3[20] = {}; +EWRAM_DATA u8 gStringVar4[1000] = {}; EWRAM_DATA u8 gUnknownStringVar[16] = {0}; static const u8 sDigits[] = __("0123456789ABCDEF"); -- cgit v1.2.3