diff options
Diffstat (limited to 'src/item_pc.c')
-rw-r--r-- | src/item_pc.c | 724 |
1 files changed, 362 insertions, 362 deletions
diff --git a/src/item_pc.c b/src/item_pc.c index f158831c9..3e139503e 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -9,6 +9,7 @@ #include "item_menu.h" #include "item_menu_icons.h" #include "list_menu.h" +#include "item_pc.h" #include "item_use.h" #include "main.h" #include "malloc.h" @@ -30,82 +31,81 @@ struct ItemPcResources { - MainCallback field_00; - u8 field_04; - u8 field_05; - u8 field_06; - u8 field_07; - u8 field_08; - u16 field_0A; - s16 field_0C[3]; + MainCallback savedCallback; + u8 moveModeOrigPos; + u8 itemMenuIconSlot; + u8 maxShowed; + u8 nItems; + u8 scrollIndicatorArrowPairId; + u16 withdrawQuantitySubmenuCursorPos; + s16 data[3]; }; struct ItemPcStaticResources { - MainCallback field_0; - u16 field_4; - u16 field_6; - u8 field_8; + MainCallback savedCallback; + u16 scroll; + u16 row; + u8 initialized; }; -EWRAM_DATA struct ItemPcResources * gUnknown_203ADBC = NULL; -EWRAM_DATA u8 * gUnknown_203ADC0 = NULL; -EWRAM_DATA struct ListMenuItem * gUnknown_203ADC4 = NULL; -EWRAM_DATA void * gUnknown_203ADC8 = NULL; -EWRAM_DATA struct ItemPcStaticResources gUnknown_203ADCC = {}; -EWRAM_DATA u8 gUnknown_203ADD8[3] = {}; - -extern const struct CompressedSpriteSheet gUnknown_83D4240; -extern const struct CompressedSpritePalette gUnknown_83D4248; - -void sub_810D4A0(void); -bool8 sub_810D4C0(void); -void sub_810D6AC(void); -void sub_810D6E8(u8 taskId); -bool8 sub_810D71C(void); -bool8 sub_810D78C(void); -bool8 sub_810D83C(void); -void sub_810D878(void); -void sub_810D954(s32 itemIndex, bool8 onInit, struct ListMenu * list); -void sub_810DA20(u8 windowId, s32 itemId, u8 y); -void sub_810DAD4(u8 y, u8 state); -void sub_810DB34(void); -void sub_810DB5C(void); -void sub_810DBF0(void); -void sub_810DC40(void); -void sub_810DCE4(u8 taskId); -u16 ItemPc_GetItemIdBySlotId(u16 itemIndex); -u16 ItemPc_GetItemQuantityBySlotId(u16 itemIndex); -void sub_810DDA4(void); -void sub_810DE08(void); -void sub_810DE94(u8); -void sub_810DEA0(u8 taskId); -void sub_810DFE0(u8 taskId, s16 pos); -void sub_810E0B4(u8 taskId); -void sub_810E160(u8 taskId, u32 pos); -void sub_810E200(u8 taskId, u32 pos); -void sub_810E274(u8 taskId); -void sub_810E358(u8 taskId); -void sub_810E3A4(u8 taskId); -void sub_810E418(u8 taskId); -void sub_810E4F4(u8 taskId); -void sub_810E548(u8 taskId); -void sub_810E578(u8 taskId); -void sub_810E5E0(u16 slotId); -void sub_810E6D8(u8 taskId); -void sub_810E79C(u8 taskId); -void sub_810E7F8(void); -void sub_810E838(void); -void sub_810E848(u8 taskId); -void sub_810E8A0(u8 taskId); -void sub_810E8F0(void); -void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -void sub_810EA9C(u8 windowId); -u8 sub_810EAB4(u8 idx); -void sub_810EAF0(u8 idx); -void sub_810EB30(u8 taskId, const u8 * str, TaskFunc taskFunc); - -const struct BgTemplate gUnknown_8453F6C[2] = { +static EWRAM_DATA struct ItemPcResources * sStateDataPtr = NULL; +static EWRAM_DATA u8 * sBg1TilemapBuffer = NULL; +static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; +static EWRAM_DATA u8 * sUnusedStringAllocation = NULL; +static EWRAM_DATA struct ItemPcStaticResources sListMenuState = {}; +static EWRAM_DATA u8 sSubmenuWindowIds[3] = {}; + +extern const struct CompressedSpriteSheet gBagSwapSpriteSheet; +extern const struct CompressedSpritePalette gBagSwapSpritePalette; + +static void ItemPc_RunSetup(void); +static bool8 ItemPc_DoGfxSetup(void); +static void ItemPc_FadeAndBail(void); +static void Task_ItemPcWaitFadeAndBail(u8 taskId); +static bool8 ItemPc_InitBgs(void); +static bool8 ItemPc_LoadGraphics(void); +static bool8 ItemPc_AllocateResourcesForListMenu(void); +static void ItemPc_BuildListMenuTemplate(void); +static void ItemPc_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); +static void ItemPc_ItemPrintFunc(u8 windowId, s32 itemId, u8 y); +static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 state); +static void ItemPc_PrintWithdrawItem(void); +static void ItemPc_PlaceTopMenuScrollIndicatorArrows(void); +static void ItemPc_SetCursorPosition(void); +static void ItemPc_FreeResources(void); +static void Task_ItemPcTurnOff2(u8 taskId); +static u16 ItemPc_GetItemIdBySlotId(u16 itemIndex); +static u16 ItemPc_GetItemQuantityBySlotId(u16 itemIndex); +static void ItemPc_CountPcItems(void); +static void ItemPc_SetScrollPosition(void); +static void Task_ItemPcMain(u8 taskId); +static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos); +static void Task_ItemPcMoveItemModeRun(u8 taskId); +static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos); +static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos); +static void Task_ItemPcSubmenuInit(u8 taskId); +static void Task_ItemPcSubmenuRun(u8 taskId); +static void Task_ItemPcWithdraw(u8 taskId); +static void ItemPc_DoWithdraw(u8 taskId); +static void Task_ItemPcWaitButtonAndFinishWithdrawMultiple(u8 taskId); +static void Task_ItemPcWaitButtonWithdrawMultipleFailed(u8 taskId); +static void Task_ItemPcCleanUpWithdraw(u8 taskId); +static void ItemPc_WithdrawMultipleInitWindow(u16 slotId); +static void Task_ItemPcHandleWithdrawMultiple(u8 taskId); +static void Task_ItemPcGive(u8 taskId); +static void ItemPc_CB2_SwitchToPartyMenu(void); +static void ItemPc_CB2_ReturnFromPartyMenu(void); +static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId); +static void Task_ItemPcCancel(u8 taskId); +static void ItemPc_InitWindows(void); +static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static void ItemPc_SetBorderStyleOnWindow(u8 windowId); +static u8 ItemPc_GetOrCreateSubwindow(u8 idx); +static void ItemPc_DestroySubwindow(u8 idx); +static void ItemPc_PrintOnWindow5WithContinueTask(u8 taskId, const u8 * str, TaskFunc taskFunc); + +static const struct BgTemplate sBgTemplates[2] = { { .bg = 0, .charBaseIndex = 0, @@ -119,20 +119,20 @@ const struct BgTemplate gUnknown_8453F6C[2] = { } }; -const struct MenuAction gUnknown_8453F74[] = { - {gUnknown_84178B5, {.void_u8 = sub_810E3A4}}, - {gOtherText_Give, {.void_u8 = sub_810E79C}}, - {gFameCheckerText_Cancel, {.void_u8 = sub_810E8A0}} +static const struct MenuAction sItemPcSubmenuOptions[] = { + {gText_Withdraw, {.void_u8 = Task_ItemPcWithdraw}}, + {gOtherText_Give, {.void_u8 = Task_ItemPcGive}}, + {gFameCheckerText_Cancel, {.void_u8 = Task_ItemPcCancel}} }; -const struct TextColor gUnknown_8453F8C[] = { +static const struct TextColor gUnknown_8453F8C[] = { {0, 1, 2}, {0, 2, 3}, {0, 3, 2}, {0, 10, 2} }; -const struct WindowTemplate gUnknown_8453F98[] = { +static const struct WindowTemplate gUnknown_8453F98[] = { { .bg = 0, .tilemapLeft = 0x07, @@ -184,7 +184,7 @@ const struct WindowTemplate gUnknown_8453F98[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_8453FD0[] = { +static const struct WindowTemplate gUnknown_8453FD0[] = { { .bg = 0, .tilemapLeft = 0x06, @@ -212,7 +212,7 @@ const struct WindowTemplate gUnknown_8453FD0[] = { } }; -void sub_810D3F4(u8 a0, MainCallback callback) +void ItemPc_Init(u8 a0, MainCallback callback) { u8 i; @@ -221,28 +221,28 @@ void sub_810D3F4(u8 a0, MainCallback callback) SetMainCallback2(callback); return; } - if ((gUnknown_203ADBC = Alloc(sizeof(struct ItemPcResources))) == NULL) + if ((sStateDataPtr = Alloc(sizeof(struct ItemPcResources))) == NULL) { SetMainCallback2(callback); return; } if (a0 != 1) { - gUnknown_203ADCC.field_0 = callback; - gUnknown_203ADCC.field_4 = gUnknown_203ADCC.field_6 = 0; + sListMenuState.savedCallback = callback; + sListMenuState.scroll = sListMenuState.row = 0; } - gUnknown_203ADBC->field_04 = 0xFF; - gUnknown_203ADBC->field_05 = 0; - gUnknown_203ADBC->field_08 = 0xFF; - gUnknown_203ADBC->field_00 = 0; + sStateDataPtr->moveModeOrigPos = 0xFF; + sStateDataPtr->itemMenuIconSlot = 0; + sStateDataPtr->scrollIndicatorArrowPairId = 0xFF; + sStateDataPtr->savedCallback = 0; for (i = 0; i < 3; i++) { - gUnknown_203ADBC->field_0C[i] = 0; + sStateDataPtr->data[i] = 0; } - SetMainCallback2(sub_810D4A0); + SetMainCallback2(ItemPc_RunSetup); } -void sub_810D470(void) +static void ItemPc_MainCB(void) { RunTasks(); AnimateSprites(); @@ -251,25 +251,25 @@ void sub_810D470(void) UpdatePaletteFade(); } -void sub_810D48C(void) +static void ItemPc_VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_810D4A0(void) +static void ItemPc_RunSetup(void) { while (1) { - if (sub_810D4C0() == TRUE) + if (ItemPc_DoGfxSetup() == TRUE) break; - if (sub_80BF708() == TRUE) + if (MenuHelpers_LinkSomething() == TRUE) break; } } -bool8 sub_810D4C0(void) +static bool8 ItemPc_DoGfxSetup(void) { u8 taskId; switch (gMain.state) @@ -296,7 +296,7 @@ bool8 sub_810D4C0(void) gMain.state++; break; case 5: - sub_80984D8(); + ResetItemMenuIconState(); gMain.state++; break; case 6: @@ -304,46 +304,46 @@ bool8 sub_810D4C0(void) gMain.state++; break; case 7: - if (sub_810D71C()) + if (ItemPc_InitBgs()) { - gUnknown_203ADBC->field_0C[0] = 0; + sStateDataPtr->data[0] = 0; gMain.state++; } else { - sub_810D6AC(); + ItemPc_FadeAndBail(); return TRUE; } break; case 8: - if (sub_810D78C() == TRUE) + if (ItemPc_LoadGraphics() == TRUE) gMain.state++; break; case 9: - sub_810E8F0(); + ItemPc_InitWindows(); gMain.state++; break; case 10: - sub_810DDA4(); - sub_810DBF0(); - sub_810DE08(); + ItemPc_CountPcItems(); + ItemPc_SetCursorPosition(); + ItemPc_SetScrollPosition(); gMain.state++; break; case 11: - if (sub_810D83C()) + if (ItemPc_AllocateResourcesForListMenu()) gMain.state++; else { - sub_810D6AC(); + ItemPc_FadeAndBail(); return TRUE; } break; case 12: - sub_810D878(); + ItemPc_BuildListMenuTemplate(); gMain.state++; break; case 13: - sub_810DB34(); + ItemPc_PrintWithdrawItem(); gMain.state++; break; case 14: @@ -351,12 +351,12 @@ bool8 sub_810D4C0(void) gMain.state++; break; case 15: - taskId = CreateTask(sub_810DEA0, 0); - gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + taskId = CreateTask(Task_ItemPcMain, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row); gMain.state++; break; case 16: - sub_810DB5C(); + ItemPc_PlaceTopMenuScrollIndicatorArrows(); gMain.state++; break; case 17: @@ -364,21 +364,21 @@ bool8 sub_810D4C0(void) gMain.state++; break; case 18: - if (gUnknown_203ADCC.field_8 == 1) + if (sListMenuState.initialized == 1) { BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); } gMain.state++; break; case 19: - if (gUnknown_203ADCC.field_8 == 1) + if (sListMenuState.initialized == 1) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); } else { sub_80A0A48(0, 0, 0); - sub_810DE94(1); + ItemPc_SetInitializedFlag(1); PlaySE(SE_PC_LOGON); } gMain.state++; @@ -388,41 +388,41 @@ bool8 sub_810D4C0(void) gMain.state++; break; default: - SetVBlankCallback(sub_810D48C); - SetMainCallback2(sub_810D470); + SetVBlankCallback(ItemPc_VBlankCB); + SetMainCallback2(ItemPc_MainCB); return TRUE; } return FALSE; } -void sub_810D6AC(void) +static void ItemPc_FadeAndBail(void) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - CreateTask(sub_810D6E8, 0); - SetVBlankCallback(sub_810D48C); - SetMainCallback2(sub_810D470); + CreateTask(Task_ItemPcWaitFadeAndBail, 0); + SetVBlankCallback(ItemPc_VBlankCB); + SetMainCallback2(ItemPc_MainCB); } -void sub_810D6E8(u8 taskId) +static void Task_ItemPcWaitFadeAndBail(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(gUnknown_203ADCC.field_0); - sub_810DC40(); + SetMainCallback2(sListMenuState.savedCallback); + ItemPc_FreeResources(); DestroyTask(taskId); } } -bool8 sub_810D71C(void) +static bool8 ItemPc_InitBgs(void) { InitBgReg(); - gUnknown_203ADC0 = Alloc(0x800); - if (gUnknown_203ADC0 == NULL) + sBg1TilemapBuffer = Alloc(0x800); + if (sBg1TilemapBuffer == NULL) return FALSE; - memset(gUnknown_203ADC0, 0, 0x800); + memset(sBg1TilemapBuffer, 0, 0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_8453F6C, NELEMS(gUnknown_8453F6C)); - SetBgTilemapBuffer(1, gUnknown_203ADC0); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); + SetBgTilemapBuffer(1, sBg1TilemapBuffer); schedule_bg_copy_tilemap_to_vram(1); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); SetGpuReg(REG_OFFSET_BLDCNT , 0); @@ -431,70 +431,70 @@ bool8 sub_810D71C(void) return TRUE; } -bool8 sub_810D78C(void) +static bool8 ItemPc_LoadGraphics(void) { - switch (gUnknown_203ADBC->field_0C[0]) + switch (sStateDataPtr->data[0]) { case 0: reset_temp_tile_data_buffers(); - decompress_and_copy_tile_data_to_vram(1, gUnknown_8E85090, 0, 0, 0); - gUnknown_203ADBC->field_0C[0]++; + decompress_and_copy_tile_data_to_vram(1, gItemPcTiles, 0, 0, 0); + sStateDataPtr->data[0]++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != TRUE) { - LZDecompressWram(gUnknown_8E85458, gUnknown_203ADC0); - gUnknown_203ADBC->field_0C[0]++; + LZDecompressWram(gItemPcTilemap, sBg1TilemapBuffer); + sStateDataPtr->data[0]++; } break; case 2: - LoadCompressedPalette(gUnknown_8E85408, 0x00, 0x60); - gUnknown_203ADBC->field_0C[0]++; + LoadCompressedPalette(gItemPcBgPals, 0x00, 0x60); + sStateDataPtr->data[0]++; break; case 3: - LoadCompressedObjectPic(&gUnknown_83D4240); - gUnknown_203ADBC->field_0C[0]++; + LoadCompressedObjectPic(&gBagSwapSpriteSheet); + sStateDataPtr->data[0]++; break; default: - LoadCompressedObjectPalette(&gUnknown_83D4248); - gUnknown_203ADBC->field_0C[0] = 0; + LoadCompressedObjectPalette(&gBagSwapSpritePalette); + sStateDataPtr->data[0] = 0; return TRUE; } return FALSE; } -#define sub_810D83C_sub(ptr__, size) ({ \ +#define try_alloc(ptr__, size) ({ \ void ** ptr = (void **)&(ptr__); \ *ptr = Alloc(size); \ if (*ptr == NULL) \ { \ - sub_810DC40(); \ - sub_810D6AC(); \ + ItemPc_FreeResources(); \ + ItemPc_FadeAndBail(); \ return FALSE; \ } \ }) -bool8 sub_810D83C(void) +static bool8 ItemPc_AllocateResourcesForListMenu(void) { - sub_810D83C_sub(gUnknown_203ADC4, sizeof(struct ListMenuItem) * (PC_ITEMS_COUNT + 1)); - sub_810D83C_sub(gUnknown_203ADC8, 0x1B2); + try_alloc(sListMenuItems, sizeof(struct ListMenuItem) * (PC_ITEMS_COUNT + 1)); + try_alloc(sUnusedStringAllocation, 14 * (PC_ITEMS_COUNT + 1)); return TRUE; } -void sub_810D878(void) +static void ItemPc_BuildListMenuTemplate(void) { u16 i; - for (i = 0; i < gUnknown_203ADBC->field_07; i++) + for (i = 0; i < sStateDataPtr->nItems; i++) { - gUnknown_203ADC4[i].label = ItemId_GetName(gSaveBlock1Ptr->pcItems[i].itemId); - gUnknown_203ADC4[i].index = i; + sListMenuItems[i].label = ItemId_GetName(gSaveBlock1Ptr->pcItems[i].itemId); + sListMenuItems[i].index = i; } - gUnknown_203ADC4[i].label = gFameCheckerText_Cancel; - gUnknown_203ADC4[i].index = -2; + sListMenuItems[i].label = gFameCheckerText_Cancel; + sListMenuItems[i].index = -2; - gMultiuseListMenuTemplate.items = gUnknown_203ADC4; - gMultiuseListMenuTemplate.totalItems = gUnknown_203ADBC->field_07 + 1; + gMultiuseListMenuTemplate.items = sListMenuItems; + gMultiuseListMenuTemplate.totalItems = sStateDataPtr->nItems + 1; gMultiuseListMenuTemplate.windowId = 0; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = 9; @@ -502,31 +502,31 @@ void sub_810D878(void) gMultiuseListMenuTemplate.lettersSpacing = 1; gMultiuseListMenuTemplate.itemVerticalPadding = 2; gMultiuseListMenuTemplate.upText_Y = 2; - gMultiuseListMenuTemplate.maxShowed = gUnknown_203ADBC->field_06; + gMultiuseListMenuTemplate.maxShowed = sStateDataPtr->maxShowed; gMultiuseListMenuTemplate.fontId = 2; gMultiuseListMenuTemplate.cursorPal = 2; gMultiuseListMenuTemplate.fillValue = 0; gMultiuseListMenuTemplate.cursorShadowPal = 3; - gMultiuseListMenuTemplate.moveCursorFunc = sub_810D954; - gMultiuseListMenuTemplate.itemPrintFunc = sub_810DA20; + gMultiuseListMenuTemplate.moveCursorFunc = ItemPc_MoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = ItemPc_ItemPrintFunc; gMultiuseListMenuTemplate.scrollMultiple = 0; gMultiuseListMenuTemplate.cursorKind = 0; } -void sub_810D954(s32 itemIndex, bool8 onInit, struct ListMenu * list) +static void ItemPc_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list) { u16 itemId; const u8 * desc; if (onInit != TRUE) PlaySE(SE_SELECT); - if (gUnknown_203ADBC->field_04 == 0xFF) + if (sStateDataPtr->moveModeOrigPos == 0xFF) { - sub_8098940(gUnknown_203ADBC->field_05 ^ 1); + DestroyItemMenuIcon(sStateDataPtr->itemMenuIconSlot ^ 1); if (itemIndex != -2) { itemId = ItemPc_GetItemIdBySlotId(itemIndex); - sub_80988E8(itemId, gUnknown_203ADBC->field_05); + CreateItemMenuIcon(itemId, sStateDataPtr->itemMenuIconSlot); if (ItemId_GetPocket(itemId) == POCKET_TM_CASE) desc = gMoveNames[ItemIdToBattleMoveId(itemId)]; else @@ -534,39 +534,39 @@ void sub_810D954(s32 itemIndex, bool8 onInit, struct ListMenu * list) } else { - sub_80988E8(ITEM_N_A, gUnknown_203ADBC->field_05); - desc = gUnknown_84178BE; + CreateItemMenuIcon(ITEM_N_A, sStateDataPtr->itemMenuIconSlot); + desc = gText_ReturnToPC; } - gUnknown_203ADBC->field_05 ^= 1; + sStateDataPtr->itemMenuIconSlot ^= 1; FillWindowPixelBuffer(1, 0); - sub_810EA34(1, 2, desc, 0, 3, 2, 0, 0, 3); + ItemPc_AddTextPrinterParameterized(1, 2, desc, 0, 3, 2, 0, 0, 3); } } -void sub_810DA20(u8 windowId, s32 itemId, u8 y) +static void ItemPc_ItemPrintFunc(u8 windowId, s32 itemId, u8 y) { - if (gUnknown_203ADBC->field_04 != 0xFF) + if (sStateDataPtr->moveModeOrigPos != 0xFF) { - if (gUnknown_203ADBC->field_04 == (u8)itemId) - sub_810DAD4(y, 2); + if (sStateDataPtr->moveModeOrigPos == (u8)itemId) + ItemPc_PrintOrRemoveCursorAt(y, 2); else - sub_810DAD4(y, 0xFF); + ItemPc_PrintOrRemoveCursorAt(y, 0xFF); } if (itemId != -2) { u16 quantity = ItemPc_GetItemQuantityBySlotId(itemId); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_810EA34(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); + ItemPc_AddTextPrinterParameterized(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); } } -void sub_810DAB4(u8 listMenuId, u8 colorIdx) +static void ItemPc_PrintOrRemoveCursor(u8 listMenuId, u8 colorIdx) { - sub_810DAD4(ListMenuGetYCoordForPrintingArrowCursor(listMenuId), colorIdx); + ItemPc_PrintOrRemoveCursorAt(ListMenuGetYCoordForPrintingArrowCursor(listMenuId), colorIdx); } -void sub_810DAD4(u8 y, u8 colorIdx) +static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 colorIdx) { if (colorIdx == 0xFF) { @@ -576,66 +576,66 @@ void sub_810DAD4(u8 y, u8 colorIdx) } else { - sub_810EA34(0, 2, gFameCheckerText_ListMenuCursor, 0, y, 0, 0, 0, colorIdx); + ItemPc_AddTextPrinterParameterized(0, 2, gFameCheckerText_ListMenuCursor, 0, y, 0, 0, 0, colorIdx); } } -void sub_810DB34(void) +static void ItemPc_PrintWithdrawItem(void) { - sub_810EA34(2, 0, gUnknown_84178A7, 0, 1, 0, 1, 0, 0); + ItemPc_AddTextPrinterParameterized(2, 0, gText_WithdrawItem, 0, 1, 0, 1, 0, 0); } -void sub_810DB5C(void) +static void ItemPc_PlaceTopMenuScrollIndicatorArrows(void) { - gUnknown_203ADBC->field_08 = AddScrollIndicatorArrowPairParameterized(2, 128, 8, 104, gUnknown_203ADBC->field_07 - gUnknown_203ADBC->field_06 + 1, 110, 110, &gUnknown_203ADCC.field_4); + sStateDataPtr->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 128, 8, 104, sStateDataPtr->nItems - sStateDataPtr->maxShowed + 1, 110, 110, &sListMenuState.scroll); } -void sub_810DB98(void) +static void ItemPc_PlaceWithdrawQuantityScrollIndicatorArrows(void) { - gUnknown_203ADBC->field_0A = 1; - gUnknown_203ADBC->field_08 = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &gUnknown_203ADBC->field_0A); + sStateDataPtr->withdrawQuantitySubmenuCursorPos = 1; + sStateDataPtr->scrollIndicatorArrowPairId = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &sStateDataPtr->withdrawQuantitySubmenuCursorPos); } -void sub_810DBD0(void) +static void ItemPc_RemoveScrollIndicatorArrowPair(void) { - if (gUnknown_203ADBC->field_08 != 0xFF) + if (sStateDataPtr->scrollIndicatorArrowPairId != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_203ADBC->field_08); - gUnknown_203ADBC->field_08 = 0xFF; + RemoveScrollIndicatorArrowPair(sStateDataPtr->scrollIndicatorArrowPairId); + sStateDataPtr->scrollIndicatorArrowPairId = 0xFF; } } -void sub_810DBF0(void) +static void ItemPc_SetCursorPosition(void) { - if (gUnknown_203ADCC.field_4 != 0 && gUnknown_203ADCC.field_4 + gUnknown_203ADBC->field_06 > gUnknown_203ADBC->field_07 + 1) - gUnknown_203ADCC.field_4 = (gUnknown_203ADBC->field_07 + 1) - gUnknown_203ADBC->field_06; - if (gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6 >= gUnknown_203ADBC->field_07 + 1) + if (sListMenuState.scroll != 0 && sListMenuState.scroll + sStateDataPtr->maxShowed > sStateDataPtr->nItems + 1) + sListMenuState.scroll = (sStateDataPtr->nItems + 1) - sStateDataPtr->maxShowed; + if (sListMenuState.scroll + sListMenuState.row >= sStateDataPtr->nItems + 1) { - if (gUnknown_203ADBC->field_07 + 1 < 2) - gUnknown_203ADCC.field_6 = 0; + if (sStateDataPtr->nItems + 1 < 2) + sListMenuState.row = 0; else - gUnknown_203ADCC.field_6 = gUnknown_203ADBC->field_07; + sListMenuState.row = sStateDataPtr->nItems; } } -#define sub_810DC40_sub(ptr) ({ \ +#define try_free(ptr) ({ \ void ** ptr__ = (void **)&(ptr); \ if (*ptr__ != NULL) \ Free(*ptr__); \ }) -void sub_810DC40(void) +static void ItemPc_FreeResources(void) { - sub_810DC40_sub(gUnknown_203ADBC); - sub_810DC40_sub(gUnknown_203ADC0); - sub_810DC40_sub(gUnknown_203ADC4); - sub_810DC40_sub(gUnknown_203ADC8); + try_free(sStateDataPtr); + try_free(sBg1TilemapBuffer); + try_free(sListMenuItems); + try_free(sUnusedStringAllocation); FreeAllWindowBuffers(); } -void sub_810DC8C(u8 taskId) +static void Task_ItemPcTurnOff1(u8 taskId) { - if (gUnknown_203ADCC.field_8 == 1) + if (sListMenuState.initialized == 1) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); } @@ -644,81 +644,81 @@ void sub_810DC8C(u8 taskId) sub_80A0A70(0, 0, 0); PlaySE(SE_PC_OFF); } - gTasks[taskId].func = sub_810DCE4; + gTasks[taskId].func = Task_ItemPcTurnOff2; } -void sub_810DCE4(u8 taskId) +static void Task_ItemPcTurnOff2(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active && !sub_80A0AAC()) { - DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); - if (gUnknown_203ADBC->field_00 != NULL) - SetMainCallback2(gUnknown_203ADBC->field_00); + DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row); + if (sStateDataPtr->savedCallback != NULL) + SetMainCallback2(sStateDataPtr->savedCallback); else - SetMainCallback2(gUnknown_203ADCC.field_0); - sub_810DBD0(); - sub_810DC40(); + SetMainCallback2(sListMenuState.savedCallback); + ItemPc_RemoveScrollIndicatorArrowPair(); + ItemPc_FreeResources(); DestroyTask(taskId); } } -u8 sub_810DD54(void) +static u8 ItemPc_GetCursorPosition(void) { - return gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6; + return sListMenuState.scroll + sListMenuState.row; } -u16 ItemPc_GetItemIdBySlotId(u16 idx) +static u16 ItemPc_GetItemIdBySlotId(u16 idx) { return gSaveBlock1Ptr->pcItems[idx].itemId; } -u16 ItemPc_GetItemQuantityBySlotId(u16 idx) +static u16 ItemPc_GetItemQuantityBySlotId(u16 idx) { return GetBagItemId(&gSaveBlock1Ptr->pcItems[idx].quantity); } -void sub_810DDA4(void) +static void ItemPc_CountPcItems(void) { u16 i; - sub_809A4E8(); - gUnknown_203ADBC->field_07 = 0; - for (i = 0; i < PC_ITEMS_COUNT; gUnknown_203ADBC->field_07++, i++) + ItemPcCompaction(); + sStateDataPtr->nItems = 0; + for (i = 0; i < PC_ITEMS_COUNT; sStateDataPtr->nItems++, i++) { if (gSaveBlock1Ptr->pcItems[i].itemId == ITEM_NONE) break; } - gUnknown_203ADBC->field_06 = gUnknown_203ADBC->field_07 + 1 <= 6 ? gUnknown_203ADBC->field_07 + 1 : 6; + sStateDataPtr->maxShowed = sStateDataPtr->nItems + 1 <= 6 ? sStateDataPtr->nItems + 1 : 6; } -void sub_810DE08(void) +static void ItemPc_SetScrollPosition(void) { u8 i; - if (gUnknown_203ADCC.field_6 > 3) + if (sListMenuState.row > 3) { - for (i = 0; i <= gUnknown_203ADCC.field_6 - 3; gUnknown_203ADCC.field_6--, gUnknown_203ADCC.field_4++, i++) + for (i = 0; i <= sListMenuState.row - 3; sListMenuState.row--, sListMenuState.scroll++, i++) { - if (gUnknown_203ADCC.field_4 + gUnknown_203ADBC->field_06 == gUnknown_203ADBC->field_07 + 1) + if (sListMenuState.scroll + sStateDataPtr->maxShowed == sStateDataPtr->nItems + 1) break; } } } -void sub_810DE6C(int a0) +static void ItemPc_SetMessageWindowPalette(int a0) { - sub_80F6B08(1, 0, 14, 30, 6, a0 + 1); + SetBgRectPal(1, 0, 14, 30, 6, a0 + 1); schedule_bg_copy_tilemap_to_vram(1); } -void sub_810DE94(u8 a0) +void ItemPc_SetInitializedFlag(u8 a0) { - gUnknown_203ADCC.field_8 = a0; + sListMenuState.initialized = a0; } -void sub_810DEA0(u8 taskId) +static void Task_ItemPcMain(u8 taskId) { s16 * data = gTasks[taskId].data; u16 scroll; @@ -730,170 +730,170 @@ void sub_810DEA0(u8 taskId) if (JOY_NEW(SELECT_BUTTON)) { ListMenuGetScrollAndRow(data[0], &scroll, &row); - if (scroll + row != gUnknown_203ADBC->field_07) + if (scroll + row != sStateDataPtr->nItems) { PlaySE(SE_SELECT); - sub_810DFE0(taskId, scroll + row); + ItemPc_MoveItemModeInit(taskId, scroll + row); return; } } input = ListMenuHandleInput(data[0]); - ListMenuGetScrollAndRow(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row); switch (input) { case -1: break; case -2: PlaySE(SE_SELECT); - sub_810DE94(0); - gTasks[taskId].func = sub_810DC8C; + ItemPc_SetInitializedFlag(0); + gTasks[taskId].func = Task_ItemPcTurnOff1; break; default: PlaySE(SE_SELECT); - sub_810DE6C(1); - sub_810DBD0(); + ItemPc_SetMessageWindowPalette(1); + ItemPc_RemoveScrollIndicatorArrowPair(); data[1] = input; data[2] = ItemPc_GetItemQuantityBySlotId(input); - sub_810DAB4(data[0], 2); - gTasks[taskId].func = sub_810E274; + ItemPc_PrintOrRemoveCursor(data[0], 2); + gTasks[taskId].func = Task_ItemPcSubmenuInit; break; } } } -void sub_810DFB0(u8 taskId) +static void ItemPc_ReturnFromSubmenu(u8 taskId) { - sub_810DE6C(0); - sub_810DB5C(); - gTasks[taskId].func = sub_810DEA0; + ItemPc_SetMessageWindowPalette(0); + ItemPc_PlaceTopMenuScrollIndicatorArrows(); + gTasks[taskId].func = Task_ItemPcMain; } -void sub_810DFE0(u8 taskId, s16 pos) +static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos) { s16 * data = gTasks[taskId].data; sub_8107BD0(data[0], 16, 1); data[1] = pos; - gUnknown_203ADBC->field_04 = pos; + sStateDataPtr->moveModeOrigPos = pos; StringCopy(gStringVar1, ItemId_GetName(ItemPc_GetItemIdBySlotId(data[1]))); - StringExpandPlaceholders(gStringVar4, gUnknown_841633F); + StringExpandPlaceholders(gStringVar4, gOtherText_WhereShouldTheStrVar1BePlaced); FillWindowPixelBuffer(1, 0x00); - sub_810EA34(1, 2, gStringVar4, 0, 3, 2, 3, 0, 0); + ItemPc_AddTextPrinterParameterized(1, 2, gStringVar4, 0, 3, 2, 3, 0, 0); sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0])); sub_8098660(0); - sub_810DAB4(data[0], 2); - gTasks[taskId].func = sub_810E0B4; + ItemPc_PrintOrRemoveCursor(data[0], 2); + gTasks[taskId].func = Task_ItemPcMoveItemModeRun; } -void sub_810E0B4(u8 taskId) +static void Task_ItemPcMoveItemModeRun(u8 taskId) { s16 * data = gTasks[taskId].data; ListMenuHandleInput(data[0]); - ListMenuGetScrollAndRow(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + ListMenuGetScrollAndRow(data[0], &sListMenuState.scroll, &sListMenuState.row); sub_80986A8(-32, ListMenuGetYCoordForPrintingArrowCursor(data[0])); if (JOY_NEW(A_BUTTON | SELECT_BUTTON)) { PlaySE(SE_SELECT); - gUnknown_203ADBC->field_04 = 0xFF; - sub_810E160(taskId, gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6); + sStateDataPtr->moveModeOrigPos = 0xFF; + ItemPc_InsertItemIntoNewSlot(taskId, sListMenuState.scroll + sListMenuState.row); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - gUnknown_203ADBC->field_04 = 0xFF; - sub_810E200(taskId, gUnknown_203ADCC.field_4 + gUnknown_203ADCC.field_6); + sStateDataPtr->moveModeOrigPos = 0xFF; + ItemPc_MoveItemModeCancel(taskId, sListMenuState.scroll + sListMenuState.row); } } -void sub_810E160(u8 taskId, u32 pos) +static void ItemPc_InsertItemIntoNewSlot(u8 taskId, u32 pos) { s16 * data = gTasks[taskId].data; if (data[1] == pos || data[1] == pos - 1) - sub_810E200(taskId, pos); + ItemPc_MoveItemModeCancel(taskId, pos); else { - sub_8108D60(gSaveBlock1Ptr->pcItems, data[1], pos); - DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + ItemMenu_MoveItemSlotToNewPositionInArray(gSaveBlock1Ptr->pcItems, data[1], pos); + DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row); if (data[1] < pos) - gUnknown_203ADCC.field_6--; - sub_810D878(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + sListMenuState.row--; + ItemPc_BuildListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row); sub_8098660(1); - gTasks[taskId].func = sub_810DEA0; + gTasks[taskId].func = Task_ItemPcMain; } } -void sub_810E200(u8 taskId, u32 pos) +static void ItemPc_MoveItemModeCancel(u8 taskId, u32 pos) { s16 * data = gTasks[taskId].data; - DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); + DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row); if (data[1] < pos) - gUnknown_203ADCC.field_6--; - sub_810D878(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + sListMenuState.row--; + ItemPc_BuildListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row); sub_8098660(1); - gTasks[taskId].func = sub_810DEA0; + gTasks[taskId].func = Task_ItemPcMain; } -void sub_810E274(u8 taskId) +static void Task_ItemPcSubmenuInit(u8 taskId) { s16 * data = gTasks[taskId].data; u8 windowId; - sub_810EA9C(4); - windowId = sub_810EAB4(0); - PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, gUnknown_8453F74); + ItemPc_SetBorderStyleOnWindow(4); + windowId = ItemPc_GetOrCreateSubwindow(0); + PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, sItemPcSubmenuOptions); ProgramAndPlaceMenuCursorOnWindow(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0); CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_84162FF); - sub_810EA34(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1); + StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1); + ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1); schedule_bg_copy_tilemap_to_vram(0); - gTasks[taskId].func = sub_810E358; + gTasks[taskId].func = Task_ItemPcSubmenuRun; } -void sub_810E358(u8 taskId) +static void Task_ItemPcSubmenuRun(u8 taskId) { s8 input = ProcessMenuInputNoWrapAround(); switch (input) { case -1: PlaySE(SE_SELECT); - sub_810E8A0(taskId); + Task_ItemPcCancel(taskId); break; case -2: break; default: PlaySE(SE_SELECT); - gUnknown_8453F74[input].func.void_u8(taskId); + sItemPcSubmenuOptions[input].func.void_u8(taskId); } } -void sub_810E3A4(u8 taskId) +static void Task_ItemPcWithdraw(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810F4D8(4, FALSE); - sub_810EAF0(0); + ClearMenuWindow(4, FALSE); + ItemPc_DestroySubwindow(0); ClearWindowTilemap(4); data[8] = 1; if (ItemPc_GetItemQuantityBySlotId(data[1]) == 1) { PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); - sub_810E418(taskId); + ItemPc_DoWithdraw(taskId); } else { PutWindowTilemap(0); - sub_810E5E0(data[1]); - sub_810DB98(); - gTasks[taskId].func = sub_810E6D8; + ItemPc_WithdrawMultipleInitWindow(data[1]); + ItemPc_PlaceWithdrawQuantityScrollIndicatorArrows(); + gTasks[taskId].func = Task_ItemPcHandleWithdrawMultiple; } } -void sub_810E418(u8 taskId) +static void ItemPc_DoWithdraw(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = ItemPc_GetItemIdBySlotId(data[1]); @@ -901,23 +901,23 @@ void sub_810E418(u8 taskId) if (AddBagItem(itemId, data[8]) == TRUE) { - sub_80A2294(29, 0, itemId, 0xFFFF); + ItemUse_SetQuestLogEvent(29, NULL, itemId, 0xFFFF); CopyItemName(itemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_84177C5); - windowId = sub_810EAB4(2); + StringExpandPlaceholders(gStringVar4, gText_WithdrewQuantItem); + windowId = ItemPc_GetOrCreateSubwindow(2); AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 0, NULL); - gTasks[taskId].func = sub_810E4F4; + gTasks[taskId].func = Task_ItemPcWaitButtonAndFinishWithdrawMultiple; } else { - windowId = sub_810EAB4(2); - AddTextPrinterParameterized(windowId, 2, gUnknown_841778A, 0, 2, 0, NULL); - gTasks[taskId].func = sub_810E548; + windowId = ItemPc_GetOrCreateSubwindow(2); + AddTextPrinterParameterized(windowId, 2, gText_NoMoreRoomInBag, 0, 2, 0, NULL); + gTasks[taskId].func = Task_ItemPcWaitButtonWithdrawMultipleFailed; } } -void sub_810E4F4(u8 taskId) +static void Task_ItemPcWaitButtonAndFinishWithdrawMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId; @@ -926,59 +926,59 @@ void sub_810E4F4(u8 taskId) { PlaySE(SE_SELECT); itemId = ItemPc_GetItemIdBySlotId(data[1]); - sub_809A460(itemId, data[8]); - sub_809A4E8(); - sub_810E578(taskId); + RemoveItemFromPC(itemId, data[8]); + ItemPcCompaction(); + Task_ItemPcCleanUpWithdraw(taskId); } } -void sub_810E548(u8 taskId) +static void Task_ItemPcWaitButtonWithdrawMultipleFailed(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_810E578(taskId); + Task_ItemPcCleanUpWithdraw(taskId); } } -void sub_810E578(u8 taskId) +static void Task_ItemPcCleanUpWithdraw(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810EAF0(2); + ItemPc_DestroySubwindow(2); PutWindowTilemap(1); - DestroyListMenu(data[0], &gUnknown_203ADCC.field_4, &gUnknown_203ADCC.field_6); - sub_810DDA4(); - sub_810DBF0(); - sub_810D878(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203ADCC.field_4, gUnknown_203ADCC.field_6); + DestroyListMenu(data[0], &sListMenuState.scroll, &sListMenuState.row); + ItemPc_CountPcItems(); + ItemPc_SetCursorPosition(); + ItemPc_BuildListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sListMenuState.scroll, sListMenuState.row); schedule_bg_copy_tilemap_to_vram(0); - sub_810DFB0(taskId); + ItemPc_ReturnFromSubmenu(taskId); } -void sub_810E5E0(u16 slotId) +static void ItemPc_WithdrawMultipleInitWindow(u16 slotId) { u16 itemId = ItemPc_GetItemIdBySlotId(slotId); CopyItemName(itemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_84177AC); - AddTextPrinterParameterized(sub_810EAB4(1), 2, gStringVar4, 0, 2, 0, NULL); + StringExpandPlaceholders(gStringVar4, gText_WithdrawHowMany); + AddTextPrinterParameterized(ItemPc_GetOrCreateSubwindow(1), 2, gStringVar4, 0, 2, 0, NULL); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_810EA9C(3); - sub_810EA34(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); + ItemPc_SetBorderStyleOnWindow(3); + ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); schedule_bg_copy_tilemap_to_vram(0); } -void sub_810E670(s16 quantity) +static void sub_810E670(s16 quantity) { FillWindowPixelRect(3, 0x11, 10, 10, 28, 12); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_810EA34(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); + ItemPc_AddTextPrinterParameterized(3, 0, gStringVar4, 8, 10, 1, 0, 0, 1); } -void sub_810E6D8(u8 taskId) +static void Task_ItemPcHandleWithdrawMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -987,96 +987,96 @@ void sub_810E6D8(u8 taskId) else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_810EAF0(1); + ItemPc_DestroySubwindow(1); ClearWindowTilemap(3); PutWindowTilemap(0); - sub_810DAB4(data[0], 1); + ItemPc_PrintOrRemoveCursor(data[0], 1); schedule_bg_copy_tilemap_to_vram(0); - sub_810DBD0(); - sub_810E418(taskId); + ItemPc_RemoveScrollIndicatorArrowPair(); + ItemPc_DoWithdraw(taskId); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_810F4D8(3, FALSE); - sub_810EAF0(1); + ClearMenuWindow(3, FALSE); + ItemPc_DestroySubwindow(1); ClearWindowTilemap(3); PutWindowTilemap(0); PutWindowTilemap(1); - sub_810DAB4(data[0], 1); + ItemPc_PrintOrRemoveCursor(data[0], 1); schedule_bg_copy_tilemap_to_vram(0); - sub_810DBD0(); - sub_810DFB0(taskId); + ItemPc_RemoveScrollIndicatorArrowPair(); + ItemPc_ReturnFromSubmenu(taskId); } } -void sub_810E79C(u8 taskId) +static void Task_ItemPcGive(u8 taskId) { if (CalculatePlayerPartyCount() == 0) { - sub_810F4D8(4, FALSE); - sub_810EAF0(0); + ClearMenuWindow(4, FALSE); + ItemPc_DestroySubwindow(0); ClearWindowTilemap(4); PutWindowTilemap(0); - sub_810EB30(taskId, gText_ThereIsNoPokemon, sub_810E848); + ItemPc_PrintOnWindow5WithContinueTask(taskId, gText_ThereIsNoPokemon, gTask_ItemPcWaitButtonAndExitSubmenu); } else { - gUnknown_203ADBC->field_00 = sub_810E7F8; - sub_810DC8C(taskId); + sStateDataPtr->savedCallback = ItemPc_CB2_SwitchToPartyMenu; + Task_ItemPcTurnOff1(taskId); } } -void sub_810E7F8(void) +static void ItemPc_CB2_SwitchToPartyMenu(void) { - sub_811EA44(0, 0, 6, 0, 6, sub_811FB28, sub_810E838); - gUnknown_203B0A0.unkC = ItemPc_GetItemIdBySlotId(sub_810DD54()); + PartyMenuInit(0, 0, 6, 0, 6, sub_811FB28, ItemPc_CB2_ReturnFromPartyMenu); + gUnknown_203B0A0.unkC = ItemPc_GetItemIdBySlotId(ItemPc_GetCursorPosition()); } -void sub_810E838(void) +static void ItemPc_CB2_ReturnFromPartyMenu(void) { - sub_810D3F4(1, NULL); + ItemPc_Init(1, NULL); } -void sub_810E848(u8 taskId) +static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId) { s16 * data = gTasks[taskId].data; if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_810F260(5, 0); + ClearMenuWindow_BorderThickness2(5, 0); ClearWindowTilemap(5); PutWindowTilemap(1); - sub_810DAB4(data[0], 1); + ItemPc_PrintOrRemoveCursor(data[0], 1); schedule_bg_copy_tilemap_to_vram(0); - sub_810DFB0(taskId); + ItemPc_ReturnFromSubmenu(taskId); } } -void sub_810E8A0(u8 taskId) +static void Task_ItemPcCancel(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_810F4D8(4, FALSE); - sub_810EAF0(0); + ClearMenuWindow(4, FALSE); + ItemPc_DestroySubwindow(0); ClearWindowTilemap(4); PutWindowTilemap(0); PutWindowTilemap(1); - sub_810DAB4(data[0], 1); + ItemPc_PrintOrRemoveCursor(data[0], 1); schedule_bg_copy_tilemap_to_vram(0); - sub_810DFB0(taskId); + ItemPc_ReturnFromSubmenu(taskId); } -void sub_810E8F0(void) +static void ItemPc_InitWindows(void) { u8 i; InitWindows(gUnknown_8453F98); DeactivateAllTextPrinters(); - sub_815001C(0, 0x3C0, 0xE0); - sub_814FF2C(0, 0x3A3, 0xC0); - sub_814FEAC(0, 0x3AC, 0xB0); + TextWindow_SetUserSelectedFrame(0, 0x3C0, 0xE0); + TextWindow_SetStdFrame0_WithPal(0, 0x3A3, 0xC0); + TextWindow_SetBubbleFrame_841F1C8(0, 0x3AC, 0xB0); LoadPalette(stdpal_get(2), 0xD0, 0x20); LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x20); for (i = 0; i < 3; i++) @@ -1086,10 +1086,10 @@ void sub_810E8F0(void) } schedule_bg_copy_tilemap_to_vram(0); for (i = 0; i < 3; i++) - gUnknown_203ADD8[i] = 0xFF; + sSubmenuWindowIds[i] = 0xFF; } -void sub_810E984(u8 windowId, const u8 * string, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed) +static void unused_ItemPc_AddTextPrinterParameterized(u8 windowId, const u8 * string, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed) { struct TextPrinterTemplate template; @@ -1109,41 +1109,41 @@ void sub_810E984(u8 windowId, const u8 * string, u8 x, u8 y, u8 letterSpacing, u AddTextPrinter(&template, speed, NULL); } -void sub_810EA34(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) { AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, &gUnknown_8453F8C[colorIdx], speed, str); } -void sub_810EA9C(u8 windowId) +static void ItemPc_SetBorderStyleOnWindow(u8 windowId) { SetWindowBorderStyle(windowId, FALSE, 0x3C0, 0x0E); } -u8 sub_810EAB4(u8 idx) +static u8 ItemPc_GetOrCreateSubwindow(u8 idx) { - if (gUnknown_203ADD8[idx] == 0xFF) + if (sSubmenuWindowIds[idx] == 0xFF) { - gUnknown_203ADD8[idx] = AddWindow(&gUnknown_8453FD0[idx]); - SetWindowBorderStyle(gUnknown_203ADD8[idx], TRUE, 0x3A3, 0x0C); + sSubmenuWindowIds[idx] = AddWindow(&gUnknown_8453FD0[idx]); + SetWindowBorderStyle(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C); } - return gUnknown_203ADD8[idx]; + return sSubmenuWindowIds[idx]; } -void sub_810EAF0(u8 idx) +static void ItemPc_DestroySubwindow(u8 idx) { - sub_810F4D8(gUnknown_203ADD8[idx], 0); - ClearWindowTilemap(gUnknown_203ADD8[idx]); - RemoveWindow(gUnknown_203ADD8[idx]); - gUnknown_203ADD8[idx] = 0xFF; + ClearMenuWindow(sSubmenuWindowIds[idx], FALSE); + ClearWindowTilemap(sSubmenuWindowIds[idx]); // redundant + RemoveWindow(sSubmenuWindowIds[idx]); + sSubmenuWindowIds[idx] = 0xFF; } -u8 sub_810EB20(u8 idx) +static u8 ItemPc_GetSubwindow(u8 idx) { - return gUnknown_203ADD8[idx]; + return sSubmenuWindowIds[idx]; } -void sub_810EB30(u8 taskId, const u8 * str, TaskFunc taskFunc) +static void ItemPc_PrintOnWindow5WithContinueTask(u8 taskId, const u8 * str, TaskFunc taskFunc) { DisplayMessageAndContinueTask(taskId, 5, 0x3AC, 0x0B, 2, GetTextSpeedSetting(), str, taskFunc); schedule_bg_copy_tilemap_to_vram(0); |