summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/berry_pouch.c993
-rw-r--r--src/item_use.c8
-rw-r--r--src/menu_helpers.c2
3 files changed, 501 insertions, 502 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)
{
diff --git a/src/item_use.c b/src/item_use.c
index 3653a1699..5fa9390c1 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
void InitBerryPouchFromBag(void)
{
- InitBerryPouch(0, ReturnToBagFromKeyItem, 0);
+ InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0);
}
void Task_InitBerryPouchFromField(u8 taskId)
@@ -444,7 +444,7 @@ void Task_InitBerryPouchFromField(u8 taskId)
{
CleanupOverworldWindowsAndTilemaps();
sub_80A1184();
- InitBerryPouch(0, CB2_ReturnToField, 1);
+ InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_ReturnToField, 1);
DestroyTask(taskId);
}
}
@@ -457,7 +457,7 @@ void BattleUseFunc_BerryPouch(u8 taskId)
void InitBerryPouchFromBattle(void)
{
- InitBerryPouch(4, sub_8107ECC, 0);
+ InitBerryPouch(BERRYPOUCH_FROMBATTLE, sub_8107ECC, 0);
}
void FieldUseFunc_TeachyTv(u8 taskId)
@@ -852,7 +852,7 @@ void FieldUseFunc_OakStopsYou(u8 taskId)
if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH)
{
StringExpandPlaceholders(gStringVar4, gUnknown_8416425);
- DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, sub_813E2B8);
+ DisplayItemMessageInBerryPouch(taskId, 4, gStringVar4, Task_BerryPouch_DestroyDialogueWindowAndRefreshListMenu);
}
else
sub_80A1110(taskId, gTasks[taskId].data[3]);
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index fdcb9a56e..06e7bb08b 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -95,7 +95,7 @@ u8 sub_80BF66C(void)
return 0;
}
-bool8 sub_80BF6A8(u16 itemId)
+bool8 itemid_link_can_give_berry(u16 itemId)
{
if (itemId != ITEM_ENIGMA_BERRY)
return TRUE;