From ed4b353795e27f362ad1abd5d31ec4bf5936b9dd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 15:02:59 -0400 Subject: tm_case through sub_8131D48 --- src/tm_case.c | 368 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 src/tm_case.c (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c new file mode 100644 index 000000000..011af5d94 --- /dev/null +++ b/src/tm_case.c @@ -0,0 +1,368 @@ +#include "global.h" +#include "malloc.h" +#include "bg.h" +#include "decompress.h" +#include "gpu_regs.h" +#include "palette.h" +#include "task.h" +#include "text.h" +#include "menu.h" +#include "menu_helpers.h" +#include "list_menu.h" +#include "item.h" +#include "string_util.h" +#include "party_menu.h" +#include "data2.h" +#include "scanline_effect.h" +#include "constants/items.h" + +struct UnkStruct_203B10C +{ + void (* unk_00)(void); + u8 unk_04; + u8 unk_05; + u8 unk_06; + u16 unk_08; + u16 unk_0a; +}; + +struct UnkStruct_203B118 +{ + u32 unk_00; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 filler_09[9]; + s16 unk_12; + u8 filler_14[8]; +}; + +struct UnkStruct_203B11C +{ + struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT]; + struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT]; + u16 unk_160; + u16 unk_162; +}; + +EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; +EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; +EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; +EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer +EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; +EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; +EWRAM_DATA u16 * gUnknown_203B12C = NULL; + +void sub_8131894(void); +bool8 sub_81318C0(void); +void sub_8131A8C(void); +void sub_8131AB8(void); +bool8 sub_8131B20(void); +void sub_8131C10(void); +void sub_8131C50(void); +void sub_8131D48(u8 * dest, u16 itemId); +void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); +void sub_8131E68(u8 windowId, s32 itemId, u8 y); +void sub_8132018(void); +void sub_81320BC(void); +void sub_8132120(void); +void sub_8132170(void); +void sub_81322D4(u8 taskId); +void sub_8132F20(u8 taskId); +void sub_8133244(void); +void sub_81333C4(void); +void sub_8133404(void); +u8 sub_813368C(u16 itemId); +void sub_81338A8(void); + +extern const struct BgTemplate gUnknown_8463134[3]; +extern const u32 gUnknown_8E845D8[]; +extern const u32 gUnknown_8E84A24[]; +extern const u32 gUnknown_8E84B70[]; +extern const u32 gUnknown_8E84CB0[]; +extern const u32 gUnknown_8E84D20[]; +extern const struct CompressedSpriteSheet gUnknown_8463218; + +extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166FF[]; +extern const u8 gUnknown_8463178[]; +extern const u8 gUnknown_8416226[]; +extern const u8 gUnknown_846317C[]; +extern const u8 gUnknown_8416703[]; + +void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) +{ + sub_8131A8C(); + gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); + gUnknown_203B118->unk_00 = 0; + gUnknown_203B118->unk_08 = 0xFF; + gUnknown_203B118->unk_07 = 0xFF; + if (a0 != 5) + gUnknown_203B10C.unk_04 = a0; + if (a1 != NULL) + gUnknown_203B10C.unk_00 = a1; + if (a2 != 0xFF) + gUnknown_203B10C.unk_05 = a2; + gTextFlags.flag_2 = FALSE; + SetMainCallback2(sub_8131894); +} + +void sub_8131864(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} + +void sub_8131880(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8131894(void) +{ + while (1) + { + if (sub_80BF72C() == TRUE) + break; + if (sub_81318C0() == TRUE) + break; + if (sub_80BF708() == TRUE) + break; + } +} + +bool8 sub_81318C0(void) +{ + u8 taskId; + + switch (gMain.state) + { + case 0: + sub_80BF768(); + clear_scheduled_bg_copies_to_vram(); + gMain.state++; + break; + case 1: + ScanlineEffect_Stop(); + gMain.state++; + break; + case 2: + FreeAllSpritePalettes(); + gMain.state++; + break; + case 3: + ResetPaletteFade(); + gMain.state++; + break; + case 4: + ResetSpriteData(); + gMain.state++; + break; + case 5: + ResetTasks(); + gMain.state++; + break; + case 6: + sub_8131AB8(); + gUnknown_203B118->unk_12 = 0; + gMain.state++; + break; + case 7: + sub_8133244(); + gMain.state++; + break; + case 8: + if (sub_8131B20()) + gMain.state++; + break; + case 9: + sub_809A5E4(&gUnknown_20398A4); + gMain.state++; + break; + case 10: + sub_81320BC(); + sub_8132120(); + sub_8132170(); + gMain.state++; + break; + case 11: + sub_8133404(); + gMain.state++; + break; + case 12: + sub_8131C10(); + sub_8131C50(); + gMain.state++; + break; + case 13: + sub_81333C4(); + gMain.state++; + break; + case 14: + if (gUnknown_203B10C.unk_04 == 4) + taskId = CreateTask(sub_8132F20, 0); + else + taskId = CreateTask(sub_81322D4, 0); + gTasks[taskId].data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + gMain.state++; + break; + case 15: + sub_8132018(); + gMain.state++; + break; + case 16: + gUnknown_203B118->unk_04 = sub_813368C(sub_809A798(POCKET_TM_CASE, gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08)); + gMain.state++; + break; + case 17: + BlendPalettes(0xFFFFFFFF, 16, 0); + gMain.state++; + break; + case 18: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + default: + SetVBlankCallback(sub_8131880); + SetMainCallback2(sub_8131864); + return TRUE; + } + + return FALSE; +} + +void sub_8131A8C(void) +{ + gUnknown_203B118 = NULL; + gUnknown_203B120 = NULL; + gUnknown_203B124 = NULL; + gUnknown_203B128 = NULL; + gUnknown_203B12C = NULL; +} + +void sub_8131AB8(void) +{ + void ** ptr; + sub_80BF7C8(); + ptr = &gUnknown_203B120; + *ptr = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_8463134, NELEMS(gUnknown_8463134)); + SetBgTilemapBuffer(2, *ptr); + schedule_bg_copy_tilemap_to_vram(1); + schedule_bg_copy_tilemap_to_vram(2); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + ShowBg(0); + ShowBg(1); + ShowBg(2); +} + +bool8 sub_8131B20(void) +{ + switch (gUnknown_203B118->unk_12) + { + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0); + gUnknown_203B118->unk_12++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + LZDecompressWram(gUnknown_8E84A24, gUnknown_203B120); + gUnknown_203B118->unk_12++; + } + break; + case 2: + LZDecompressWram(gUnknown_8E84B70, GetBgTilemapBuffer(1)); + gUnknown_203B118->unk_12++; + break; + case 3: + if (gSaveBlock2Ptr->playerGender == MALE) + LoadCompressedPalette(gUnknown_8E84CB0, 0, 0x80); + else + LoadCompressedPalette(gUnknown_8E84D20, 0, 0x80); + gUnknown_203B118->unk_12++; + break; + case 4: + LoadCompressedObjectPic(&gUnknown_8463218); + gUnknown_203B118->unk_12++; + break; + default: + sub_81338A8(); + gUnknown_203B118->unk_12 = 0; + return TRUE; + } + + return FALSE; +} + +void sub_8131C10(void) +{ + struct BagPocket * pocket = &gUnknown_20398A4; + gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); + gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); +} + +void sub_8131C50(void) +{ + struct BagPocket * pocket = &gUnknown_20398A4; + u16 i; + + for (i = 0; i < gUnknown_203B118->unk_06; i++) + { + sub_8131D48(gUnknown_203B128[i], pocket->itemSlots[i].itemId); + gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; + gUnknown_203B124[i].unk_04 = i; + } + gUnknown_203B124[i].unk_00 = gUnknown_84166DB; + gUnknown_203B124[i].unk_04 = -2; + gUnknown_3005E70.items = gUnknown_203B124; + gUnknown_3005E70.totalItems = gUnknown_203B118->unk_06 + 1; + gUnknown_3005E70.windowId = 0; + gUnknown_3005E70.header_X = 0; + gUnknown_3005E70.item_X = 8; + gUnknown_3005E70.cursor_X = 0; + gUnknown_3005E70.lettersSpacing = 0; + gUnknown_3005E70.itemVerticalPadding = 2; + gUnknown_3005E70.upText_Y = 2; + gUnknown_3005E70.maxShowed = gUnknown_203B118->unk_05; + gUnknown_3005E70.fontId = 2; + gUnknown_3005E70.cursorPal = 2; + gUnknown_3005E70.fillValue = 0; + gUnknown_3005E70.cursorShadowPal = 3; + gUnknown_3005E70.moveCursorFunc = sub_8131E18; + gUnknown_3005E70.itemPrintFunc = sub_8131E68; + gUnknown_3005E70.cursorKind = 0; + gUnknown_3005E70.scrollMultiple = 0; +} + +void sub_8131D48(u8 * dest, u16 itemId) +{ + StringCopy(gStringVar4, gUnknown_84166FF); + if (itemId >= ITEM_HM01) + { + StringAppend(gStringVar4, gUnknown_8463178); + StringAppend(gStringVar4, gUnknown_8416226); + ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1); + StringAppend(gStringVar4, gStringVar1); + } + else + { + StringAppend(gStringVar4, gUnknown_8416226); + ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(gStringVar4, gStringVar1); + } + StringAppend(gStringVar4, gUnknown_846317C); + StringAppend(gStringVar4, gUnknown_8416703); + StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); + StringCopy(dest, gStringVar4); +} -- cgit v1.2.3 From ef00905bd76a02a62ad0b69583b739c54599bd16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 15:59:22 -0400 Subject: tm_case through sub_8132120 --- src/tm_case.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 153 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 011af5d94..60f9c5bcb 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -8,13 +8,17 @@ #include "text.h" #include "menu.h" #include "menu_helpers.h" +#include "new_menu_helpers.h" #include "list_menu.h" #include "item.h" #include "string_util.h" #include "party_menu.h" #include "data2.h" #include "scanline_effect.h" +#include "sound.h" +#include "menu_indicators.h" #include "constants/items.h" +#include "constants/songs.h" struct UnkStruct_203B10C { @@ -34,7 +38,8 @@ struct UnkStruct_203B118 u8 unk_06; u8 unk_07; u8 unk_08; - u8 filler_09[9]; + u16 unk_0a; + u8 filler_0c[6]; s16 unk_12; u8 filler_14[8]; }; @@ -65,6 +70,8 @@ void sub_8131C50(void); void sub_8131D48(u8 * dest, u16 itemId); void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); void sub_8131E68(u8 windowId, s32 itemId, u8 y); +void sub_8131F0C(s32 itemIndex); +void sub_8131FB0(u8 a0, u8 a1); void sub_8132018(void); void sub_81320BC(void); void sub_8132120(void); @@ -72,9 +79,13 @@ void sub_8132170(void); void sub_81322D4(u8 taskId); void sub_8132F20(u8 taskId); void sub_8133244(void); +void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); void sub_81333C4(void); void sub_8133404(void); +void sub_8133444(u16 itemId); +void sub_81335B0(u8 windowId, u8 x, u8 y); u8 sub_813368C(u16 itemId); +void sub_81337E4(u8 a0, u16 itemId); void sub_81338A8(void); extern const struct BgTemplate gUnknown_8463134[3]; @@ -84,12 +95,15 @@ extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; extern const struct CompressedSpriteSheet gUnknown_8463218; +extern const u8 gUnknown_8463178[]; +extern const u8 gUnknown_846317C[]; +extern const u8 gUnknown_8416226[]; +extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gUnknown_84162B9[]; extern const u8 gUnknown_84166DB[]; +extern const u8 gUnknown_84166E1[]; extern const u8 gUnknown_84166FF[]; -extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_8416226[]; -extern const u8 gUnknown_846317C[]; extern const u8 gUnknown_8416703[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) @@ -183,7 +197,7 @@ bool8 sub_81318C0(void) gMain.state++; break; case 9: - sub_809A5E4(&gUnknown_20398A4); + sub_809A5E4(&gBagPockets[POCKET_TM_CASE - 1]); gMain.state++; break; case 10: @@ -307,14 +321,14 @@ bool8 sub_8131B20(void) void sub_8131C10(void) { - struct BagPocket * pocket = &gUnknown_20398A4; + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); } void sub_8131C50(void) { - struct BagPocket * pocket = &gUnknown_20398A4; + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; for (i = 0; i < gUnknown_203B118->unk_06; i++) @@ -366,3 +380,135 @@ void sub_8131D48(u8 * dest, u16 itemId) StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); StringCopy(dest, gStringVar4); } + +void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + u16 itemId; + + if (itemIndex == -2) + itemId = 0; + else + itemId = sub_809A798(POCKET_TM_CASE, itemIndex); + + if (onInit != TRUE) + { + PlaySE(SE_SELECT); + sub_81337E4(gUnknown_203B118->unk_04, itemId); + } + sub_8131F0C(itemIndex); + sub_8133444(itemId); +} + +void sub_8131E68(u8 windowId, s32 itemId, u8 y) +{ + if (itemId != -2) + { + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, itemId))) + { + ConvertIntToDecimalStringN(gStringVar1, sub_809A7B4(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); + } + else + { + sub_81335B0(windowId, 8, y); + } + } +} + +void sub_8131F0C(s32 itemIndex) +{ + const u8 * str; + if (itemIndex != -2) + { + str = ItemId_GetDescription(sub_809A798(POCKET_TM_CASE, itemIndex)); + } + else + { + str = gUnknown_84166E1; + } + FillWindowPixelBuffer(1, 0); + sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); +} + +void sub_8131F64(s32 a0) +{ + sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); + schedule_bg_copy_tilemap_to_vram(2); +} + +void sub_8131F90(u8 a0, u8 a1) +{ + sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); +} + +void sub_8131FB0(u8 a0, u8 a1) +{ + if (a1 == 0xFF) + { + FillWindowPixelRect(0, 0, 0, a0, GetFontAttribute(2, 0), GetFontAttribute(2, 1)); + CopyWindowToVram(0, 2); + } + else + { + sub_81332EC(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); + } +} + +void sub_8132018(void) +{ + gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); +} + +void sub_8132054(void) +{ + gUnknown_203B118->unk_0a = 1; + gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); +} + +void sub_813208C(void) +{ + if (gUnknown_203B118->unk_08 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203B118->unk_08); + gUnknown_203B118->unk_08 = 0xFF; + } +} + +void sub_81320AC(void) +{ + gUnknown_203B10C.unk_08 = 0; + gUnknown_203B10C.unk_0a = 0; +} + +void sub_81320BC(void) +{ + struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; + u16 i; + + sub_809A584(pocket->itemSlots, pocket->capacity); + gUnknown_203B118->unk_06 = 0; + for (i = 0; i < pocket->capacity; i++) + { + if (pocket->itemSlots[i].itemId == ITEM_NONE) + break; + gUnknown_203B118->unk_06++; + } + gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); +} + +void sub_8132120(void) +{ + if (gUnknown_203B10C.unk_0a != 0) + { + if (gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 > gUnknown_203B118->unk_06 + 1) + gUnknown_203B10C.unk_0a = gUnknown_203B118->unk_06 + 1 - gUnknown_203B118->unk_05; + } + if (gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08 >= gUnknown_203B118->unk_06 + 1) + { + if (gUnknown_203B118->unk_06 + 1 < 2) + gUnknown_203B10C.unk_08 = 0; + else + gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; + } +} -- cgit v1.2.3 From ae4e94dd73deef0165801917b63fa8fb3e74b242 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 16:39:07 -0400 Subject: tm_case through sub_813226C --- src/fame_checker.c | 2 +- src/tm_case.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 29b888a32..e98795909 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeQuestionMarkSpriteResources(); FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->listMenuTaskId, 0, 0); + sub_810713C(sFameCheckerData->listMenuTaskId, NULL, NULL); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); diff --git a/src/tm_case.c b/src/tm_case.c index 60f9c5bcb..bc91de20f 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -32,7 +32,7 @@ struct UnkStruct_203B10C struct UnkStruct_203B118 { - u32 unk_00; + void (* unk_00)(void); u8 unk_04; u8 unk_05; u8 unk_06; @@ -76,6 +76,7 @@ void sub_8132018(void); void sub_81320BC(void); void sub_8132120(void); void sub_8132170(void); +void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); void sub_8132F20(u8 taskId); void sub_8133244(void); @@ -512,3 +513,55 @@ void sub_8132120(void) gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; } } + +void sub_8132170(void) +{ + u8 i; + if (gUnknown_203B10C.unk_08 > 3) + { + for (i = 0; i <= gUnknown_203B10C.unk_08 - 3 && gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 != gUnknown_203B118->unk_06 + 1; i++) + { + do {} while (0); + gUnknown_203B10C.unk_08--; + gUnknown_203B10C.unk_0a++; + } + } +} + +void sub_81321D4(void) +{ + if (gUnknown_203B118 != NULL) + Free(gUnknown_203B118); + if (gUnknown_203B120 != NULL) + Free(gUnknown_203B120); + if (gUnknown_203B124 != NULL) + Free(gUnknown_203B124); + if (gUnknown_203B128 != NULL) + Free(gUnknown_203B128); + if (gUnknown_203B12C != NULL) + Free(gUnknown_203B12C); + FreeAllWindowBuffers(); +} + +void sub_8132230(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_813226C; +} + +void sub_813226C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + if (gUnknown_203B118->unk_00 != NULL) + SetMainCallback2(gUnknown_203B118->unk_00); + else + SetMainCallback2(gUnknown_203B10C.unk_00); + sub_813208C(); + sub_81321D4(); + DestroyTask(taskId); + } +} -- cgit v1.2.3 From 584bdbe5b57b28fbb06c1e49235f12f7de8c79ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 18:42:50 -0400 Subject: tm_case through sub_8132F20 --- src/tm_case.c | 500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 489 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index bc91de20f..b63260aaf 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -11,6 +11,12 @@ #include "new_menu_helpers.h" #include "list_menu.h" #include "item.h" +#include "item_menu.h" +#include "link.h" +#include "money.h" +#include "shop.h" +#include "teachy_tv.h" +#include "pokemon_storage_system.h" #include "string_util.h" #include "party_menu.h" #include "data2.h" @@ -39,7 +45,8 @@ struct UnkStruct_203B118 u8 unk_07; u8 unk_08; u16 unk_0a; - u8 filler_0c[6]; + const u8 * unk_0c; + u8 unk_10; s16 unk_12; u8 filler_14[8]; }; @@ -78,34 +85,70 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); +void sub_8132568(u8 taskId); +void sub_81326F8(u8 taskId); +void sub_8132714(u8 taskId); +void sub_8132758(u8 taskId); +void sub_8132780(u8 taskId); +void sub_81329C4(u8 taskId); +void sub_8132A34(u8 taskId); +void sub_8132AAC(u8 taskId); +void sub_8132B5C(s16 quantity, s32 value); +void sub_8132BC8(u8 taskId); +void sub_8132D34(u8 taskId); +void sub_8132E0C(u8 taskId); void sub_8132F20(u8 taskId); +void sub_8132F60(u8 taskId); void sub_8133244(void); void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +void sub_8133354(u8 windowId); +void sub_8133368(u8 windowId); +void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); void sub_81333C4(void); void sub_8133404(void); void sub_8133444(u16 itemId); void sub_81335B0(u8 windowId, u8 x, u8 y); +void sub_81335E0(void); +void sub_8133604(u8 taskId, const u8 *const *ptrs); +u8 sub_8133630(u8 * a0, u8 a1); +void sub_8133664(u8 * a0); u8 sub_813368C(u16 itemId); void sub_81337E4(u8 a0, u16 itemId); void sub_81338A8(void); -extern const struct BgTemplate gUnknown_8463134[3]; -extern const u32 gUnknown_8E845D8[]; -extern const u32 gUnknown_8E84A24[]; -extern const u32 gUnknown_8E84B70[]; -extern const u32 gUnknown_8E84CB0[]; -extern const u32 gUnknown_8E84D20[]; -extern const struct CompressedSpriteSheet gUnknown_8463218; -extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_846317C[]; - +// event scripts extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; extern const u8 gUnknown_84162B9[]; +extern const u8 gUnknown_8416301[]; +extern const u8 gUnknown_841632A[]; +extern const u8 gUnknown_841635E[]; extern const u8 gUnknown_84166DB[]; extern const u8 gUnknown_84166E1[]; extern const u8 gUnknown_84166FF[]; extern const u8 gUnknown_8416703[]; +extern const u8 gUnknown_84168F1[]; +extern const u8 gUnknown_8416911[]; +extern const u8 gUnknown_8416936[]; +extern const u8 gUnknown_8416959[]; + +// my rodata +extern const struct BgTemplate gUnknown_8463134[3]; +extern void (*const gUnknown_8463140[])(u8 taskId); +extern const struct MenuAction gUnknown_8463150[]; +extern const u8 gUnknown_8463168[]; +extern const u8 gUnknown_846316B[]; +extern const u8 *const gUnknown_8463170[]; +extern const u8 gUnknown_8463178[]; +extern const u8 gUnknown_846317C[]; +extern const struct CompressedSpriteSheet gUnknown_8463218; + +// graphics +extern const u32 gUnknown_8E845D8[]; +extern const u32 gUnknown_8E84A24[]; +extern const u32 gUnknown_8E84B70[]; +extern const u32 gUnknown_8E84CB0[]; +extern const u32 gUnknown_8E84D20[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { @@ -565,3 +608,438 @@ void sub_813226C(u8 taskId) DestroyTask(taskId); } } + +void sub_81322D4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + s32 input; + + if (!gPaletteFade.active) + { + if (sub_80BF72C() != TRUE) + { + input = ListMenuHandleInput(data[0]); + get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1) + { + PlaySE(SE_SELECT); + gSpecialVar_ItemId = ITEM_NONE; + sub_8132230(taskId); + } + else + { + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + gSpecialVar_ItemId = 0; + sub_8132230(taskId); + break; + default: + PlaySE(SE_SELECT); + sub_8131F64(1); + sub_813208C(); + sub_8131F90(data[0], 2); + data[1] = input; + data[2] = sub_809A7B4(POCKET_TM_CASE, input); + gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input); + gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04]; + break; + } + } + } + } +} + +void sub_81323E4(u8 taskId) +{ + sub_8131F64(0); + sub_8132018(); + gTasks[taskId].func = sub_81322D4; +} + +void sub_8132414(u8 taskId) +{ + u8 * strbuf; + sub_8133368(2); + if (!sub_80BF708() && InUnionRoom() != TRUE) + { + sub_8133630(&gUnknown_203B118->unk_07, 0); + gUnknown_203B118->unk_0c = gUnknown_8463168; + gUnknown_203B118->unk_10 = 3; + } + else + { + sub_8133630(&gUnknown_203B118->unk_07, 1); + gUnknown_203B118->unk_0c = gUnknown_846316B; + gUnknown_203B118->unk_10 = 2; + } + AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); + ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); + strbuf = Alloc(256); + sub_8131D48(strbuf, gSpecialVar_ItemId); + StringAppend(strbuf, gUnknown_8416301); + sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); + Free(strbuf); + if (itemid_is_unique(gSpecialVar_ItemId)) + { + sub_81335B0(2, 0, 2); + CopyWindowToVram(2, 2); + } + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + gTasks[taskId].func = sub_8132568; +} + +void sub_8132568(u8 taskId) +{ + s8 input; + + if (sub_80BF72C() != TRUE) + { + input = ProcessMenuInputNoWrapAround(); + switch (input) + { + case -1: + PlaySE(SE_SELECT); + gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId); + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId); + break; + } + } +} + +void sub_81325F0(u8 taskId) +{ + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + if (CalculatePlayerPartyCount() == 0) + { + sub_81326F8(taskId); + } + else + { + gUnknown_3005E98 = sub_8125B40; + gUnknown_203B118->unk_00 = sub_8124C8C; + sub_8132230(taskId); + } +} + +void sub_813265C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + if (!itemid_is_unique(itemId)) + { + if (CalculatePlayerPartyCount() == 0) + { + sub_81326F8(taskId); + } + else + { + gUnknown_203B118->unk_00 = sub_8126EDC; + sub_8132230(taskId); + } + } + else + { + sub_8132714(taskId); + } +} + +void sub_81326F8(u8 taskId) +{ + sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); +} + +void sub_8132714(u8 taskId) +{ + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_841635E); + sub_813337C(taskId, 2, gStringVar4, sub_8132758); +} + +void sub_8132758(u8 taskId) +{ + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8132780(taskId); + } +} + +void sub_8132780(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + sub_8131F90(data[0], 1); + sub_810F260(6, 0); + ClearWindowTilemap(6); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_81323E4(taskId); +} + +void sub_81327FC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_8133664(&gUnknown_203B118->unk_07); + sub_810F4D8(2, 0); + ClearWindowTilemap(2); + PutWindowTilemap(0); + sub_8131F90(data[0], 1); + PutWindowTilemap(1); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_81323E4(taskId); +} + +void sub_8132868(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + { + gUnknown_203B118->unk_00 = c2_8123744; + sub_8132230(taskId); + } + else + { + sub_8132714(taskId); + } +} + +void sub_81328B8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + { + gUnknown_203B118->unk_00 = sub_808CE60; + sub_8132230(taskId); + } + else + { + sub_8132714(taskId); + } +} + +void sub_8132908(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (itemid_get_market_price(gSpecialVar_ItemId) == 0) + { + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_84168F1); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + } + else + { + data[8] = 1; + if (data[2] == 1) + { + sub_81335E0(); + sub_81329C4(taskId); + } + else + { + if (data[2] > 99) + data[2] = 99; + CopyItemName(gSpecialVar_ItemId, gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_8416911); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC); + } + } +} + +void sub_81329C4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gUnknown_8416936); + sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); +} + +void sub_8132A34(u8 taskId) +{ + sub_8133604(taskId, gUnknown_8463170); +} + +void sub_8132A48(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_8131F90(data[0], 1); + sub_81323E4(taskId); +} + +void sub_8132AAC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + sub_8133354(7); + ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + sub_81335E0(); + sub_8132054(); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + gTasks[taskId].func = sub_8132BC8; +} + +void sub_8132B5C(s16 quantity, s32 amount) +{ + FillWindowPixelBuffer(7, 0x11); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); + sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); +} + +void sub_8132BC8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (sub_80BF848(&data[8], data[2]) == 1) + { + sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + } + else if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(7, 0); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_813208C(); + sub_81329C4(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(7, 0); + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(3); + PutWindowTilemap(0); + PutWindowTilemap(1); + schedule_bg_copy_tilemap_to_vram(0); + schedule_bg_copy_tilemap_to_vram(1); + sub_813208C(); + sub_8131F90(data[0], 1); + sub_81323E4(taskId); + } +} + +void sub_8132CAC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + PutWindowTilemap(0); + schedule_bg_copy_tilemap_to_vram(0); + CopyItemName(gSpecialVar_ItemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gUnknown_8416959); + sub_813337C(taskId, 2, gStringVar4, sub_8132D34); +} + +void sub_8132D34(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + PlaySE(0xF8); + RemoveBagItem(gSpecialVar_ItemId, data[8]); + AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); + sub_809C09C(gSpecialVar_ItemId, data[8], 2); + sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + sub_81320BC(); + sub_8132120(); + sub_8131C50(); + data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + sub_8131F90(data[0], 2); + PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = sub_8132E0C; +} + +void sub_8132E0C(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_810F4D8(8, 0); + sub_810F260(6, 0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + sub_8132780(taskId); + } +} + +void sub_8132E64(void) +{ + gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); + memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08; + gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; + ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); + ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); + sub_81320AC(); + AddBagItem(ITEM_TM01, 1); + AddBagItem(ITEM_TM03, 1); + AddBagItem(ITEM_TM09, 1); + AddBagItem(ITEM_TM35, 1); + sub_81317F8(4, sub_815ABFC, 0); +} + +void sub_8132F20(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (!gPaletteFade.active) + { + data[8] = 0; + data[9] = 0; + gTasks[taskId].func = sub_8132F60; + } +} -- cgit v1.2.3 From c95740ab85fbec74cbfb844f33e56bf879fee8c9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 19:11:11 -0400 Subject: tm_case sub_8132F60 --- src/tm_case.c | 131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index b63260aaf..0f709afea 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -131,6 +131,8 @@ extern const u8 gUnknown_84168F1[]; extern const u8 gUnknown_8416911[]; extern const u8 gUnknown_8416936[]; extern const u8 gUnknown_8416959[]; +extern const u8 gUnknown_841C587[]; +extern const u8 gUnknown_841C693[]; // my rodata extern const struct BgTemplate gUnknown_8463134[3]; @@ -1043,3 +1045,132 @@ void sub_8132F20(u8 taskId) gTasks[taskId].func = sub_8132F60; } } + +void sub_8132F60(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (JOY_NEW(B_BUTTON)) + { + if (data[8] < 21) + { + data[8] = 21; + sub_815AC20(); + } + } + + switch (data[8]) + { + case 0: + BeginNormalPaletteFade(0xFFFF8405, 4, 0, 6, 0); + sub_8131F64(1); + data[8]++; + break; + case 1: + case 11: + if (!gPaletteFade.active) + { + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + } + break; + case 2: + case 3: + case 4: + case 12: + case 13: + case 14: + if (data[9] == 0) + { + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = DPAD_DOWN; + ListMenuHandleInput(data[0]); + } + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + break; + case 5: + case 6: + case 7: + case 15: + case 16: + case 17: + if (data[9] == 0) + { + gMain.newKeys = 0; + gMain.newAndRepeatedKeys = DPAD_UP; + ListMenuHandleInput(data[0]); + } + data[9]++; + if (data[9] > 0x65) + { + data[9] = 0; + data[8]++; + } + break; + case 8: + sub_8131F64(1); + sub_813337C(taskId, 4, gUnknown_841C587, 0); + gTasks[taskId].func = sub_8132F60; + data[8]++; + break; + case 9: + case 19: + RunTextPrinters(); + if (!IsTextPrinterActive(6)) + data[8]++; + break; + case 10: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + { + sub_8131F64(0); + BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0); + sub_810F260(6, 0); + schedule_bg_copy_tilemap_to_vram(1); + data[8]++; + } + break; + case 18: + sub_8131F64(1); + sub_813337C(taskId, 4, gUnknown_841C693, 0); + gTasks[taskId].func = sub_8132F60; + data[8]++; + break; + case 20: + if (JOY_NEW(A_BUTTON | B_BUTTON)) + data[8]++; + break; + case 21: + if (!gPaletteFade.active) + { + memcpy(gSaveBlock1Ptr->bagPocket_TMHM, gUnknown_203B11C->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, gUnknown_203B11C->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + sub_810713C(data[0], NULL, NULL); + gUnknown_203B10C.unk_08 = gUnknown_203B11C->unk_160; + gUnknown_203B10C.unk_0a = gUnknown_203B11C->unk_162; + Free(gUnknown_203B11C); + CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + sub_8108CF0(); + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); + data[8]++; + } + break; + default: + if (!gPaletteFade.active) + { + SetMainCallback2(gUnknown_203B10C.unk_00); + sub_813208C(); + sub_81321D4(); + DestroyTask(taskId); + } + break; + } +} -- cgit v1.2.3 From a4b19e9187a663564b7d41f643dc28ecedaa100d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 20:29:37 -0400 Subject: tm_case finish code --- src/tm_case.c | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/window.c | 2 +- 2 files changed, 267 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 0f709afea..699fda447 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -6,6 +6,7 @@ #include "palette.h" #include "task.h" #include "text.h" +#include "text_window.h" #include "menu.h" #include "menu_helpers.h" #include "new_menu_helpers.h" @@ -109,20 +110,26 @@ void sub_8133404(void); void sub_8133444(u16 itemId); void sub_81335B0(u8 windowId, u8 x, u8 y); void sub_81335E0(void); -void sub_8133604(u8 taskId, const u8 *const *ptrs); +void sub_8133604(u8 taskId, const TaskFunc * ptrs); u8 sub_8133630(u8 * a0, u8 a1); void sub_8133664(u8 * a0); u8 sub_813368C(u16 itemId); +void sub_8133714(struct Sprite * sprite, u8 var); +void sub_8133730(u8 type); +void sub_8133790(struct Sprite * sprite, u8 var); void sub_81337E4(u8 a0, u16 itemId); +void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); // event scripts +extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; extern const u8 gUnknown_84162B9[]; extern const u8 gUnknown_8416301[]; extern const u8 gUnknown_841632A[]; extern const u8 gUnknown_841635E[]; +extern const u8 gUnknown_84166D3[]; extern const u8 gUnknown_84166DB[]; extern const u8 gUnknown_84166E1[]; extern const u8 gUnknown_84166FF[]; @@ -134,16 +141,25 @@ extern const u8 gUnknown_8416959[]; extern const u8 gUnknown_841C587[]; extern const u8 gUnknown_841C693[]; +extern const u16 gUnknown_841F408[]; + // my rodata extern const struct BgTemplate gUnknown_8463134[3]; extern void (*const gUnknown_8463140[])(u8 taskId); extern const struct MenuAction gUnknown_8463150[]; extern const u8 gUnknown_8463168[]; extern const u8 gUnknown_846316B[]; -extern const u8 *const gUnknown_8463170[]; +extern const TaskFunc gUnknown_8463170[]; extern const u8 gUnknown_8463178[]; extern const u8 gUnknown_846317C[]; +extern const u16 gUnknown_8463180[]; +extern const struct TextColor gUnknown_8463184[]; +extern const struct WindowTemplate gUnknown_8463190[]; +extern const struct WindowTemplate gUnknown_84631E0; +extern const struct WindowTemplate gUnknown_84631E8[]; extern const struct CompressedSpriteSheet gUnknown_8463218; +extern const struct SpriteTemplate gUnknown_8463220; +extern const u16 gUnknown_8463238[]; // graphics extern const u32 gUnknown_8E845D8[]; @@ -151,6 +167,9 @@ extern const u32 gUnknown_8E84A24[]; extern const u32 gUnknown_8E84B70[]; extern const u32 gUnknown_8E84CB0[]; extern const u32 gUnknown_8E84D20[]; +extern const u32 gUnknown_8E84F20[]; +extern const u32 gUnknown_8E85068[]; +extern const u8 gUnknown_8E99118[]; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { @@ -1174,3 +1193,248 @@ void sub_8132F60(u8 taskId) break; } } + +void sub_8133244(void) +{ + u8 i; + + InitWindows(gUnknown_8463190); + DeactivateAllTextPrinters(); + sub_815001C(0, 0x5B, 0xE0); + sub_814FEAC(0, 0x64, 0xB0); + sub_814FF2C(0, 0x78, 0xD0); + LoadPalette(gUnknown_841F408, 0xF0, 0x20); + LoadPalette(gUnknown_841F408, 0xA0, 0x20); + LoadPalette(gUnknown_8463180, 0xF6, 0x04); + LoadPalette(gUnknown_8463180, 0xD6, 0x04); + sub_8107D38(0xc0, 0x01); + for (i = 0; i < 9; i++) + FillWindowPixelBuffer(i, 0x00); + PutWindowTilemap(0); + PutWindowTilemap(1); + PutWindowTilemap(3); + PutWindowTilemap(4); + PutWindowTilemap(5); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +{ + AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); +} + +void sub_8133354(u8 windowId) +{ + SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); +} + +void sub_8133368(u8 windowId) +{ + SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); +} + +void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +{ + DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); + schedule_bg_copy_tilemap_to_vram(1); +} + +void sub_81333C4(void) +{ + u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); + box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); +} + +void sub_8133404(void) +{ + sub_8107D68(4, 19, 0, 0); + sub_8107D68(4, 20, 0, 12); + sub_8107D68(4, 21, 0, 24); + sub_8107D68(4, 22, 0, 36); + CopyWindowToVram(4, 2); +} + +void sub_8133444(u16 itemId) +{ + u8 i; + u16 move; + const u8 * str; + + FillWindowPixelRect(5, 0, 0, 0, 40, 48); + if (itemId == ITEM_NONE) + { + for (i = 0; i < 4; i++) + { + sub_81332EC(5, 3, gUnknown_8416213, 7, 12 * i, 0, 0, 0xFF, 3); + } + CopyWindowToVram(5, 2); + } + else + { + move = ItemIdToBattleMoveId(itemId); + sub_8107D68(5, gBattleMoves[move].type + 1, 0, 0); + if (gBattleMoves[move].power < 2) + str = gUnknown_8416213; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = gStringVar1; + } + sub_81332EC(5, 3, str, 7, 12, 0, 0, 0xFF, 3); + if (gBattleMoves[move].accuracy == 0) + str = gUnknown_8416213; + else + { + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = gStringVar1; + } + sub_81332EC(5, 3, str, 7, 24, 0, 0, 0xFF, 3); + ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_81332EC(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); + CopyWindowToVram(5, 2); + } +} + +void sub_81335B0(u8 windowId, u8 x, u8 y) +{ + BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); +} + +void sub_81335E0(void) +{ + PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); +} + +void sub_8133604(u8 taskId, const TaskFunc *ptrs) +{ + sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); +} + +u8 sub_8133630(u8 * a0, u8 a1) +{ + if (*a0 == 0xFF) + { + *a0 = AddWindow(&gUnknown_84631E8[a1]); + sub_8133354(*a0); + schedule_bg_copy_tilemap_to_vram(0); + } + return *a0; +} + +void sub_8133664(u8 * a0) +{ + sub_810F4D8(*a0, FALSE); + ClearWindowTilemap(*a0); + RemoveWindow(*a0); + schedule_bg_copy_tilemap_to_vram(0); + *a0 = 0xFF; +} + +u8 sub_813368C(u16 itemId) +{ + u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); + u8 r5; + if (itemId == ITEM_NONE) + { + sub_8133790(&gSprites[spriteId], 0xFF); + return spriteId; + } + else + { + r5 = itemId - 33; + sub_8133714(&gSprites[spriteId], r5); + sub_8133730(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); + sub_8133790(&gSprites[spriteId], r5); + return spriteId; + } +} + +void sub_8133714(struct Sprite * sprite, u8 idx) +{ + if (idx >= 50) + StartSpriteAnim(sprite, 1); + else + StartSpriteAnim(sprite, 0); +} + +void sub_8133730(u8 type) +{ + u8 palIndex = IndexOfSpritePaletteTag(400) << 4; + LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); + if (gUnknown_203B10C.unk_04 == 4) + { + BlendPalettes(1 << (0x10 + palIndex), 4, RGB_BLACK); + } +} + +void sub_8133790(struct Sprite * sprite, u8 var) +{ + s32 x, y; + if (var == 0xFF) + { + x = 0x1B; + y = 0x36; + sprite->pos2.y = 0x14; + } + else + { + if (var >= 50) + var -= 50; + else + var += 8; + x = 0x29 - (((0xE00 * var) / 58) >> 8); + y = 0x2E + (((0x800 * var) / 58) >> 8); + } + sprite->pos1.x = x; + sprite->pos1.y = y; +} + +void sub_81337E4(u8 spriteId, u16 itemId) +{ + gSprites[spriteId].data[0] = itemId; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].callback = sub_8133810; +} + +void sub_8133810(struct Sprite * sprite) +{ + switch (sprite->data[1]) + { + case 0: + if (sprite->pos2.y >= 20) + { + if (sprite->data[0] != ITEM_NONE) + { + sprite->data[1]++; + sub_8133730(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); + sprite->data[0] -= ITEM_TM01; + sub_8133714(sprite, sprite->data[0]); + sub_8133790(sprite, sprite->data[0]); + } + else + sprite->callback = SpriteCallbackDummy; + } + else + { + sprite->pos2.y += 10; + } + break; + case 1: + if (sprite->pos2.y <= 0) + sprite->callback = SpriteCallbackDummy; + else + sprite->pos2.y -= 10; + } +} + +void sub_81338A8(void) +{ + struct SpritePalette spritePalette; + + gUnknown_203B12C = Alloc(0x110 * sizeof(u16)); + LZDecompressWram(gUnknown_8E84F20, gUnknown_203B12C); + LZDecompressWram(gUnknown_8E85068, gUnknown_203B12C + 0x100); + spritePalette.data = gUnknown_203B12C + 0x110; + spritePalette.tag = 400; + LoadSpritePalette(&spritePalette); +} diff --git a/src/window.c b/src/window.c index e760fc8e4..71cfa6898 100644 --- a/src/window.c +++ b/src/window.c @@ -320,7 +320,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) } } -void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height) +void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height) { BlitBitmapRectToWindow(windowId, pixels, 0, 0, width, height, x, y, width, height); } -- cgit v1.2.3 From d294e845532face99e16338daab1e21b21f72c15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 21:24:48 -0400 Subject: disassemble tm_case data --- src/tm_case.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 699fda447..df3b4c7df 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -121,7 +121,7 @@ void sub_81337E4(u8 a0, u16 itemId); void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); -// event scripts +// data_83FECCC extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; -- cgit v1.2.3 From 642729d03072fcc763fad90f60a92b9b74f70a37 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 21:51:07 -0400 Subject: Decompile tm_case data --- src/tm_case.c | 172 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 146 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index df3b4c7df..3cb840875 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -4,6 +4,7 @@ #include "decompress.h" #include "gpu_regs.h" #include "palette.h" +#include "graphics.h" #include "task.h" #include "text.h" #include "text_window.h" @@ -86,16 +87,25 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); +void sub_8132414(u8 taskId); void sub_8132568(u8 taskId); +void sub_81325F0(u8 taskId); +void sub_813265C(u8 taskId); void sub_81326F8(u8 taskId); void sub_8132714(u8 taskId); void sub_8132758(u8 taskId); void sub_8132780(u8 taskId); +void sub_81327FC(u8 taskId); +void sub_8132868(u8 taskId); +void sub_81328B8(u8 taskId); +void sub_8132908(u8 taskId); void sub_81329C4(u8 taskId); void sub_8132A34(u8 taskId); +void sub_8132A48(u8 taskId); void sub_8132AAC(u8 taskId); void sub_8132B5C(s16 quantity, s32 value); void sub_8132BC8(u8 taskId); +void sub_8132CAC(u8 taskId); void sub_8132D34(u8 taskId); void sub_8132E0C(u8 taskId); void sub_8132F20(u8 taskId); @@ -122,6 +132,9 @@ void sub_8133810(struct Sprite * sprite); void sub_81338A8(void); // data_83FECCC +extern const u8 gUnknown_84161A0[]; +extern const u8 gUnknown_84161B2[]; +extern const u8 gUnknown_84161C8[]; extern const u8 gUnknown_8416213[]; extern const u8 gUnknown_8416226[]; extern const u8 gFameCheckerText_ListMenuCursor[]; @@ -144,32 +157,139 @@ extern const u8 gUnknown_841C693[]; extern const u16 gUnknown_841F408[]; // my rodata -extern const struct BgTemplate gUnknown_8463134[3]; -extern void (*const gUnknown_8463140[])(u8 taskId); -extern const struct MenuAction gUnknown_8463150[]; -extern const u8 gUnknown_8463168[]; -extern const u8 gUnknown_846316B[]; -extern const TaskFunc gUnknown_8463170[]; -extern const u8 gUnknown_8463178[]; -extern const u8 gUnknown_846317C[]; -extern const u16 gUnknown_8463180[]; -extern const struct TextColor gUnknown_8463184[]; -extern const struct WindowTemplate gUnknown_8463190[]; -extern const struct WindowTemplate gUnknown_84631E0; -extern const struct WindowTemplate gUnknown_84631E8[]; -extern const struct CompressedSpriteSheet gUnknown_8463218; -extern const struct SpriteTemplate gUnknown_8463220; -extern const u16 gUnknown_8463238[]; - -// graphics -extern const u32 gUnknown_8E845D8[]; -extern const u32 gUnknown_8E84A24[]; -extern const u32 gUnknown_8E84B70[]; -extern const u32 gUnknown_8E84CB0[]; -extern const u32 gUnknown_8E84D20[]; -extern const u32 gUnknown_8E84F20[]; -extern const u32 gUnknown_8E85068[]; -extern const u8 gUnknown_8E99118[]; +const struct BgTemplate gUnknown_8463134[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + } +}; + +void (*const gUnknown_8463140[])(u8 taskId) = { + sub_8132414, + sub_8132868, + sub_8132908, + sub_81328B8 +}; + +const struct MenuAction gUnknown_8463150[] = { + {gUnknown_84161A0, sub_81325F0}, + {gUnknown_84161B2, sub_813265C}, + {gUnknown_84161C8, sub_81327FC}, +}; + +const u8 gUnknown_8463168[] = {0, 1, 2}; +const u8 gUnknown_846316B[] = {1, 2, 0}; +const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; + +const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); +const u8 gUnknown_846317C[] = _(" "); + +ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; + +const struct TextColor gUnknown_8463184[] = { + {0, 1, 2}, + {0, 2, 3}, + {0, 3, 6}, + {0, 14, 10} +}; + +const struct WindowTemplate gUnknown_8463190[] = { + {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, + {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, + {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, + {0x00, 0x00, 0x01, 0x0a, 0x02, 0x0f, 0x0235}, + {0x00, 0x01, 0x0d, 0x05, 0x06, 0x0c, 0x0249}, + {0x00, 0x07, 0x0d, 0x05, 0x06, 0x0c, 0x0267}, + {0x01, 0x02, 0x0f, 0x1a, 0x04, 0x0b, 0x0285}, + {0x01, 0x11, 0x09, 0x0c, 0x04, 0x0f, 0x02ed}, + {0x01, 0x01, 0x01, 0x08, 0x03, 0x0d, 0x031d}, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; + +const struct WindowTemplate gUnknown_84631E8[] = { + {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, + {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} +}; + +const struct OamData gOamData_84631F8 = { + .size = 2, + .priority = 2 +}; + +const union AnimCmd gUnknown_8463200[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd gUnknown_8463208[] = { + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_8463210[] = { + gUnknown_8463200, + gUnknown_8463208 +}; + +const struct CompressedSpriteSheet gUnknown_8463218 = { + (const void *)gUnknown_8E84D90, + 0x400, + 400 +}; + +const struct SpriteTemplate gUnknown_8463220 = { + 400, + 400, + &gOamData_84631F8, + gUnknown_8463210, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u16 gUnknown_8463238[] = { + 0x000, + 0x090, + 0x080, + 0x0c0, + 0x060, + 0x050, + 0x0b0, + 0x0a0, + 0x0e0, + 0x000, + 0x010, + 0x020, + 0x030, + 0x040, + 0x0d0, + 0x070, + 0x100, + 0x0f0 +}; void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) { -- cgit v1.2.3 From 016c99ad0be74d4e13a9500d0bd8af830572d39a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Apr 2019 22:16:27 -0400 Subject: Disassemble some strings relating to tm_case --- src/tm_case.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 3cb840875..6bb74407b 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -87,7 +87,7 @@ void sub_8132120(void); void sub_8132170(void); void sub_813226C(u8 taskId); void sub_81322D4(u8 taskId); -void sub_8132414(u8 taskId); +void SelectTMAction_FromFieldBag(u8 taskId); void sub_8132568(u8 taskId); void sub_81325F0(u8 taskId); void sub_813265C(u8 taskId); @@ -98,7 +98,7 @@ void sub_8132780(u8 taskId); void sub_81327FC(u8 taskId); void sub_8132868(u8 taskId); void sub_81328B8(u8 taskId); -void sub_8132908(u8 taskId); +void SelectTMAction_FromSellMenu(u8 taskId); void sub_81329C4(u8 taskId); void sub_8132A34(u8 taskId); void sub_8132A48(u8 taskId); @@ -186,9 +186,9 @@ const struct BgTemplate gUnknown_8463134[] = { }; void (*const gUnknown_8463140[])(u8 taskId) = { - sub_8132414, + SelectTMAction_FromFieldBag, sub_8132868, - sub_8132908, + SelectTMAction_FromSellMenu, sub_81328B8 }; @@ -801,7 +801,7 @@ void sub_81323E4(u8 taskId) gTasks[taskId].func = sub_81322D4; } -void sub_8132414(u8 taskId) +void SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; sub_8133368(2); @@ -992,7 +992,7 @@ void sub_81328B8(u8 taskId) } } -void sub_8132908(u8 taskId) +void SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; -- cgit v1.2.3 From d5504aefaefc62da33e714ee4fd314fea105b7b8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 08:49:52 -0400 Subject: tm_case documentation, 1 --- src/tm_case.c | 362 +++++++++++++++++++++++++++------------------------------- 1 file changed, 169 insertions(+), 193 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 6bb74407b..94b3278ab 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -24,6 +24,8 @@ #include "data2.h" #include "scanline_effect.h" #include "sound.h" +#include "strings.h" +#include "tm_case.h" #include "menu_indicators.h" #include "constants/items.h" #include "constants/songs.h" @@ -61,103 +63,77 @@ struct UnkStruct_203B11C u16 unk_162; }; -EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; -EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; -EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; -EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer -EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; -EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; -EWRAM_DATA u16 * gUnknown_203B12C = NULL; - -void sub_8131894(void); -bool8 sub_81318C0(void); -void sub_8131A8C(void); -void sub_8131AB8(void); -bool8 sub_8131B20(void); -void sub_8131C10(void); -void sub_8131C50(void); -void sub_8131D48(u8 * dest, u16 itemId); -void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); -void sub_8131E68(u8 windowId, s32 itemId, u8 y); -void sub_8131F0C(s32 itemIndex); -void sub_8131FB0(u8 a0, u8 a1); -void sub_8132018(void); -void sub_81320BC(void); -void sub_8132120(void); -void sub_8132170(void); -void sub_813226C(u8 taskId); -void sub_81322D4(u8 taskId); -void SelectTMAction_FromFieldBag(u8 taskId); -void sub_8132568(u8 taskId); -void sub_81325F0(u8 taskId); -void sub_813265C(u8 taskId); -void sub_81326F8(u8 taskId); -void sub_8132714(u8 taskId); -void sub_8132758(u8 taskId); -void sub_8132780(u8 taskId); -void sub_81327FC(u8 taskId); -void sub_8132868(u8 taskId); -void sub_81328B8(u8 taskId); -void SelectTMAction_FromSellMenu(u8 taskId); -void sub_81329C4(u8 taskId); -void sub_8132A34(u8 taskId); -void sub_8132A48(u8 taskId); -void sub_8132AAC(u8 taskId); -void sub_8132B5C(s16 quantity, s32 value); -void sub_8132BC8(u8 taskId); -void sub_8132CAC(u8 taskId); -void sub_8132D34(u8 taskId); -void sub_8132E0C(u8 taskId); -void sub_8132F20(u8 taskId); -void sub_8132F60(u8 taskId); -void sub_8133244(void); -void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -void sub_8133354(u8 windowId); -void sub_8133368(u8 windowId); -void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); -void sub_81333C4(void); -void sub_8133404(void); -void sub_8133444(u16 itemId); -void sub_81335B0(u8 windowId, u8 x, u8 y); -void sub_81335E0(void); -void sub_8133604(u8 taskId, const TaskFunc * ptrs); -u8 sub_8133630(u8 * a0, u8 a1); -void sub_8133664(u8 * a0); -u8 sub_813368C(u16 itemId); -void sub_8133714(struct Sprite * sprite, u8 var); -void sub_8133730(u8 type); -void sub_8133790(struct Sprite * sprite, u8 var); -void sub_81337E4(u8 a0, u16 itemId); -void sub_8133810(struct Sprite * sprite); -void sub_81338A8(void); - -// data_83FECCC -extern const u8 gUnknown_84161A0[]; -extern const u8 gUnknown_84161B2[]; -extern const u8 gUnknown_84161C8[]; -extern const u8 gUnknown_8416213[]; -extern const u8 gUnknown_8416226[]; -extern const u8 gFameCheckerText_ListMenuCursor[]; -extern const u8 gUnknown_84162B9[]; -extern const u8 gUnknown_8416301[]; -extern const u8 gUnknown_841632A[]; -extern const u8 gUnknown_841635E[]; -extern const u8 gUnknown_84166D3[]; -extern const u8 gUnknown_84166DB[]; -extern const u8 gUnknown_84166E1[]; -extern const u8 gUnknown_84166FF[]; -extern const u8 gUnknown_8416703[]; -extern const u8 gUnknown_84168F1[]; -extern const u8 gUnknown_8416911[]; -extern const u8 gUnknown_8416936[]; -extern const u8 gUnknown_8416959[]; -extern const u8 gUnknown_841C587[]; -extern const u8 gUnknown_841C693[]; - -extern const u16 gUnknown_841F408[]; - -// my rodata -const struct BgTemplate gUnknown_8463134[] = { +static EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; +static EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; +static EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; +static EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer +static EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; +static EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; +static EWRAM_DATA u16 * gUnknown_203B12C = NULL; + +static void sub_8131894(void); +static bool8 sub_81318C0(void); +static void sub_8131A8C(void); +static void sub_8131AB8(void); +static bool8 sub_8131B20(void); +static void sub_8131C10(void); +static void sub_8131C50(void); +static void GetTMNumberAndMoveString(u8 * dest, u16 itemId); +static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void sub_8131E68(u8 windowId, s32 itemId, u8 y); +static void sub_8131F0C(s32 itemIndex); +static void sub_8131FB0(u8 a0, u8 a1); +static void sub_8132018(void); +static void sub_81320BC(void); +static void sub_8132120(void); +static void sub_8132170(void); +static void sub_813226C(u8 taskId); +static void sub_81322D4(u8 taskId); +static void SelectTMAction_FromFieldBag(u8 taskId); +static void sub_8132568(u8 taskId); +static void sub_81325F0(u8 taskId); +static void sub_813265C(u8 taskId); +static void sub_81326F8(u8 taskId); +static void sub_8132714(u8 taskId); +static void sub_8132758(u8 taskId); +static void sub_8132780(u8 taskId); +static void sub_81327FC(u8 taskId); +static void sub_8132868(u8 taskId); +static void sub_81328B8(u8 taskId); +static void SelectTMAction_FromSellMenu(u8 taskId); +static void sub_81329C4(u8 taskId); +static void sub_8132A34(u8 taskId); +static void sub_8132A48(u8 taskId); +static void sub_8132AAC(u8 taskId); +static void sub_8132B5C(s16 quantity, s32 value); +static void sub_8132BC8(u8 taskId); +static void sub_8132CAC(u8 taskId); +static void sub_8132D34(u8 taskId); +static void sub_8132E0C(u8 taskId); +static void sub_8132F20(u8 taskId); +static void sub_8132F60(u8 taskId); +static void sub_8133244(void); +static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static void sub_8133354(u8 windowId); +static void sub_8133368(u8 windowId); +static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); +static void sub_81333C4(void); +static void sub_8133404(void); +static void sub_8133444(u16 itemId); +static void sub_81335B0(u8 windowId, u8 x, u8 y); +static void sub_81335E0(void); +static void sub_8133604(u8 taskId, const TaskFunc * ptrs); +static u8 sub_8133630(u8 * a0, u8 a1); +static void sub_8133664(u8 * a0); +static u8 sub_813368C(u16 itemId); +static void sub_8133714(struct Sprite * sprite, u8 var); +static void sub_8133730(u8 type); +static void sub_8133790(struct Sprite * sprite, u8 var); +static void sub_81337E4(u8 a0, u16 itemId); +static void sub_8133810(struct Sprite * sprite); +static void sub_81338A8(void); + +static const struct BgTemplate gUnknown_8463134[] = { { .bg = 0, .charBaseIndex = 0, @@ -185,36 +161,36 @@ const struct BgTemplate gUnknown_8463134[] = { } }; -void (*const gUnknown_8463140[])(u8 taskId) = { +static void (*const gUnknown_8463140[])(u8 taskId) = { SelectTMAction_FromFieldBag, sub_8132868, SelectTMAction_FromSellMenu, sub_81328B8 }; -const struct MenuAction gUnknown_8463150[] = { +static const struct MenuAction gUnknown_8463150[] = { {gUnknown_84161A0, sub_81325F0}, {gUnknown_84161B2, sub_813265C}, {gUnknown_84161C8, sub_81327FC}, }; -const u8 gUnknown_8463168[] = {0, 1, 2}; -const u8 gUnknown_846316B[] = {1, 2, 0}; -const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; +static const u8 gUnknown_8463168[] = {0, 1, 2}; +static const u8 gUnknown_846316B[] = {1, 2, 0}; +static const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; -const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); -const u8 gUnknown_846317C[] = _(" "); +static const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); +static const u8 gUnknown_846317C[] = _(" "); -ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; +static ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; -const struct TextColor gUnknown_8463184[] = { +static const struct TextColor gUnknown_8463184[] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 6}, {0, 14, 10} }; -const struct WindowTemplate gUnknown_8463190[] = { +static const struct WindowTemplate gUnknown_8463190[] = { {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, @@ -227,40 +203,40 @@ const struct WindowTemplate gUnknown_8463190[] = { DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; +static const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; -const struct WindowTemplate gUnknown_84631E8[] = { +static const struct WindowTemplate gUnknown_84631E8[] = { {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} }; -const struct OamData gOamData_84631F8 = { +static const struct OamData gOamData_84631F8 = { .size = 2, .priority = 2 }; -const union AnimCmd gUnknown_8463200[] = { +static const union AnimCmd gUnknown_8463200[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd gUnknown_8463208[] = { +static const union AnimCmd gUnknown_8463208[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -const union AnimCmd *const gUnknown_8463210[] = { +static const union AnimCmd *const gUnknown_8463210[] = { gUnknown_8463200, gUnknown_8463208 }; -const struct CompressedSpriteSheet gUnknown_8463218 = { +static const struct CompressedSpriteSheet gUnknown_8463218 = { (const void *)gUnknown_8E84D90, 0x400, 400 }; -const struct SpriteTemplate gUnknown_8463220 = { +static const struct SpriteTemplate gUnknown_8463220 = { 400, 400, &gOamData_84631F8, @@ -270,7 +246,7 @@ const struct SpriteTemplate gUnknown_8463220 = { SpriteCallbackDummy }; -const u16 gUnknown_8463238[] = { +static const u16 gUnknown_8463238[] = { 0x000, 0x090, 0x080, @@ -291,7 +267,7 @@ const u16 gUnknown_8463238[] = { 0x0f0 }; -void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) +void InitTMCase(u8 a0, void (* a1)(void), u8 a2) { sub_8131A8C(); gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); @@ -308,7 +284,7 @@ void sub_81317F8(u8 a0, void (* a1)(void), u8 a2) SetMainCallback2(sub_8131894); } -void sub_8131864(void) +static void sub_8131864(void) { RunTasks(); AnimateSprites(); @@ -317,14 +293,14 @@ void sub_8131864(void) UpdatePaletteFade(); } -void sub_8131880(void) +static void sub_8131880(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_8131894(void) +static void sub_8131894(void) { while (1) { @@ -337,7 +313,7 @@ void sub_8131894(void) } } -bool8 sub_81318C0(void) +static bool8 sub_81318C0(void) { u8 taskId; @@ -437,7 +413,7 @@ bool8 sub_81318C0(void) return FALSE; } -void sub_8131A8C(void) +static void sub_8131A8C(void) { gUnknown_203B118 = NULL; gUnknown_203B120 = NULL; @@ -446,7 +422,7 @@ void sub_8131A8C(void) gUnknown_203B12C = NULL; } -void sub_8131AB8(void) +static void sub_8131AB8(void) { void ** ptr; sub_80BF7C8(); @@ -464,7 +440,7 @@ void sub_8131AB8(void) ShowBg(2); } -bool8 sub_8131B20(void) +static bool8 sub_8131B20(void) { switch (gUnknown_203B118->unk_12) { @@ -504,21 +480,21 @@ bool8 sub_8131B20(void) return FALSE; } -void sub_8131C10(void) +static void sub_8131C10(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); } -void sub_8131C50(void) +static void sub_8131C50(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; for (i = 0; i < gUnknown_203B118->unk_06; i++) { - sub_8131D48(gUnknown_203B128[i], pocket->itemSlots[i].itemId); + GetTMNumberAndMoveString(gUnknown_203B128[i], pocket->itemSlots[i].itemId); gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; gUnknown_203B124[i].unk_04 = i; } @@ -544,7 +520,7 @@ void sub_8131C50(void) gUnknown_3005E70.scrollMultiple = 0; } -void sub_8131D48(u8 * dest, u16 itemId) +static void GetTMNumberAndMoveString(u8 * dest, u16 itemId) { StringCopy(gStringVar4, gUnknown_84166FF); if (itemId >= ITEM_HM01) @@ -566,7 +542,7 @@ void sub_8131D48(u8 * dest, u16 itemId) StringCopy(dest, gStringVar4); } -void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 itemId; @@ -584,7 +560,7 @@ void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) sub_8133444(itemId); } -void sub_8131E68(u8 windowId, s32 itemId, u8 y) +static void sub_8131E68(u8 windowId, s32 itemId, u8 y) { if (itemId != -2) { @@ -601,7 +577,7 @@ void sub_8131E68(u8 windowId, s32 itemId, u8 y) } } -void sub_8131F0C(s32 itemIndex) +static void sub_8131F0C(s32 itemIndex) { const u8 * str; if (itemIndex != -2) @@ -616,18 +592,18 @@ void sub_8131F0C(s32 itemIndex) sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); } -void sub_8131F64(s32 a0) +static void sub_8131F64(s32 a0) { sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); schedule_bg_copy_tilemap_to_vram(2); } -void sub_8131F90(u8 a0, u8 a1) +static void sub_8131F90(u8 a0, u8 a1) { sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); } -void sub_8131FB0(u8 a0, u8 a1) +static void sub_8131FB0(u8 a0, u8 a1) { if (a1 == 0xFF) { @@ -640,18 +616,18 @@ void sub_8131FB0(u8 a0, u8 a1) } } -void sub_8132018(void) +static void sub_8132018(void) { gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); } -void sub_8132054(void) +static void sub_8132054(void) { gUnknown_203B118->unk_0a = 1; gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); } -void sub_813208C(void) +static void sub_813208C(void) { if (gUnknown_203B118->unk_08 != 0xFF) { @@ -660,13 +636,13 @@ void sub_813208C(void) } } -void sub_81320AC(void) +void ResetTMCaseCursorPos(void) { gUnknown_203B10C.unk_08 = 0; gUnknown_203B10C.unk_0a = 0; } -void sub_81320BC(void) +static void sub_81320BC(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; @@ -682,7 +658,7 @@ void sub_81320BC(void) gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); } -void sub_8132120(void) +static void sub_8132120(void) { if (gUnknown_203B10C.unk_0a != 0) { @@ -698,7 +674,7 @@ void sub_8132120(void) } } -void sub_8132170(void) +static void sub_8132170(void) { u8 i; if (gUnknown_203B10C.unk_08 > 3) @@ -712,7 +688,7 @@ void sub_8132170(void) } } -void sub_81321D4(void) +static void sub_81321D4(void) { if (gUnknown_203B118 != NULL) Free(gUnknown_203B118); @@ -727,13 +703,13 @@ void sub_81321D4(void) FreeAllWindowBuffers(); } -void sub_8132230(u8 taskId) +static void sub_8132230(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); gTasks[taskId].func = sub_813226C; } -void sub_813226C(u8 taskId) +static void sub_813226C(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -750,7 +726,7 @@ void sub_813226C(u8 taskId) } } -void sub_81322D4(u8 taskId) +static void sub_81322D4(u8 taskId) { s16 * data = gTasks[taskId].data; s32 input; @@ -794,14 +770,14 @@ void sub_81322D4(u8 taskId) } } -void sub_81323E4(u8 taskId) +static void sub_81323E4(u8 taskId) { sub_8131F64(0); sub_8132018(); gTasks[taskId].func = sub_81322D4; } -void SelectTMAction_FromFieldBag(u8 taskId) +static void SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; sub_8133368(2); @@ -820,7 +796,7 @@ void SelectTMAction_FromFieldBag(u8 taskId) AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); strbuf = Alloc(256); - sub_8131D48(strbuf, gSpecialVar_ItemId); + GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId); StringAppend(strbuf, gUnknown_8416301); sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); Free(strbuf); @@ -834,7 +810,7 @@ void SelectTMAction_FromFieldBag(u8 taskId) gTasks[taskId].func = sub_8132568; } -void sub_8132568(u8 taskId) +static void sub_8132568(u8 taskId) { s8 input; @@ -857,7 +833,7 @@ void sub_8132568(u8 taskId) } } -void sub_81325F0(u8 taskId) +static void sub_81325F0(u8 taskId) { sub_8133664(&gUnknown_203B118->unk_07); sub_810F4D8(2, 0); @@ -877,7 +853,7 @@ void sub_81325F0(u8 taskId) } } -void sub_813265C(u8 taskId) +static void sub_813265C(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); @@ -907,19 +883,19 @@ void sub_813265C(u8 taskId) } } -void sub_81326F8(u8 taskId) +static void sub_81326F8(u8 taskId) { sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); } -void sub_8132714(u8 taskId) +static void sub_8132714(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gUnknown_841635E); sub_813337C(taskId, 2, gStringVar4, sub_8132758); } -void sub_8132758(u8 taskId) +static void sub_8132758(u8 taskId) { if (JOY_NEW(A_BUTTON)) { @@ -928,7 +904,7 @@ void sub_8132758(u8 taskId) } } -void sub_8132780(u8 taskId) +static void sub_8132780(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -945,7 +921,7 @@ void sub_8132780(u8 taskId) sub_81323E4(taskId); } -void sub_81327FC(u8 taskId) +static void sub_81327FC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -962,7 +938,7 @@ void sub_81327FC(u8 taskId) sub_81323E4(taskId); } -void sub_8132868(u8 taskId) +static void sub_8132868(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -977,7 +953,7 @@ void sub_8132868(u8 taskId) } } -void sub_81328B8(u8 taskId) +static void sub_81328B8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -992,7 +968,7 @@ void sub_81328B8(u8 taskId) } } -void SelectTMAction_FromSellMenu(u8 taskId) +static void SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1021,7 +997,7 @@ void SelectTMAction_FromSellMenu(u8 taskId) } } -void sub_81329C4(u8 taskId) +static void sub_81329C4(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1030,12 +1006,12 @@ void sub_81329C4(u8 taskId) sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); } -void sub_8132A34(u8 taskId) +static void sub_8132A34(u8 taskId) { sub_8133604(taskId, gUnknown_8463170); } -void sub_8132A48(u8 taskId) +static void sub_8132A48(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1052,7 +1028,7 @@ void sub_8132A48(u8 taskId) sub_81323E4(taskId); } -void sub_8132AAC(u8 taskId) +static void sub_8132AAC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1068,7 +1044,7 @@ void sub_8132AAC(u8 taskId) gTasks[taskId].func = sub_8132BC8; } -void sub_8132B5C(s16 quantity, s32 amount) +static void sub_8132B5C(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -1077,7 +1053,7 @@ void sub_8132B5C(s16 quantity, s32 amount) PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } -void sub_8132BC8(u8 taskId) +static void sub_8132BC8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1111,7 +1087,7 @@ void sub_8132BC8(u8 taskId) } } -void sub_8132CAC(u8 taskId) +static void sub_8132CAC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1123,7 +1099,7 @@ void sub_8132CAC(u8 taskId) sub_813337C(taskId, 2, gStringVar4, sub_8132D34); } -void sub_8132D34(u8 taskId) +static void sub_8132D34(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1141,7 +1117,7 @@ void sub_8132D34(u8 taskId) gTasks[taskId].func = sub_8132E0C; } -void sub_8132E0C(u8 taskId) +static void sub_8132E0C(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -1156,7 +1132,7 @@ void sub_8132E0C(u8 taskId) } } -void sub_8132E64(void) +void PokeDude_InitTMCase(void) { gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); @@ -1165,15 +1141,15 @@ void sub_8132E64(void) gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); - sub_81320AC(); + ResetTMCaseCursorPos(); AddBagItem(ITEM_TM01, 1); AddBagItem(ITEM_TM03, 1); AddBagItem(ITEM_TM09, 1); AddBagItem(ITEM_TM35, 1); - sub_81317F8(4, sub_815ABFC, 0); + InitTMCase(4, sub_815ABFC, 0); } -void sub_8132F20(u8 taskId) +static void sub_8132F20(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1185,7 +1161,7 @@ void sub_8132F20(u8 taskId) } } -void sub_8132F60(u8 taskId) +static void sub_8132F60(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1314,7 +1290,7 @@ void sub_8132F60(u8 taskId) } } -void sub_8133244(void) +static void sub_8133244(void) { u8 i; @@ -1338,34 +1314,34 @@ void sub_8133244(void) schedule_bg_copy_tilemap_to_vram(0); } -void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); } -void sub_8133354(u8 windowId) +static void sub_8133354(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); } -void sub_8133368(u8 windowId) +static void sub_8133368(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); } -void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) { DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); schedule_bg_copy_tilemap_to_vram(1); } -void sub_81333C4(void) +static void sub_81333C4(void) { u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); } -void sub_8133404(void) +static void sub_8133404(void) { sub_8107D68(4, 19, 0, 0); sub_8107D68(4, 20, 0, 12); @@ -1374,7 +1350,7 @@ void sub_8133404(void) CopyWindowToVram(4, 2); } -void sub_8133444(u16 itemId) +static void sub_8133444(u16 itemId) { u8 i; u16 move; @@ -1415,22 +1391,22 @@ void sub_8133444(u16 itemId) } } -void sub_81335B0(u8 windowId, u8 x, u8 y) +static void sub_81335B0(u8 windowId, u8 x, u8 y) { BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); } -void sub_81335E0(void) +static void sub_81335E0(void) { PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); } -void sub_8133604(u8 taskId, const TaskFunc *ptrs) +static void sub_8133604(u8 taskId, const TaskFunc *ptrs) { sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); } -u8 sub_8133630(u8 * a0, u8 a1) +static u8 sub_8133630(u8 * a0, u8 a1) { if (*a0 == 0xFF) { @@ -1441,7 +1417,7 @@ u8 sub_8133630(u8 * a0, u8 a1) return *a0; } -void sub_8133664(u8 * a0) +static void sub_8133664(u8 * a0) { sub_810F4D8(*a0, FALSE); ClearWindowTilemap(*a0); @@ -1450,7 +1426,7 @@ void sub_8133664(u8 * a0) *a0 = 0xFF; } -u8 sub_813368C(u16 itemId) +static u8 sub_813368C(u16 itemId) { u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); u8 r5; @@ -1469,7 +1445,7 @@ u8 sub_813368C(u16 itemId) } } -void sub_8133714(struct Sprite * sprite, u8 idx) +static void sub_8133714(struct Sprite * sprite, u8 idx) { if (idx >= 50) StartSpriteAnim(sprite, 1); @@ -1477,7 +1453,7 @@ void sub_8133714(struct Sprite * sprite, u8 idx) StartSpriteAnim(sprite, 0); } -void sub_8133730(u8 type) +static void sub_8133730(u8 type) { u8 palIndex = IndexOfSpritePaletteTag(400) << 4; LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); @@ -1487,7 +1463,7 @@ void sub_8133730(u8 type) } } -void sub_8133790(struct Sprite * sprite, u8 var) +static void sub_8133790(struct Sprite * sprite, u8 var) { s32 x, y; if (var == 0xFF) @@ -1509,14 +1485,14 @@ void sub_8133790(struct Sprite * sprite, u8 var) sprite->pos1.y = y; } -void sub_81337E4(u8 spriteId, u16 itemId) +static void sub_81337E4(u8 spriteId, u16 itemId) { gSprites[spriteId].data[0] = itemId; gSprites[spriteId].data[1] = 0; gSprites[spriteId].callback = sub_8133810; } -void sub_8133810(struct Sprite * sprite) +static void sub_8133810(struct Sprite * sprite) { switch (sprite->data[1]) { @@ -1547,7 +1523,7 @@ void sub_8133810(struct Sprite * sprite) } } -void sub_81338A8(void) +static void sub_81338A8(void) { struct SpritePalette spritePalette; -- cgit v1.2.3 From dfbddec062dbc58506b007feba9d22e6d67f883d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 13:17:19 -0400 Subject: tm_case and peripheral documentation --- src/fame_checker.c | 2 +- src/text.c | 4 +- src/tm_case.c | 929 +++++++++++++++++++++++++++-------------------------- 3 files changed, 468 insertions(+), 467 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index e98795909..c47e52f06 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -853,7 +853,7 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeQuestionMarkSpriteResources(); FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->listMenuTaskId, NULL, NULL); + DestroyListMenu(sFameCheckerData->listMenuTaskId, NULL, NULL); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); diff --git a/src/text.c b/src/text.c index d83b36f88..d74d77e2f 100644 --- a/src/text.c +++ b/src/text.c @@ -8,7 +8,7 @@ extern u8 gGlyphInfo[0x90]; extern u8 gUnknown_203ADFA; -extern u16 gUnknown_841F408[]; +extern u16 gTMCaseMainWindowPalette[]; extern const struct OamData gOamData_83AC9D0; extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue); @@ -52,7 +52,7 @@ const struct SpriteSheet gUnknown_81EA68C[] = const struct SpritePalette gUnknown_81EA6A4[] = { - {gUnknown_841F408, 0x8000}, + {gTMCaseMainWindowPalette, 0x8000}, {NULL} }; diff --git a/src/tm_case.c b/src/tm_case.c index 94b3278ab..607b7fbdd 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -30,28 +30,30 @@ #include "constants/items.h" #include "constants/songs.h" +#define TM_CASE_TM_TAG 400 + struct UnkStruct_203B10C { - void (* unk_00)(void); - u8 unk_04; + void (* savedCallback)(void); + u8 tmCaseMenuType; u8 unk_05; u8 unk_06; - u16 unk_08; - u16 unk_0a; + u16 selectedRow; + u16 scrollOffset; }; struct UnkStruct_203B118 { - void (* unk_00)(void); - u8 unk_04; - u8 unk_05; - u8 unk_06; - u8 unk_07; - u8 unk_08; - u16 unk_0a; - const u8 * unk_0c; - u8 unk_10; - s16 unk_12; + void (* savedCallback)(void); + u8 tmSpriteId; + u8 maxTMsShown; + u8 numTMs; + u8 contextMenuWindowId; + u8 scrollIndicatorArrowPairId; + u16 currItem; + const u8 * menuActionIndices; + u8 numMenuActions; + s16 seqId; u8 filler_14[8]; }; @@ -63,77 +65,77 @@ struct UnkStruct_203B11C u16 unk_162; }; -static EWRAM_DATA struct UnkStruct_203B10C gUnknown_203B10C = {}; -static EWRAM_DATA struct UnkStruct_203B118 * gUnknown_203B118 = NULL; -static EWRAM_DATA struct UnkStruct_203B11C * gUnknown_203B11C = NULL; -static EWRAM_DATA void * gUnknown_203B120 = NULL; // tilemap buffer -static EWRAM_DATA struct ListMenuItem * gUnknown_203B124 = NULL; -static EWRAM_DATA u8 (* gUnknown_203B128)[29] = NULL; -static EWRAM_DATA u16 * gUnknown_203B12C = NULL; - -static void sub_8131894(void); -static bool8 sub_81318C0(void); -static void sub_8131A8C(void); -static void sub_8131AB8(void); -static bool8 sub_8131B20(void); -static void sub_8131C10(void); -static void sub_8131C50(void); +static EWRAM_DATA struct UnkStruct_203B10C sTMCaseStaticResources = {}; +static EWRAM_DATA struct UnkStruct_203B118 * sTMCaseDynamicResources = NULL; +static EWRAM_DATA struct UnkStruct_203B11C * sPokeDudePackBackup = NULL; +static EWRAM_DATA void * sTilemapBuffer = NULL; // tilemap buffer +static EWRAM_DATA struct ListMenuItem * sListMenuItemsBuffer = NULL; +static EWRAM_DATA u8 (* sListMenuStringsBuffer)[29] = NULL; +static EWRAM_DATA u16 * sTMSpritePaletteBuffer = NULL; + +static void CB2_SetUpTMCaseUI_Blocking(void); +static bool8 DoSetUpTMCaseUI(void); +static void ResetBufferPointers_NoFree(void); +static void LoadBGTemplates(void); +static bool8 HandleLoadTMCaseGraphicsAndPalettes(void); +static void CreateTMCaseListMenuBuffers(void); +static void InitTMCaseListMenuItems(void); static void GetTMNumberAndMoveString(u8 * dest, u16 itemId); -static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list); -static void sub_8131E68(u8 windowId, s32 itemId, u8 y); -static void sub_8131F0C(s32 itemIndex); -static void sub_8131FB0(u8 a0, u8 a1); +static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y); +static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex); +static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1); static void sub_8132018(void); static void sub_81320BC(void); static void sub_8132120(void); static void sub_8132170(void); -static void sub_813226C(u8 taskId); -static void sub_81322D4(u8 taskId); -static void SelectTMAction_FromFieldBag(u8 taskId); -static void sub_8132568(u8 taskId); -static void sub_81325F0(u8 taskId); -static void sub_813265C(u8 taskId); -static void sub_81326F8(u8 taskId); -static void sub_8132714(u8 taskId); +static void Task_FadeOutAndCloseTMCase(u8 taskId); +static void Task_TMCaseMain(u8 taskId); +static void Task_SelectTMAction_FromFieldBag(u8 taskId); +static void Task_TMContextMenu_HandleInput(u8 taskId); +static void TMHMContextMenuAction_Use(u8 taskId); +static void TMHMContextMenuAction_Give(u8 taskId); +static void PrintError_ThereIsNoPokemon(u8 taskId); +static void PrintError_ItemCantBeHeld(u8 taskId); static void sub_8132758(u8 taskId); static void sub_8132780(u8 taskId); -static void sub_81327FC(u8 taskId); +static void TMHMContextMenuAction_Exit(u8 taskId); static void sub_8132868(u8 taskId); static void sub_81328B8(u8 taskId); -static void SelectTMAction_FromSellMenu(u8 taskId); -static void sub_81329C4(u8 taskId); -static void sub_8132A34(u8 taskId); -static void sub_8132A48(u8 taskId); -static void sub_8132AAC(u8 taskId); +static void Task_SelectTMAction_FromSellMenu(u8 taskId); +static void Task_AskConfirmSaleWithAmount(u8 taskId); +static void Task_PlaceYesNoBox(u8 taskId); +static void Task_SaleOfTMsCancelled(u8 taskId); +static void Task_InitQuantitySelectUI(u8 taskId); static void sub_8132B5C(s16 quantity, s32 value); static void sub_8132BC8(u8 taskId); -static void sub_8132CAC(u8 taskId); -static void sub_8132D34(u8 taskId); -static void sub_8132E0C(u8 taskId); -static void sub_8132F20(u8 taskId); -static void sub_8132F60(u8 taskId); -static void sub_8133244(void); -static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -static void sub_8133354(u8 windowId); -static void sub_8133368(u8 windowId); -static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); -static void sub_81333C4(void); -static void sub_8133404(void); -static void sub_8133444(u16 itemId); -static void sub_81335B0(u8 windowId, u8 x, u8 y); -static void sub_81335E0(void); -static void sub_8133604(u8 taskId, const TaskFunc * ptrs); -static u8 sub_8133630(u8 * a0, u8 a1); -static void sub_8133664(u8 * a0); -static u8 sub_813368C(u16 itemId); -static void sub_8133714(struct Sprite * sprite, u8 var); -static void sub_8133730(u8 type); -static void sub_8133790(struct Sprite * sprite, u8 var); -static void sub_81337E4(u8 a0, u16 itemId); -static void sub_8133810(struct Sprite * sprite); -static void sub_81338A8(void); - -static const struct BgTemplate gUnknown_8463134[] = { +static void Task_PrintSaleConfirmedText(u8 taskId); +static void Task_DoSaleOfTMs(u8 taskId); +static void Task_AfterSale_ReturnToList(u8 taskId); +static void Task_TMCaseDude1(u8 taskId); +static void Task_TMCaseDude_Playback(u8 taskId); +static void InitWindowTemplatesAndPals(void); +static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static void TMCase_SetWindowBorder1(u8 windowId); +static void TMCase_SetWindowBorder2(u8 windowId); +static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func); +static void PrintStringTMCaseOnWindow3(void); +static void DrawMoveInfoUIMarkers(void); +static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId); +static void PlaceHMTileInWindow(u8 windowId, u8 x, u8 y); +static void HandlePrintMoneyOnHand(void); +static void HandleCreateYesNoMenu(u8 taskId, const struct YesNoFuncTable * ptrs); +static u8 AddTMContextMenu(u8 * a0, u8 a1); +static void RemoveTMContextMenu(u8 * a0); +static u8 CreateTMSprite(u16 itemId); +static void SetTMSpriteAnim(struct Sprite * sprite, u8 var); +static void TintTMSpriteByType(u8 type); +static void UpdateTMSpritePosition(struct Sprite * sprite, u8 var); +static void InitSelectedTMSpriteData(u8 a0, u16 itemId); +static void SpriteCB_MoveTMSpriteInCase(struct Sprite * sprite); +static void LoadTMTypePalettes(void); + +static const struct BgTemplate sBGTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -161,36 +163,36 @@ static const struct BgTemplate gUnknown_8463134[] = { } }; -static void (*const gUnknown_8463140[])(u8 taskId) = { - SelectTMAction_FromFieldBag, +static void (*const sSelectTMActionTasks[])(u8 taskId) = { + Task_SelectTMAction_FromFieldBag, sub_8132868, - SelectTMAction_FromSellMenu, + Task_SelectTMAction_FromSellMenu, sub_81328B8 }; -static const struct MenuAction gUnknown_8463150[] = { - {gUnknown_84161A0, sub_81325F0}, - {gUnknown_84161B2, sub_813265C}, - {gUnknown_84161C8, sub_81327FC}, +static const struct MenuAction sMenuActions_UseGiveExit[] = { + {gOtherText_Use, TMHMContextMenuAction_Use }, + {gOtherText_Give, TMHMContextMenuAction_Give}, + {gOtherText_Exit, TMHMContextMenuAction_Exit}, }; -static const u8 gUnknown_8463168[] = {0, 1, 2}; -static const u8 gUnknown_846316B[] = {1, 2, 0}; -static const TaskFunc gUnknown_8463170[] = {sub_8132CAC, sub_8132A48}; +static const u8 sMenuActionIndices_Field[] = {0, 1, 2}; +static const u8 sMenuActionIndices_UnionRoom[] = {1, 2}; +static const struct YesNoFuncTable sYesNoFuncTable = {Task_PrintSaleConfirmedText, Task_SaleOfTMsCancelled}; -static const u8 gUnknown_8463178[] = _("{CLEAR_TO 18}"); -static const u8 gUnknown_846317C[] = _(" "); +static const u8 sText_ClearTo18[] = _("{CLEAR_TO 18}"); +static const u8 sText_SingleSpace[] = _(" "); -static ALIGNED(4) const u16 gUnknown_8463180[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; +static ALIGNED(4) const u16 sPal3Override[] = {RGB(8, 8, 8), RGB(30, 16, 6)}; -static const struct TextColor gUnknown_8463184[] = { +static const struct TextColor sTextColors[] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 6}, {0, 14, 10} }; -static const struct WindowTemplate gUnknown_8463190[] = { +static const struct WindowTemplate sWindowTemplates[] = { {0x00, 0x0a, 0x01, 0x13, 0x0a, 0x0f, 0x0081}, {0x00, 0x0c, 0x0c, 0x12, 0x08, 0x0a, 0x013f}, {0x01, 0x05, 0x0f, 0x0f, 0x04, 0x0d, 0x01f9}, @@ -203,88 +205,87 @@ static const struct WindowTemplate gUnknown_8463190[] = { DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_84631E0 = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; +static const struct WindowTemplate sYesNoWindowTemplate = {0x01, 0x15, 0x09, 0x06, 0x04, 0x0f, 0x0335}; -static const struct WindowTemplate gUnknown_84631E8[] = { +static const struct WindowTemplate sTMContextWindowTemplates[] = { {0x01, 0x16, 0x0d, 0x07, 0x06, 0x0f, 0x01cf}, {0x01, 0x16, 0x0f, 0x07, 0x04, 0x0f, 0x01cf} }; -static const struct OamData gOamData_84631F8 = { +static const struct OamData sTMSpriteOamData = { .size = 2, .priority = 2 }; -static const union AnimCmd gUnknown_8463200[] = { +static const union AnimCmd sTMSpriteAnim0[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -static const union AnimCmd gUnknown_8463208[] = { +static const union AnimCmd sTMSpriteAnim1[] = { ANIMCMD_FRAME(16, 0), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_8463210[] = { - gUnknown_8463200, - gUnknown_8463208 +static const union AnimCmd *const sTMSpriteAnims[] = { + sTMSpriteAnim0, + sTMSpriteAnim1 }; -static const struct CompressedSpriteSheet gUnknown_8463218 = { - (const void *)gUnknown_8E84D90, +static const struct CompressedSpriteSheet sTMSpriteSheet = { + (const void *)gTMCase_TMSpriteGfx, 0x400, - 400 + TM_CASE_TM_TAG }; -static const struct SpriteTemplate gUnknown_8463220 = { - 400, - 400, - &gOamData_84631F8, - gUnknown_8463210, +static const struct SpriteTemplate sTMSpriteTemplate = { + TM_CASE_TM_TAG, + TM_CASE_TM_TAG, + &sTMSpriteOamData, + sTMSpriteAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const u16 gUnknown_8463238[] = { - 0x000, - 0x090, - 0x080, - 0x0c0, - 0x060, - 0x050, - 0x0b0, - 0x0a0, - 0x0e0, - 0x000, - 0x010, - 0x020, - 0x030, - 0x040, - 0x0d0, - 0x070, - 0x100, - 0x0f0 +static const u16 sTMSpritePaletteOffsetByType[] = { + [TYPE_NORMAL] = 0x000, + [TYPE_FIRE] = 0x010, + [TYPE_WATER] = 0x020, + [TYPE_GRASS] = 0x030, + [TYPE_ELECTRIC] = 0x040, + [TYPE_ROCK] = 0x050, + [TYPE_GROUND] = 0x060, + [TYPE_ICE] = 0x070, + [TYPE_FLYING] = 0x080, + [TYPE_FIGHTING] = 0x090, + [TYPE_GHOST] = 0x0a0, + [TYPE_BUG] = 0x0b0, + [TYPE_POISON] = 0x0c0, + [TYPE_PSYCHIC] = 0x0d0, + [TYPE_STEEL] = 0x0e0, + [TYPE_DARK] = 0x0f0, + [TYPE_DRAGON] = 0x100 }; -void InitTMCase(u8 a0, void (* a1)(void), u8 a2) -{ - sub_8131A8C(); - gUnknown_203B118 = Alloc(sizeof(struct UnkStruct_203B118)); - gUnknown_203B118->unk_00 = 0; - gUnknown_203B118->unk_08 = 0xFF; - gUnknown_203B118->unk_07 = 0xFF; - if (a0 != 5) - gUnknown_203B10C.unk_04 = a0; - if (a1 != NULL) - gUnknown_203B10C.unk_00 = a1; +void InitTMCase(u8 type, void (* callback)(void), u8 a2) +{ + ResetBufferPointers_NoFree(); + sTMCaseDynamicResources = Alloc(sizeof(struct UnkStruct_203B118)); + sTMCaseDynamicResources->savedCallback = 0; + sTMCaseDynamicResources->scrollIndicatorArrowPairId = 0xFF; + sTMCaseDynamicResources->contextMenuWindowId = 0xFF; + if (type != 5) + sTMCaseStaticResources.tmCaseMenuType = type; + if (callback != NULL) + sTMCaseStaticResources.savedCallback = callback; if (a2 != 0xFF) - gUnknown_203B10C.unk_05 = a2; + sTMCaseStaticResources.unk_05 = a2; gTextFlags.flag_2 = FALSE; - SetMainCallback2(sub_8131894); + SetMainCallback2(CB2_SetUpTMCaseUI_Blocking); } -static void sub_8131864(void) +static void CB2_Idle(void) { RunTasks(); AnimateSprites(); @@ -293,27 +294,27 @@ static void sub_8131864(void) UpdatePaletteFade(); } -static void sub_8131880(void) +static void VBlankCB_Idle(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_8131894(void) +static void CB2_SetUpTMCaseUI_Blocking(void) { while (1) { if (sub_80BF72C() == TRUE) break; - if (sub_81318C0() == TRUE) + if (DoSetUpTMCaseUI() == TRUE) break; if (sub_80BF708() == TRUE) break; } } -static bool8 sub_81318C0(void) +static bool8 DoSetUpTMCaseUI(void) { u8 taskId; @@ -345,16 +346,16 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 6: - sub_8131AB8(); - gUnknown_203B118->unk_12 = 0; + LoadBGTemplates(); + sTMCaseDynamicResources->seqId = 0; gMain.state++; break; case 7: - sub_8133244(); + InitWindowTemplatesAndPals(); gMain.state++; break; case 8: - if (sub_8131B20()) + if (HandleLoadTMCaseGraphicsAndPalettes()) gMain.state++; break; case 9: @@ -368,24 +369,24 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 11: - sub_8133404(); + DrawMoveInfoUIMarkers(); gMain.state++; break; case 12: - sub_8131C10(); - sub_8131C50(); + CreateTMCaseListMenuBuffers(); + InitTMCaseListMenuItems(); gMain.state++; break; case 13: - sub_81333C4(); + PrintStringTMCaseOnWindow3(); gMain.state++; break; case 14: - if (gUnknown_203B10C.unk_04 == 4) - taskId = CreateTask(sub_8132F20, 0); + if (sTMCaseStaticResources.tmCaseMenuType == 4) + taskId = CreateTask(Task_TMCaseDude1, 0); else - taskId = CreateTask(sub_81322D4, 0); - gTasks[taskId].data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); + taskId = CreateTask(Task_TMCaseMain, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); gMain.state++; break; case 15: @@ -393,7 +394,7 @@ static bool8 sub_81318C0(void) gMain.state++; break; case 16: - gUnknown_203B118->unk_04 = sub_813368C(sub_809A798(POCKET_TM_CASE, gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08)); + sTMCaseDynamicResources->tmSpriteId = CreateTMSprite(BagGetItemIdByPocketPosition(POCKET_TM_CASE, sTMCaseStaticResources.scrollOffset + sTMCaseStaticResources.selectedRow)); gMain.state++; break; case 17: @@ -405,31 +406,31 @@ static bool8 sub_81318C0(void) gMain.state++; break; default: - SetVBlankCallback(sub_8131880); - SetMainCallback2(sub_8131864); + SetVBlankCallback(VBlankCB_Idle); + SetMainCallback2(CB2_Idle); return TRUE; } return FALSE; } -static void sub_8131A8C(void) +static void ResetBufferPointers_NoFree(void) { - gUnknown_203B118 = NULL; - gUnknown_203B120 = NULL; - gUnknown_203B124 = NULL; - gUnknown_203B128 = NULL; - gUnknown_203B12C = NULL; + sTMCaseDynamicResources = NULL; + sTilemapBuffer = NULL; + sListMenuItemsBuffer = NULL; + sListMenuStringsBuffer = NULL; + sTMSpritePaletteBuffer = NULL; } -static void sub_8131AB8(void) +static void LoadBGTemplates(void) { void ** ptr; sub_80BF7C8(); - ptr = &gUnknown_203B120; + ptr = &sTilemapBuffer; *ptr = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_8463134, NELEMS(gUnknown_8463134)); + InitBgsFromTemplates(0, sBGTemplates, NELEMS(sBGTemplates)); SetBgTilemapBuffer(2, *ptr); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -440,170 +441,170 @@ static void sub_8131AB8(void) ShowBg(2); } -static bool8 sub_8131B20(void) +static bool8 HandleLoadTMCaseGraphicsAndPalettes(void) { - switch (gUnknown_203B118->unk_12) + switch (sTMCaseDynamicResources->seqId) { case 0: reset_temp_tile_data_buffers(); decompress_and_copy_tile_data_to_vram(1, gUnknown_8E845D8, 0, 0, 0); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != TRUE) { - LZDecompressWram(gUnknown_8E84A24, gUnknown_203B120); - gUnknown_203B118->unk_12++; + LZDecompressWram(gUnknown_8E84A24, sTilemapBuffer); + sTMCaseDynamicResources->seqId++; } break; case 2: LZDecompressWram(gUnknown_8E84B70, GetBgTilemapBuffer(1)); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 3: if (gSaveBlock2Ptr->playerGender == MALE) LoadCompressedPalette(gUnknown_8E84CB0, 0, 0x80); else LoadCompressedPalette(gUnknown_8E84D20, 0, 0x80); - gUnknown_203B118->unk_12++; + sTMCaseDynamicResources->seqId++; break; case 4: - LoadCompressedObjectPic(&gUnknown_8463218); - gUnknown_203B118->unk_12++; + LoadCompressedObjectPic(&sTMSpriteSheet); + sTMCaseDynamicResources->seqId++; break; default: - sub_81338A8(); - gUnknown_203B118->unk_12 = 0; + LoadTMTypePalettes(); + sTMCaseDynamicResources->seqId = 0; return TRUE; } return FALSE; } -static void sub_8131C10(void) +static void CreateTMCaseListMenuBuffers(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; - gUnknown_203B124 = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); - gUnknown_203B128 = Alloc(gUnknown_203B118->unk_06 * 29); + sListMenuItemsBuffer = Alloc((pocket->capacity + 1) * sizeof(struct ListMenuItem)); + sListMenuStringsBuffer = Alloc(sTMCaseDynamicResources->numTMs * 29); } -static void sub_8131C50(void) +static void InitTMCaseListMenuItems(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; - for (i = 0; i < gUnknown_203B118->unk_06; i++) + for (i = 0; i < sTMCaseDynamicResources->numTMs; i++) { - GetTMNumberAndMoveString(gUnknown_203B128[i], pocket->itemSlots[i].itemId); - gUnknown_203B124[i].unk_00 = gUnknown_203B128[i]; - gUnknown_203B124[i].unk_04 = i; + GetTMNumberAndMoveString(sListMenuStringsBuffer[i], pocket->itemSlots[i].itemId); + sListMenuItemsBuffer[i].unk_00 = sListMenuStringsBuffer[i]; + sListMenuItemsBuffer[i].unk_04 = i; } - gUnknown_203B124[i].unk_00 = gUnknown_84166DB; - gUnknown_203B124[i].unk_04 = -2; - gUnknown_3005E70.items = gUnknown_203B124; - gUnknown_3005E70.totalItems = gUnknown_203B118->unk_06 + 1; - gUnknown_3005E70.windowId = 0; - gUnknown_3005E70.header_X = 0; - gUnknown_3005E70.item_X = 8; - gUnknown_3005E70.cursor_X = 0; - gUnknown_3005E70.lettersSpacing = 0; - gUnknown_3005E70.itemVerticalPadding = 2; - gUnknown_3005E70.upText_Y = 2; - gUnknown_3005E70.maxShowed = gUnknown_203B118->unk_05; - gUnknown_3005E70.fontId = 2; - gUnknown_3005E70.cursorPal = 2; - gUnknown_3005E70.fillValue = 0; - gUnknown_3005E70.cursorShadowPal = 3; - gUnknown_3005E70.moveCursorFunc = sub_8131E18; - gUnknown_3005E70.itemPrintFunc = sub_8131E68; - gUnknown_3005E70.cursorKind = 0; - gUnknown_3005E70.scrollMultiple = 0; + sListMenuItemsBuffer[i].unk_00 = gText_Close; + sListMenuItemsBuffer[i].unk_04 = -2; + gMultiuseListMenuTemplate.items = sListMenuItemsBuffer; + gMultiuseListMenuTemplate.totalItems = sTMCaseDynamicResources->numTMs + 1; + gMultiuseListMenuTemplate.windowId = 0; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 8; + gMultiuseListMenuTemplate.cursor_X = 0; + gMultiuseListMenuTemplate.lettersSpacing = 0; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.maxShowed = sTMCaseDynamicResources->maxTMsShown; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 0; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = TMCase_MoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = TMCase_ItemPrintFunc; + gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.scrollMultiple = 0; } static void GetTMNumberAndMoveString(u8 * dest, u16 itemId) { - StringCopy(gStringVar4, gUnknown_84166FF); + StringCopy(gStringVar4, gText_FontSize0); if (itemId >= ITEM_HM01) { - StringAppend(gStringVar4, gUnknown_8463178); - StringAppend(gStringVar4, gUnknown_8416226); + StringAppend(gStringVar4, sText_ClearTo18); + StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_HM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 1); StringAppend(gStringVar4, gStringVar1); } else { - StringAppend(gStringVar4, gUnknown_8416226); + StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - ITEM_TM01 + 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringAppend(gStringVar4, gStringVar1); } - StringAppend(gStringVar4, gUnknown_846317C); - StringAppend(gStringVar4, gUnknown_8416703); + StringAppend(gStringVar4, sText_SingleSpace); + StringAppend(gStringVar4, gText_FontSize2); StringAppend(gStringVar4, gMoveNames[ItemIdToBattleMoveId(itemId)]); StringCopy(dest, gStringVar4); } -static void sub_8131E18(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 itemId; if (itemIndex == -2) itemId = 0; else - itemId = sub_809A798(POCKET_TM_CASE, itemIndex); + itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemIndex); if (onInit != TRUE) { PlaySE(SE_SELECT); - sub_81337E4(gUnknown_203B118->unk_04, itemId); + InitSelectedTMSpriteData(sTMCaseDynamicResources->tmSpriteId, itemId); } - sub_8131F0C(itemIndex); - sub_8133444(itemId); + TMCase_MoveCursor_UpdatePrintedDescription(itemIndex); + TMCase_MoveCursor_UpdatePrintedTMInfo(itemId); } -static void sub_8131E68(u8 windowId, s32 itemId, u8 y) +static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y) { if (itemId != -2) { - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, itemId))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemId))) { - ConvertIntToDecimalStringN(gStringVar1, sub_809A7B4(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); + ConvertIntToDecimalStringN(gStringVar1, BagGetQuantityByPocketPosition(POCKET_TM_CASE, itemId), STR_CONV_MODE_RIGHT_ALIGN, 3); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(windowId, 0, gStringVar4, 0x7E, y, 0, 0, 0xFF, 1); } else { - sub_81335B0(windowId, 8, y); + PlaceHMTileInWindow(windowId, 8, y); } } } -static void sub_8131F0C(s32 itemIndex) +static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex) { const u8 * str; if (itemIndex != -2) { - str = ItemId_GetDescription(sub_809A798(POCKET_TM_CASE, itemIndex)); + str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_TM_CASE, itemIndex)); } else { - str = gUnknown_84166E1; + str = gText_TMCaseWillBePutAway; } FillWindowPixelBuffer(1, 0); - sub_81332EC(1, 2, str, 2, 3, 1, 0, 0, 0); + AddTextPrinterParameterized_ColorByIndex(1, 2, str, 2, 3, 1, 0, 0, 0); } -static void sub_8131F64(s32 a0) +static void FillBG2RowWithPalette_2timesNplus1(s32 a0) { sub_80F6B08(2, 0, 12, 30, 8, 2 * a0 + 1); schedule_bg_copy_tilemap_to_vram(2); } -static void sub_8131F90(u8 a0, u8 a1) +static void PrintListMenuCursorByID_WithColorIdx(u8 a0, u8 a1) { - sub_8131FB0(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); + PrintListMenuCursorAt_WithColorIdx(ListMenuGetYCoordForPrintingArrowCursor(a0), a1); } -static void sub_8131FB0(u8 a0, u8 a1) +static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) { if (a1 == 0xFF) { @@ -612,34 +613,34 @@ static void sub_8131FB0(u8 a0, u8 a1) } else { - sub_81332EC(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); + AddTextPrinterParameterized_ColorByIndex(0, 2, gFameCheckerText_ListMenuCursor, 0, a0, 0, 0, 0, a1); } } static void sub_8132018(void) { - gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, gUnknown_203B118->unk_06 - gUnknown_203B118->unk_05 + 1, 0x6E, 0x6E, &gUnknown_203B10C.unk_0a); + sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset); } static void sub_8132054(void) { - gUnknown_203B118->unk_0a = 1; - gUnknown_203B118->unk_08 = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &gUnknown_203B118->unk_0a); + sTMCaseDynamicResources->currItem = 1; + sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem); } -static void sub_813208C(void) +static void RemoveTMCaseScrollIndicatorArrowPair(void) { - if (gUnknown_203B118->unk_08 != 0xFF) + if (sTMCaseDynamicResources->scrollIndicatorArrowPairId != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_203B118->unk_08); - gUnknown_203B118->unk_08 = 0xFF; + RemoveScrollIndicatorArrowPair(sTMCaseDynamicResources->scrollIndicatorArrowPairId); + sTMCaseDynamicResources->scrollIndicatorArrowPairId = 0xFF; } } void ResetTMCaseCursorPos(void) { - gUnknown_203B10C.unk_08 = 0; - gUnknown_203B10C.unk_0a = 0; + sTMCaseStaticResources.selectedRow = 0; + sTMCaseStaticResources.scrollOffset = 0; } static void sub_81320BC(void) @@ -648,85 +649,85 @@ static void sub_81320BC(void) u16 i; sub_809A584(pocket->itemSlots, pocket->capacity); - gUnknown_203B118->unk_06 = 0; + sTMCaseDynamicResources->numTMs = 0; for (i = 0; i < pocket->capacity; i++) { if (pocket->itemSlots[i].itemId == ITEM_NONE) break; - gUnknown_203B118->unk_06++; + sTMCaseDynamicResources->numTMs++; } - gUnknown_203B118->unk_05 = min(gUnknown_203B118->unk_06 + 1, 5); + sTMCaseDynamicResources->maxTMsShown = min(sTMCaseDynamicResources->numTMs + 1, 5); } static void sub_8132120(void) { - if (gUnknown_203B10C.unk_0a != 0) + if (sTMCaseStaticResources.scrollOffset != 0) { - if (gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 > gUnknown_203B118->unk_06 + 1) - gUnknown_203B10C.unk_0a = gUnknown_203B118->unk_06 + 1 - gUnknown_203B118->unk_05; + if (sTMCaseStaticResources.scrollOffset + sTMCaseDynamicResources->maxTMsShown > sTMCaseDynamicResources->numTMs + 1) + sTMCaseStaticResources.scrollOffset = sTMCaseDynamicResources->numTMs + 1 - sTMCaseDynamicResources->maxTMsShown; } - if (gUnknown_203B10C.unk_0a + gUnknown_203B10C.unk_08 >= gUnknown_203B118->unk_06 + 1) + if (sTMCaseStaticResources.scrollOffset + sTMCaseStaticResources.selectedRow >= sTMCaseDynamicResources->numTMs + 1) { - if (gUnknown_203B118->unk_06 + 1 < 2) - gUnknown_203B10C.unk_08 = 0; + if (sTMCaseDynamicResources->numTMs + 1 < 2) + sTMCaseStaticResources.selectedRow = 0; else - gUnknown_203B10C.unk_08 = gUnknown_203B118->unk_06; + sTMCaseStaticResources.selectedRow = sTMCaseDynamicResources->numTMs; } } static void sub_8132170(void) { u8 i; - if (gUnknown_203B10C.unk_08 > 3) + if (sTMCaseStaticResources.selectedRow > 3) { - for (i = 0; i <= gUnknown_203B10C.unk_08 - 3 && gUnknown_203B10C.unk_0a + gUnknown_203B118->unk_05 != gUnknown_203B118->unk_06 + 1; i++) + for (i = 0; i <= sTMCaseStaticResources.selectedRow - 3 && sTMCaseStaticResources.scrollOffset + sTMCaseDynamicResources->maxTMsShown != sTMCaseDynamicResources->numTMs + 1; i++) { do {} while (0); - gUnknown_203B10C.unk_08--; - gUnknown_203B10C.unk_0a++; + sTMCaseStaticResources.selectedRow--; + sTMCaseStaticResources.scrollOffset++; } } } -static void sub_81321D4(void) +static void DestroyTMCaseBuffers(void) { - if (gUnknown_203B118 != NULL) - Free(gUnknown_203B118); - if (gUnknown_203B120 != NULL) - Free(gUnknown_203B120); - if (gUnknown_203B124 != NULL) - Free(gUnknown_203B124); - if (gUnknown_203B128 != NULL) - Free(gUnknown_203B128); - if (gUnknown_203B12C != NULL) - Free(gUnknown_203B12C); + if (sTMCaseDynamicResources != NULL) + Free(sTMCaseDynamicResources); + if (sTilemapBuffer != NULL) + Free(sTilemapBuffer); + if (sListMenuItemsBuffer != NULL) + Free(sListMenuItemsBuffer); + if (sListMenuStringsBuffer != NULL) + Free(sListMenuStringsBuffer); + if (sTMSpritePaletteBuffer != NULL) + Free(sTMSpritePaletteBuffer); FreeAllWindowBuffers(); } -static void sub_8132230(u8 taskId) +static void Task_BeginFadeOutFromTMCase(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_813226C; + gTasks[taskId].func = Task_FadeOutAndCloseTMCase; } -static void sub_813226C(u8 taskId) +static void Task_FadeOutAndCloseTMCase(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) { - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - if (gUnknown_203B118->unk_00 != NULL) - SetMainCallback2(gUnknown_203B118->unk_00); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + if (sTMCaseDynamicResources->savedCallback != NULL) + SetMainCallback2(sTMCaseDynamicResources->savedCallback); else - SetMainCallback2(gUnknown_203B10C.unk_00); - sub_813208C(); - sub_81321D4(); + SetMainCallback2(sTMCaseStaticResources.savedCallback); + RemoveTMCaseScrollIndicatorArrowPair(); + DestroyTMCaseBuffers(); DestroyTask(taskId); } } -static void sub_81322D4(u8 taskId) +static void Task_TMCaseMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 input; @@ -736,12 +737,12 @@ static void sub_81322D4(u8 taskId) if (sub_80BF72C() != TRUE) { input = ListMenuHandleInput(data[0]); - get_coro_args_x18_x1A(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - if (JOY_NEW(SELECT_BUTTON) && gUnknown_203B10C.unk_05 == 1) + get_coro_args_x18_x1A(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1) { PlaySE(SE_SELECT); gSpecialVar_ItemId = ITEM_NONE; - sub_8132230(taskId); + Task_BeginFadeOutFromTMCase(taskId); } else { @@ -752,17 +753,17 @@ static void sub_81322D4(u8 taskId) case -2: PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; - sub_8132230(taskId); + Task_BeginFadeOutFromTMCase(taskId); break; default: PlaySE(SE_SELECT); - sub_8131F64(1); - sub_813208C(); - sub_8131F90(data[0], 2); + FillBG2RowWithPalette_2timesNplus1(1); + RemoveTMCaseScrollIndicatorArrowPair(); + PrintListMenuCursorByID_WithColorIdx(data[0], 2); data[1] = input; - data[2] = sub_809A7B4(POCKET_TM_CASE, input); - gSpecialVar_ItemId = sub_809A798(POCKET_TM_CASE, input); - gTasks[taskId].func = gUnknown_8463140[gUnknown_203B10C.unk_04]; + data[2] = BagGetQuantityByPocketPosition(POCKET_TM_CASE, input); + gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, input); + gTasks[taskId].func = sSelectTMActionTasks[sTMCaseStaticResources.tmCaseMenuType]; break; } } @@ -770,47 +771,47 @@ static void sub_81322D4(u8 taskId) } } -static void sub_81323E4(u8 taskId) +static void Subtask_ReturnToTMCaseMain(u8 taskId) { - sub_8131F64(0); + FillBG2RowWithPalette_2timesNplus1(0); sub_8132018(); - gTasks[taskId].func = sub_81322D4; + gTasks[taskId].func = Task_TMCaseMain; } -static void SelectTMAction_FromFieldBag(u8 taskId) +static void Task_SelectTMAction_FromFieldBag(u8 taskId) { u8 * strbuf; - sub_8133368(2); + TMCase_SetWindowBorder2(2); if (!sub_80BF708() && InUnionRoom() != TRUE) { - sub_8133630(&gUnknown_203B118->unk_07, 0); - gUnknown_203B118->unk_0c = gUnknown_8463168; - gUnknown_203B118->unk_10 = 3; + AddTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, 0); + sTMCaseDynamicResources->menuActionIndices = sMenuActionIndices_Field; + sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_Field); } else { - sub_8133630(&gUnknown_203B118->unk_07, 1); - gUnknown_203B118->unk_0c = gUnknown_846316B; - gUnknown_203B118->unk_10 = 2; + AddTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId, 1); + sTMCaseDynamicResources->menuActionIndices = sMenuActionIndices_UnionRoom; + sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_UnionRoom); } - AddItemMenuActionTextPrinters(gUnknown_203B118->unk_07, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, gUnknown_8463150, gUnknown_203B118->unk_0c); - ProgramAndPlaceMenuCursorOnWindow(gUnknown_203B118->unk_07, 2, 0, 2, GetFontAttribute(2, 1) + 2, gUnknown_203B118->unk_10, 0); + AddItemMenuActionTextPrinters(sTMCaseDynamicResources->contextMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, sMenuActions_UseGiveExit, sTMCaseDynamicResources->menuActionIndices); + ProgramAndPlaceMenuCursorOnWindow(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0); strbuf = Alloc(256); GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId); - StringAppend(strbuf, gUnknown_8416301); - sub_81332EC(2, 2, strbuf, 0, 2, 1, 0, 0, 1); + StringAppend(strbuf, gText_IsSelected); + AddTextPrinterParameterized_ColorByIndex(2, 2, strbuf, 0, 2, 1, 0, 0, 1); Free(strbuf); if (itemid_is_unique(gSpecialVar_ItemId)) { - sub_81335B0(2, 0, 2); + PlaceHMTileInWindow(2, 0, 2); CopyWindowToVram(2, 2); } schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - gTasks[taskId].func = sub_8132568; + gTasks[taskId].func = Task_TMContextMenu_HandleInput; } -static void sub_8132568(u8 taskId) +static void Task_TMContextMenu_HandleInput(u8 taskId) { s8 input; @@ -821,21 +822,21 @@ static void sub_8132568(u8 taskId) { case -1: PlaySE(SE_SELECT); - gUnknown_8463150[gUnknown_203B118->unk_0c[gUnknown_203B118->unk_10 - 1]].func.void_u8(taskId); + sMenuActions_UseGiveExit[sTMCaseDynamicResources->menuActionIndices[sTMCaseDynamicResources->numMenuActions - 1]].func.void_u8(taskId); break; case -2: break; default: PlaySE(SE_SELECT); - gUnknown_8463150[gUnknown_203B118->unk_0c[input]].func.void_u8(taskId); + sMenuActions_UseGiveExit[sTMCaseDynamicResources->menuActionIndices[input]].func.void_u8(taskId); break; } } } -static void sub_81325F0(u8 taskId) +static void TMHMContextMenuAction_Use(u8 taskId) { - sub_8133664(&gUnknown_203B118->unk_07); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(0); @@ -843,21 +844,21 @@ static void sub_81325F0(u8 taskId) schedule_bg_copy_tilemap_to_vram(1); if (CalculatePlayerPartyCount() == 0) { - sub_81326F8(taskId); + PrintError_ThereIsNoPokemon(taskId); } else { gUnknown_3005E98 = sub_8125B40; - gUnknown_203B118->unk_00 = sub_8124C8C; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_8124C8C; + Task_BeginFadeOutFromTMCase(taskId); } } -static void sub_813265C(u8 taskId) +static void TMHMContextMenuAction_Give(u8 taskId) { s16 * data = gTasks[taskId].data; - u16 itemId = sub_809A798(POCKET_TM_CASE, data[1]); - sub_8133664(&gUnknown_203B118->unk_07); + u16 itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(1); @@ -869,30 +870,30 @@ static void sub_813265C(u8 taskId) { if (CalculatePlayerPartyCount() == 0) { - sub_81326F8(taskId); + PrintError_ThereIsNoPokemon(taskId); } else { - gUnknown_203B118->unk_00 = sub_8126EDC; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_8126EDC; + Task_BeginFadeOutFromTMCase(taskId); } } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } -static void sub_81326F8(u8 taskId) +static void PrintError_ThereIsNoPokemon(u8 taskId) { - sub_813337C(taskId, 2, gUnknown_841632A, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, sub_8132758); } -static void sub_8132714(u8 taskId) +static void PrintError_ItemCantBeHeld(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_841635E); - sub_813337C(taskId, 2, gStringVar4, sub_8132758); + StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, sub_8132758); } static void sub_8132758(u8 taskId) @@ -908,9 +909,9 @@ static void sub_8132780(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); - data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); - sub_8131F90(data[0], 1); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); sub_810F260(6, 0); ClearWindowTilemap(6); PutWindowTilemap(1); @@ -918,38 +919,38 @@ static void sub_8132780(u8 taskId) PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_81323E4(taskId); + Subtask_ReturnToTMCaseMain(taskId); } -static void sub_81327FC(u8 taskId) +static void TMHMContextMenuAction_Exit(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_8133664(&gUnknown_203B118->unk_07); + RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId); sub_810F4D8(2, 0); ClearWindowTilemap(2); PutWindowTilemap(0); - sub_8131F90(data[0], 1); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); PutWindowTilemap(1); PutWindowTilemap(4); PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_81323E4(taskId); + Subtask_ReturnToTMCaseMain(taskId); } static void sub_8132868(u8 taskId) { s16 * data = gTasks[taskId].data; - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - gUnknown_203B118->unk_00 = c2_8123744; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = c2_8123744; + Task_BeginFadeOutFromTMCase(taskId); } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } @@ -957,61 +958,61 @@ static void sub_81328B8(u8 taskId) { s16 * data = gTasks[taskId].data; - if (!itemid_is_unique(sub_809A798(POCKET_TM_CASE, data[1]))) + if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - gUnknown_203B118->unk_00 = sub_808CE60; - sub_8132230(taskId); + sTMCaseDynamicResources->savedCallback = sub_808CE60; + Task_BeginFadeOutFromTMCase(taskId); } else { - sub_8132714(taskId); + PrintError_ItemCantBeHeld(taskId); } } -static void SelectTMAction_FromSellMenu(u8 taskId) +static void Task_SelectTMAction_FromSellMenu(u8 taskId) { s16 * data = gTasks[taskId].data; if (itemid_get_market_price(gSpecialVar_ItemId) == 0) { CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_84168F1); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); } else { data[8] = 1; if (data[2] == 1) { - sub_81335E0(); - sub_81329C4(taskId); + HandlePrintMoneyOnHand(); + Task_AskConfirmSaleWithAmount(taskId); } else { if (data[2] > 99) data[2] = 99; CopyItemName(gSpecialVar_ItemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_8416911); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132AAC); + StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_InitQuantitySelectUI); } } } -static void sub_81329C4(u8 taskId) +static void Task_AskConfirmSaleWithAmount(u8 taskId) { s16 * data = gTasks[taskId].data; - ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gUnknown_8416936); - sub_813337C(taskId, sub_80BF8E4(), gStringVar4, sub_8132A34); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Task_PlaceYesNoBox); } -static void sub_8132A34(u8 taskId) +static void Task_PlaceYesNoBox(u8 taskId) { - sub_8133604(taskId, gUnknown_8463170); + HandleCreateYesNoMenu(taskId, &sYesNoFuncTable); } -static void sub_8132A48(u8 taskId) +static void Task_SaleOfTMsCancelled(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1024,20 +1025,20 @@ static void sub_8132A48(u8 taskId) PutWindowTilemap(5); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_8131F90(data[0], 1); - sub_81323E4(taskId); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); + Subtask_ReturnToTMCaseMain(taskId); } -static void sub_8132AAC(u8 taskId) +static void Task_InitQuantitySelectUI(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_8133354(7); + TMCase_SetWindowBorder1(7); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); - sub_8132B5C(1, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); - sub_81335E0(); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + sub_8132B5C(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + HandlePrintMoneyOnHand(); sub_8132054(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); @@ -1048,8 +1049,8 @@ static void sub_8132B5C(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gUnknown_84162B9); - sub_81332EC(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); + AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } @@ -1059,7 +1060,7 @@ static void sub_8132BC8(u8 taskId) if (sub_80BF848(&data[8], data[2]) == 1) { - sub_8132B5C(data[8], itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8]); + sub_8132B5C(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { @@ -1067,8 +1068,8 @@ static void sub_8132BC8(u8 taskId) sub_810F4D8(7, 0); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_813208C(); - sub_81329C4(taskId); + RemoveTMCaseScrollIndicatorArrowPair(); + Task_AskConfirmSaleWithAmount(taskId); } else if (JOY_NEW(B_BUTTON)) { @@ -1081,25 +1082,25 @@ static void sub_8132BC8(u8 taskId) PutWindowTilemap(1); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - sub_813208C(); - sub_8131F90(data[0], 1); - sub_81323E4(taskId); + RemoveTMCaseScrollIndicatorArrowPair(); + PrintListMenuCursorByID_WithColorIdx(data[0], 1); + Subtask_ReturnToTMCaseMain(taskId); } } -static void sub_8132CAC(u8 taskId) +static void Task_PrintSaleConfirmedText(u8 taskId) { s16 * data = gTasks[taskId].data; PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); CopyItemName(gSpecialVar_ItemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(sub_809A798(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gUnknown_8416959); - sub_813337C(taskId, 2, gStringVar4, sub_8132D34); + ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); + StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, Task_DoSaleOfTMs); } -static void sub_8132D34(u8 taskId) +static void Task_DoSaleOfTMs(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1107,17 +1108,17 @@ static void sub_8132D34(u8 taskId) RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); - sub_810713C(data[0], &gUnknown_203B10C.unk_0a, &gUnknown_203B10C.unk_08); + DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); sub_81320BC(); sub_8132120(); - sub_8131C50(); - data[0] = ListMenuInit(&gUnknown_3005E70, gUnknown_203B10C.unk_0a, gUnknown_203B10C.unk_08); - sub_8131F90(data[0], 2); + InitTMCaseListMenuItems(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); + PrintListMenuCursorByID_WithColorIdx(data[0], 2); PrintMoneyAmountInMoneyBox(8, GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_8132E0C; + gTasks[taskId].func = Task_AfterSale_ReturnToList; } -static void sub_8132E0C(u8 taskId) +static void Task_AfterSale_ReturnToList(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { @@ -1134,11 +1135,11 @@ static void sub_8132E0C(u8 taskId) void PokeDude_InitTMCase(void) { - gUnknown_203B11C = AllocZeroed(sizeof(*gUnknown_203B11C)); - memcpy(gUnknown_203B11C->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); - memcpy(gUnknown_203B11C->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); - gUnknown_203B11C->unk_160 = gUnknown_203B10C.unk_08; - gUnknown_203B11C->unk_162 = gUnknown_203B10C.unk_0a; + sPokeDudePackBackup = AllocZeroed(sizeof(*sPokeDudePackBackup)); + memcpy(sPokeDudePackBackup->bagPocket_TMHM, gSaveBlock1Ptr->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(sPokeDudePackBackup->bagPocket_KeyItems, gSaveBlock1Ptr->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + sPokeDudePackBackup->unk_160 = sTMCaseStaticResources.selectedRow; + sPokeDudePackBackup->unk_162 = sTMCaseStaticResources.scrollOffset; ClearItemSlots(gSaveBlock1Ptr->bagPocket_TMHM, NELEMS(gSaveBlock1Ptr->bagPocket_TMHM)); ClearItemSlots(gSaveBlock1Ptr->bagPocket_KeyItems, NELEMS(gSaveBlock1Ptr->bagPocket_KeyItems)); ResetTMCaseCursorPos(); @@ -1146,10 +1147,10 @@ void PokeDude_InitTMCase(void) AddBagItem(ITEM_TM03, 1); AddBagItem(ITEM_TM09, 1); AddBagItem(ITEM_TM35, 1); - InitTMCase(4, sub_815ABFC, 0); + InitTMCase(4, CB2_ReturnToTeachyTV, 0); } -static void sub_8132F20(u8 taskId) +static void Task_TMCaseDude1(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1157,11 +1158,11 @@ static void sub_8132F20(u8 taskId) { data[8] = 0; data[9] = 0; - gTasks[taskId].func = sub_8132F60; + gTasks[taskId].func = Task_TMCaseDude_Playback; } } -static void sub_8132F60(u8 taskId) +static void Task_TMCaseDude_Playback(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1178,7 +1179,7 @@ static void sub_8132F60(u8 taskId) { case 0: BeginNormalPaletteFade(0xFFFF8405, 4, 0, 6, 0); - sub_8131F64(1); + FillBG2RowWithPalette_2timesNplus1(1); data[8]++; break; case 1: @@ -1232,9 +1233,9 @@ static void sub_8132F60(u8 taskId) } break; case 8: - sub_8131F64(1); - sub_813337C(taskId, 4, gUnknown_841C587, 0); - gTasks[taskId].func = sub_8132F60; + FillBG2RowWithPalette_2timesNplus1(1); + TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_TMTypes, 0); + gTasks[taskId].func = Task_TMCaseDude_Playback; data[8]++; break; case 9: @@ -1246,7 +1247,7 @@ static void sub_8132F60(u8 taskId) case 10: if (JOY_NEW(A_BUTTON | B_BUTTON)) { - sub_8131F64(0); + FillBG2RowWithPalette_2timesNplus1(0); BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0); sub_810F260(6, 0); schedule_bg_copy_tilemap_to_vram(1); @@ -1254,9 +1255,9 @@ static void sub_8132F60(u8 taskId) } break; case 18: - sub_8131F64(1); - sub_813337C(taskId, 4, gUnknown_841C693, 0); - gTasks[taskId].func = sub_8132F60; + FillBG2RowWithPalette_2timesNplus1(1); + TMCase_PrintMessageWithFollowupTask(taskId, 4, gPokeDudeText_ReadTMDescription, NULL); + gTasks[taskId].func = Task_TMCaseDude_Playback; // this function data[8]++; break; case 20: @@ -1266,12 +1267,12 @@ static void sub_8132F60(u8 taskId) case 21: if (!gPaletteFade.active) { - memcpy(gSaveBlock1Ptr->bagPocket_TMHM, gUnknown_203B11C->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); - memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, gUnknown_203B11C->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); - sub_810713C(data[0], NULL, NULL); - gUnknown_203B10C.unk_08 = gUnknown_203B11C->unk_160; - gUnknown_203B10C.unk_0a = gUnknown_203B11C->unk_162; - Free(gUnknown_203B11C); + memcpy(gSaveBlock1Ptr->bagPocket_TMHM, sPokeDudePackBackup->bagPocket_TMHM, sizeof(gSaveBlock1Ptr->bagPocket_TMHM)); + memcpy(gSaveBlock1Ptr->bagPocket_KeyItems, sPokeDudePackBackup->bagPocket_KeyItems, sizeof(gSaveBlock1Ptr->bagPocket_KeyItems)); + DestroyListMenu(data[0], NULL, NULL); + sTMCaseStaticResources.selectedRow = sPokeDudePackBackup->unk_160; + sTMCaseStaticResources.scrollOffset = sPokeDudePackBackup->unk_162; + Free(sPokeDudePackBackup); CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); sub_8108CF0(); BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); @@ -1281,28 +1282,28 @@ static void sub_8132F60(u8 taskId) default: if (!gPaletteFade.active) { - SetMainCallback2(gUnknown_203B10C.unk_00); - sub_813208C(); - sub_81321D4(); + SetMainCallback2(sTMCaseStaticResources.savedCallback); + RemoveTMCaseScrollIndicatorArrowPair(); + DestroyTMCaseBuffers(); DestroyTask(taskId); } break; } } -static void sub_8133244(void) +static void InitWindowTemplatesAndPals(void) { u8 i; - InitWindows(gUnknown_8463190); + InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); sub_815001C(0, 0x5B, 0xE0); sub_814FEAC(0, 0x64, 0xB0); sub_814FF2C(0, 0x78, 0xD0); - LoadPalette(gUnknown_841F408, 0xF0, 0x20); - LoadPalette(gUnknown_841F408, 0xA0, 0x20); - LoadPalette(gUnknown_8463180, 0xF6, 0x04); - LoadPalette(gUnknown_8463180, 0xD6, 0x04); + LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20); + LoadPalette(gTMCaseMainWindowPalette, 0xA0, 0x20); + LoadPalette(sPal3Override, 0xF6, 0x04); + LoadPalette(sPal3Override, 0xD6, 0x04); sub_8107D38(0xc0, 0x01); for (i = 0; i < 9; i++) FillWindowPixelBuffer(i, 0x00); @@ -1314,43 +1315,43 @@ static void sub_8133244(void) schedule_bg_copy_tilemap_to_vram(0); } -static void sub_81332EC(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { - AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8463184[colorIdx], speed, str); + AddTextPrinterParametrized2(windowId, fontId, x, y, letterSpacing, lineSpacing, &sTextColors[colorIdx], speed, str); } -static void sub_8133354(u8 windowId) +static void TMCase_SetWindowBorder1(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E); } -static void sub_8133368(u8 windowId) +static void TMCase_SetWindowBorder2(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D); } -static void sub_813337C(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) +static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func) { DisplayMessageAndContinueTask(taskId, 6, 0x64, 0x0B, windowId, GetTextSpeedSetting(), str, func); schedule_bg_copy_tilemap_to_vram(1); } -static void sub_81333C4(void) +static void PrintStringTMCaseOnWindow3(void) { - u32 distance = 72 - GetStringWidth(1, gUnknown_84166D3, 0); - box_print(3, 1, distance / 2, 1, &gUnknown_8463184[0], 0, gUnknown_84166D3); + u32 distance = 72 - GetStringWidth(1, gText_TMCase, 0); + box_print(3, 1, distance / 2, 1, &sTextColors[0], 0, gText_TMCase); } -static void sub_8133404(void) +static void DrawMoveInfoUIMarkers(void) { - sub_8107D68(4, 19, 0, 0); - sub_8107D68(4, 20, 0, 12); - sub_8107D68(4, 21, 0, 24); - sub_8107D68(4, 22, 0, 36); + blit_move_info_icon(4, 19, 0, 0); + blit_move_info_icon(4, 20, 0, 12); + blit_move_info_icon(4, 21, 0, 24); + blit_move_info_icon(4, 22, 0, 36); CopyWindowToVram(4, 2); } -static void sub_8133444(u16 itemId) +static void TMCase_MoveCursor_UpdatePrintedTMInfo(u16 itemId) { u8 i; u16 move; @@ -1361,63 +1362,63 @@ static void sub_8133444(u16 itemId) { for (i = 0; i < 4; i++) { - sub_81332EC(5, 3, gUnknown_8416213, 7, 12 * i, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, gText_ThreeHyphens, 7, 12 * i, 0, 0, 0xFF, 3); } CopyWindowToVram(5, 2); } else { move = ItemIdToBattleMoveId(itemId); - sub_8107D68(5, gBattleMoves[move].type + 1, 0, 0); + blit_move_info_icon(5, gBattleMoves[move].type + 1, 0, 0); if (gBattleMoves[move].power < 2) - str = gUnknown_8416213; + str = gText_ThreeHyphens; else { ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3); str = gStringVar1; } - sub_81332EC(5, 3, str, 7, 12, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, str, 7, 12, 0, 0, 0xFF, 3); if (gBattleMoves[move].accuracy == 0) - str = gUnknown_8416213; + str = gText_ThreeHyphens; else { ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3); str = gStringVar1; } - sub_81332EC(5, 3, str, 7, 24, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, str, 7, 24, 0, 0, 0xFF, 3); ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_81332EC(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); + AddTextPrinterParameterized_ColorByIndex(5, 3, gStringVar1, 7, 36, 0, 0, 0xFF, 3); CopyWindowToVram(5, 2); } } -static void sub_81335B0(u8 windowId, u8 x, u8 y) +static void PlaceHMTileInWindow(u8 windowId, u8 x, u8 y) { BlitBitmapToWindow(windowId, gUnknown_8E99118, x, y, 16, 12); } -static void sub_81335E0(void) +static void HandlePrintMoneyOnHand(void) { PrintMoneyAmountInMoneyBoxWithBorder(8, 0x78, 0xD, GetMoney(&gSaveBlock1Ptr->money)); } -static void sub_8133604(u8 taskId, const TaskFunc *ptrs) +static void HandleCreateYesNoMenu(u8 taskId, const struct YesNoFuncTable *ptrs) { - sub_80BF5D0(taskId, &gUnknown_84631E0, 2, 0, 2, 0x5B, 0x0E, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sYesNoWindowTemplate, 2, 0, 2, 0x5B, 0x0E, ptrs); } -static u8 sub_8133630(u8 * a0, u8 a1) +static u8 AddTMContextMenu(u8 * a0, u8 a1) { if (*a0 == 0xFF) { - *a0 = AddWindow(&gUnknown_84631E8[a1]); - sub_8133354(*a0); + *a0 = AddWindow(&sTMContextWindowTemplates[a1]); + TMCase_SetWindowBorder1(*a0); schedule_bg_copy_tilemap_to_vram(0); } return *a0; } -static void sub_8133664(u8 * a0) +static void RemoveTMContextMenu(u8 * a0) { sub_810F4D8(*a0, FALSE); ClearWindowTilemap(*a0); @@ -1426,26 +1427,26 @@ static void sub_8133664(u8 * a0) *a0 = 0xFF; } -static u8 sub_813368C(u16 itemId) +static u8 CreateTMSprite(u16 itemId) { - u8 spriteId = CreateSprite(&gUnknown_8463220, 0x29, 0x2E, 0); + u8 spriteId = CreateSprite(&sTMSpriteTemplate, 0x29, 0x2E, 0); u8 r5; if (itemId == ITEM_NONE) { - sub_8133790(&gSprites[spriteId], 0xFF); + UpdateTMSpritePosition(&gSprites[spriteId], 0xFF); return spriteId; } else { r5 = itemId - 33; - sub_8133714(&gSprites[spriteId], r5); - sub_8133730(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); - sub_8133790(&gSprites[spriteId], r5); + SetTMSpriteAnim(&gSprites[spriteId], r5); + TintTMSpriteByType(gBattleMoves[ItemIdToBattleMoveId(itemId)].type); + UpdateTMSpritePosition(&gSprites[spriteId], r5); return spriteId; } } -static void sub_8133714(struct Sprite * sprite, u8 idx) +static void SetTMSpriteAnim(struct Sprite * sprite, u8 idx) { if (idx >= 50) StartSpriteAnim(sprite, 1); @@ -1453,17 +1454,17 @@ static void sub_8133714(struct Sprite * sprite, u8 idx) StartSpriteAnim(sprite, 0); } -static void sub_8133730(u8 type) +static void TintTMSpriteByType(u8 type) { - u8 palIndex = IndexOfSpritePaletteTag(400) << 4; - LoadPalette(gUnknown_203B12C + gUnknown_8463238[type], 0x100 | palIndex, 0x20); - if (gUnknown_203B10C.unk_04 == 4) + u8 palIndex = IndexOfSpritePaletteTag(TM_CASE_TM_TAG) << 4; + LoadPalette(sTMSpritePaletteBuffer + sTMSpritePaletteOffsetByType[type], 0x100 | palIndex, 0x20); + if (sTMCaseStaticResources.tmCaseMenuType == 4) { BlendPalettes(1 << (0x10 + palIndex), 4, RGB_BLACK); } } -static void sub_8133790(struct Sprite * sprite, u8 var) +static void UpdateTMSpritePosition(struct Sprite * sprite, u8 var) { s32 x, y; if (var == 0xFF) @@ -1485,14 +1486,14 @@ static void sub_8133790(struct Sprite * sprite, u8 var) sprite->pos1.y = y; } -static void sub_81337E4(u8 spriteId, u16 itemId) +static void InitSelectedTMSpriteData(u8 spriteId, u16 itemId) { gSprites[spriteId].data[0] = itemId; gSprites[spriteId].data[1] = 0; - gSprites[spriteId].callback = sub_8133810; + gSprites[spriteId].callback = SpriteCB_MoveTMSpriteInCase; } -static void sub_8133810(struct Sprite * sprite) +static void SpriteCB_MoveTMSpriteInCase(struct Sprite * sprite) { switch (sprite->data[1]) { @@ -1502,10 +1503,10 @@ static void sub_8133810(struct Sprite * sprite) if (sprite->data[0] != ITEM_NONE) { sprite->data[1]++; - sub_8133730(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); + TintTMSpriteByType(gBattleMoves[ItemIdToBattleMoveId(sprite->data[0])].type); sprite->data[0] -= ITEM_TM01; - sub_8133714(sprite, sprite->data[0]); - sub_8133790(sprite, sprite->data[0]); + SetTMSpriteAnim(sprite, sprite->data[0]); + UpdateTMSpritePosition(sprite, sprite->data[0]); } else sprite->callback = SpriteCallbackDummy; @@ -1523,14 +1524,14 @@ static void sub_8133810(struct Sprite * sprite) } } -static void sub_81338A8(void) +static void LoadTMTypePalettes(void) { struct SpritePalette spritePalette; - gUnknown_203B12C = Alloc(0x110 * sizeof(u16)); - LZDecompressWram(gUnknown_8E84F20, gUnknown_203B12C); - LZDecompressWram(gUnknown_8E85068, gUnknown_203B12C + 0x100); - spritePalette.data = gUnknown_203B12C + 0x110; - spritePalette.tag = 400; + sTMSpritePaletteBuffer = Alloc(0x110 * sizeof(u16)); + LZDecompressWram(gUnknown_8E84F20, sTMSpritePaletteBuffer); + LZDecompressWram(gUnknown_8E85068, sTMSpritePaletteBuffer + 0x100); + spritePalette.data = sTMSpritePaletteBuffer + 0x110; + spritePalette.tag = TM_CASE_TM_TAG; LoadSpritePalette(&spritePalette); } -- cgit v1.2.3 From 0f569270391f68ef10a703a9e37f1a4e298a0cee Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Apr 2019 13:26:24 -0400 Subject: tm_case documentation, 3 --- src/tm_case.c | 78 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/tm_case.c b/src/tm_case.c index 607b7fbdd..2fc30da2d 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -85,10 +85,10 @@ static void TMCase_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * static void TMCase_ItemPrintFunc(u8 windowId, s32 itemId, u8 y); static void TMCase_MoveCursor_UpdatePrintedDescription(s32 itemIndex); static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1); -static void sub_8132018(void); -static void sub_81320BC(void); -static void sub_8132120(void); -static void sub_8132170(void); +static void CreateTMCaseScrollIndicatorArrowPair_Main(void); +static void TMCaseSetup_GetTMCount(void); +static void TMCaseSetup_InitListMenuPositions(void); +static void TMCaseSetup_UpdateVisualMenuOffset(void); static void Task_FadeOutAndCloseTMCase(u8 taskId); static void Task_TMCaseMain(u8 taskId); static void Task_SelectTMAction_FromFieldBag(u8 taskId); @@ -97,18 +97,18 @@ static void TMHMContextMenuAction_Use(u8 taskId); static void TMHMContextMenuAction_Give(u8 taskId); static void PrintError_ThereIsNoPokemon(u8 taskId); static void PrintError_ItemCantBeHeld(u8 taskId); -static void sub_8132758(u8 taskId); -static void sub_8132780(u8 taskId); +static void Task_WaitButtonAfterErrorPrint(u8 taskId); +static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId); static void TMHMContextMenuAction_Exit(u8 taskId); -static void sub_8132868(u8 taskId); -static void sub_81328B8(u8 taskId); +static void Task_SelectTMAction_Type1(u8 taskId); +static void Task_SelectTMAction_Type3(u8 taskId); static void Task_SelectTMAction_FromSellMenu(u8 taskId); static void Task_AskConfirmSaleWithAmount(u8 taskId); static void Task_PlaceYesNoBox(u8 taskId); static void Task_SaleOfTMsCancelled(u8 taskId); static void Task_InitQuantitySelectUI(u8 taskId); -static void sub_8132B5C(s16 quantity, s32 value); -static void sub_8132BC8(u8 taskId); +static void SellTM_PrintQuantityAndSalePrice(s16 quantity, s32 value); +static void Task_QuantitySelect_HandleInput(u8 taskId); static void Task_PrintSaleConfirmedText(u8 taskId); static void Task_DoSaleOfTMs(u8 taskId); static void Task_AfterSale_ReturnToList(u8 taskId); @@ -165,9 +165,9 @@ static const struct BgTemplate sBGTemplates[] = { static void (*const sSelectTMActionTasks[])(u8 taskId) = { Task_SelectTMAction_FromFieldBag, - sub_8132868, + Task_SelectTMAction_Type1, Task_SelectTMAction_FromSellMenu, - sub_81328B8 + Task_SelectTMAction_Type3 }; static const struct MenuAction sMenuActions_UseGiveExit[] = { @@ -363,9 +363,9 @@ static bool8 DoSetUpTMCaseUI(void) gMain.state++; break; case 10: - sub_81320BC(); - sub_8132120(); - sub_8132170(); + TMCaseSetup_GetTMCount(); + TMCaseSetup_InitListMenuPositions(); + TMCaseSetup_UpdateVisualMenuOffset(); gMain.state++; break; case 11: @@ -390,7 +390,7 @@ static bool8 DoSetUpTMCaseUI(void) gMain.state++; break; case 15: - sub_8132018(); + CreateTMCaseScrollIndicatorArrowPair_Main(); gMain.state++; break; case 16: @@ -617,12 +617,12 @@ static void PrintListMenuCursorAt_WithColorIdx(u8 a0, u8 a1) } } -static void sub_8132018(void) +static void CreateTMCaseScrollIndicatorArrowPair_Main(void) { sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0xA0, 0x08, 0x58, sTMCaseDynamicResources->numTMs - sTMCaseDynamicResources->maxTMsShown + 1, 0x6E, 0x6E, &sTMCaseStaticResources.scrollOffset); } -static void sub_8132054(void) +static void CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect(void) { sTMCaseDynamicResources->currItem = 1; sTMCaseDynamicResources->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParametrized(2, 0x98, 0x48, 0x68, 2, 0x6E, 0x6E, &sTMCaseDynamicResources->currItem); @@ -643,7 +643,7 @@ void ResetTMCaseCursorPos(void) sTMCaseStaticResources.scrollOffset = 0; } -static void sub_81320BC(void) +static void TMCaseSetup_GetTMCount(void) { struct BagPocket * pocket = &gBagPockets[POCKET_TM_CASE - 1]; u16 i; @@ -659,7 +659,7 @@ static void sub_81320BC(void) sTMCaseDynamicResources->maxTMsShown = min(sTMCaseDynamicResources->numTMs + 1, 5); } -static void sub_8132120(void) +static void TMCaseSetup_InitListMenuPositions(void) { if (sTMCaseStaticResources.scrollOffset != 0) { @@ -675,7 +675,7 @@ static void sub_8132120(void) } } -static void sub_8132170(void) +static void TMCaseSetup_UpdateVisualMenuOffset(void) { u8 i; if (sTMCaseStaticResources.selectedRow > 3) @@ -774,7 +774,7 @@ static void Task_TMCaseMain(u8 taskId) static void Subtask_ReturnToTMCaseMain(u8 taskId) { FillBG2RowWithPalette_2timesNplus1(0); - sub_8132018(); + CreateTMCaseScrollIndicatorArrowPair_Main(); gTasks[taskId].func = Task_TMCaseMain; } @@ -886,26 +886,26 @@ static void TMHMContextMenuAction_Give(u8 taskId) static void PrintError_ThereIsNoPokemon(u8 taskId) { - TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gText_ThereIsNoPokemon, Task_WaitButtonAfterErrorPrint); } static void PrintError_ItemCantBeHeld(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_ItemCantBeHeld); - TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, sub_8132758); + TMCase_PrintMessageWithFollowupTask(taskId, 2, gStringVar4, Task_WaitButtonAfterErrorPrint); } -static void sub_8132758(u8 taskId) +static void Task_WaitButtonAfterErrorPrint(u8 taskId) { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_8132780(taskId); + Subtask_CloseContextMenuAndReturnToMain(taskId); } } -static void sub_8132780(u8 taskId) +static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -939,7 +939,7 @@ static void TMHMContextMenuAction_Exit(u8 taskId) Subtask_ReturnToTMCaseMain(taskId); } -static void sub_8132868(u8 taskId) +static void Task_SelectTMAction_Type1(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -954,7 +954,7 @@ static void sub_8132868(u8 taskId) } } -static void sub_81328B8(u8 taskId) +static void Task_SelectTMAction_Type3(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -977,7 +977,7 @@ static void Task_SelectTMAction_FromSellMenu(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); - TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, sub_8132780); + TMCase_PrintMessageWithFollowupTask(taskId, sub_80BF8E4(), gStringVar4, Subtask_CloseContextMenuAndReturnToMain); } else { @@ -1037,15 +1037,15 @@ static void Task_InitQuantitySelectUI(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); AddTextPrinterParameterized_ColorByIndex(7, 0, gStringVar4, 4, 10, 1, 0, 0, 1); - sub_8132B5C(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + SellTM_PrintQuantityAndSalePrice(1, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); HandlePrintMoneyOnHand(); - sub_8132054(); + CreateTMCaseScrollIndicatorArrowPair_SellQuantitySelect(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); - gTasks[taskId].func = sub_8132BC8; + gTasks[taskId].func = Task_QuantitySelect_HandleInput; } -static void sub_8132B5C(s16 quantity, s32 amount) +static void SellTM_PrintQuantityAndSalePrice(s16 quantity, s32 amount) { FillWindowPixelBuffer(7, 0x11); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -1054,13 +1054,13 @@ static void sub_8132B5C(s16 quantity, s32 amount) PrintMoneyAmount(7, 0x38, 0x0A, amount, 0); } -static void sub_8132BC8(u8 taskId) +static void Task_QuantitySelect_HandleInput(u8 taskId) { s16 * data = gTasks[taskId].data; if (sub_80BF848(&data[8], data[2]) == 1) { - sub_8132B5C(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); + SellTM_PrintQuantityAndSalePrice(data[8], itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { @@ -1109,8 +1109,8 @@ static void Task_DoSaleOfTMs(u8 taskId) AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); DestroyListMenu(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow); - sub_81320BC(); - sub_8132120(); + TMCaseSetup_GetTMCount(); + TMCaseSetup_InitListMenuPositions(); InitTMCaseListMenuItems(); data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow); PrintListMenuCursorByID_WithColorIdx(data[0], 2); @@ -1129,7 +1129,7 @@ static void Task_AfterSale_ReturnToList(u8 taskId) PutWindowTilemap(3); PutWindowTilemap(4); PutWindowTilemap(5); - sub_8132780(taskId); + Subtask_CloseContextMenuAndReturnToMain(taskId); } } -- cgit v1.2.3