diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-30 20:58:29 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-09-30 20:58:29 -0400 |
commit | beedb8d73f40b045906f521b48f40367697b6ebb (patch) | |
tree | d3af7873163f4347dbf1a5eb720c48d0bab26746 /src/berry_pouch.c | |
parent | 8eea5b6d750a629c14a152c240f84b02b5e4f0c6 (diff) |
Tidy global namespace and document
Diffstat (limited to 'src/berry_pouch.c')
-rw-r--r-- | src/berry_pouch.c | 993 |
1 files changed, 496 insertions, 497 deletions
diff --git a/src/berry_pouch.c b/src/berry_pouch.c index abfa4aacf..abf2484f6 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -32,25 +32,24 @@ struct BerryPouchStruct_203F36C { - void (*unk_000)(void); - u16 unk_004; - u8 unk_006; - u8 unk_007; - u8 unk_008; - u8 unk_009; - u8 filler_00a[2]; - u8 unk_00C[BG_SCREEN_SIZE]; - s16 unk_80C[4]; + void (*exitCallback)(void); + u16 indicatorOffset; + u8 indicatorTaskId; + u8 listMenuNumItems; + u8 listMenuMaxShowed; + u8 itemMenuIconId; + u8 ALIGNED(4) bg1TilemapBuffer[BG_SCREEN_SIZE]; + s16 data[4]; }; struct BerryPouchStruct_203F370 { void (*savedCallback)(void); - u8 unk_04; - u8 unk_05; - u8 filler_06[2]; - u16 unk_08; - u16 unk_0A; + u8 type; + u8 allowSelect; + u8 unused_06; + u16 listMenuSelectedRow; + u16 listMenuScrollOffset; }; enum @@ -62,75 +61,75 @@ enum BP_ACTION_DUMMY }; -EWRAM_DATA struct BerryPouchStruct_203F36C *gUnknown_203F36C = NULL; -EWRAM_DATA struct BerryPouchStruct_203F370 gUnknown_203F370 = {}; -EWRAM_DATA struct ListMenuItem *gUnknown_203F37C = NULL; -EWRAM_DATA u8 *gUnknown_203F380 = NULL; -EWRAM_DATA const u8 *gUnknown_203F384 = NULL; -EWRAM_DATA u8 gUnknown_203F388 = 0; -ALIGNED(4) EWRAM_DATA u8 gUnknown_203F38C[14] = {}; -ALIGNED(4) EWRAM_DATA u8 gUnknown_203F39C = 0; - -void sub_813CE30(void); -bool8 sub_813CE5C(void); -void sub_813D00C(void); -void sub_813D048(u8 taskId); -void sub_813D07C(void); -bool8 sub_813D0E4(void); -bool8 sub_813D1C0(void); -void sub_813D204(void); -void sub_813D31C(u8 * dest, u16 itemId); -void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list); -void sub_813D430(u8 windowId, s32 itemId, u8 y); -void sub_813D4D0(u8 y, u8 colorIdx); -void sub_813D538(s32 itemIndex); -void sub_813D5BC(void); -void sub_813D6A4(void); -void sub_813D6F4(void); -void sub_813D754(void); -void sub_813D7CC(void); -void sub_813D844(u8 taskId); -void sub_813D8AC(void); -void sub_813DA68(u8 taskId); -void sub_813DD74(u8 taskId); -void sub_813DDA0(u8 taskId); -void sub_813DE0C(u8 taskId); -void sub_813DEBC(u8 taskId); -void sub_813DF54(u8 taskId); -void sub_813DFC8(u8 taskId); -void sub_813E010(u8 taskId); -void sub_813E0DC(u8 taskId); -void sub_813E164(u8 taskId); -void sub_813E200(u8 taskId); -void sub_813E274(u8 taskId); -void sub_813E290(u8 taskId); -void sub_813E320(u8 taskId); -void sub_813E37C(u8 taskId); -void sub_813E3FC(u8 taskId); -void sub_813E428(u8 taskId); -void sub_813E4E4(u8 taskId); -void sub_813E554(u8 taskId); -void sub_813E568(u8 taskId); -void sub_813E5B8(u8 taskId); -void sub_813E668(s32 price); -void sub_813E690(u8 taskId); -void sub_813E768(u8 taskId); -void sub_813E7F0(u8 taskId); -void sub_813E8D4(u8 taskId); -void sub_813E910(void); -void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); -u8 sub_813EA08(u8 winIdx); -void sub_813EA98(u8 winIdx); -void sub_813EACC(u8 winIdx); -u8 sub_813EB10(u8 winIdx); -void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs); -void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs); -void sub_813EBD4(void); -void sub_813EC08(void); -void sub_813EC28(void); -void sub_813EC64(struct Sprite * sprite); - -static const struct BgTemplate gUnknown_846434C[] = { +static EWRAM_DATA struct BerryPouchStruct_203F36C *sResources = NULL; +static EWRAM_DATA struct BerryPouchStruct_203F370 sStaticCnt = {}; +static EWRAM_DATA struct ListMenuItem *sListMenuItems = NULL; +static EWRAM_DATA u8 *sListMenuStrbuf = NULL; +static EWRAM_DATA const u8 *sContextMenuOptions = NULL; +static EWRAM_DATA u8 sContextMenuNumOptions = 0; +static ALIGNED(4) EWRAM_DATA u8 sVariableWindowIds[14] = {}; +static ALIGNED(4) EWRAM_DATA u8 sBerryPouchSpriteId = 0; + +static void CB2_InitBerryPouch(void); +static bool8 RunBerryPouchInit(void); +static void AbortBerryPouchLoading(void); +static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId); +static void BerryPouchInitBgs(void); +static bool8 BerryPouchLoadGfx(void); +static bool8 AllocateListMenuBuffers(void); +static void SetUpListMenuTemplate(void); +static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId); +static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y); +static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx); +static void PrintSelectedBerryDescription(s32 itemIndex); +static void CreateScrollIndicatorArrows_BerryPouchList(void); +static void PrintBerryPouchHeaderCentered(void); +static void SanitizeListMenuSelectionParams(void); +static void UpdateListMenuScrollOffset(void); +static void BerryPouch_DestroyResources(void); +static void Task_BerryPouchFadeToExitCallback(u8 taskId); +static void SortAndCountBerries(void); +static void Task_BerryPouchMain(u8 taskId); +static void Task_NormalContextMenu_0(u8 taskId); +static void Task_NormalContextMenu_1(u8 taskId); +static void Task_BerryPouch_Use_0(u8 taskId); +static void Task_BerryPouch_Toss_0(u8 taskId); +static void Task_AskTossMultiple(u8 taskId); +static void Task_TossNo(u8 taskId); +static void Task_Toss_SelectMultiple(u8 taskId); +static void Task_TossYes(u8 taskId); +static void Task_WaitButtonThenTossBerries(u8 taskId); +static void Task_BerryPouch_Give_0(u8 taskId); +static void Task_Give_PrintThereIsNoPokemon(u8 taskId); +static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId); +static void Task_BerryPouch_Exit_0(u8 taskId); +static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId); +static void Task_ContextMenu_FromPokemonPC(u8 taskId); +static void Task_ContextMenu_Sell_0(u8 taskId); +static void Task_AskSellMultiple(u8 taskId); +static void Task_SellMultiple_CreateYesNoMenu(u8 taskId); +static void Task_SellNo(u8 taskId); +static void Task_Sell_PrintSelectMultipleUI(u8 taskId); +static void SellMultiple_UpdateSellPriceDisplay(s32 price); +static void Task_Sell_SelectMultiple(u8 taskId); +static void Task_SellYes(u8 taskId); +static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId); +static void Task_SellBerries_WaitButton(u8 taskId); +static void BerryPouchInitWindows(void); +static void BerryPouchPrint(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx); +static u8 GetOrCreateVariableWindow(u8 winIdx); +static void DestroyVariableWindow(u8 winIdx); +static void TryDestroyVariableWindow(u8 winIdx); +static u8 GetVariableWindowId(u8 winIdx); +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs); +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs); +static void PrintMoneyInWin2(void); +static void CreateBerryPouchSprite(void); +static void StartBerryPouchSpriteWobbleAnim(void); +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite); + +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -158,63 +157,63 @@ static const struct BgTemplate gUnknown_846434C[] = { } }; -const TaskFunc gUnknown_8464358[] = { - sub_813DD74, - sub_813E37C, - sub_813E428, - sub_813E3FC, - sub_813DD74 +static const TaskFunc sBerryPouchContextMenuTasks[] = { + Task_NormalContextMenu_0, + Task_ContextMenu_FromPartyGiveMenu_0, + Task_ContextMenu_Sell_0, + Task_ContextMenu_FromPokemonPC, + Task_NormalContextMenu_0 }; -const struct YesNoFuncTable gUnknown_846436C = { - .yesFunc = sub_813E0DC, - .noFunc = sub_813DFC8 +static const struct YesNoFuncTable sYesNoFuncs_Toss = { + .yesFunc = Task_TossYes, + .noFunc = Task_TossNo }; -const struct YesNoFuncTable gUnknown_8464374 = { - .yesFunc = sub_813E768, - .noFunc = sub_813E568 +static const struct YesNoFuncTable sYesNoFuncs_Sell = { + .yesFunc = Task_SellYes, + .noFunc = Task_SellNo }; -const struct MenuAction gUnknown_846437C[] = { - {gOtherText_Use, sub_813DE0C}, - {gOtherText_Toss, sub_813DEBC}, - {gOtherText_Give, sub_813E200}, - {gOtherText_Exit, sub_813E320}, +static const struct MenuAction sContextMenuActions[] = { + {gOtherText_Use, Task_BerryPouch_Use_0}, + {gOtherText_Toss, Task_BerryPouch_Toss_0}, + {gOtherText_Give, Task_BerryPouch_Give_0}, + {gOtherText_Exit, Task_BerryPouch_Exit_0}, {gString_Dummy, NULL} }; -const u8 gUnknown_84643A4[] = { +static const u8 sOptions_UseGiveTossExit[] = { BP_ACTION_USE, BP_ACTION_GIVE, BP_ACTION_TOSS, BP_ACTION_EXIT }; -const u8 gUnknown_84643A8[] = { +static const u8 sOptions_GiveExit[] = { BP_ACTION_GIVE, BP_ACTION_EXIT, BP_ACTION_DUMMY, BP_ACTION_DUMMY }; -const u8 gUnknown_84643AC[] = { +static const u8 sOptions_Exit[] = { BP_ACTION_EXIT, BP_ACTION_DUMMY, BP_ACTION_DUMMY, BP_ACTION_DUMMY }; -const u8 gUnknown_84643B0[] = { +static const u8 sOptions_UseToss_Exit[] = { BP_ACTION_USE, BP_ACTION_TOSS, BP_ACTION_EXIT, BP_ACTION_DUMMY }; -const u8 gUnknown_84643B4[] = _(" "); +static const u8 sText_Space[] = _(" "); -const struct WindowTemplate gUnknown_84643B8[] = { +static const struct WindowTemplate sWindowTemplates_Main[] = { { .bg = 0, .tilemapLeft = 11, @@ -242,7 +241,7 @@ const struct WindowTemplate gUnknown_84643B8[] = { }, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_84643D8[] = { +static const struct WindowTemplate sWindowTemplates_Variable[] = { { .bg = 0x02, .tilemapLeft = 0x18, @@ -358,34 +357,34 @@ const struct WindowTemplate gUnknown_84643D8[] = { } }; -const u8 gUnknown_8464448[][3] = { +static const u8 sTextColors[][3] = { { 0, 1, 2 }, { 0, 2, 3 }, { 0, 3, 2 } }; -const struct OamData gOamData_8464454 = { +static const struct OamData sOamData = { .affineMode = ST_OAM_AFFINE_NORMAL, .shape = ST_OAM_SQUARE, .size = ST_OAM_SIZE_3, .priority = 1 }; -const union AnimCmd gSpriteAnims_846445C[] = { +static const union AnimCmd sSpriteAnim_Dummy[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_8464464[] = { - gSpriteAnims_846445C +static const union AnimCmd *const sSpriteAnimTable[] = { + sSpriteAnim_Dummy }; -const union AffineAnimCmd gSpriteAffineAnims_8464468[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Static[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_END }; -const union AffineAnimCmd gSpriteAffineAnims_8464478[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Wobble[] = { AFFINEANIMCMD_FRAME(0, 0, -2, 2), AFFINEANIMCMD_FRAME(0, 0, 2, 4), AFFINEANIMCMD_FRAME(0, 0, -2, 4), @@ -393,52 +392,52 @@ const union AffineAnimCmd gSpriteAffineAnims_8464478[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_84644A0[] = { - gSpriteAffineAnims_8464468, - gSpriteAffineAnims_8464478 +static const union AffineAnimCmd *const sSpriteAffineAnimTable[] = { + sSpriteAffineAnim_Static, + sSpriteAffineAnim_Wobble }; -const struct CompressedSpriteSheet gUnknown_84644A8 = { - gUnknown_8E8560C, 0x800, 100 +static const struct CompressedSpriteSheet sBerryPouchSpriteSheet = { + gBerryPouchSpriteTiles, 0x800, 100 }; -const struct CompressedSpritePalette gUnknown_84644B0 = { - gUnknown_8E85C1C, 100 +static const struct CompressedSpritePalette sBerryPouchSpritePal = { + gBerryPouchSpritePalette, 100 }; -const struct SpriteTemplate gUnknown_84644B8 = { - 100, 100, &gOamData_8464454, gSpriteAnimTable_8464464, NULL, gSpriteAffineAnimTable_84644A0, SpriteCallbackDummy +static const struct SpriteTemplate sSpriteTemplate_BerryPouch = { + 100, 100, &sOamData, sSpriteAnimTable, NULL, sSpriteAffineAnimTable, SpriteCallbackDummy }; -void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) +void InitBerryPouch(u8 type, void (*savedCallback)(void), u8 allowSelect) { u8 i; - gUnknown_203F36C = Alloc(sizeof(struct BerryPouchStruct_203F36C)); - if (gUnknown_203F36C == NULL) + sResources = Alloc(sizeof(struct BerryPouchStruct_203F36C)); + if (sResources == NULL) { SetMainCallback2(savedCallback); } else { - if (a0 != 6) - gUnknown_203F370.unk_04 = a0; - if (a2 != 0xFF) - gUnknown_203F370.unk_05 = a2; + if (type != BERRYPOUCH_NA) + sStaticCnt.type = type; + if (allowSelect != 0xFF) + sStaticCnt.allowSelect = allowSelect; if (savedCallback != NULL) - gUnknown_203F370.savedCallback = savedCallback; - gUnknown_203F36C->unk_000 = NULL; - gUnknown_203F36C->unk_009 = 0; - gUnknown_203F36C->unk_006 = 0xFF; + sStaticCnt.savedCallback = savedCallback; + sResources->exitCallback = NULL; + sResources->itemMenuIconId = 0; + sResources->indicatorTaskId = 0xFF; for (i = 0; i < 4; i++) - gUnknown_203F36C->unk_80C[i] = 0; + sResources->data[i] = 0; gTextFlags.autoScroll = FALSE; gSpecialVar_ItemId = ITEM_NONE; - SetMainCallback2(sub_813CE30); + SetMainCallback2(CB2_InitBerryPouch); } } -void sub_813CE00(void) +static void CB2_BerryPouchIdle(void) { RunTasks(); AnimateSprites(); @@ -447,27 +446,27 @@ void sub_813CE00(void) UpdatePaletteFade(); } -void sub_813CE1C(void) +static void VBlankCB_BerryPouchIdle(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_813CE30(void) +static void CB2_InitBerryPouch(void) { while (1) { if (sub_80BF72C() == TRUE) break; - if (sub_813CE5C() == TRUE) + if (RunBerryPouchInit() == TRUE) break; if (MenuHelpers_LinkSomething() == TRUE) break; } } -bool8 sub_813CE5C(void) +static bool8 RunBerryPouchInit(void) { u8 taskId; @@ -504,52 +503,52 @@ bool8 sub_813CE5C(void) gMain.state++; break; case 7: - sub_813D07C(); - gUnknown_203F36C->unk_80C[0] = 0; + BerryPouchInitBgs(); + sResources->data[0] = 0; gMain.state++; break; case 8: - if (sub_813D0E4()) + if (BerryPouchLoadGfx()) gMain.state++; break; case 9: - sub_813E910(); + BerryPouchInitWindows(); gMain.state++; break; case 10: - sub_813D8AC(); - sub_813D6F4(); - sub_813D754(); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + UpdateListMenuScrollOffset(); gMain.state++; break; case 11: - if (!sub_813D1C0()) + if (!AllocateListMenuBuffers()) { - sub_813D00C(); + AbortBerryPouchLoading(); return TRUE; } gMain.state++; break; case 12: - sub_813D204(); + SetUpListMenuTemplate(); gMain.state++; break; case 13: - sub_813D6A4(); + PrintBerryPouchHeaderCentered(); gMain.state++; break; case 14: - taskId = CreateTask(sub_813DA68, 0); - gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + taskId = CreateTask(Task_BerryPouchMain, 0); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); gTasks[taskId].data[8] = 0; gMain.state++; break; case 15: - sub_813EC08(); + CreateBerryPouchSprite(); gMain.state++; break; case 16: - sub_813D5BC(); + CreateScrollIndicatorArrows_BerryPouchList(); gMain.state++; break; case 17: @@ -561,39 +560,39 @@ bool8 sub_813CE5C(void) gMain.state++; break; default: - SetVBlankCallback(sub_813CE1C); - SetMainCallback2(sub_813CE00); + SetVBlankCallback(VBlankCB_BerryPouchIdle); + SetMainCallback2(CB2_BerryPouchIdle); return TRUE; } return FALSE; } -void sub_813D00C(void) +static void AbortBerryPouchLoading(void) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - CreateTask(sub_813D048, 0); - SetVBlankCallback(sub_813CE1C); - SetMainCallback2(sub_813CE00); + CreateTask(Task_AbortBerryPouchLoading_WaitFade, 0); + SetVBlankCallback(VBlankCB_BerryPouchIdle); + SetMainCallback2(CB2_BerryPouchIdle); } -void sub_813D048(u8 taskId) +static void Task_AbortBerryPouchLoading_WaitFade(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(gUnknown_203F370.savedCallback); - sub_813D7CC(); + SetMainCallback2(sStaticCnt.savedCallback); + BerryPouch_DestroyResources(); DestroyTask(taskId); } } -void sub_813D07C(void) +static void BerryPouchInitBgs(void) { ResetAllBgsCoordinatesAndBgCntRegs(); - memset(gUnknown_203F36C->unk_00C, 0, BG_SCREEN_SIZE); + memset(sResources->bg1TilemapBuffer, 0, BG_SCREEN_SIZE); ResetBgsAndClearDma3BusyFlags(FALSE); - InitBgsFromTemplates(0, gUnknown_846434C, NELEMS(gUnknown_846434C)); - SetBgTilemapBuffer(1, gUnknown_203F36C->unk_00C); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); + SetBgTilemapBuffer(1, sResources->bg1TilemapBuffer); ScheduleBgCopyTilemapToVram(1); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); @@ -602,69 +601,69 @@ void sub_813D07C(void) ShowBg(2); } -bool8 sub_813D0E4(void) +static bool8 BerryPouchLoadGfx(void) { - switch (gUnknown_203F36C->unk_80C[0]) + switch (sResources->data[0]) { case 0: ResetTempTileDataBuffers(); DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0); - gUnknown_203F36C->unk_80C[0]++; + sResources->data[0]++; break; case 1: if (FreeTempTileDataBuffersIfPossible() != TRUE) { - LZDecompressWram(gUnknown_8E85C44, gUnknown_203F36C->unk_00C); - gUnknown_203F36C->unk_80C[0]++; + LZDecompressWram(gUnknown_8E85C44, sResources->bg1TilemapBuffer); + sResources->data[0]++; } break; case 2: LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60); if (gSaveBlock2Ptr->playerGender != MALE) LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20); - gUnknown_203F36C->unk_80C[0]++; + sResources->data[0]++; break; case 3: - LoadCompressedSpriteSheet(&gUnknown_84644A8); - gUnknown_203F36C->unk_80C[0]++; + LoadCompressedSpriteSheet(&sBerryPouchSpriteSheet); + sResources->data[0]++; break; default: - LoadCompressedSpritePalette(&gUnknown_84644B0); - gUnknown_203F36C->unk_80C[0] = 0; + LoadCompressedSpritePalette(&sBerryPouchSpritePal); + sResources->data[0] = 0; return TRUE; } return FALSE; } -bool8 sub_813D1C0(void) +static bool8 AllocateListMenuBuffers(void) { - gUnknown_203F37C = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem)); - if (gUnknown_203F37C == NULL) + sListMenuItems = Alloc(NUM_BERRIES * sizeof(struct ListMenuItem)); + if (sListMenuItems == NULL) return FALSE; - gUnknown_203F380 = Alloc(gUnknown_203F36C->unk_007 * 27); - if (gUnknown_203F380 == NULL) + sListMenuStrbuf = Alloc(sResources->listMenuNumItems * 27); + if (sListMenuStrbuf == NULL) return FALSE; return TRUE; } -void sub_813D204(void) +static void SetUpListMenuTemplate(void) { u16 i; struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; - for (i = 0; i < gUnknown_203F36C->unk_007; i++) + for (i = 0; i < sResources->listMenuNumItems; i++) { - sub_813D31C(&gUnknown_203F380[i * 27], pocket->itemSlots[i].itemId); - gUnknown_203F37C[i].label = &gUnknown_203F380[i * 27]; - gUnknown_203F37C[i].index = i; + GetBerryNameAndIndexForMenu(&sListMenuStrbuf[i * 27], pocket->itemSlots[i].itemId); + sListMenuItems[i].label = &sListMenuStrbuf[i * 27]; + sListMenuItems[i].index = i; } - gUnknown_203F37C[i].label = gText_Close; - gUnknown_203F37C[i].index = i; - gMultiuseListMenuTemplate.items = gUnknown_203F37C; - if (gUnknown_203F370.unk_04 != 5) - gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007 + 1; + sListMenuItems[i].label = gText_Close; + sListMenuItems[i].index = i; + gMultiuseListMenuTemplate.items = sListMenuItems; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems + 1; else - gMultiuseListMenuTemplate.totalItems = gUnknown_203F36C->unk_007; + gMultiuseListMenuTemplate.totalItems = sResources->listMenuNumItems; gMultiuseListMenuTemplate.windowId = 0; gMultiuseListMenuTemplate.header_X = 0; gMultiuseListMenuTemplate.item_X = 9; @@ -672,71 +671,71 @@ void sub_813D204(void) gMultiuseListMenuTemplate.lettersSpacing = 0; gMultiuseListMenuTemplate.itemVerticalPadding = 2; gMultiuseListMenuTemplate.upText_Y = 2; - gMultiuseListMenuTemplate.maxShowed = gUnknown_203F36C->unk_008; + gMultiuseListMenuTemplate.maxShowed = sResources->listMenuMaxShowed; gMultiuseListMenuTemplate.fontId = 2; gMultiuseListMenuTemplate.cursorPal = 2; gMultiuseListMenuTemplate.fillValue = 0; gMultiuseListMenuTemplate.cursorShadowPal = 3; - gMultiuseListMenuTemplate.moveCursorFunc = sub_813D3C0; - gMultiuseListMenuTemplate.itemPrintFunc = sub_813D430; + gMultiuseListMenuTemplate.moveCursorFunc = BerryPouchMoveCursorFunc; + gMultiuseListMenuTemplate.itemPrintFunc = BerryPouchItemPrintFunc; gMultiuseListMenuTemplate.cursorKind = 0; gMultiuseListMenuTemplate.scrollMultiple = 0; } -void sub_813D31C(u8 * dest, u16 itemId) +static void GetBerryNameAndIndexForMenu(u8 * dest, u16 itemId) { StringCopy(gStringVar4, gText_FontSize0); StringAppend(gStringVar4, gOtherText_UnkF9_08_Clear_01); ConvertIntToDecimalStringN(gStringVar1, itemId - FIRST_BERRY_INDEX + 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringAppend(gStringVar4, gStringVar1); CopyItemName(itemId, gStringVar1); - StringAppend(gStringVar4, gUnknown_84643B4); + StringAppend(gStringVar4, sText_Space); StringAppend(gStringVar4, gText_FontSize2); StringAppend(gStringVar4, gStringVar1); StringCopy(dest, gStringVar4); } -void sub_813D39C(s16 a0, u8 *dest) +static void CopySelectedListMenuItemName(s16 itemIdx, u8 *dest) { - StringCopy(dest, &gUnknown_203F380[a0 * 27]); + StringCopy(dest, &sListMenuStrbuf[itemIdx * 27]); } -void sub_813D3C0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void BerryPouchMoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { if (onInit != TRUE) { PlaySE(SE_W287B); - sub_813EC28(); + StartBerryPouchSpriteWobbleAnim(); } - DestroyItemMenuIcon(gUnknown_203F36C->unk_009 ^ 1); - if (gUnknown_203F36C->unk_007 != itemIndex) - sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), gUnknown_203F36C->unk_009); + DestroyItemMenuIcon(sResources->itemMenuIconId ^ 1); + if (sResources->listMenuNumItems != itemIndex) + sub_80989A0(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIndex), sResources->itemMenuIconId); else - sub_80989A0(ITEM_N_A, gUnknown_203F36C->unk_009); - gUnknown_203F36C->unk_009 ^= 1; - sub_813D538(itemIndex); + sub_80989A0(ITEM_N_A, sResources->itemMenuIconId); + sResources->itemMenuIconId ^= 1; + PrintSelectedBerryDescription(itemIndex); } -void sub_813D430(u8 windowId, s32 itemId, u8 y) +static void BerryPouchItemPrintFunc(u8 windowId, s32 itemId, u8 y) { u16 unused; u16 itemQuantity; - if (itemId != -2 && gUnknown_203F36C->unk_007 != itemId) + if (itemId != -2 && sResources->listMenuNumItems != itemId) { unused = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemId); itemQuantity = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, itemId); ConvertIntToDecimalStringN(gStringVar1, itemQuantity, STR_CONV_MODE_RIGHT_ALIGN, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); + BerryPouchPrint(windowId, 0, gStringVar4, 110, y, 0, 0, 0xFF, 1); } } -void sub_813D4B0(u8 taskId, u8 colorIdx) +static void BerryPouchSetArrowCursorFromListMenu(u8 taskId, u8 colorIdx) { - sub_813D4D0(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx); + BerryPouchSetArrowCursorAt(ListMenuGetYCoordForPrintingArrowCursor(taskId), colorIdx); } -void sub_813D4D0(u8 y, u8 colorIdx) +static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx) { u8 width; u8 height; @@ -749,197 +748,197 @@ void sub_813D4D0(u8 y, u8 colorIdx) } else { - sub_813E9A0(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); + BerryPouchPrint(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx); } } -void sub_813D538(s32 itemIdx) +static void PrintSelectedBerryDescription(s32 itemIdx) { const u8 *str; - if (itemIdx != gUnknown_203F36C->unk_007) + if (itemIdx != sResources->listMenuNumItems) str = ItemId_GetDescription(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, itemIdx)); else - str = gUnknown_8416716; + str = gText_TheBerryPouchWillBePutAway; FillWindowPixelBuffer(1, PIXEL_FILL(0)); - sub_813E9A0(1, 2, str, 0, 2, 2, 0, 0, 0); + BerryPouchPrint(1, 2, str, 0, 2, 2, 0, 0, 0); } -void sub_813D594(s32 pal) +static void SetDescriptionWindowBorderPalette(s32 pal) { SetBgRectPal(1, 0, 16, 30, 4, pal + 1); ScheduleBgCopyTilemapToVram(1); } -void sub_813D5BC(void) +static void CreateScrollIndicatorArrows_BerryPouchList(void) { - if (gUnknown_203F370.unk_04 != 5) - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008 + 1, 110, 110, &gUnknown_203F370.unk_0A); + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed + 1, 110, 110, &sStaticCnt.listMenuScrollOffset); else - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, gUnknown_203F36C->unk_007 - gUnknown_203F36C->unk_008, 110, 110, &gUnknown_203F370.unk_0A); + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 160, 8, 120, sResources->listMenuNumItems - sResources->listMenuMaxShowed, 110, 110, &sStaticCnt.listMenuScrollOffset); } -void sub_813D614(void) +static void CreateScrollIndicatorArrows_TossQuantity(void) { - gUnknown_203F36C->unk_004 = 1; - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &gUnknown_203F36C->unk_004); + sResources->indicatorOffset = 1; + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 212, 120, 152, 2, 110, 110, &sResources->indicatorOffset); } -void sub_813D64C(void) +static void CreateScrollIndicatorArrows_SellQuantity(void) { - gUnknown_203F36C->unk_004 = 1; - gUnknown_203F36C->unk_006 = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &gUnknown_203F36C->unk_004); + sResources->indicatorOffset = 1; + sResources->indicatorTaskId = AddScrollIndicatorArrowPairParameterized(2, 152, 72, 104, 2, 110, 110, &sResources->indicatorOffset); } -void sub_813D684(void) +static void DestroyScrollIndicatorArrows(void) { - if (gUnknown_203F36C->unk_006 != 0xFF) + if (sResources->indicatorTaskId != 0xFF) { - RemoveScrollIndicatorArrowPair(gUnknown_203F36C->unk_006); - gUnknown_203F36C->unk_006 = 0xFF; + RemoveScrollIndicatorArrowPair(sResources->indicatorTaskId); + sResources->indicatorTaskId = 0xFF; } } -void sub_813D6A4(void) +static void PrintBerryPouchHeaderCentered(void) { - u32 slack = 72 - GetStringWidth(1, gUnknown_841670A, 0); - sub_813E9A0(2, 1, gUnknown_841670A, slack / 2, 1, 0, 0, 0, 0); + u32 slack = 72 - GetStringWidth(1, gText_BerryPouch, 0); + BerryPouchPrint(2, 1, gText_BerryPouch, slack / 2, 1, 0, 0, 0, 0); } -void sub_813D6E4(void) +void BerryPouch_CursorResetToTop(void) { - gUnknown_203F370.unk_08 = 0; - gUnknown_203F370.unk_0A = 0; + sStaticCnt.listMenuSelectedRow = 0; + sStaticCnt.listMenuScrollOffset = 0; } -void sub_813D6F4(void) +static void SanitizeListMenuSelectionParams(void) { s32 r2; - if (gUnknown_203F370.unk_04 != 5) - r2 = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + r2 = sResources->listMenuNumItems + 1; else - r2 = gUnknown_203F36C->unk_007; - if (gUnknown_203F370.unk_0A != 0 && gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 > r2) - gUnknown_203F370.unk_0A = r2 - gUnknown_203F36C->unk_008; - if (gUnknown_203F370.unk_0A + gUnknown_203F370.unk_08 >= r2) + r2 = sResources->listMenuNumItems; + if (sStaticCnt.listMenuScrollOffset != 0 && sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed > r2) + sStaticCnt.listMenuScrollOffset = r2 - sResources->listMenuMaxShowed; + if (sStaticCnt.listMenuScrollOffset + sStaticCnt.listMenuSelectedRow >= r2) { if (r2 == 0 || r2 == 1) - gUnknown_203F370.unk_08 = 0; + sStaticCnt.listMenuSelectedRow = 0; else - gUnknown_203F370.unk_08 = r2 - 1; + sStaticCnt.listMenuSelectedRow = r2 - 1; } } -void sub_813D754(void) +static void UpdateListMenuScrollOffset(void) { u8 lim; u8 i; - if (gUnknown_203F370.unk_04 != 5) - lim = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + lim = sResources->listMenuNumItems + 1; else - lim = gUnknown_203F36C->unk_007; - if (gUnknown_203F370.unk_08 > 4) + lim = sResources->listMenuNumItems; + if (sStaticCnt.listMenuSelectedRow > 4) { - for (i = 0; i <= gUnknown_203F370.unk_08 - 4; gUnknown_203F370.unk_08--, gUnknown_203F370.unk_0A++, i++) + for (i = 0; i <= sStaticCnt.listMenuSelectedRow - 4; sStaticCnt.listMenuSelectedRow--, sStaticCnt.listMenuScrollOffset++, i++) { - if (gUnknown_203F370.unk_0A + gUnknown_203F36C->unk_008 == lim) + if (sStaticCnt.listMenuScrollOffset + sResources->listMenuMaxShowed == lim) break; } } } -void sub_813D7CC(void) +static void BerryPouch_DestroyResources(void) { - if (gUnknown_203F36C != NULL) - Free(gUnknown_203F36C); - if (gUnknown_203F37C != NULL) - Free(gUnknown_203F37C); - if (gUnknown_203F380 != NULL) - Free(gUnknown_203F380); + if (sResources != NULL) + Free(sResources); + if (sListMenuItems != NULL) + Free(sListMenuItems); + if (sListMenuStrbuf != NULL) + Free(sListMenuStrbuf); FreeAllWindowBuffers(); } void BerryPouch_StartFadeToExitCallback(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK); - gTasks[taskId].func = sub_813D844; + gTasks[taskId].func = Task_BerryPouchFadeToExitCallback; } -void sub_813D844(u8 taskId) +static void Task_BerryPouchFadeToExitCallback(u8 taskId) { s16 * data = gTasks[taskId].data; if (!gPaletteFade.active) { - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - if (gUnknown_203F36C->unk_000 != NULL) - SetMainCallback2(gUnknown_203F36C->unk_000); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + if (sResources->exitCallback != NULL) + SetMainCallback2(sResources->exitCallback); else - SetMainCallback2(gUnknown_203F370.savedCallback); - sub_813D684(); - sub_813D7CC(); + SetMainCallback2(sStaticCnt.savedCallback); + DestroyScrollIndicatorArrows(); + BerryPouch_DestroyResources(); DestroyTask(taskId); } } -void sub_813D8AC(void) +static void SortAndCountBerries(void) { u16 i; u32 r2; struct BagPocket *pocket = &gBagPockets[POCKET_BERRY_POUCH - 1]; SortAndCompactBagPocket(pocket); - gUnknown_203F36C->unk_007 = 0; + sResources->listMenuNumItems = 0; for (i = 0; i < pocket->capacity; i++) { if (pocket->itemSlots[i].itemId == ITEM_NONE) break; - gUnknown_203F36C->unk_007++; + sResources->listMenuNumItems++; } - if (gUnknown_203F370.unk_04 != 5) - r2 = gUnknown_203F36C->unk_007 + 1; + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) + r2 = sResources->listMenuNumItems + 1; else - r2 = gUnknown_203F36C->unk_007; + r2 = sResources->listMenuNumItems; if (r2 > 7) - gUnknown_203F36C->unk_008 = 7; + sResources->listMenuMaxShowed = 7; else - gUnknown_203F36C->unk_008 = r2; + sResources->listMenuMaxShowed = r2; } void BerryPouch_SetExitCallback(void (*callback)(void)) { - gUnknown_203F36C->unk_000 = callback; + sResources->exitCallback = callback; } -void sub_813D940(u8 taskId, const u8 * str) +void InitTossQuantitySelectUI(u8 taskId, const u8 * str) { s16 * data = gTasks[taskId].data; - u8 windowId = sub_813EA08(8); + u8 windowId = GetOrCreateVariableWindow(8); u8 windowId2; - sub_813D39C(data[1], gStringVar1); + CopySelectedListMenuItemName(data[1], gStringVar1); StringExpandPlaceholders(gStringVar4, str); - sub_813E9A0(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1); - windowId2 = sub_813EA08(0); + BerryPouchPrint(windowId, 2, gStringVar4, 0, 2, 1, 2, 0, 1); + windowId2 = GetOrCreateVariableWindow(0); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 3); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + BerryPouchPrint(windowId2, 0, gStringVar4, 4, 10, 1, 0, 0, 1); } -void sub_813D9F8(u8 whichWindow, s16 quantity, u8 ndigits) +static void PrintxQuantityOnWindow(u8 whichWindow, s16 quantity, u8 ndigits) { - u8 windowId = sub_813EB10(whichWindow); + u8 windowId = GetVariableWindowId(whichWindow); FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, ndigits); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1); + BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0, 1); } -void sub_813DA68(u8 taskId) +static void Task_BerryPouchMain(u8 taskId) { s16 * data = gTasks[taskId].data; s32 menuInput; if (!gPaletteFade.active && sub_80BF72C() != TRUE) { menuInput = ListMenu_ProcessInput(data[0]); - ListMenuGetScrollAndRow(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - if (JOY_NEW(SELECT_BUTTON) && gUnknown_203F370.unk_05 == 1) + ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + if (JOY_NEW(SELECT_BUTTON) && sStaticCnt.allowSelect == 1) { PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; @@ -952,7 +951,7 @@ void sub_813DA68(u8 taskId) case -1: return; case -2: - if (gUnknown_203F370.unk_04 != 5) + if (sStaticCnt.type != BERRYPOUCH_FROMBERRYCRUSH) { PlaySE(SE_SELECT); gSpecialVar_ItemId = 0; @@ -961,25 +960,25 @@ void sub_813DA68(u8 taskId) break; default: PlaySE(SE_SELECT); - if (gUnknown_203F370.unk_04 == 5) + if (sStaticCnt.type == BERRYPOUCH_FROMBERRYCRUSH) { gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput); BerryPouch_StartFadeToExitCallback(taskId); } - else if (menuInput == gUnknown_203F36C->unk_007) + else if (menuInput == sResources->listMenuNumItems) { gSpecialVar_ItemId = 0; BerryPouch_StartFadeToExitCallback(taskId); } else { - sub_813D684(); - sub_813D594(1); - sub_813D4B0(data[0], 2); + DestroyScrollIndicatorArrows(); + SetDescriptionWindowBorderPalette(1); + BerryPouchSetArrowCursorFromListMenu(data[0], 2); data[1] = menuInput; data[2] = BagGetQuantityByPocketPosition(POCKET_BERRY_POUCH, menuInput); gSpecialVar_ItemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, menuInput); - gTasks[taskId].func = gUnknown_8464358[gUnknown_203F370.unk_04]; + gTasks[taskId].func = sBerryPouchContextMenuTasks[sStaticCnt.type]; } break; } @@ -987,58 +986,58 @@ void sub_813DA68(u8 taskId) } } -void sub_813DBB4(u8 taskId) +static void Task_CleanUpAndReturnToMain(u8 taskId) { - sub_813D594(0); - sub_813D5BC(); - gTasks[taskId].func = sub_813DA68; + SetDescriptionWindowBorderPalette(0); + CreateScrollIndicatorArrows_BerryPouchList(); + gTasks[taskId].func = Task_BerryPouchMain; } -void sub_813DBE4(u8 taskId) +static void CreateNormalContextMenu(u8 taskId) { s16 * data = gTasks[taskId].data; u8 windowId; u8 windowId2; - if (gUnknown_203F370.unk_04 == 4) + if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE) { - gUnknown_203F384 = gUnknown_84643B0; - gUnknown_203F388 = 3; + sContextMenuOptions = sOptions_UseToss_Exit; + sContextMenuNumOptions = 3; } else if (MenuHelpers_LinkSomething() == TRUE || InUnionRoom() == TRUE) { - if (!sub_80BF6A8(gSpecialVar_ItemId)) + if (!itemid_link_can_give_berry(gSpecialVar_ItemId)) { - gUnknown_203F384 = gUnknown_84643AC; - gUnknown_203F388 = 1; + sContextMenuOptions = sOptions_Exit; + sContextMenuNumOptions = 1; } else { - gUnknown_203F384 = gUnknown_84643A8; - gUnknown_203F388 = 2; + sContextMenuOptions = sOptions_GiveExit; + sContextMenuNumOptions = 2; } } else { - gUnknown_203F384 = gUnknown_84643A4; - gUnknown_203F388 = 4; + sContextMenuOptions = sOptions_UseGiveTossExit; + sContextMenuNumOptions = 4; } - windowId = sub_813EA08(gUnknown_203F388 + 9); - AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, gUnknown_846437C, gUnknown_203F384); - Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, gUnknown_203F388, 0); - windowId2 = sub_813EA08(6); - sub_813D39C(data[1], gStringVar1); + windowId = GetOrCreateVariableWindow(sContextMenuNumOptions + 9); + AddItemMenuActionTextPrinters(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, GetFontAttribute(2, FONTATTR_LETTER_SPACING), GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, sContextMenuActions, sContextMenuOptions); + Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, 0); + windowId2 = GetOrCreateVariableWindow(6); + CopySelectedListMenuItemName(data[1], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1); - sub_813E9A0(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); + BerryPouchPrint(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1); } -void sub_813DD74(u8 taskId) +static void Task_NormalContextMenu_0(u8 taskId) { - sub_813DBE4(taskId); - gTasks[taskId].func = sub_813DDA0; + CreateNormalContextMenu(taskId); + gTasks[taskId].func = Task_NormalContextMenu_1; } -void sub_813DDA0(u8 taskId) +static void Task_NormalContextMenu_1(u8 taskId) { s8 input; if (sub_80BF72C() != TRUE) @@ -1050,25 +1049,25 @@ void sub_813DDA0(u8 taskId) break; case -1: PlaySE(SE_SELECT); - gUnknown_846437C[BP_ACTION_EXIT].func.void_u8(taskId); + sContextMenuActions[BP_ACTION_EXIT].func.void_u8(taskId); break; default: PlaySE(SE_SELECT); - gUnknown_846437C[gUnknown_203F384[input]].func.void_u8(taskId); + sContextMenuActions[sContextMenuOptions[input]].func.void_u8(taskId); break; } } } -void sub_813DE0C(u8 taskId) +static void Task_BerryPouch_Use_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - if (gUnknown_203F370.unk_04 == 4) + if (sStaticCnt.type == BERRYPOUCH_FROMBATTLE) { if (ItemId_GetBattleFunc(gSpecialVar_ItemId) == NULL) FieldUseFunc_OakStopsYou(taskId); @@ -1076,209 +1075,209 @@ void sub_813DE0C(u8 taskId) ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); } else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) - sub_813E274(taskId); + Task_Give_PrintThereIsNoPokemon(taskId); else ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } -void sub_813DEBC(u8 taskId) +static void Task_BerryPouch_Toss_0(u8 taskId) { s16 * data = gTasks[taskId].data; - ClearWindowTilemap(sub_813EB10(gUnknown_203F388 + 9)); - ClearWindowTilemap(sub_813EB10(6)); - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + ClearWindowTilemap(GetVariableWindowId(sContextMenuNumOptions + 9)); + ClearWindowTilemap(GetVariableWindowId(6)); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); data[8] = 1; if (data[2] == 1) - sub_813DF54(taskId); + Task_AskTossMultiple(taskId); else { - sub_813D940(taskId, gUnknown_84163DB); - sub_813D614(); - gTasks[taskId].func = sub_813E010; + InitTossQuantitySelectUI(taskId, gText_TossOutHowManyStrVar1s); + CreateScrollIndicatorArrows_TossQuantity(); + gTasks[taskId].func = Task_Toss_SelectMultiple; } } -void sub_813DF54(u8 taskId) +static void Task_AskTossMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_8416409); - sub_813E9A0(sub_813EA08(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); - sub_813EB7C(taskId, &gUnknown_846436C); + StringExpandPlaceholders(gStringVar4, gText_ThrowAwayStrVar2OfThisItemQM); + BerryPouchPrint(GetOrCreateVariableWindow(7), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + CreateYesNoMenuWin3(taskId, &sYesNoFuncs_Toss); } -void sub_813DFC8(u8 taskId) +static void Task_TossNo(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(7); + DestroyVariableWindow(7); PutWindowTilemap(1); PutWindowTilemap(0); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E010(u8 taskId) +static void Task_Toss_SelectMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) - sub_813D9F8(0, data[8], 3); + PrintxQuantityOnWindow(0, data[8], 3); else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - ClearWindowTilemap(sub_813EB10(8)); - sub_813EA98(8); - sub_813EA98(0); + ClearWindowTilemap(GetVariableWindowId(8)); + DestroyVariableWindow(8); + DestroyVariableWindow(0); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D684(); - sub_813DF54(taskId); + DestroyScrollIndicatorArrows(); + Task_AskTossMultiple(taskId); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(8); - sub_813EA98(0); + DestroyVariableWindow(8); + DestroyVariableWindow(0); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(data[0], 1); - sub_813D684(); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + DestroyScrollIndicatorArrows(); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E0DC(u8 taskId) +static void Task_TossYes(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(7); - sub_813D39C(data[1], gStringVar1); + DestroyVariableWindow(7); + CopySelectedListMenuItemName(data[1], gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar4, gUnknown_84163F4); - sub_813E9A0(sub_813EA08(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); - gTasks[taskId].func = sub_813E164; + StringExpandPlaceholders(gStringVar4, gText_ThrewAwayStrVar2StrVar1s); + BerryPouchPrint(GetOrCreateVariableWindow(9), 2, gStringVar4, 0, 2, 1, 2, 0, 1); + gTasks[taskId].func = Task_WaitButtonThenTossBerries; } -void sub_813E164(u8 taskId) +static void Task_WaitButtonThenTossBerries(u8 taskId) { s16 * data = gTasks[taskId].data; if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); RemoveBagItem(gSpecialVar_ItemId, data[8]); - sub_813EA98(9); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + DestroyVariableWindow(9); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E200(u8 taskId) +static void Task_BerryPouch_Give_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); if (CalculatePlayerPartyCount() == 0) - sub_813E274(taskId); + Task_Give_PrintThereIsNoPokemon(taskId); else { - gUnknown_203F36C->unk_000 = sub_8126EDC; + sResources->exitCallback = sub_8126EDC; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } -void sub_813E274(u8 taskId) +static void Task_Give_PrintThereIsNoPokemon(u8 taskId) { - DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, sub_813E290); + DisplayItemMessageInBerryPouch(taskId, 2, gText_ThereIsNoPokemon, Task_WaitButtonBeforeDialogueWindowDestruction); } -void sub_813E290(u8 taskId) +static void Task_WaitButtonBeforeDialogueWindowDestruction(u8 taskId) { if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_813E2B8(taskId); + Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId); } } -void sub_813E2B8(u8 taskId) +void Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EACC(5); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); + TryDestroyVariableWindow(5); + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E320(u8 taskId) +static void Task_BerryPouch_Exit_0(u8 taskId) { - sub_813EA98(gUnknown_203F388 + 9); - sub_813EA98(6); + DestroyVariableWindow(sContextMenuNumOptions + 9); + DestroyVariableWindow(6); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - sub_813D4B0(gTasks[taskId].data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(gTasks[taskId].data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E37C(u8 taskId) +static void Task_ContextMenu_FromPartyGiveMenu_0(u8 taskId) { s16 * data = gTasks[taskId].data; u16 itemId = BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1]); - if (!sub_80BF6A8(itemId)) + if (!itemid_link_can_give_berry(itemId)) { CopyItemName(itemId, gStringVar1); - StringExpandPlaceholders(gStringVar4, gUnknown_8416374); - DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E290); + StringExpandPlaceholders(gStringVar4, gText_TheStrVar1CantBeHeldHere); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_WaitButtonBeforeDialogueWindowDestruction); } else { - gUnknown_203F36C->unk_000 = c2_8123744; + sResources->exitCallback = c2_8123744; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } } -void sub_813E3FC(u8 taskId) +static void Task_ContextMenu_FromPokemonPC(u8 taskId) { - gUnknown_203F36C->unk_000 = sub_808CE60; + sResources->exitCallback = sub_808CE60; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } -void sub_813E428(u8 taskId) +static void Task_ContextMenu_Sell_0(u8 taskId) { s16 * data = gTasks[taskId].data; if (itemid_get_market_price(gSpecialVar_ItemId) == 0) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_OhNoICantBuyThat); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E2B8); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu); } else { data[8] = 1; if (data[2] == 1) { - sub_813EBD4(); - sub_813E4E4(taskId); + PrintMoneyInWin2(); + Task_AskSellMultiple(taskId); } else { @@ -1286,89 +1285,89 @@ void sub_813E428(u8 taskId) data[2] = 99; CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_HowManyWouldYouLikeToSell); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E5B8); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_Sell_PrintSelectMultipleUI); } } } -void sub_813E4E4(u8 taskId) +static void Task_AskSellMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_ICanPayThisMuch_WouldThatBeOkay); - DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, sub_813E554); + DisplayItemMessageInBerryPouch(taskId, sub_80BF8E4(), gStringVar4, Task_SellMultiple_CreateYesNoMenu); } -void sub_813E554(u8 taskId) +static void Task_SellMultiple_CreateYesNoMenu(u8 taskId) { - sub_813EBA8(taskId, &gUnknown_8464374); + CreateYesNoMenuWin4(taskId, &sYesNoFuncs_Sell); } -void sub_813E568(u8 taskId) +static void Task_SellNo(u8 taskId) { s16 * data = gTasks[taskId].data; - sub_813EA98(2); - sub_813EACC(5); + DestroyVariableWindow(2); + TryDestroyVariableWindow(5); PutWindowTilemap(2); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } -void sub_813E5B8(u8 taskId) +static void Task_Sell_PrintSelectMultipleUI(u8 taskId) { s16 * data = gTasks[taskId].data; - u8 windowId = sub_813EA08(1); + u8 windowId = GetOrCreateVariableWindow(1); ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringExpandPlaceholders(gStringVar4, gText_TimesStrVar1); - sub_813E9A0(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1); - sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); - sub_813EBD4(); - sub_813D64C(); - gTasks[taskId].func = sub_813E690; + BerryPouchPrint(windowId, 0, gStringVar4, 4, 10, 1, 0, 0xFF, 1); + SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + PrintMoneyInWin2(); + CreateScrollIndicatorArrows_SellQuantity(); + gTasks[taskId].func = Task_Sell_SelectMultiple; } -void sub_813E668(s32 price) +static void SellMultiple_UpdateSellPriceDisplay(s32 price) { - PrintMoneyAmount(sub_813EB10(1), 56, 10, price, 0); + PrintMoneyAmount(GetVariableWindowId(1), 56, 10, price, 0); } -void sub_813E690(u8 taskId) +static void Task_Sell_SelectMultiple(u8 taskId) { s16 * data = gTasks[taskId].data; if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE) { - sub_813D9F8(1, data[8], 2); - sub_813E668(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); + PrintxQuantityOnWindow(1, data[8], 2); + SellMultiple_UpdateSellPriceDisplay(itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8]); } else if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(1); + DestroyVariableWindow(1); PutWindowTilemap(0); ScheduleBgCopyTilemapToVram(0); - sub_813D684(); - sub_813E4E4(taskId); + DestroyScrollIndicatorArrows(); + Task_AskSellMultiple(taskId); } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(1); - sub_813EA98(2); - sub_813EACC(5); + DestroyVariableWindow(1); + DestroyVariableWindow(2); + TryDestroyVariableWindow(5); PutWindowTilemap(2); PutWindowTilemap(0); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); - sub_813D684(); - sub_813D4B0(data[0], 1); - sub_813DBB4(taskId); + DestroyScrollIndicatorArrows(); + BerryPouchSetArrowCursorFromListMenu(data[0], 1); + Task_CleanUpAndReturnToMain(taskId); } } -void sub_813E768(u8 taskId) +static void Task_SellYes(u8 taskId) { s16 * data = gTasks[taskId].data; PutWindowTilemap(0); @@ -1376,41 +1375,41 @@ void sub_813E768(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar3, itemid_get_market_price(BagGetItemIdByPocketPosition(POCKET_BERRY_POUCH, data[1])) / 2 * data[8], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_TurnedOverItemsWorthYen); - DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, sub_813E7F0); + DisplayItemMessageInBerryPouch(taskId, 2, gStringVar4, Task_SellBerries_PlaySfxAndRemoveBerries); } -void sub_813E7F0(u8 taskId) +static void Task_SellBerries_PlaySfxAndRemoveBerries(u8 taskId) { s16 * data = gTasks[taskId].data; PlaySE(SE_CASHIER); RemoveBagItem(gSpecialVar_ItemId, data[8]); AddMoney(&gSaveBlock1Ptr->money, itemid_get_market_price(gSpecialVar_ItemId) / 2 * data[8]); sub_809C09C(gSpecialVar_ItemId, data[8], 2); - DestroyListMenuTask(data[0], &gUnknown_203F370.unk_0A, &gUnknown_203F370.unk_08); - sub_813D8AC(); - sub_813D6F4(); - sub_813D204(); - data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_203F370.unk_0A, gUnknown_203F370.unk_08); - sub_813D4B0(data[0], 2); - PrintMoneyAmountInMoneyBox(sub_813EB10(2), GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_813E8D4; + DestroyListMenuTask(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow); + SortAndCountBerries(); + SanitizeListMenuSelectionParams(); + SetUpListMenuTemplate(); + data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sStaticCnt.listMenuScrollOffset, sStaticCnt.listMenuSelectedRow); + BerryPouchSetArrowCursorFromListMenu(data[0], 2); + PrintMoneyAmountInMoneyBox(GetVariableWindowId(2), GetMoney(&gSaveBlock1Ptr->money), 0); + gTasks[taskId].func = Task_SellBerries_WaitButton; } -void sub_813E8D4(u8 taskId) +static void Task_SellBerries_WaitButton(u8 taskId) { if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - sub_813EA98(2); + DestroyVariableWindow(2); PutWindowTilemap(2); - sub_813E2B8(taskId); + Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu(taskId); } } -void sub_813E910(void) +static void BerryPouchInitWindows(void) { u8 i; - InitWindows(gUnknown_84643B8); + InitWindows(sWindowTemplates_Main); DeactivateAllTextPrinters(); TextWindow_SetUserSelectedFrame(0, 0x001, 0xE0); TextWindow_LoadResourcesStdFrame0(0, 0x013, 0xD0); @@ -1424,102 +1423,102 @@ void sub_813E910(void) ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); for (i = 0; i < 14; i++) - gUnknown_203F38C[i] = 0xFF; + sVariableWindowIds[i] = 0xFF; } -void sub_813E9A0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 speed, u8 colorIdx) +static void BerryPouchPrint(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_8464448[colorIdx], speed, str); + AddTextPrinterParameterized4(windowId, fontId, x, y, letterSpacing, lineSpacing, sTextColors[colorIdx], speed, str); } -u8 sub_813EA08(u8 winIdx) +static u8 GetOrCreateVariableWindow(u8 winIdx) { - u8 retval = gUnknown_203F38C[winIdx]; + u8 retval = sVariableWindowIds[winIdx]; if (retval == 0xFF) { - gUnknown_203F38C[winIdx] = AddWindow(&gUnknown_84643D8[winIdx]); + sVariableWindowIds[winIdx] = AddWindow(&sWindowTemplates_Variable[winIdx]); if (winIdx == 2 || winIdx == 6 || winIdx == 7 || winIdx == 8 || winIdx == 9) - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x00A, 0xC); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x00A, 0xC); else - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE); ScheduleBgCopyTilemapToVram(2); - retval = gUnknown_203F38C[winIdx]; + retval = sVariableWindowIds[winIdx]; } return retval; } -void sub_813EA78(u8 winIdx) +static void VariableWindowSetAltFrameTileAndPalette(u8 winIdx) { - DrawStdFrameWithCustomTileAndPalette(gUnknown_203F38C[winIdx], FALSE, 0x001, 0xE); + DrawStdFrameWithCustomTileAndPalette(sVariableWindowIds[winIdx], FALSE, 0x001, 0xE); } -void sub_813EA98(u8 winIdx) +static void DestroyVariableWindow(u8 winIdx) { - ClearStdWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203F38C[winIdx]); - RemoveWindow(gUnknown_203F38C[winIdx]); + ClearStdWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE); + ClearWindowTilemap(sVariableWindowIds[winIdx]); + RemoveWindow(sVariableWindowIds[winIdx]); ScheduleBgCopyTilemapToVram(2); - gUnknown_203F38C[winIdx] = 0xFF; + sVariableWindowIds[winIdx] = 0xFF; } -void sub_813EACC(u8 winIdx) +static void TryDestroyVariableWindow(u8 winIdx) { - if (gUnknown_203F38C[winIdx] != 0xFF) + if (sVariableWindowIds[winIdx] != 0xFF) { - ClearDialogWindowAndFrameToTransparent(gUnknown_203F38C[winIdx], FALSE); - ClearWindowTilemap(gUnknown_203F38C[winIdx]); - RemoveWindow(gUnknown_203F38C[winIdx]); + ClearDialogWindowAndFrameToTransparent(sVariableWindowIds[winIdx], FALSE); + ClearWindowTilemap(sVariableWindowIds[winIdx]); + RemoveWindow(sVariableWindowIds[winIdx]); PutWindowTilemap(1); ScheduleBgCopyTilemapToVram(0); ScheduleBgCopyTilemapToVram(2); - gUnknown_203F38C[winIdx] = 0xFF; + sVariableWindowIds[winIdx] = 0xFF; } } -u8 sub_813EB10(u8 winIdx) +static u8 GetVariableWindowId(u8 winIdx) { - return gUnknown_203F38C[winIdx]; + return sVariableWindowIds[winIdx]; } void DisplayItemMessageInBerryPouch(u8 taskId, u8 fontId, const u8 * str, TaskFunc followUpFunc) { - if (gUnknown_203F38C[5] == 0xFF) - gUnknown_203F38C[5] = AddWindow(&gUnknown_84643D8[5]); - DisplayMessageAndContinueTask(taskId, gUnknown_203F38C[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc); + if (sVariableWindowIds[5] == 0xFF) + sVariableWindowIds[5] = AddWindow(&sWindowTemplates_Variable[5]); + DisplayMessageAndContinueTask(taskId, sVariableWindowIds[5], 0x013, 0xD, fontId, GetTextSpeedSetting(), str, followUpFunc); ScheduleBgCopyTilemapToVram(2); } -void sub_813EB7C(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin3(u8 taskId, const struct YesNoFuncTable * ptrs) { - CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[3], 2, 0, 2, 0x001, 0xE, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[3], 2, 0, 2, 0x001, 0xE, ptrs); } -void sub_813EBA8(u8 taskId, const struct YesNoFuncTable * ptrs) +static void CreateYesNoMenuWin4(u8 taskId, const struct YesNoFuncTable * ptrs) { - CreateYesNoMenuWithCallbacks(taskId, &gUnknown_84643D8[4], 2, 0, 2, 0x001, 0xE, ptrs); + CreateYesNoMenuWithCallbacks(taskId, &sWindowTemplates_Variable[4], 2, 0, 2, 0x001, 0xE, ptrs); } -void sub_813EBD4(void) +static void PrintMoneyInWin2(void) { - PrintMoneyAmountInMoneyBoxWithBorder(sub_813EA08(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money)); + PrintMoneyAmountInMoneyBoxWithBorder(GetOrCreateVariableWindow(2), 0x00A, 0xC, GetMoney(&gSaveBlock1Ptr->money)); } -void sub_813EC08(void) +static void CreateBerryPouchSprite(void) { - gUnknown_203F39C = CreateSprite(&gUnknown_84644B8, 40, 76, 0); + sBerryPouchSpriteId = CreateSprite(&sSpriteTemplate_BerryPouch, 40, 76, 0); } -void sub_813EC28(void) +static void StartBerryPouchSpriteWobbleAnim(void) { - struct Sprite * sprite = &gSprites[gUnknown_203F39C]; + struct Sprite * sprite = &gSprites[sBerryPouchSpriteId]; if (sprite->affineAnimEnded) { StartSpriteAffineAnim(sprite, 1); - sprite->callback = sub_813EC64; + sprite->callback = SpriteCB_BerryPouchWaitWobbleAnim; } } -void sub_813EC64(struct Sprite * sprite) +static void SpriteCB_BerryPouchWaitWobbleAnim(struct Sprite * sprite) { if (sprite->affineAnimEnded) { |