summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mon_markings.c1
-rw-r--r--src/pokemon_storage_system.c743
2 files changed, 740 insertions, 4 deletions
diff --git a/src/mon_markings.c b/src/mon_markings.c
index 30015dbef..48f0f5ecb 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -390,7 +390,6 @@ void sub_811FAF8(void)
}
}
-
bool8 sub_811FBA4(void)
{
u16 i;
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 465b97da2..b7b0e1295 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1,12 +1,16 @@
#include "global.h"
+#include "alloc.h"
#include "bg.h"
+#include "dma3.h"
#include "event_data.h"
#include "field_screen.h"
#include "field_weather.h"
#include "gpu_regs.h"
#include "international_string_util.h"
+#include "item_menu.h"
#include "main.h"
#include "menu.h"
+#include "mon_markings.h"
#include "overworld.h"
#include "palette.h"
#include "pokemon.h"
@@ -16,11 +20,57 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
+#include "text_window.h"
#include "walda_phrase.h"
#include "window.h"
+#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/species.h"
+enum
+{
+ BOX_OPTION_WITHDRAW,
+ BOX_OPTION_DEPOSIT,
+ BOX_OPTION_MOVE_MONS,
+ BOX_OPTION_MOVE_ITEMS,
+ BOX_OPTION_EXIT,
+};
+
+enum
+{
+ PC_TEXT_EXIT_BOX,
+ PC_TEXT_WHAT_YOU_DO,
+ PC_TEXT_PICK_A_THEME,
+ PC_TEXT_PICK_A_WALLPAPER,
+ PC_TEXT_IS_SELECTED,
+ PC_TEXT_JUMP_TO_WHICH_BOX,
+ PC_TEXT_DEPOSIT_IN_WHICH_BOX,
+ PC_TEXT_WAS_DEPOSITED,
+ PC_TEXT_BOX_IS_FULL,
+ PC_TEXT_RELEASE_POKE,
+ PC_TEXT_WAS_RELEASED,
+ PC_TEXT_BYE_BYE,
+ PC_TEXT_MARK_POKE,
+ PC_TEXT_LAST_POKE,
+ PC_TEXT_PARTY_FULL,
+ PC_TEXT_HOLDING_POKE,
+ PC_TEXT_WHICH_ONE_WILL_TAKE,
+ PC_TEXT_CANT_RELEASE_EGG,
+ PC_TEXT_CONTINUE_BOX,
+ PC_TEXT_CAME_BACK,
+ PC_TEXT_WORRIED,
+ PC_TEXT_SURPRISE,
+ PC_TEXT_PLEASE_REMOVE_MAIL,
+ PC_TEXT_IS_SELECTED2,
+ PC_TEXT_GIVE_TO_MON,
+ PC_TEXT_PLACED_IN_BAG,
+ PC_TEXT_BAG_FULL,
+ PC_TEXT_PUT_IN_BAG,
+ PC_TEXT_ITEM_IS_HELD,
+ PC_TEXT_CHANGED_TO_ITEM,
+ PC_TEXT_CANT_STORE_MAIL,
+};
+
IWRAM_DATA u8 gUnknown_03000F78[0x188];
extern const u8 gText_PartyFull[];
@@ -28,16 +78,26 @@ extern const u8 gText_Box[];
extern const u8 gText_JustOnePkmn[];
extern u8 gUnknown_02039D00;
+extern u8 sBoxOption;
+extern u8 gUnknown_02039D10;
+extern u8 gUnknown_02039D0E;
+extern bool8 sInPartyMenu;
+extern u8 gUnknown_02039D0F;
+extern u16 gUnknown_02039D12;
+
+extern void sub_80F9BCC(u16, u16, u8);
+extern bool8 sub_80F9C1C(void);
// This file's functions.
void StorageSystemCreatePrimaryMenu(u8 whichMenu, s16 *windowIdPtr);
-void sub_80C7D74(u8);
+void sub_80C7D74(u8 boxOption);
u8 sub_80CAEA0(void);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
void SetCurrentBox(u8 boxId);
+void sub_80CC32C(u8 boxId);
void ClearMonInBox(u8 boxId, u8 boxPos);
-void ResetWaldaWallpaper(void);
void sub_80C7958(u8 curBox);
+void ResetWaldaWallpaper(void);
void sub_80C7B14(void);
void sub_80C7BB4(void);
void sub_80CA028(void);
@@ -45,7 +105,37 @@ void sub_80C7B80(void);
void sub_80D2AA4(void);
void sub_80C7BE4(void);
void sub_80CAA14(void);
+void sub_80CE790(void);
+void sub_80CE8E4(void);
+void sub_80C9F6C(void);
+void sub_80CA044(void);
+void sub_80CA0C8(void);
+void sub_80CD36C(void);
+void sub_80CD3EC(void);
+void sub_80CAC1C(void);
+void sub_80C9FEC(void);
+void sub_80CAEAC(void);
+void sub_80D0C60(void);
+void sub_80CDC0C(void);
+void sub_80CAF04(void);
+void sub_80CA0D8(void);
+void sub_80CADC4(void);
+void sub_80CA704(void);
void sub_80C7CF4(struct Sprite *sprite);
+bool8 sub_80CA0A4(void);
+bool8 sub_80D0164(void);
+bool8 sub_80CC35C(void);
+void sub_80C7FA8(u8 taskId);
+void sub_80C9E50(u8 taskId);
+void sub_80C81AC(u8 taskId);
+void box_related_2(u8 taskId);
+void task_pokemon_box_related(u8 taskId);
+void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
+void sub_80D259C(u8 arg0);
+void sub_80D01D0(u8 arg0);
+void sub_80D2644(u8 arg0, u16 arg1, const u16 *arg2, u16 arg3, u16 arg4);
+void sub_80D2770(u8 arg0, u16 arg1, u16 arg2);
+void PrintStorageActionText(u8 arg0);
struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
// const rom data
@@ -58,7 +148,16 @@ const struct PSS_MenuStringPtrs gUnknown_085716C0[] =
{gText_SeeYa, gText_SeeYaDescription}
};
-const struct WindowTemplate gUnknown_085716E8 = {0, 1, 1, 0x11, 0xA, 0xF, 1};
+const struct WindowTemplate gUnknown_085716E8 =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 17,
+ .height = 10,
+ .paletteNum = 15,
+ .baseBlock = 0x1,
+};
static const union AnimCmd sSpriteAnim_85716F0[] =
{
@@ -109,6 +208,170 @@ const u8 gUnknown_08571737[] = _("/30");
const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/unknown/unknown_57173C.gbapal");
const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
+const u32 gUnknown_085720DC[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz");
+const u32 gUnknown_08572174[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz");
+const u32 gUnknown_08572280[] = INCBIN_U32("graphics/unknown/unknown_572280.gbapal");
+const u32 gUnknown_085722A0[] = INCBIN_U32("graphics/unknown/unknown_5722A0.bin.lz");
+
+const u16 gUnknown_0857239C[] =
+{
+ 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118,
+ 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118,
+};
+
+const u16 gUnknown_085723DC[] = INCBIN_U16("graphics/unknown/unknown_5723DC.gbapal");
+const u16 gUnknown_085723FC[] = INCBIN_U16("graphics/unknown/unknown_5723FC.gbapal");
+const u16 gUnknown_0857241C[] = INCBIN_U16("graphics/unknown/unknown_57241C.gbapal");
+const u16 gUnknown_0857243C[] = INCBIN_U16("graphics/unknown/unknown_57243C.gbapal");
+
+const u16 gUnknown_0857245C[] =
+{
+ 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182,
+ 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
+ 0x018a, 0x018b, 0x018c, 0x018d
+};
+const u16 gUnknown_085724A4[] =
+{
+ 0x1140, 0x1141, 0x1141, 0x1142, 0x1150, 0x1151, 0x1151, 0x1152, 0x1160, 0x1161, 0x1161, 0x1162,
+};
+const u16 gUnknown_085724BC[] =
+{
+ 0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165,
+};
+
+const u16 gWaveformPalette[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
+const u32 gWaveformTiles[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp");
+const u32 gUnknown_085726B4[] = INCBIN_U32("graphics/unused/unknown_5726B4.gbapal");
+const u32 gUnknown_085726F4[] = INCBIN_U32("graphics/unknown/unknown_5726F4.gbapal");
+
+const struct WindowTemplate gUnknown_08572714[] =
+{
+ { // 0
+ .bg = 1,
+ .tilemapLeft = 0,
+ .tilemapTop = 11,
+ .width = 9,
+ .height = 7,
+ .paletteNum = 3,
+ .baseBlock = 0xC0,
+ },
+ { // 1
+ .bg = 0,
+ .tilemapLeft = 11,
+ .tilemapTop = 17,
+ .width = 18,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x14,
+ },
+ { // 2
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 13,
+ .width = 21,
+ .height = 7,
+ .paletteNum = 15,
+ .baseBlock = 0x14,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+const struct BgTemplate gUnknown_08572734[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x100
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 27,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+const struct SpritePalette gWaveformSpritePalette =
+{
+ gWaveformPalette, 0xDACA
+};
+
+const struct SpriteSheet gWaveformSpriteSheet =
+{
+ gWaveformTiles, sizeof(gWaveformTiles), 5
+};
+
+const struct OamData gOamData_857286C;
+const struct SpriteTemplate gUnknown_08572754 =
+{
+ .tileTag = 2,
+ .paletteTag = 0xDAC6,
+ .oam = &gOamData_857286C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct StorageAction gPCStorageActionTexts[] =
+{
+ {gText_ExitFromBox, 0},
+ {gText_WhatDoYouWantToDo, 0},
+ {gText_PleasePickATheme, 0},
+ {gText_PickTheWallpaper, 0},
+ {gText_PkmnIsSelected, 1},
+ {gText_JumpToWhichBox, 0},
+ {gText_DepositInWhichBox, 0},
+ {gText_PkmnWasDeposited, 1},
+ {gText_BoxIsFull2, 0},
+ {gText_ReleaseThisPokemon, 0},
+ {gText_PkmnWasReleased, 4},
+ {gText_ByeByePkmn, 6},
+ {gText_MarkYourPkmn, 0},
+ {gText_ThatsYourLastPkmn, 0},
+ {gText_YourPartysFull, 0},
+ {gText_YoureHoldingAPkmn, 0},
+ {gText_WhichOneWillYouTake, 0},
+ {gText_YouCantReleaseAnEgg, 0},
+ {gText_ContinueBoxOperations, 0},
+ {gText_PkmnCameBack, 1},
+ {gText_WasItWorriedAboutYou, 0},
+ {gText_FourEllipsesExclamation, 0},
+ {gText_PleaseRemoveTheMail, 0},
+ {gText_PkmnIsSelected, 7},
+ {gText_GiveToAPkmn, 0},
+ {gText_PlacedItemInBag, 7},
+ {gText_BagIsFull2, 0},
+ {gText_PutItemInBag, 0},
+ {gText_ItemIsNowHeld, 7},
+ {gText_ChangedToNewItem, 7},
+ {gText_MailCantBeStored, 0},
+};
// code
u8 CountMonsInBox(u8 boxId)
@@ -672,3 +935,477 @@ void c2_Box(void)
AnimateSprites();
BuildOamBuffer();
}
+
+void sub_80C7D74(u8 boxOption)
+{
+ ResetTasks();
+ sBoxOption = boxOption;
+ gUnknown_02039D08 = Alloc(0x62C4);
+ if (gUnknown_02039D08 == NULL)
+ {
+ SetMainCallback2(sub_80C7678);
+ }
+ else
+ {
+ gUnknown_02039D08->boxOption = boxOption;
+ gUnknown_02039D08->unk_0003 = 0;
+ gUnknown_02039D12 = 0;
+ gUnknown_02039D08->state = 0;
+ gUnknown_02039D08->taskId = CreateTask(sub_80C7FA8, 3);
+ gUnknown_02039D10 = StorageGetCurrentBox();
+ SetMainCallback2(c2_Box);
+ }
+}
+
+void c2_808CE60(void)
+{
+ ResetTasks();
+ gUnknown_02039D08 = Alloc(0x62C4);
+ if (gUnknown_02039D08 == NULL)
+ {
+ SetMainCallback2(sub_80C7678);
+ }
+ else
+ {
+ gUnknown_02039D08->boxOption = sBoxOption;
+ gUnknown_02039D08->unk_0003 = 1;
+ gUnknown_02039D08->state = 0;
+ gUnknown_02039D08->taskId = CreateTask(sub_80C7FA8, 3);
+ SetMainCallback2(c2_Box);
+ }
+}
+
+void sub_80C7E50(void)
+{
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+}
+
+void sub_80C7E98(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ ClearDma3Requests();
+ gReservedSpriteTileCount = 0x280;
+ sub_80D2A90(&gUnknown_02039D08->unk_0020, gUnknown_02039D08->unk_0028, 8);
+ gKeyRepeatStartDelay = 20;
+ clear_scheduled_bg_copies_to_vram();
+ sub_80D259C(3);
+ sub_80D2644(0, 1, gUnknown_0857239C, 8, 4);
+ sub_80D2770(0, 1, 0);
+ gUnknown_02039D08->unk_02C7 = 0;
+}
+
+void sub_80C7F1C(void)
+{
+ sub_80CDC0C();
+ sInPartyMenu = (gUnknown_02039D08->boxOption == BOX_OPTION_DEPOSIT);
+ gUnknown_02039D0E = 0;
+}
+
+void sub_80C7F4C(void)
+{
+ if (gUnknown_02039D08->boxOption == BOX_OPTION_MOVE_ITEMS)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(7, 11));
+ }
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP);
+}
+
+void SetPSSCallback(TaskFunc newFunc)
+{
+ gTasks[gUnknown_02039D08->taskId].func = newFunc;
+ gUnknown_02039D08->state = 0;
+}
+
+void sub_80C7FA8(u8 taskId)
+{
+ switch (gUnknown_02039D08->state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ sub_80C7E98();
+ if (gUnknown_02039D08->unk_0003 != 0)
+ {
+ switch (gUnknown_02039D0F)
+ {
+ case 1:
+ sub_80CE790();
+ break;
+ case 0:
+ sub_80CE8E4();
+ break;
+ case 2:
+ sub_80C9F6C();
+ break;
+ }
+ }
+ sub_80CA044();
+ sub_80CA0C8();
+ break;
+ case 1:
+ if (!sub_80CA0A4())
+ {
+ SetPSSCallback(sub_80C9E50);
+ return;
+ }
+ break;
+ case 2:
+ PutWindowTilemap(0);
+ ClearWindowTilemap(1);
+ CpuFill32(0, (void *)VRAM, 0x200);
+ LoadUserWindowBorderGfx(1, 0xB, 0xE0);
+ break;
+ case 3:
+ sub_80C7E50();
+ if (gUnknown_02039D08->unk_0003 == 0)
+ sub_80C7F1C();
+ break;
+ case 4:
+ sub_80CAF04();
+ if (gUnknown_02039D08->unk_0003 == 0)
+ sub_80CD36C();
+ else
+ sub_80CD3EC();
+ break;
+ case 5:
+ if (!sub_80D0164())
+ {
+ SetPSSCallback(sub_80C9E50);
+ return;
+ }
+ else
+ {
+ sub_80C9FEC();
+ sub_80CAC1C();
+ }
+ break;
+ case 6:
+ sub_80CA0D8();
+ break;
+ case 7:
+ sub_80CA704();
+ break;
+ case 8:
+ sub_80CC32C(StorageGetCurrentBox());
+ break;
+ case 9:
+ if (sub_80CC35C())
+ return;
+
+ if (gUnknown_02039D08->boxOption != BOX_OPTION_MOVE_ITEMS)
+ {
+ gUnknown_02039D08->field_DA4.baseTileTag = 0xD;
+ gUnknown_02039D08->field_DA4.basePaletteTag = 0xDACE;
+ sub_811F90C(&gUnknown_02039D08->field_DA4);
+ sub_811FA90();
+ }
+ else
+ {
+ sub_80D0C60();
+ sub_80CAEAC();
+ }
+ break;
+ case 10:
+ sub_80C7F4C();
+ if (gUnknown_02039D08->unk_0003 == 0)
+ {
+ BlendPalettes(0xFFFFFFFF, 0x10, 0);
+ SetPSSCallback(sub_80C81AC);
+ }
+ else
+ {
+ BlendPalettes(0xFFFFFFFF, 0x10, 0);
+ SetPSSCallback(box_related_2);
+ }
+ SetVBlankCallback(sub_80C7D28);
+ return;
+ default:
+ return;
+ }
+
+ gUnknown_02039D08->state++;
+}
+
+void sub_80C81AC(u8 taskId)
+{
+ switch (gUnknown_02039D08->state)
+ {
+ case 0:
+ PlaySE(SE_PC_LOGIN);
+ sub_80F9BCC(0x14, 0, 1);
+ gUnknown_02039D08->state++;
+ break;
+ case 1:
+ if (!sub_80F9C1C())
+ SetPSSCallback(task_pokemon_box_related);
+ break;
+ }
+}
+
+void box_related_2(u8 taskId)
+{
+ switch (gUnknown_02039D08->state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0x10, 0, RGB_BLACK);
+ gUnknown_02039D08->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ if (gUnknown_02039D0F == 2 && gSpecialVar_ItemId != 0)
+ {
+ PrintStorageActionText(0x1C);
+ gUnknown_02039D08->state++;
+ }
+ else
+ {
+ SetPSSCallback(task_pokemon_box_related);
+ }
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy() && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_80CADC4();
+ gUnknown_02039D08->state++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ SetPSSCallback(task_pokemon_box_related);
+ break;
+ }
+}
+
+/*
+void task_pokemon_box_related(u8 taskId)
+{
+ switch (gUnknown_02039D08->state)
+ {
+ case 0:
+ switch (sub_80CF9EC())
+ {
+ case 1:
+ PlaySE(SE_SELECT);
+ gUnknown_02039D08->state = 1;
+ break;
+ case 5:
+ if (gUnknown_02039D08->boxOption != 0 && gUnknown_02039D08->boxOption != 1)
+ {
+ PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE);
+ gUnknown_02039D08->state = 3;
+ }
+ else
+ {
+ sub_80CDC0C();
+ SetPSSCallback(sub_80C87A8);
+ }
+ break;
+ case 6:
+ if (gUnknown_02039D08->unk_0005 == 2)
+ {
+ if (sub_80CEAD0() && ItemIsMail(gUnknown_02039D08->field_CE6))
+ gUnknown_02039D08->state = 5;
+ else
+ SetPSSCallback(sub_80C87E8);
+ }
+ break;
+ case 4:
+ SetPSSCallback(sub_80C9BE8);
+ break;
+ case 16:
+ SetPSSCallback(sub_80C9D1C);
+ break;
+ case 7:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C972C);
+ break;
+ case 8:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C8864);
+ break;
+ case 9:
+ PlaySE(SE_SELECT);
+ gUnknown_02039D08->field_2CA = StorageGetCurrentBox() + 1;
+ if (gUnknown_02039D08->field_2C >= TOTAL_BOXES_COUNT)
+ gUnknown_02039D08->field_2CA = 0;
+ if (gUnknown_02039D08->boxOption != 3)
+ {
+ sub_80CC464(gUnknown_02039D08->field_2CA);
+ gUnknown_02039D08->state = 2;
+ }
+ else
+ {
+ sub_80CFEA8();
+ gUnknown_02039D08->state = 10;
+ }
+ break;
+ case 10:
+ PlaySE(SE_SELECT);
+ gUnknown_02039D08->field_2CA = StorageGetCurrentBox() - 1;
+ if (gUnknown_02039D08->field_2CA < 0)
+ gUnknown_02039D08->field_2CA = TOTAL_BOXES_COUNT;
+ if (gUnknown_02039D08->boxOption != 3)
+ {
+ sub_80CC464(gUnknown_02039D08->field_2CA);
+ gUnknown_02039D08->state = 2;
+ }
+ else
+ {
+ sub_80CFEA8();
+ gUnknown_02039D08->state = 10;
+ }
+ break;
+ case 11:
+ if (!sub_80CEA30())
+ {
+ if (ItemIsMail(gUnknown_02039D08->field_CE6))
+ {
+ gUnknown_02039D08->state = 5;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C8D78);
+ }
+ }
+ else
+ {
+ gUnknown_02039D08->state = 4;
+ }
+ break;
+ case 13:
+ if (sub_80CEA30())
+ {
+ gUnknown_02039D08->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C8B90);
+ }
+ break;
+ case 14:
+ if (!sub_80CEA30())
+ {
+ gUnknown_02039D08->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(c3_0808DC50);
+ }
+ break;
+ case 12:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C8C90);
+ break;
+ case 15:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C8BEC);
+ break;
+ case 16:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C9128);
+ break;
+ case 17:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C91DC);
+ break;
+ case 18:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80C93B0);
+ break;
+ case 20:
+ PlaySE(SE_SELECT);
+ sub_80D01D0(0);
+ gUnknown_02039D08->state = 7;
+ break;
+ case 22:
+ sub_80D01D0(1);
+ gUnknown_02039D08->state = 8;
+ break;
+ case 21:
+ PlaySE(SE_SELECT);
+ sub_80D01D0(2);
+ gUnknown_02039D08->state = 9;
+ break;
+ case 23:
+ sub_80D01D0(4);
+ gUnknown_02039D08->state = 7;
+ break;
+ case 25:
+ PlaySE(SE_SELECT);
+ sub_80D01D0(4);
+ gUnknown_02039D08->state = 9;
+ break;
+ case 26:
+ PlaySE(SE_SELECT);
+ sub_80D01D0(5);
+ gUnknown_02039D08->state = 7;
+ break;
+ }
+ break;
+ case 1:
+ if (!sub_809AC00())
+ {
+ if (sub_809BF48())
+ sub_80986E8();
+ else
+ sub_8098710();
+ if (gUnknown_02039D08->unk_11f6)
+ BoxSetMosaic();
+ gUnknown_02039D08->state = 0;
+ }
+ break;
+ case 2:
+ if (!sub_8099D34())
+ {
+ gPokemonStorage.currentBox = gUnknown_02039D08->unk_08b2;
+ if (!gUnknown_0203847C && !sub_80CEAD0())
+ {
+ sub_809B440();
+ BoxSetMosaic();
+ }
+ gUnknown_02039D08->state = 0;
+ }
+ break;
+ case 3:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ gUnknown_02039D08->state = 0;
+ }
+ break;
+ case 4:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_LAST_POKE);
+ gUnknown_02039D08->state = 6;
+ break;
+ case 5:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL);
+ gUnknown_02039D08->state = 6;
+ break;
+ case 6:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+*/