diff options
Diffstat (limited to 'src/tm_case.c')
-rw-r--r-- | src/tm_case.c | 929 |
1 files changed, 465 insertions, 464 deletions
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); } |