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

File diff suppressed because it is too large Load Diff

View File

@ -4,319 +4,6 @@
.section .rodata .section .rodata
.align 2
gWallpaperPalettes_Forest:: @ 8572924
.incbin "graphics/pokemon_storage/forest_frame.gbapal"
.incbin "graphics/pokemon_storage/forest_bg.gbapal"
.align 2
gWallpaperTiles_Forest: @ 8572964
.incbin "graphics/pokemon_storage/forest.4bpp.lz"
.align 2
gWallpaperTilemap_Forest:: @ 8572DE8
.incbin "graphics/pokemon_storage/forest.bin.lz"
.align 2
gWallpaperPalettes_City: @ 8572EC8
.incbin "graphics/pokemon_storage/city_frame.gbapal"
.incbin "graphics/pokemon_storage/city_bg.gbapal"
.align 2
gWallpaperTiles_City: @ 8572F08
.incbin "graphics/pokemon_storage/city.4bpp.lz"
.align 2
gWallpaperTilemap_City: @ 8573220
.incbin "graphics/pokemon_storage/city.bin.lz"
.align 2
gWallpaperPalettes_Desert: @ 85732FC
.incbin "graphics/pokemon_storage/desert_frame.gbapal"
.incbin "graphics/pokemon_storage/desert_bg.gbapal"
.align 2
gWallpaperTiles_Desert: @ 857333C
.incbin "graphics/pokemon_storage/desert.4bpp.lz"
.align 2
gWallpaperTilemap_Desert: @ 85736F0
.incbin "graphics/pokemon_storage/desert.bin.lz"
.align 2
gWallpaperPalettes_Savanna: @ 85737EC
.incbin "graphics/pokemon_storage/savanna_frame.gbapal"
.incbin "graphics/pokemon_storage/savanna_bg.gbapal"
.align 2
gWallpaperTiles_Savanna: @ 857382C
.incbin "graphics/pokemon_storage/savanna.4bpp.lz"
.align 2
gWallpaperTilemap_Savanna: @ 8573C40
.incbin "graphics/pokemon_storage/savanna.bin.lz"
.align 2
gWallpaperPalettes_Crag: @ 8573D44
.incbin "graphics/pokemon_storage/crag_frame.gbapal"
.incbin "graphics/pokemon_storage/crag_bg.gbapal"
.align 2
gWallpaperTiles_Crag: @ 8573D84
.incbin "graphics/pokemon_storage/crag.4bpp.lz"
.align 2
gWallpaperTilemap_Crag: @ 8574180
.incbin "graphics/pokemon_storage/crag.bin.lz"
.align 2
gWallpaperPalettes_Volcano: @ 8573D44
.incbin "graphics/pokemon_storage/volcano_frame.gbapal"
.incbin "graphics/pokemon_storage/volcano_bg.gbapal"
.align 2
gWallpaperTiles_Volcano: @ 8573D84
.incbin "graphics/pokemon_storage/volcano.4bpp.lz"
.align 2
gWallpaperTilemap_Volcano: @ 85747A0
.incbin "graphics/pokemon_storage/volcano.bin.lz"
.align 2
gWallpaperPalettes_Snow: @ 85748DC
.incbin "graphics/pokemon_storage/snow_frame.gbapal"
.incbin "graphics/pokemon_storage/snow_bg.gbapal"
.align 2
gWallpaperTiles_Snow: @ 857491C
.incbin "graphics/pokemon_storage/snow.4bpp.lz"
.align 2
gWallpaperTilemap_Snow: @ 8574D7C
.incbin "graphics/pokemon_storage/snow.bin.lz"
.align 2
gWallpaperPalettes_Cave: @ 8574E88
.incbin "graphics/pokemon_storage/cave_frame.gbapal"
.incbin "graphics/pokemon_storage/cave_bg.gbapal"
.align 2
gWallpaperTiles_Cave: @ 8574EC8
.incbin "graphics/pokemon_storage/cave.4bpp.lz"
.align 2
gWallpaperTilemap_Cave: @ 85752A0
.incbin "graphics/pokemon_storage/cave.bin.lz"
.align 2
gWallpaperPalettes_Beach: @ 8575378
.incbin "graphics/pokemon_storage/beach_frame.gbapal"
.incbin "graphics/pokemon_storage/beach_bg.gbapal"
.align 2
gWallpaperTiles_Beach: @ 85753B8
.incbin "graphics/pokemon_storage/beach.4bpp.lz"
.align 2
gWallpaperTilemap_Beach: @ 8575788
.incbin "graphics/pokemon_storage/beach.bin.lz"
.align 2
gWallpaperPalettes_Seafloor: @ 8575888
.incbin "graphics/pokemon_storage/seafloor_frame.gbapal"
.incbin "graphics/pokemon_storage/seafloor_bg.gbapal"
.align 2
gWallpaperTiles_Seafloor: @ 85758C8
.incbin "graphics/pokemon_storage/seafloor.4bpp.lz"
.align 2
gWallpaperTilemap_Seafloor: @ 8575BC4
.incbin "graphics/pokemon_storage/seafloor.bin.lz"
.align 2
gWallpaperPalettes_River: @ 8575CD8
.incbin "graphics/pokemon_storage/river_frame.gbapal"
.incbin "graphics/pokemon_storage/river_bg.gbapal"
.align 2
gWallpaperTiles_River: @ 8575D18
.incbin "graphics/pokemon_storage/river.4bpp.lz"
.align 2
gWallpaperTilemap_River: @ 8576100
.incbin "graphics/pokemon_storage/river.bin.lz"
.align 2
gWallpaperPalettes_Sky: @ 85761F8
.incbin "graphics/pokemon_storage/sky_frame.gbapal"
.incbin "graphics/pokemon_storage/sky_bg.gbapal"
.align 2
gWallpaperTiles_Sky: @ 8576238
.incbin "graphics/pokemon_storage/sky.4bpp.lz"
.align 2
gWallpaperTilemap_Sky: @ 85765C0
.incbin "graphics/pokemon_storage/sky.bin.lz"
.align 2
gWallpaperPalettes_PolkaDot: @ 85766B0
.incbin "graphics/pokemon_storage/polkadot_frame.gbapal"
.incbin "graphics/pokemon_storage/polkadot_bg.gbapal"
.align 2
gWallpaperTiles_PolkaDot: @ 85766F0
.incbin "graphics/pokemon_storage/polkadot.4bpp.lz"
.align 2
gWallpaperTilemap_PolkaDot: @ 85769B8
.incbin "graphics/pokemon_storage/polkadot.bin.lz"
.align 2
gWallpaperPalettes_Pokecenter: @ 8576AB8
.incbin "graphics/pokemon_storage/pokecenter_frame.gbapal"
.incbin "graphics/pokemon_storage/pokecenter_bg.gbapal"
.align 2
gWallpaperTiles_Pokecenter: @ 8576AF8
.incbin "graphics/pokemon_storage/pokecenter.4bpp.lz"
.align 2
gWallpaperTilemap_Pokecenter: @ 8576D74
.incbin "graphics/pokemon_storage/pokecenter.bin.lz"
.align 2
gWallpaperPalettes_Machine: @ 8576E74
.incbin "graphics/pokemon_storage/machine_frame.gbapal"
.incbin "graphics/pokemon_storage/machine_bg.gbapal"
.align 2
gWallpaperTiles_Machine: @ 8576EB4
.incbin "graphics/pokemon_storage/machine.4bpp.lz"
.align 2
gWallpaperTilemap_Machine: @ 8577108
.incbin "graphics/pokemon_storage/machine.bin.lz"
.align 2
gWallpaperPalettes_Plain: @ 85771CC
.incbin "graphics/pokemon_storage/plain_frame.gbapal"
.incbin "graphics/pokemon_storage/plain_bg.gbapal"
.align 2
gWallpaperTiles_Plain: @ 857720C
.incbin "graphics/pokemon_storage/plain.4bpp.lz"
.align 2
gWallpaperTilemap_Plain: @ 857732C
.incbin "graphics/pokemon_storage/plain.bin.lz"
@ 12×18 tilemap
.incbin "graphics/unused/tilemap_5773C4.bin"
.align 1
gUnknown_08577574:: @ 8577574
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.2byte 0x1CE7, 0x7FFF
.align 2
gWallpaperTable:: @ 85775B8
@ Forest
.4byte gWallpaperTiles_Forest
.4byte gWallpaperTilemap_Forest
.4byte gWallpaperPalettes_Forest
@ City
.4byte gWallpaperTiles_City
.4byte gWallpaperTilemap_City
.4byte gWallpaperPalettes_City
@ Desert
.4byte gWallpaperTiles_Desert
.4byte gWallpaperTilemap_Desert
.4byte gWallpaperPalettes_Desert
@ Savanna
.4byte gWallpaperTiles_Savanna
.4byte gWallpaperTilemap_Savanna
.4byte gWallpaperPalettes_Savanna
@ Crag
.4byte gWallpaperTiles_Crag
.4byte gWallpaperTilemap_Crag
.4byte gWallpaperPalettes_Crag
@ Volcano
.4byte gWallpaperTiles_Volcano
.4byte gWallpaperTilemap_Volcano
.4byte gWallpaperPalettes_Volcano
@ Snow
.4byte gWallpaperTiles_Snow
.4byte gWallpaperTilemap_Snow
.4byte gWallpaperPalettes_Snow
@ Cave
.4byte gWallpaperTiles_Cave
.4byte gWallpaperTilemap_Cave
.4byte gWallpaperPalettes_Cave
@ Beach
.4byte gWallpaperTiles_Beach
.4byte gWallpaperTilemap_Beach
.4byte gWallpaperPalettes_Beach
@ Seafloor
.4byte gWallpaperTiles_Seafloor
.4byte gWallpaperTilemap_Seafloor
.4byte gWallpaperPalettes_Seafloor
@ River
.4byte gWallpaperTiles_River
.4byte gWallpaperTilemap_River
.4byte gWallpaperPalettes_River
@ Sky
.4byte gWallpaperTiles_Sky
.4byte gWallpaperTilemap_Sky
.4byte gWallpaperPalettes_Sky
@ PolkaDot
.4byte gWallpaperTiles_PolkaDot
.4byte gWallpaperTilemap_PolkaDot
.4byte gWallpaperPalettes_PolkaDot
@ Pokecenter
.4byte gWallpaperTiles_Pokecenter
.4byte gWallpaperTilemap_Pokecenter
.4byte gWallpaperPalettes_Pokecenter
@ Machine
.4byte gWallpaperTiles_Machine
.4byte gWallpaperTilemap_Machine
.4byte gWallpaperPalettes_Machine
@ Plain
.4byte gWallpaperTiles_Plain
.4byte gWallpaperTilemap_Plain
.4byte gWallpaperPalettes_Plain
.align 2 .align 2
PCGfx_Arrow: @ 8577678 PCGfx_Arrow: @ 8577678
.incbin "graphics/pokemon_storage/arrow.4bpp" .incbin "graphics/pokemon_storage/arrow.4bpp"

View File

@ -4742,5 +4742,7 @@ extern const u16 gPokedexAreaScreenAreaUnknown_Pal[];
// Pokemon Storage System // Pokemon Storage System
extern const u32 gPSSMenu_Gfx[]; extern const u32 gPSSMenu_Gfx[];
extern const u16 gPSSMenu_Pal[];
extern const u32 gUnknown_08DD36C8[];
#endif //GUARD_GRAPHICS_H #endif //GUARD_GRAPHICS_H

View File

@ -72,6 +72,7 @@ u8 sub_8199134(s8, s8);
u8 GetStartMenuWindowId(void); u8 GetStartMenuWindowId(void);
void sub_819A2BC(u8, u8); void sub_819A2BC(u8, u8);
u8 MoveMenuCursor(s8 cursorDelta); u8 MoveMenuCursor(s8 cursorDelta);
u8 MoveMenuCursorNoWrapAround(s8 cursorDelta);
void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram); void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 CopyToVram);
u8 sub_81979C4(u8 a1); u8 sub_81979C4(u8 a1);
u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos); u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);

View File

@ -72,14 +72,21 @@ struct PokemonStorageSystemData
u8 unk_0005; u8 unk_0005;
struct UnkStruct_2000020 unk_0020; struct UnkStruct_2000020 unk_0020;
struct UnkStruct_2000028 unk_0028[8]; struct UnkStruct_2000028 unk_0028[8];
u8 unk_90[567]; u16 field_90[16];
u16 field_B0[528 / 2];
u16 field_2C0;
u16 field_2C2;
u8 field_2C4;
u8 field_2C5;
u8 showPartyMenuState;
u8 unk_02C7; u8 unk_02C7;
u8 unk_02C8; u8 unk_02C8;
u8 unk_02C9; bool8 unk_02C9;
s16 newCurrBoxId; s16 newCurrBoxId;
u16 bg2_X; u16 bg2_X;
u8 field_2CE; u8 field_2CE;
u8 field_2CF[1215]; u8 field_2CF[1213];
u16 field_78C;
s16 wallpaperSetId; s16 wallpaperSetId;
s16 wallpaperId; s16 wallpaperId;
u8 wallpaperTilemap[180 * 4]; u8 wallpaperTilemap[180 * 4];
@ -90,8 +97,13 @@ struct PokemonStorageSystemData
u8 field_A66; u8 field_A66;
u8 field_A67; u8 field_A67;
u8 *wallpaperTilemapPtr; u8 *wallpaperTilemapPtr;
u8 field_A6C; struct Sprite *field_A6C;
u8 field_A6D[623]; struct Sprite *partySprites[PARTY_SIZE];
struct Sprite *boxMonsSprites[IN_BOX_COUNT];
u8 field_B00[8];
u16 field_B08[40];
u16 field_B58[40];
u8 field_BA8[308];
u32 *field_CDC; u32 *field_CDC;
u32 cursorMonPersonality; u32 cursorMonPersonality;
u16 cursorMonSpecies; u16 cursorMonSpecies;
@ -101,17 +113,7 @@ struct PokemonStorageSystemData
u8 field_CEB; u8 field_CEB;
u8 field_CEC; u8 field_CEC;
u8 field_CED; u8 field_CED;
u8 field_CEE; u8 field_CEE[POKEMON_NAME_LENGTH + 1];
u8 field_CEF;
u8 field_CF0;
u8 field_CF1;
u8 field_CF2;
u8 field_CF3;
u8 field_CF4;
u8 field_CF5;
u8 field_CF6;
u8 field_CF7;
u8 field_CF8;
u8 cursorMonNick[36]; u8 cursorMonNick[36];
u8 cursorMonSpeciesName[36]; u8 cursorMonSpeciesName[36];
u8 cursorMonGenderLvlText[36]; u8 cursorMonGenderLvlText[36];
@ -132,7 +134,10 @@ struct PokemonStorageSystemData
u8 field_2187; u8 field_2187;
u8 field_2188; u8 field_2188;
struct BoxPokemon *field_218C; struct BoxPokemon *field_218C;
u8 field_2190[164]; u8 field_2190[80];
u8 field_21E0[POKEMON_NAME_LENGTH + 1];
u8 field_21EB[15]; // TODO: ITEM NAME LENGTH + 1
u8 field_21FA[58];
u16 movingItem; u16 movingItem;
u8 field_2236; u8 field_2236;
u8 field_2237; u8 field_2237;

View File

@ -3,6 +3,7 @@
#include "bg.h" #include "bg.h"
#include "decompress.h" #include "decompress.h"
#include "dma3.h" #include "dma3.h"
#include "dynamic_placeholder_text_util.h"
#include "event_data.h" #include "event_data.h"
#include "field_screen.h" #include "field_screen.h"
#include "field_weather.h" #include "field_weather.h"
@ -19,6 +20,7 @@
#include "overworld.h" #include "overworld.h"
#include "palette.h" #include "palette.h"
#include "pokemon.h" #include "pokemon.h"
#include "pokemon_icon.h"
#include "pokemon_summary_screen.h" #include "pokemon_summary_screen.h"
#include "pokemon_storage_system.h" #include "pokemon_storage_system.h"
#include "script.h" #include "script.h"
@ -33,6 +35,13 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/species.h" #include "constants/species.h"
struct WallpaperTable
{
const u32 *tiles;
const u32 *tileMap;
const u16 *palettes;
};
enum enum
{ {
BOX_OPTION_WITHDRAW, BOX_OPTION_WITHDRAW,
@ -77,6 +86,18 @@ enum
PC_TEXT_CANT_STORE_MAIL, 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 enum
{ {
SCREEN_CHANGE_EXIT_BOX, SCREEN_CHANGE_EXIT_BOX,
@ -99,8 +120,8 @@ enum
IWRAM_DATA u8 gUnknown_03000F78[0x188]; IWRAM_DATA u8 gUnknown_03000F78[0x188];
extern u8 gUnknown_02039D00; extern u8 sPreviousBoxOption;
extern u8 sBoxOption; extern u8 sCurrentBoxOption;
extern u8 gUnknown_02039D10; extern u8 gUnknown_02039D10;
extern u8 gUnknown_02039D0E; extern u8 gUnknown_02039D0E;
extern bool8 sInPartyMenu; extern bool8 sInPartyMenu;
@ -122,7 +143,7 @@ extern const u8 gText_JustOnePkmn[];
// This file's functions. // This file's functions.
void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
void Cb2_EnterPSS(u8 boxOption); void Cb2_EnterPSS(u8 boxOption);
u8 sub_80CAEA0(void); u8 GetCurrentBoxOption(void);
u8 sub_80CF9EC(void); u8 sub_80CF9EC(void);
u8 sub_80CDC2C(void); u8 sub_80CDC2C(void);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId); void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
@ -141,7 +162,9 @@ void sub_80CAA14(void);
void sub_80CE790(void); void sub_80CE790(void);
void sub_80CE8E4(void); void sub_80CE8E4(void);
void GiveChosenBagItem(void); void GiveChosenBagItem(void);
void sub_80CA888(void); void SetUpHidePartyMenu(void);
void sub_80CBB9C(void);
void sub_80D11CC(void);
void LoadPSSMenuGfx(void); void LoadPSSMenuGfx(void);
void LoadWaveformSpritePalette(void); void LoadWaveformSpritePalette(void);
void sub_80CDC18(void); void sub_80CDC18(void);
@ -176,9 +199,12 @@ void sub_80D1194(void);
void PrintCursorMonInfo(void); void PrintCursorMonInfo(void);
void sub_80CA65C(void); void sub_80CA65C(void);
void sub_80CADD8(void); void sub_80CADD8(void);
void sub_80CFEF0(void);
void sub_80D1818(void); void sub_80D1818(void);
void sub_80CAA74(void);
void sub_80D17B4(void); void sub_80D17B4(void);
void sub_80CE760(void); void sub_80CE760(void);
void sub_80CDBA0(void);
void sub_80CE7E8(void); void sub_80CE7E8(void);
void sub_80CFECC(void); void sub_80CFECC(void);
void sub_80CA9EC(void); void sub_80CA9EC(void);
@ -187,6 +213,7 @@ void sub_80CAB20(void);
void sub_80CE22C(void); void sub_80CE22C(void);
void sub_80CB950(void); void sub_80CB950(void);
void sub_80CA9C0(void); void sub_80CA9C0(void);
void SetUpDoShowPartyMenu(void);
void BoxSetMosaic(void); void BoxSetMosaic(void);
void sub_80C7CF4(struct Sprite *sprite); void sub_80C7CF4(struct Sprite *sprite);
bool8 InitPSSWindows(void); bool8 InitPSSWindows(void);
@ -195,15 +222,14 @@ bool8 sub_80CE2A8(void);
bool8 sub_80D0164(void); bool8 sub_80D0164(void);
bool8 sub_80CC35C(void); bool8 sub_80CC35C(void);
bool8 sub_80D01E4(void); bool8 sub_80D01E4(void);
bool8 sub_80CAB4C(void);
bool8 sub_80D184C(void); bool8 sub_80D184C(void);
bool8 sub_80D18E4(void); bool8 sub_80D18E4(void);
bool8 sub_80CAB70(void); bool8 DoShowPartyMenu(void);
bool8 sub_80D1218(void); bool8 sub_80D1218(void);
bool8 sub_80CB9BC(void); bool8 sub_80CB9BC(void);
bool8 ScrollToBox(void); bool8 ScrollToBox(void);
bool8 sub_80CD554(void); bool8 sub_80CD554(void);
bool8 sub_80CA8C8(void); bool8 HidePartyMenu(void);
bool8 sub_80D127C(void); bool8 sub_80D127C(void);
bool8 sub_80CA2B8(void); bool8 sub_80CA2B8(void);
bool8 DoWallpaperGfxChange(void); bool8 DoWallpaperGfxChange(void);
@ -212,6 +238,7 @@ bool8 sub_80D00A8(void);
bool8 CanMoveMon(void); bool8 CanMoveMon(void);
bool8 CanShifMon(void); bool8 CanShifMon(void);
bool8 IsCursorOnCloseBox(void); bool8 IsCursorOnCloseBox(void);
bool8 IsCursorOnBox(void);
bool8 IsMonBeingMoved(void); bool8 IsMonBeingMoved(void);
bool8 sub_80CE19C(u8 arg0); bool8 sub_80CE19C(u8 arg0);
void Cb_InitPSS(u8 taskId); void Cb_InitPSS(u8 taskId);
@ -239,7 +266,7 @@ void Cb_ShowMarkMenu(u8 taskId);
void Cb_ShowMonSummary(u8 taskId); void Cb_ShowMonSummary(u8 taskId);
void Cb_ReleaseMon(u8 taskId); void Cb_ReleaseMon(u8 taskId);
void task_pokemon_box_related(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_MainPSS(u8 taskId);
void Cb_JumpBox(u8 taskId); void Cb_JumpBox(u8 taskId);
void Cb_HandleWallpapers(u8 taskId); void Cb_HandleWallpapers(u8 taskId);
@ -254,11 +281,13 @@ void sub_80D2918(u8 arg0);
void sub_80CC0D4(u8 arg0); void sub_80CC0D4(u8 arg0);
void sub_80CDC38(u8 arg0); void sub_80CDC38(u8 arg0);
void sub_80CE9A8(u8 markings); void sub_80CE9A8(u8 markings);
void sub_80CAD9C(u8 arg0); void ShowYesNoWindow(s8 cursorPos);
void sub_80CDBF8(u8 arg0); void sub_80CDBF8(u8 arg0);
void sub_80D01D0(u8 arg0); void sub_80D01D0(u8 arg0);
void sub_80CD1A8(bool8 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 sub_80D2770(u8 arg0, u16 arg1, u16 arg2);
void PrintStorageActionText(u8 id); void PrintStorageActionText(u8 id);
s16 sub_80D00AC(void); s16 sub_80D00AC(void);
@ -270,12 +299,20 @@ void sub_80D1114(bool8 inParty, u8 boxPosition);
void sub_80D0FAC(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); struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
void SetWallpaperForCurrentBox(u8 wallpaperId); void SetWallpaperForCurrentBox(u8 wallpaperId);
void sub_80CAE0C(u8 arg0); void sub_80CAE0C(u8 wallpaperSet);
u16 GetMovingItem(void); u16 GetMovingItem(void);
void SetCurrentBoxMonData(s32 monId, s32 request, const void *value); void SetCurrentBoxMonData(s32 monId, s32 request, const void *value);
void LoadCursorMonGfx(u16 species, u32 pid); void LoadCursorMonGfx(u16 species, u32 pid);
void sub_80CA2D0(struct Sprite *sprite); void sub_80CA2D0(struct Sprite *sprite);
void sub_80D27AC(u8 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); 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 rom data
const struct PSS_MenuStringPtrs gUnknown_085716C0[] = const struct PSS_MenuStringPtrs gUnknown_085716C0[] =
@ -479,40 +516,40 @@ const struct SpriteTemplate sSpriteTemplate_CursorMon =
const struct StorageAction gPCStorageActionTexts[] = const struct StorageAction gPCStorageActionTexts[] =
{ {
[PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, 0}, [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, 0}, [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, 0}, [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, 0}, [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL},
[PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, 1}, [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, 0}, [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, 0}, [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, 1}, [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, 0}, [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL},
[PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, 0}, [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, 4}, [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4},
[PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, 6}, [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6},
[PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, 0}, [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, 0}, [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, 0}, [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL},
[PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, 0}, [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, 0}, [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, 0}, [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, 0}, [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL},
[PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, 1}, [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1},
[PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, 0}, [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL},
[PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, 0}, [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, 0}, [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL},
[PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, 7}, [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, 0}, [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, 7}, [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_BAG_FULL] = {gText_BagIsFull2, 0}, [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL},
[PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, 0}, [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL},
[PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, 7}, [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, 7}, [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME},
[PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, 0}, [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL},
}; };
const struct WindowTemplate gUnknown_08572864 = const struct WindowTemplate sYesNoWindowTemplate =
{ {
.bg = 0, .bg = 0,
.tilemapLeft = 24, .tilemapLeft = 24,
@ -652,6 +689,179 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_857291C[] =
gSpriteAffineAnim_8572904 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 // code
u8 CountMonsInBox(u8 boxId) u8 CountMonsInBox(u8 boxId)
{ {
@ -915,7 +1125,7 @@ void FieldCb_ReturnToPcMenu(void)
SetVBlankCallback(NULL); SetVBlankCallback(NULL);
taskId = CreateTask(Task_PokemonStorageSystemPC, 80); taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
gTasks[taskId].data[0] = 0; gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = gUnknown_02039D00; gTasks[taskId].data[1] = sPreviousBoxOption;
Task_PokemonStorageSystemPC(taskId); Task_PokemonStorageSystemPC(taskId);
SetVBlankCallback(vblankCb); SetVBlankCallback(vblankCb);
pal_fill_black(); pal_fill_black();
@ -936,7 +1146,7 @@ void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
void Cb2_ExitPSS(void) void Cb2_ExitPSS(void)
{ {
gUnknown_02039D00 = sub_80CAEA0(); sPreviousBoxOption = GetCurrentBoxOption();
gFieldCallback = FieldCb_ReturnToPcMenu; gFieldCallback = FieldCb_ReturnToPcMenu;
SetMainCallback2(CB2_ReturnToField); SetMainCallback2(CB2_ReturnToField);
} }
@ -1219,7 +1429,7 @@ void Cb2_PSS(void)
void Cb2_EnterPSS(u8 boxOption) void Cb2_EnterPSS(u8 boxOption)
{ {
ResetTasks(); ResetTasks();
sBoxOption = boxOption; sCurrentBoxOption = boxOption;
gUnknown_02039D08 = Alloc(sizeof(*gUnknown_02039D08)); gUnknown_02039D08 = Alloc(sizeof(*gUnknown_02039D08));
if (gUnknown_02039D08 == NULL) if (gUnknown_02039D08 == NULL)
{ {
@ -1247,7 +1457,7 @@ void Cb2_ReturnToPSS(void)
} }
else else
{ {
gUnknown_02039D08->boxOption = sBoxOption; gUnknown_02039D08->boxOption = sCurrentBoxOption;
gUnknown_02039D08->isReshowingPSS = TRUE; gUnknown_02039D08->isReshowingPSS = TRUE;
gUnknown_02039D08->state = 0; gUnknown_02039D08->state = 0;
gUnknown_02039D08->taskId = CreateTask(Cb_InitPSS, 3); gUnknown_02039D08->taskId = CreateTask(Cb_InitPSS, 3);
@ -1406,7 +1616,7 @@ void Cb_InitPSS(u8 taskId)
else else
{ {
BlendPalettes(0xFFFFFFFF, 0x10, 0); BlendPalettes(0xFFFFFFFF, 0x10, 0);
SetPSSCallback(Cb_ReshowPSSAfterChoosingBagItem); SetPSSCallback(Cb_ReshowPSS);
} }
SetVBlankCallback(VblankCb_PSS); SetVBlankCallback(VblankCb_PSS);
return; return;
@ -1433,7 +1643,7 @@ void Cb_ShowPSS(u8 taskId)
} }
} }
void Cb_ReshowPSSAfterChoosingBagItem(u8 taskId) void Cb_ReshowPSS(u8 taskId)
{ {
switch (gUnknown_02039D08->state) switch (gUnknown_02039D08->state)
{ {
@ -1736,11 +1946,11 @@ void Cb_ShowPartyPokemon(u8 taskId)
switch (gUnknown_02039D08->state) switch (gUnknown_02039D08->state)
{ {
case 0: case 0:
sub_80CAB4C(); SetUpDoShowPartyMenu();
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
break; break;
case 1: case 1:
if (!sub_80CAB70()) if (!DoShowPartyMenu())
SetPSSCallback(Cb_MainPSS); SetPSSCallback(Cb_MainPSS);
break; break;
} }
@ -1752,11 +1962,11 @@ void Cb_HidePartyPokemon(u8 taskId)
{ {
case 0: case 0:
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sub_80CA888(); SetUpHidePartyMenu();
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
break; break;
case 1: case 1:
if (!sub_80CA8C8()) if (!HidePartyMenu())
{ {
sub_80CDBF8(sub_80CDC2C()); sub_80CDBF8(sub_80CDC2C());
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
@ -2016,12 +2226,12 @@ void Cb_WithdrawMon(u8 taskId)
if (!sub_80CDCAC()) if (!sub_80CDCAC())
{ {
sub_80CC0D4(1); sub_80CC0D4(1);
sub_80CAB4C(); SetUpDoShowPartyMenu();
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
} }
break; break;
case 3: case 3:
if (!sub_80CAB70()) if (!DoShowPartyMenu())
{ {
sub_80CDC38(1); sub_80CDC38(1);
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
@ -2109,7 +2319,7 @@ void Cb_ReleaseMon(u8 taskId)
{ {
case 0: case 0:
PrintStorageActionText(PC_TEXT_RELEASE_POKE); PrintStorageActionText(PC_TEXT_RELEASE_POKE);
sub_80CAD9C(1); ShowYesNoWindow(1);
gUnknown_02039D08->state++; gUnknown_02039D08->state++;
// fallthrough // fallthrough
case 1: case 1:
@ -2472,7 +2682,7 @@ void Cb_CloseBoxWhileHoldingItem(u8 taskId)
case 0: case 0:
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_PUT_IN_BAG); PrintStorageActionText(PC_TEXT_PUT_IN_BAG);
sub_80CAD9C(0); ShowYesNoWindow(0);
gUnknown_02039D08->state = 1; gUnknown_02039D08->state = 1;
break; break;
case 1: case 1:
@ -2814,7 +3024,7 @@ void Cb_OnCloseBoxPressed(u8 taskId)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_EXIT_BOX); PrintStorageActionText(PC_TEXT_EXIT_BOX);
sub_80CAD9C(0); ShowYesNoWindow(0);
gUnknown_02039D08->state = 2; gUnknown_02039D08->state = 2;
} }
break; break;
@ -2875,7 +3085,7 @@ void Cb_OnBPressed(u8 taskId)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
PrintStorageActionText(PC_TEXT_CONTINUE_BOX); PrintStorageActionText(PC_TEXT_CONTINUE_BOX);
sub_80CAD9C(0); ShowYesNoWindow(0);
gUnknown_02039D08->state = 2; gUnknown_02039D08->state = 2;
} }
break; break;
@ -3216,3 +3426,368 @@ void sub_80CA65C(void)
sub_80D2918(0); sub_80D2918(0);
schedule_bg_copy_tilemap_to_vram(1); 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;
}

View File

@ -207,7 +207,7 @@ gUnknown_02039CF4: @ 2039CF4
gUnknown_02039CF8: @ 2039CF8 gUnknown_02039CF8: @ 2039CF8
.space 0x8 .space 0x8
gUnknown_02039D00: @ 2039D00 sPreviousBoxOption: @ 2039D00
.space 0x4 .space 0x4
gUnknown_02039D04: @ 2039D04 gUnknown_02039D04: @ 2039D04
@ -219,7 +219,7 @@ gUnknown_02039D08: @ 2039D08
sInPartyMenu: @ 2039D0C sInPartyMenu: @ 2039D0C
.space 0x1 .space 0x1
sBoxOption: @ 2039D0D sCurrentBoxOption: @ 2039D0D
.space 0x1 .space 0x1
gUnknown_02039D0E: @ 2039D0E gUnknown_02039D0E: @ 2039D0E