Storage up to icon palettes

This commit is contained in:
DizzyEggg
2018-12-12 23:19:50 +01:00
parent 74746603ad
commit 59a69eb627
7 changed files with 664 additions and 1410 deletions
+634 -59
View File
@@ -3,6 +3,7 @@
#include "bg.h"
#include "decompress.h"
#include "dma3.h"
#include "dynamic_placeholder_text_util.h"
#include "event_data.h"
#include "field_screen.h"
#include "field_weather.h"
@@ -19,6 +20,7 @@
#include "overworld.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
#include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h"
#include "script.h"
@@ -33,6 +35,13 @@
#include "constants/songs.h"
#include "constants/species.h"
struct WallpaperTable
{
const u32 *tiles;
const u32 *tileMap;
const u16 *palettes;
};
enum
{
BOX_OPTION_WITHDRAW,
@@ -77,6 +86,18 @@ enum
PC_TEXT_CANT_STORE_MAIL,
};
enum
{
PC_TEXT_FMT_NORMAL,
PC_TEXT_FMT_MON_NAME_1,
PC_TEXT_FMT_MON_NAME_2,
PC_TEXT_FMT_MON_NAME_3,
PC_TEXT_FMT_MON_NAME_4,
PC_TEXT_FMT_MON_NAME_5,
PC_TEXT_FMT_MON_NAME_6,
PC_TEXT_FMT_ITEM_NAME,
};
enum
{
SCREEN_CHANGE_EXIT_BOX,
@@ -99,8 +120,8 @@ enum
IWRAM_DATA u8 gUnknown_03000F78[0x188];
extern u8 gUnknown_02039D00;
extern u8 sBoxOption;
extern u8 sPreviousBoxOption;
extern u8 sCurrentBoxOption;
extern u8 gUnknown_02039D10;
extern u8 gUnknown_02039D0E;
extern bool8 sInPartyMenu;
@@ -122,7 +143,7 @@ extern const u8 gText_JustOnePkmn[];
// This file's functions.
void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
void Cb2_EnterPSS(u8 boxOption);
u8 sub_80CAEA0(void);
u8 GetCurrentBoxOption(void);
u8 sub_80CF9EC(void);
u8 sub_80CDC2C(void);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
@@ -141,7 +162,9 @@ void sub_80CAA14(void);
void sub_80CE790(void);
void sub_80CE8E4(void);
void GiveChosenBagItem(void);
void sub_80CA888(void);
void SetUpHidePartyMenu(void);
void sub_80CBB9C(void);
void sub_80D11CC(void);
void LoadPSSMenuGfx(void);
void LoadWaveformSpritePalette(void);
void sub_80CDC18(void);
@@ -176,9 +199,12 @@ void sub_80D1194(void);
void PrintCursorMonInfo(void);
void sub_80CA65C(void);
void sub_80CADD8(void);
void sub_80CFEF0(void);
void sub_80D1818(void);
void sub_80CAA74(void);
void sub_80D17B4(void);
void sub_80CE760(void);
void sub_80CDBA0(void);
void sub_80CE7E8(void);
void sub_80CFECC(void);
void sub_80CA9EC(void);
@@ -187,6 +213,7 @@ void sub_80CAB20(void);
void sub_80CE22C(void);
void sub_80CB950(void);
void sub_80CA9C0(void);
void SetUpDoShowPartyMenu(void);
void BoxSetMosaic(void);
void sub_80C7CF4(struct Sprite *sprite);
bool8 InitPSSWindows(void);
@@ -195,15 +222,14 @@ bool8 sub_80CE2A8(void);
bool8 sub_80D0164(void);
bool8 sub_80CC35C(void);
bool8 sub_80D01E4(void);
bool8 sub_80CAB4C(void);
bool8 sub_80D184C(void);
bool8 sub_80D18E4(void);
bool8 sub_80CAB70(void);
bool8 DoShowPartyMenu(void);
bool8 sub_80D1218(void);
bool8 sub_80CB9BC(void);
bool8 ScrollToBox(void);
bool8 sub_80CD554(void);
bool8 sub_80CA8C8(void);
bool8 HidePartyMenu(void);
bool8 sub_80D127C(void);
bool8 sub_80CA2B8(void);
bool8 DoWallpaperGfxChange(void);
@@ -212,6 +238,7 @@ bool8 sub_80D00A8(void);
bool8 CanMoveMon(void);
bool8 CanShifMon(void);
bool8 IsCursorOnCloseBox(void);
bool8 IsCursorOnBox(void);
bool8 IsMonBeingMoved(void);
bool8 sub_80CE19C(u8 arg0);
void Cb_InitPSS(u8 taskId);
@@ -239,7 +266,7 @@ void Cb_ShowMarkMenu(u8 taskId);
void Cb_ShowMonSummary(u8 taskId);
void Cb_ReleaseMon(u8 taskId);
void task_pokemon_box_related(u8 taskId);
void Cb_ReshowPSSAfterChoosingBagItem(u8 taskId);
void Cb_ReshowPSS(u8 taskId);
void Cb_MainPSS(u8 taskId);
void Cb_JumpBox(u8 taskId);
void Cb_HandleWallpapers(u8 taskId);
@@ -254,11 +281,13 @@ void sub_80D2918(u8 arg0);
void sub_80CC0D4(u8 arg0);
void sub_80CDC38(u8 arg0);
void sub_80CE9A8(u8 markings);
void sub_80CAD9C(u8 arg0);
void ShowYesNoWindow(s8 cursorPos);
void sub_80CDBF8(u8 arg0);
void sub_80D01D0(u8 arg0);
void sub_80CD1A8(bool8 arg0);
void sub_80D2644(u8 arg0, u16 arg1, const u16 *arg2, u16 arg3, u16 arg4);
void sub_80CA984(bool8 arg0);
void sub_80CB7E8(bool8 arg0);
void sub_80D2644(u8 arg0, u16 arg1, const void *arg2, u16 arg3, u16 arg4);
void sub_80D2770(u8 arg0, u16 arg1, u16 arg2);
void PrintStorageActionText(u8 id);
s16 sub_80D00AC(void);
@@ -270,12 +299,20 @@ void sub_80D1114(bool8 inParty, u8 boxPosition);
void sub_80D0FAC(bool8 inParty, u8 boxPosition);
struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
void SetWallpaperForCurrentBox(u8 wallpaperId);
void sub_80CAE0C(u8 arg0);
void sub_80CAE0C(u8 wallpaperSet);
u16 GetMovingItem(void);
void SetCurrentBoxMonData(s32 monId, s32 request, const void *value);
void LoadCursorMonGfx(u16 species, u32 pid);
void sub_80CA2D0(struct Sprite *sprite);
void sub_80D27AC(u8 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
void sub_80D27F4(u8 arg0, u8 arg1, s8 arg2);
void sub_80CBAF0(s16 arg0);
void sub_80CAAA8(u8 arg0, bool8 isPartyMon);
const u8 *GetMovingItemName(void);
bool32 IsWaldaWallpaperUnlocked(void);
void sub_80CFF34(u8 arg0);
void sub_80D0D8C(bool8 arg0, u8 cursorPos);
void sub_80D0F38(u16 item);
// const rom data
const struct PSS_MenuStringPtrs gUnknown_085716C0[] =
@@ -479,40 +516,40 @@ const struct SpriteTemplate sSpriteTemplate_CursorMon =
const struct StorageAction gPCStorageActionTexts[] =
{
[PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, 0},
[PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, 0},
[PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, 0},
[PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, 0},
[PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, 1},
[PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, 0},
[PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, 0},
[PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, 1},
[PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, 0},
[PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, 0},
[PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, 4},
[PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, 6},
[PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, 0},
[PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, 0},
[PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, 0},
[PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, 0},
[PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, 0},
[PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, 0},
[PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, 0},
[PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, 1},
[PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, 0},
[PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, 0},
[PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, 0},
[PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, 7},
[PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, 0},
[PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, 7},
[PC_TEXT_BAG_FULL] = {gText_BagIsFull2, 0},
[PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, 0},
[PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, 7},
[PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, 7},
[PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, 0},
[PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL},
[PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL},
[PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4},
[PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6},
[PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL},
[PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL},
[PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL},
[PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL},
[PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL},
};
const struct WindowTemplate gUnknown_08572864 =
const struct WindowTemplate sYesNoWindowTemplate =
{
.bg = 0,
.tilemapLeft = 24,
@@ -652,6 +689,179 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_857291C[] =
gSpriteAffineAnim_8572904
};
const u16 gWallpaperPalettes_Forest[][16] =
{
INCBIN_U16("graphics/pokemon_storage/forest_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/forest_bg.gbapal"),
};
const u32 gWallpaperTiles_Forest[] = INCBIN_U32("graphics/pokemon_storage/forest.4bpp.lz");
const u32 gWallpaperTilemap_Forest[] = INCBIN_U32("graphics/pokemon_storage/forest.bin.lz");
const u16 gWallpaperPalettes_City[][16] =
{
INCBIN_U16("graphics/pokemon_storage/city_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/city_bg.gbapal"),
};
const u32 gWallpaperTiles_City[] = INCBIN_U32("graphics/pokemon_storage/city.4bpp.lz");
const u32 gWallpaperTilemap_City[] = INCBIN_U32("graphics/pokemon_storage/city.bin.lz");
const u16 gWallpaperPalettes_Desert[][16] =
{
INCBIN_U16("graphics/pokemon_storage/desert_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/desert_bg.gbapal"),
};
const u32 gWallpaperTiles_Desert[] = INCBIN_U32("graphics/pokemon_storage/desert.4bpp.lz");
const u32 gWallpaperTilemap_Desert[] = INCBIN_U32("graphics/pokemon_storage/desert.bin.lz");
const u16 gWallpaperPalettes_Savanna[][16] =
{
INCBIN_U16("graphics/pokemon_storage/savanna_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/savanna_bg.gbapal"),
};
const u32 gWallpaperTiles_Savanna[] = INCBIN_U32("graphics/pokemon_storage/savanna.4bpp.lz");
const u32 gWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/pokemon_storage/savanna.bin.lz");
const u16 gWallpaperPalettes_Crag[][16] =
{
INCBIN_U16("graphics/pokemon_storage/crag_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/crag_bg.gbapal"),
};
const u32 gWallpaperTiles_Crag[] = INCBIN_U32("graphics/pokemon_storage/crag.4bpp.lz");
const u32 gWallpaperTilemap_Crag[] = INCBIN_U32("graphics/pokemon_storage/crag.bin.lz");
const u16 gWallpaperPalettes_Volcano[][16] =
{
INCBIN_U16("graphics/pokemon_storage/volcano_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/volcano_bg.gbapal"),
};
const u32 gWallpaperTiles_Volcano[] = INCBIN_U32("graphics/pokemon_storage/volcano.4bpp.lz");
const u32 gWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/pokemon_storage/volcano.bin.lz");
const u16 gWallpaperPalettes_Snow[][16] =
{
INCBIN_U16("graphics/pokemon_storage/snow_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/snow_bg.gbapal"),
};
const u32 gWallpaperTiles_Snow[] = INCBIN_U32("graphics/pokemon_storage/snow.4bpp.lz");
const u32 gWallpaperTilemap_Snow[] = INCBIN_U32("graphics/pokemon_storage/snow.bin.lz");
const u16 gWallpaperPalettes_Cave[][16] =
{
INCBIN_U16("graphics/pokemon_storage/cave_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/cave_bg.gbapal"),
};
const u32 gWallpaperTiles_Cave[] = INCBIN_U32("graphics/pokemon_storage/cave.4bpp.lz");
const u32 gWallpaperTilemap_Cave[] = INCBIN_U32("graphics/pokemon_storage/cave.bin.lz");
const u16 gWallpaperPalettes_Beach[][16] =
{
INCBIN_U16("graphics/pokemon_storage/beach_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/beach_bg.gbapal"),
};
const u32 gWallpaperTiles_Beach[] = INCBIN_U32("graphics/pokemon_storage/beach.4bpp.lz");
const u32 gWallpaperTilemap_Beach[] = INCBIN_U32("graphics/pokemon_storage/beach.bin.lz");
const u16 gWallpaperPalettes_Seafloor[][16] =
{
INCBIN_U16("graphics/pokemon_storage/seafloor_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/seafloor_bg.gbapal"),
};
const u32 gWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/seafloor.4bpp.lz");
const u32 gWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/seafloor.bin.lz");
const u16 gWallpaperPalettes_River[][16] =
{
INCBIN_U16("graphics/pokemon_storage/river_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/river_bg.gbapal"),
};
const u32 gWallpaperTiles_River[] = INCBIN_U32("graphics/pokemon_storage/river.4bpp.lz");
const u32 gWallpaperTilemap_River[] = INCBIN_U32("graphics/pokemon_storage/river.bin.lz");
const u16 gWallpaperPalettes_Sky[][16] =
{
INCBIN_U16("graphics/pokemon_storage/sky_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/sky_bg.gbapal"),
};
const u32 gWallpaperTiles_Sky[] = INCBIN_U32("graphics/pokemon_storage/sky.4bpp.lz");
const u32 gWallpaperTilemap_Sky[] = INCBIN_U32("graphics/pokemon_storage/sky.bin.lz");
const u16 gWallpaperPalettes_PolkaDot[][16] =
{
INCBIN_U16("graphics/pokemon_storage/polkadot_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/polkadot_bg.gbapal"),
};
const u32 gWallpaperTiles_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/polkadot.4bpp.lz");
const u32 gWallpaperTilemap_PolkaDot[] = INCBIN_U32("graphics/pokemon_storage/polkadot.bin.lz");
const u16 gWallpaperPalettes_Pokecenter[][16] =
{
INCBIN_U16("graphics/pokemon_storage/pokecenter_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/pokecenter_bg.gbapal"),
};
const u32 gWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/pokecenter.4bpp.lz");
const u32 gWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/pokecenter.bin.lz");
const u16 gWallpaperPalettes_Machine[][16] =
{
INCBIN_U16("graphics/pokemon_storage/machine_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/machine_bg.gbapal"),
};
const u32 gWallpaperTiles_Machine[] = INCBIN_U32("graphics/pokemon_storage/machine.4bpp.lz");
const u32 gWallpaperTilemap_Machine[] = INCBIN_U32("graphics/pokemon_storage/machine.bin.lz");
const u16 gWallpaperPalettes_Plain[][16] =
{
INCBIN_U16("graphics/pokemon_storage/plain_frame.gbapal"),
INCBIN_U16("graphics/pokemon_storage/plain_bg.gbapal"),
};
const u32 gWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.4bpp.lz");
const u32 gWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.bin.lz");
// 12×18 tilemap
const u32 gUnknown_085773C4[] = INCBIN_U32("graphics/unused/tilemap_5773C4.bin");
const u16 gUnknown_08577574[][2] =
{
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF},
{0x1CE7, 0x7FFF}
};
#define WALLPAPER_ENTRY(name) {gWallpaperTiles_##name, gWallpaperTilemap_##name, gWallpaperPalettes_##name[0]}
const struct WallpaperTable gWallpaperTable[] =
{
WALLPAPER_ENTRY(Forest),
WALLPAPER_ENTRY(City),
WALLPAPER_ENTRY(Desert),
WALLPAPER_ENTRY(Savanna),
WALLPAPER_ENTRY(Crag),
WALLPAPER_ENTRY(Volcano),
WALLPAPER_ENTRY(Snow),
WALLPAPER_ENTRY(Cave),
WALLPAPER_ENTRY(Beach),
WALLPAPER_ENTRY(Seafloor),
WALLPAPER_ENTRY(River),
WALLPAPER_ENTRY(Sky),
WALLPAPER_ENTRY(PolkaDot),
WALLPAPER_ENTRY(Pokecenter),
WALLPAPER_ENTRY(Machine),
WALLPAPER_ENTRY(Plain),
};
// code
u8 CountMonsInBox(u8 boxId)
{
@@ -915,7 +1125,7 @@ void FieldCb_ReturnToPcMenu(void)
SetVBlankCallback(NULL);
taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = gUnknown_02039D00;
gTasks[taskId].data[1] = sPreviousBoxOption;
Task_PokemonStorageSystemPC(taskId);
SetVBlankCallback(vblankCb);
pal_fill_black();
@@ -936,7 +1146,7 @@ void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
void Cb2_ExitPSS(void)
{
gUnknown_02039D00 = sub_80CAEA0();
sPreviousBoxOption = GetCurrentBoxOption();
gFieldCallback = FieldCb_ReturnToPcMenu;
SetMainCallback2(CB2_ReturnToField);
}
@@ -1219,7 +1429,7 @@ void Cb2_PSS(void)
void Cb2_EnterPSS(u8 boxOption)
{
ResetTasks();
sBoxOption = boxOption;
sCurrentBoxOption = boxOption;
gUnknown_02039D08 = Alloc(sizeof(*gUnknown_02039D08));
if (gUnknown_02039D08 == NULL)
{
@@ -1247,7 +1457,7 @@ void Cb2_ReturnToPSS(void)
}
else
{
gUnknown_02039D08->boxOption = sBoxOption;
gUnknown_02039D08->boxOption = sCurrentBoxOption;
gUnknown_02039D08->isReshowingPSS = TRUE;
gUnknown_02039D08->state = 0;
gUnknown_02039D08->taskId = CreateTask(Cb_InitPSS, 3);
@@ -1406,7 +1616,7 @@ void Cb_InitPSS(u8 taskId)
else
{
BlendPalettes(0xFFFFFFFF, 0x10, 0);
SetPSSCallback(Cb_ReshowPSSAfterChoosingBagItem);
SetPSSCallback(Cb_ReshowPSS);
}
SetVBlankCallback(VblankCb_PSS);
return;
@@ -1433,7 +1643,7 @@ void Cb_ShowPSS(u8 taskId)
}
}
void Cb_ReshowPSSAfterChoosingBagItem(u8 taskId)
void Cb_ReshowPSS(u8 taskId)
{
switch (gUnknown_02039D08->state)
{
@@ -1736,11 +1946,11 @@ void Cb_ShowPartyPokemon(u8 taskId)
switch (gUnknown_02039D08->state)
{
case 0:
sub_80CAB4C();
SetUpDoShowPartyMenu();
gUnknown_02039D08->state++;
break;
case 1:
if (!sub_80CAB70())
if (!DoShowPartyMenu())
SetPSSCallback(Cb_MainPSS);
break;
}
@@ -1752,11 +1962,11 @@ void Cb_HidePartyPokemon(u8 taskId)
{
case 0:
PlaySE(SE_SELECT);
sub_80CA888();
SetUpHidePartyMenu();
gUnknown_02039D08->state++;
break;
case 1:
if (!sub_80CA8C8())
if (!HidePartyMenu())
{
sub_80CDBF8(sub_80CDC2C());
gUnknown_02039D08->state++;
@@ -2016,12 +2226,12 @@ void Cb_WithdrawMon(u8 taskId)
if (!sub_80CDCAC())
{
sub_80CC0D4(1);
sub_80CAB4C();
SetUpDoShowPartyMenu();
gUnknown_02039D08->state++;
}
break;
case 3:
if (!sub_80CAB70())
if (!DoShowPartyMenu())
{
sub_80CDC38(1);
gUnknown_02039D08->state++;
@@ -2109,7 +2319,7 @@ void Cb_ReleaseMon(u8 taskId)
{
case 0:
PrintStorageActionText(PC_TEXT_RELEASE_POKE);
sub_80CAD9C(1);
ShowYesNoWindow(1);
gUnknown_02039D08->state++;
// fallthrough
case 1:
@@ -2472,7 +2682,7 @@ void Cb_CloseBoxWhileHoldingItem(u8 taskId)
case 0:
PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_PUT_IN_BAG);
sub_80CAD9C(0);
ShowYesNoWindow(0);
gUnknown_02039D08->state = 1;
break;
case 1:
@@ -2814,7 +3024,7 @@ void Cb_OnCloseBoxPressed(u8 taskId)
{
PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_EXIT_BOX);
sub_80CAD9C(0);
ShowYesNoWindow(0);
gUnknown_02039D08->state = 2;
}
break;
@@ -2875,7 +3085,7 @@ void Cb_OnBPressed(u8 taskId)
{
PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_CONTINUE_BOX);
sub_80CAD9C(0);
ShowYesNoWindow(0);
gUnknown_02039D08->state = 2;
}
break;
@@ -3216,3 +3426,368 @@ void sub_80CA65C(void)
sub_80D2918(0);
schedule_bg_copy_tilemap_to_vram(1);
}
void sub_80CA704(void)
{
LZ77UnCompWram(gUnknown_08DD36C8, gUnknown_02039D08->field_B0);
LoadPalette(gPSSMenu_Pal, 0x10, 0x20);
sub_80D2644(1, 1, gUnknown_02039D08->field_B0, 12, 22);
sub_80D2644(2, 1, gUnknown_0857245C, 9, 4);
sub_80D2770(1, 10, 0);
sub_80D2770(2, 21, 0);
sub_80CAA74();
if (sInPartyMenu)
{
sub_80CA984(TRUE);
sub_80CB7E8(TRUE);
sub_80D2918(2);
sub_80D2918(1);
}
else
{
sub_80D27AC(1, 0, 20, 12, 2);
sub_80CA984(TRUE);
sub_80D2918(1);
sub_80D2918(2);
}
schedule_bg_copy_tilemap_to_vram(1);
gUnknown_02039D08->unk_02C7 = 0;
}
void SetUpShowPartyMenu(void)
{
gUnknown_02039D08->field_2C0 = 20;
gUnknown_02039D08->field_2C2 = 2;
gUnknown_02039D08->field_2C5 = 0;
sub_80CB7E8(FALSE);
}
bool8 ShowPartyMenu(void)
{
if (gUnknown_02039D08->field_2C5 == 20)
return FALSE;
gUnknown_02039D08->field_2C0--;
gUnknown_02039D08->field_2C2++;
sub_80D27F4(1, 3, 1);
sub_80D2918(1);
schedule_bg_copy_tilemap_to_vram(1);
sub_80CBAF0(8);
if (++gUnknown_02039D08->field_2C5 == 20)
{
sInPartyMenu = TRUE;
return FALSE;
}
else
{
return TRUE;
}
}
void SetUpHidePartyMenu(void)
{
gUnknown_02039D08->field_2C0 = 0;
gUnknown_02039D08->field_2C2 = 22;
gUnknown_02039D08->field_2C5 = 0;
if (gUnknown_02039D08->boxOption == BOX_OPTION_MOVE_ITEMS)
sub_80D11CC();
}
bool8 HidePartyMenu(void)
{
if (gUnknown_02039D08->field_2C5 != 20)
{
gUnknown_02039D08->field_2C0++;
gUnknown_02039D08->field_2C2--;
sub_80D27F4(1, 3, -1);
sub_80D2918(1);
FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gUnknown_02039D08->field_2C2, 12, 1);
sub_80CBAF0(-8);
if (++gUnknown_02039D08->field_2C5 != 20)
{
schedule_bg_copy_tilemap_to_vram(1);
return TRUE;
}
else
{
sInPartyMenu = FALSE;
sub_80CBB9C();
CompactPartySlots();
sub_80D27AC(2, 0, 0, 9, 2);
sub_80D2918(2);
schedule_bg_copy_tilemap_to_vram(1);
return FALSE;
}
}
return FALSE;
}
void sub_80CA984(bool8 arg0)
{
if (arg0)
sub_80D27AC(2, 0, 0, 9, 2);
else
sub_80D27AC(2, 0, 2, 9, 2);
sub_80D2918(2);
schedule_bg_copy_tilemap_to_vram(1);
}
void sub_80CA9C0(void)
{
gUnknown_02039D08->unk_02C7 = 1;
gUnknown_02039D08->unk_02C8 = 30;
gUnknown_02039D08->unk_02C9 = TRUE;
}
void sub_80CA9EC(void)
{
if (gUnknown_02039D08->unk_02C7)
{
gUnknown_02039D08->unk_02C7 = 0;
sub_80CA984(TRUE);
}
}
void sub_80CAA14(void)
{
if (gUnknown_02039D08->unk_02C7 && ++gUnknown_02039D08->unk_02C8 > 30)
{
gUnknown_02039D08->unk_02C8 = 0;
gUnknown_02039D08->unk_02C9 = (gUnknown_02039D08->unk_02C9 == FALSE);
sub_80CA984(gUnknown_02039D08->unk_02C9);
}
}
void sub_80CAA74(void)
{
u8 i;
for (i = 1; i < PARTY_SIZE; i++)
{
s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
sub_80CAAA8(i, (species != SPECIES_NONE));
}
}
void sub_80CAAA8(u8 arg0, bool8 isPartyMon)
{
u16 i, j, index;
const u16 *data;
if (isPartyMon)
data = gUnknown_085724A4;
else
data = gUnknown_085724BC;
index = 3 * (3 * (arg0 - 1) + 1);
index *= 4;
index += 7;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
gUnknown_02039D08->field_B0[index + j] = data[j];
}
data += 4;
index += 12;
}
}
void sub_80CAB20(void)
{
sub_80CAA74();
sub_80D27AC(1, 0, 0, 12, 22);
sub_80D2918(1);
schedule_bg_copy_tilemap_to_vram(1);
}
void SetUpDoShowPartyMenu(void)
{
gUnknown_02039D08->showPartyMenuState = 0;
PlaySE(SE_WIN_OPEN);
SetUpShowPartyMenu();
}
bool8 DoShowPartyMenu(void)
{
switch (gUnknown_02039D08->showPartyMenuState)
{
case 0:
if (!ShowPartyMenu())
{
sub_80CDBA0();
gUnknown_02039D08->showPartyMenuState++;
}
break;
case 1:
if (!sub_80CD554())
{
if (gUnknown_02039D08->field_CEA)
BoxSetMosaic();
gUnknown_02039D08->showPartyMenuState++;
}
break;
case 2:
return FALSE;
}
return TRUE;
}
void sub_80CABE0(void)
{
if (gUnknown_02039D10 != StorageGetCurrentBox())
{
FlagClear(FLAG_SYS_STORAGE_UNKNOWN_FLAG);
VarSet(VAR_STORAGE_UNKNOWN, StorageGetCurrentBox());
}
}
void sub_80CAC1C(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29));
LoadUserWindowBorderGfx(1, 2, 208);
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
CopyBgTilemapBufferToVram(0);
}
void PrintStorageActionText(u8 id)
{
u8 *txtPtr;
DynamicPlaceholderTextUtil_Reset();
switch (gPCStorageActionTexts[id].format)
{
case PC_TEXT_FMT_NORMAL:
break;
case PC_TEXT_FMT_MON_NAME_1:
case PC_TEXT_FMT_MON_NAME_2:
case PC_TEXT_FMT_MON_NAME_3:
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02039D08->field_CEE);
break;
case PC_TEXT_FMT_MON_NAME_4:
case PC_TEXT_FMT_MON_NAME_5:
case PC_TEXT_FMT_MON_NAME_6:
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02039D08->field_21E0);
break;
case PC_TEXT_FMT_ITEM_NAME:
if (sub_80D127C())
txtPtr = StringCopy(gUnknown_02039D08->field_21EB, GetMovingItemName());
else
txtPtr = StringCopy(gUnknown_02039D08->field_21EB, gUnknown_02039D08->cursorMonItemName);
while (*(txtPtr - 1) == CHAR_SPACE)
txtPtr--;
*txtPtr = EOS;
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02039D08->field_21EB);
break;
}
DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_02039D08->field_2190, gPCStorageActionTexts[id].text);
FillWindowPixelBuffer(1, 0x11);
AddTextPrinterParameterized(1, 1, gUnknown_02039D08->field_2190, 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(1, 2, 14);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
schedule_bg_copy_tilemap_to_vram(0);
}
void ShowYesNoWindow(s8 cursorPos)
{
CreateYesNoMenu(&sYesNoWindowTemplate, 11, 14, 0);
MoveMenuCursorNoWrapAround(cursorPos);
}
void ClearBottomWindow(void)
{
sub_8198070(1, FALSE);
schedule_bg_copy_tilemap_to_vram(0);
}
void sub_80CADD8(void)
{
sub_80CFEF0();
sub_80CFF34(18);
sub_80CFF34(19);
sub_80CFF34(20);
sub_80CFF34(21);
if (IsWaldaWallpaperUnlocked())
sub_80CFF34(22);
sub_80CFFD0();
}
void sub_80CAE0C(u8 wallpaperSet)
{
sub_80CFEF0();
switch (wallpaperSet)
{
case 0:
sub_80CFF34(23);
sub_80CFF34(24);
sub_80CFF34(25);
sub_80CFF34(26);
break;
case 1:
sub_80CFF34(27);
sub_80CFF34(28);
sub_80CFF34(29);
sub_80CFF34(30);
break;
case 2:
sub_80CFF34(31);
sub_80CFF34(32);
sub_80CFF34(33);
sub_80CFF34(34);
break;
case 3:
sub_80CFF34(35);
sub_80CFF34(36);
sub_80CFF34(37);
sub_80CFF34(38);
break;
}
sub_80CFFD0();
}
u8 GetCurrentBoxOption(void)
{
return sCurrentBoxOption;
}
void sub_80CAEAC(void)
{
if (!IsCursorOnBox())
{
if (sInPartyMenu)
sub_80D0D8C(TRUE, GetBoxCursorPosition());
else
sub_80D0D8C(FALSE, GetBoxCursorPosition());
}
if (gUnknown_02039D12 != 0)
{
sub_80D0F38(gUnknown_02039D12);
sub_80CFE54(3);
}
}
void sub_80CAF04(void)
{
u16 i;
LoadMonIconPalettes();
for (i = 0; i < 40; i++)
gUnknown_02039D08->field_B08[i] = 0;
for (i = 0; i < 40; i++)
gUnknown_02039D08->field_B58[i] = 0;
for (i = 0; i < PARTY_SIZE; i++)
gUnknown_02039D08->partySprites[i] = NULL;
for (i = 0; i < IN_BOX_COUNT; i++)
gUnknown_02039D08->boxMonsSprites[i] = NULL;
gUnknown_02039D08->field_A6C = NULL;
gUnknown_02039D08->field_78C = 0;
}