summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-04-15 23:27:05 -0400
committerGriffinR <griffin.g.richards@gmail.com>2021-04-16 04:30:09 -0400
commite5f0d2f736ef4f1331430734e3c894cdbe4750b2 (patch)
tree21bee0c7f6a1a45313fa35183367ab75809d2d48 /src
parent84e1cbaaa651a937712ac95ae97cc1fb7675b735 (diff)
Doc storage - releasing, some cursor
Diffstat (limited to 'src')
-rw-r--r--src/pokemon.c6
-rw-r--r--src/pokemon_storage_system.c1198
2 files changed, 626 insertions, 578 deletions
diff --git a/src/pokemon.c b/src/pokemon.c
index 0b50a72f3..1d736be74 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -3926,9 +3926,9 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
{
u16 move = moves[i];
if (substruct1->moves[0] == move
- || substruct1->moves[1] == move
- || substruct1->moves[2] == move
- || substruct1->moves[3] == move)
+ || substruct1->moves[1] == move
+ || substruct1->moves[2] == move
+ || substruct1->moves[3] == move)
retVal |= gBitTable[i];
i++;
}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index bcf2d4075..f86a4bbbf 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -87,16 +87,16 @@ enum {
MSG_CANT_STORE_MAIL,
};
-// Formatting for the above messages
+// IDs for how to resolve variables in the above messages
enum {
- MSG_FORMAT_NORMAL,
- MSG_FORMAT_MON_NAME_1,
- MSG_FORMAT_MON_NAME_2, // Unused
- MSG_FORMAT_MON_NAME_3, // Unused
- MSG_FORMAT_MON_NAME_4,
- MSG_FORMAT_MON_NAME_5, // Unused
- MSG_FORMAT_MON_NAME_6,
- MSG_FORMAT_ITEM_NAME,
+ MSG_VAR_NONE,
+ MSG_VAR_MON_NAME_1,
+ MSG_VAR_MON_NAME_2, // Unused
+ MSG_VAR_MON_NAME_3, // Unused
+ MSG_VAR_RELEASE_MON_1,
+ MSG_VAR_RELEASE_MON_2, // Unused
+ MSG_VAR_RELEASE_MON_3,
+ MSG_VAR_ITEM_NAME,
};
// IDs for menu selection items. See SetMenuText, HandleMenuInput, etc
@@ -194,9 +194,15 @@ enum {
CURSOR_AREA_BOX,
CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box
};
-
#define CURSOR_AREA_IN_HAND CURSOR_AREA_BOX // Alt name for cursor area used by Move Items
+enum {
+ CURSOR_ANIM_BOUNCE,
+ CURSOR_ANIM_STILL,
+ CURSOR_ANIM_OPEN,
+ CURSOR_ANIM_FIST,
+};
+
// Special box ids for the choose box menu
#define BOXID_NONE_CHOSEN 200
#define BOXID_CANCELED 201
@@ -205,24 +211,24 @@ enum {
PALTAG_MON_ICON_0 = 56000,
PALTAG_MON_ICON_1, // Used implicitly in CreateMonIconSprite
PALTAG_MON_ICON_2, // Used implicitly in CreateMonIconSprite
- PALTAG_3,
- PALTAG_4,
- PALTAG_5,
- PALTAG_CURSOR_MON,
+ PALTAG_3, // Unused
+ PALTAG_4, // Unused
+ PALTAG_5, // Unused
+ PALTAG_DISPLAY_MON,
PALTAG_7,
- PALTAG_MON_MARKING,
+ PALTAG_MARKING_COMBO,
PALTAG_BOX_TITLE,
PALTAG_10,
PALTAG_ITEM_ICON_0,
PALTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites
PALTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites
- PALTAG_14,
+ PALTAG_MARKING_MENU,
};
enum {
- TAG_TILE_0,
- TAG_TILE_1,
- GFXTAG_CURSOR_MON,
+ GFXTAG_CURSOR,
+ GFXTAG_CURSOR_SHADOW,
+ GFXTAG_DISPLAY_MON,
GFXTAG_BOX_TITLE,
GFXTAG_BOX_TITLE_ALT,
GFXTAG_WAVEFORM,
@@ -232,15 +238,19 @@ enum {
GFXTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites
GFXTAG_CHOOSE_BOX_MENU,
GFXTAG_CHOOSE_BOX_MENU_SIDES, // Used implicitly in LoadChooseBoxMenuGfx
- GFXTAG_12,
- GFXTAG_13,
- GFXTAG_14,
- GFXTAG_15,
- GFXTAG_MON_MARKING,
- GFXTAG_17,
+ GFXTAG_12, // Unused
+ GFXTAG_MARKING_MENU,
+ GFXTAG_14, // Unused
+ GFXTAG_15, // Unused
+ GFXTAG_MARKING_COMBO,
+ GFXTAG_17, // Unused
GFXTAG_18,
};
+// The maximum number of Pokémon icons that can appear on-screen.
+// By default the limit is 40 (though in practice only 37 can be).
+#define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40)
+
// The maximum number of item icons that can appear on-screen while
// moving held items. 1 in the cursor, and 2 more while switching
// between 2 Pokémon with held items
@@ -269,6 +279,11 @@ enum {
ITEM_CB_HIDE_PARTY,
};
+enum {
+ RELEASE_ANIM_RELEASE,
+ RELEASE_ANIM_CAME_BACK,
+};
+
struct Wallpaper
{
const u32 *tiles;
@@ -315,14 +330,14 @@ struct ChooseBoxMenu
{
struct Sprite *menuSprite;
struct Sprite *menuSideSprites[4];
- u32 unk_0014[3];
+ u32 unused1[3];
struct Sprite *arrowSprites[2];
- u8 filler_0028[0x214];
+ u8 unused2[0x214];
bool32 loadedPalette;
u16 tileTag;
u16 paletteTag;
u8 curBox;
- u8 unk_0245;
+ u8 unused3;
u8 subpriority;
};
@@ -331,8 +346,8 @@ struct ItemIcon
struct Sprite *sprite;
u8 *tiles;
u16 palIndex;
- u8 cursorArea;
- u8 cursorPos;
+ u8 area;
+ u8 pos;
bool8 active;
};
@@ -394,9 +409,9 @@ struct PokemonStorageSystemData
struct Sprite *partySprites[PARTY_SIZE];
struct Sprite *boxMonsSprites[IN_BOX_COUNT];
struct Sprite **field_B00;
- struct Sprite **field_B04;
- u16 field_B08[40];
- u16 field_B58[40];
+ struct Sprite **releaseMonSpritePtr;
+ u16 numIconsPerSpecies[MAX_MON_ICONS];
+ u16 iconSpeciesList[MAX_MON_ICONS];
u16 boxSpecies[IN_BOX_COUNT];
u32 boxPersonalities[IN_BOX_COUNT];
u8 field_C5C;
@@ -416,7 +431,7 @@ struct PokemonStorageSystemData
u8 menuWidth;
u8 field_CAE; // Written to, but never read.
u16 menuWindowId;
- struct Sprite *field_CB4;
+ struct Sprite *cursorSprite;
struct Sprite *field_CB8;
s32 field_CBC;
s32 field_CC0;
@@ -431,21 +446,21 @@ struct PokemonStorageSystemData
u8 field_CD5;
u8 field_CD6;
u8 field_CD7;
- u8 field_CD8[2];
- const u32 *cursorMonPalette;
- u32 cursorMonPersonality;
- u16 cursorMonSpecies;
- u16 cursorMonItemId;
+ u8 cursorPalNums[2];
+ const u32 *displayMonPalette;
+ u32 displayMonPersonality;
+ u16 displayMonSpecies;
+ u16 displayMonItemId;
u16 field_CE8;
bool8 setMosaic;
- u8 cursorMonMarkings;
- u8 cursorMonLevel;
- bool8 cursorMonIsEgg;
- u8 cursorMonNick[POKEMON_NAME_LENGTH + 1];
- u8 cursorMonNickText[36];
- u8 cursorMonSpeciesName[36];
- u8 cursorMonGenderLvlText[36];
- u8 cursorMonItemName[36];
+ u8 displayMonMarkings;
+ u8 displayMonLevel;
+ bool8 displayMonIsEgg;
+ u8 displayMonName[POKEMON_NAME_LENGTH + 1];
+ u8 displayMonNameText[36];
+ u8 displayMonSpeciesName[36];
+ u8 displayMonGenderLvlText[36];
+ u8 displayMonItemName[36];
bool8 (*monPlaceChangeFunc)(void);
u8 monPlaceChangeState;
u8 field_D91;
@@ -455,16 +470,16 @@ struct PokemonStorageSystemData
struct MonMarkingsMenu markMenu;
struct ChooseBoxMenu chooseBoxMenu;
struct Pokemon movingMon;
- struct Pokemon field_2108;
- s8 field_216C;
- u8 field_216D;
- s8 field_216E;
- s8 field_216F;
- s8 field_2170;
- s8 field_2171;
- u16 field_2172;
- u16 field_2174;
- u16 field_2176[8];
+ struct Pokemon tempMon;
+ s8 canReleaseMon;
+ bool8 releaseStatusResolved;
+ s8 releaseCheckBoxId;
+ s8 releaseCheckBoxPos;
+ s8 releaseBoxId;
+ s8 releaseBoxPos;
+ u16 releaseCheckState;
+ u16 restrictedReleaseMonMoves;
+ u16 restrictedMoveList[8];
u8 field_2186;
u8 field_2187;
u8 summaryScreenMode;
@@ -475,7 +490,7 @@ struct PokemonStorageSystemData
} field_218C;
u8 field_2190[40];
u8 boxTitleText[40];
- u8 field_21E0[POKEMON_NAME_LENGTH + 1];
+ u8 releaseMonName[POKEMON_NAME_LENGTH + 1];
u8 itemName[20];
u8 inBoxMovingMode;
u16 field_2200;
@@ -483,10 +498,10 @@ struct PokemonStorageSystemData
u16 movingItemId;
u16 itemInfoWindowOffset;
u8 field_2238; // Unused
- u16 cursorMonPalOffset;
- u16 *cursorMonTilePtr;
- struct Sprite *cursorMonSprite;
- u16 cursorMonPalBuffer[0x40];
+ u16 displayMonPalOffset;
+ u16 *displayMonTilePtr;
+ struct Sprite *displayMonSprite;
+ u16 displayMonPalBuffer[0x40];
u8 tileBuffer[0x800];
u8 field_2AC4[0x1800]; // Unused
u8 field_42C4[0x800];
@@ -578,25 +593,25 @@ static void sub_80CAEAC(void);
static void CreateItemIconSprites(void);
static void sub_80CFEA8(void);
static void sub_80CDC0C(void);
-static void sub_80CAF04(void);
+static void InitMonIconFields(void);
static void sub_80CA0D8(void);
static void AddMenu(void);
-static void sub_80CE250(void);
-static void InitCanRelaseMonVars(void);
+static void InitReleaseMon(void);
+static void InitCanReleaseMonVars(void);
static void sub_80D01B8(void);
static void ReleaseMon(void);
-static void RefreshCursorMonData(void);
-static void CreateCursorMonSprite(void);
+static void RefreshDisplayMonData(void);
+static void CreateDisplayMonSprite(void);
static void CreateMarkingComboSprite(void);
static void CreateWaveformSprites(void);
-static void sub_80CC064(void);
-static void sub_80CE324(void);
+static void ReshowReleaseMon(void);
+static void TrySetCursorFistAnim(void);
static void ClearBottomWindow(void);
static void sub_80CA704(void);
static void RemoveMenu(void);
static void sub_80CE00C(void);
static void sub_80D1194(void);
-static void PrintCursorMonInfo(void);
+static void PrintDisplayMonInfo(void);
static void UpdateWaveformAnimation(void);
static void AddWallpaperSetsMenu(void);
static void CreateBoxScrollArrows(void);
@@ -625,15 +640,15 @@ static void sub_80CDA68(void);
static void sub_80CB950(void);
static void sub_80CA9C0(void);
static void SetUpDoShowPartyMenu(void);
-static void BoxSetMosaic(void);
+static void StartDisplayMonMosaicEffect(void);
static void SpriteCB_ChooseBoxArrow(struct Sprite *);
-static void sub_80CC100(struct Sprite *);
+static void SpriteCB_HeldMon(struct Sprite *);
static void sub_80CB278(struct Sprite *);
static void SpriteCB_Arrow(struct Sprite *);
static bool32 WaitForWallpaperGfxLoad(void);
static bool8 InitPSSWindows(void);
-static bool8 sub_80CC0A0(void);
-static bool8 sub_80CE2A8(void);
+static bool8 ResetReleaseMonSpritePtr(void);
+static bool8 TryHideReleaseMon(void);
static bool8 sub_80D0164(void);
static bool8 IsInitBoxActive(void);
static bool8 sub_80D01E4(void);
@@ -649,7 +664,7 @@ static bool8 HidePartyMenu(void);
static bool8 IsMovingItem(void);
static bool8 sub_80D0580(u8);
static bool8 sub_80D0BC0(void);
-static bool8 GetCursorMonMosaic(void);
+static bool8 IsDisplayMosaicActive(void);
static bool8 DoWallpaperGfxChange(void);
static bool8 DoMonPlaceChange(void);
static bool8 IsMenuLoading(void);
@@ -692,7 +707,7 @@ static void Cb_NameBox(u8);
static void Cb_PrintCantStoreMail(u8);
static void Cb_HandleMovingMonFromParty(u8);
static void SetUpScrollToBox(u8);
-static void sub_80CFE54(u8);
+static void StartCursorAnim(u8);
static void SetMovingMonPriority(u8);
static void InitMonPlaceChange(u8);
static void SetMonMarkings(u8);
@@ -714,8 +729,8 @@ static struct Sprite *CreateChooseBoxArrows(u16, u16, u8, u8, u8);
static void SetWallpaperForCurrentBox(u8);
static void AddWallpapersMenu(u8);
static u16 GetMovingItemId(void);
-static void LoadCursorMonGfx(u16, u32);
-static void sub_80CA2D0(struct Sprite *);
+static void LoadDisplayMonGfx(u16, u32);
+static void SpriteCB_DisplayMonMosaic(struct Sprite *);
static void SpriteCB_OutgoingBoxTitle(struct Sprite *);
static void sub_80CBA3C(struct Sprite *);
static void SpriteCB_IncomingBoxTitle(struct Sprite *);
@@ -740,12 +755,12 @@ static bool8 MonPlaceChange_Move(void);
static bool8 MonPlaceChange_Place(void);
static bool8 sub_80CDEC4(void);
static bool8 sub_80CDEB4(void);
-static void sub_80CD444(u8, u8, u16 *, u16 *);
+static void GetCursorCoordsByPos(u8, u8, u16 *, u16 *);
static void SetShiftedMonData(u8, u8);
static void SetMovedMonData(u8, u8);
static void SetPlacedMonData(u8, u8);
static void PurgeMonOrBoxMon(u8, u8);
-static void SetCursorMonData(void *, u8);
+static void SetDisplayMonData(void *, u8);
static bool32 AtLeastThreeUsableMons(void);
static u8 InBoxInput_Normal(void);
static u8 InBoxInput_MovingMultiple(void);
@@ -864,8 +879,8 @@ static const u8 sText_OutOf30[] = _("/30");
static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal");
static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
static const u8 sChooseBoxMenuSides_Gfx[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
-static const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz");
-static const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz");
+static const u32 sScrollingBg_Gfx[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.4bpp.lz");
+static const u32 sScrollingBg_Tilemap[] = INCBIN_U32("graphics/pokemon_storage/scrolling_bg.bin.lz");
static const u32 gUnknown_08572280[] = INCBIN_U32("graphics/unknown/unknown_572280.gbapal");
static const u32 gUnknown_085722A0[] = INCBIN_U32("graphics/unknown/unknown_5722A0.bin.lz");
@@ -895,14 +910,14 @@ static const u16 gUnknown_085724BC[] =
0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165,
};
-static const u16 gWaveformPalette[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
-static const u32 gWaveformTiles[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp");
+static const u16 sWaveform_Pal[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
+static const u32 sWaveform_Gfx[] = INCBIN_U32("graphics/pokemon_storage/waveform.4bpp");
static const u32 gUnknown_085726B4[] = INCBIN_U32("graphics/unused/unknown_5726B4.gbapal");
static const u32 gUnknown_085726F4[] = INCBIN_U32("graphics/unknown/unknown_5726F4.gbapal");
-static const struct WindowTemplate gUnknown_08572714[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
- { // 0
+ {
.bg = 1,
.tilemapLeft = 0,
.tilemapTop = 11,
@@ -911,7 +926,7 @@ static const struct WindowTemplate gUnknown_08572714[] =
.paletteNum = 3,
.baseBlock = 0xC0,
},
- { // 1
+ {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 17,
@@ -920,7 +935,7 @@ static const struct WindowTemplate gUnknown_08572714[] =
.paletteNum = 15,
.baseBlock = 0x14,
},
- { // 2
+ {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 13,
@@ -974,20 +989,20 @@ static const struct BgTemplate gUnknown_08572734[] =
static const struct SpritePalette gWaveformSpritePalette =
{
- gWaveformPalette, PALTAG_10
+ sWaveform_Pal, PALTAG_10
};
static const struct SpriteSheet sSpriteSheet_Waveform =
{
- gWaveformTiles, sizeof(gWaveformTiles), GFXTAG_WAVEFORM
+ sWaveform_Gfx, sizeof(sWaveform_Gfx), GFXTAG_WAVEFORM
};
-static const struct OamData sOamData_CursorMon;
-static const struct SpriteTemplate sSpriteTemplate_CursorMon =
+static const struct OamData sOamData_DisplayMon;
+static const struct SpriteTemplate sSpriteTemplate_DisplayMon =
{
- .tileTag = GFXTAG_CURSOR_MON,
- .paletteTag = PALTAG_CURSOR_MON,
- .oam = &sOamData_CursorMon,
+ .tileTag = GFXTAG_DISPLAY_MON,
+ .paletteTag = PALTAG_DISPLAY_MON,
+ .oam = &sOamData_DisplayMon,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -996,37 +1011,37 @@ static const struct SpriteTemplate sSpriteTemplate_CursorMon =
static const struct StorageMessage sMessages[] =
{
- [MSG_EXIT_BOX] = {gText_ExitFromBox, MSG_FORMAT_NORMAL},
- [MSG_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, MSG_FORMAT_NORMAL},
- [MSG_PICK_A_THEME] = {gText_PleasePickATheme, MSG_FORMAT_NORMAL},
- [MSG_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, MSG_FORMAT_NORMAL},
- [MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_FORMAT_MON_NAME_1},
- [MSG_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, MSG_FORMAT_NORMAL},
- [MSG_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, MSG_FORMAT_NORMAL},
- [MSG_WAS_DEPOSITED] = {gText_PkmnWasDeposited, MSG_FORMAT_MON_NAME_1},
- [MSG_BOX_IS_FULL] = {gText_BoxIsFull2, MSG_FORMAT_NORMAL},
- [MSG_RELEASE_POKE] = {gText_ReleaseThisPokemon, MSG_FORMAT_NORMAL},
- [MSG_WAS_RELEASED] = {gText_PkmnWasReleased, MSG_FORMAT_MON_NAME_4},
- [MSG_BYE_BYE] = {gText_ByeByePkmn, MSG_FORMAT_MON_NAME_6},
- [MSG_MARK_POKE] = {gText_MarkYourPkmn, MSG_FORMAT_NORMAL},
- [MSG_LAST_POKE] = {gText_ThatsYourLastPkmn, MSG_FORMAT_NORMAL},
- [MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_FORMAT_NORMAL},
- [MSG_HOLDING_POKE] = {gText_YoureHoldingAPkmn, MSG_FORMAT_NORMAL},
- [MSG_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, MSG_FORMAT_NORMAL},
- [MSG_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, MSG_FORMAT_NORMAL},
- [MSG_CONTINUE_BOX] = {gText_ContinueBoxOperations, MSG_FORMAT_NORMAL},
- [MSG_CAME_BACK] = {gText_PkmnCameBack, MSG_FORMAT_MON_NAME_1},
- [MSG_WORRIED] = {gText_WasItWorriedAboutYou, MSG_FORMAT_NORMAL},
- [MSG_SURPRISE] = {gText_FourEllipsesExclamation, MSG_FORMAT_NORMAL},
- [MSG_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, MSG_FORMAT_NORMAL},
- [MSG_IS_SELECTED2] = {gText_PkmnIsSelected, MSG_FORMAT_ITEM_NAME},
- [MSG_GIVE_TO_MON] = {gText_GiveToAPkmn, MSG_FORMAT_NORMAL},
- [MSG_PLACED_IN_BAG] = {gText_PlacedItemInBag, MSG_FORMAT_ITEM_NAME},
- [MSG_BAG_FULL] = {gText_BagIsFull2, MSG_FORMAT_NORMAL},
- [MSG_PUT_IN_BAG] = {gText_PutItemInBag, MSG_FORMAT_NORMAL},
- [MSG_ITEM_IS_HELD] = {gText_ItemIsNowHeld, MSG_FORMAT_ITEM_NAME},
- [MSG_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, MSG_FORMAT_ITEM_NAME},
- [MSG_CANT_STORE_MAIL] = {gText_MailCantBeStored, MSG_FORMAT_NORMAL},
+ [MSG_EXIT_BOX] = {gText_ExitFromBox, MSG_VAR_NONE},
+ [MSG_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, MSG_VAR_NONE},
+ [MSG_PICK_A_THEME] = {gText_PleasePickATheme, MSG_VAR_NONE},
+ [MSG_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, MSG_VAR_NONE},
+ [MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_VAR_MON_NAME_1},
+ [MSG_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, MSG_VAR_NONE},
+ [MSG_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, MSG_VAR_NONE},
+ [MSG_WAS_DEPOSITED] = {gText_PkmnWasDeposited, MSG_VAR_MON_NAME_1},
+ [MSG_BOX_IS_FULL] = {gText_BoxIsFull2, MSG_VAR_NONE},
+ [MSG_RELEASE_POKE] = {gText_ReleaseThisPokemon, MSG_VAR_NONE},
+ [MSG_WAS_RELEASED] = {gText_PkmnWasReleased, MSG_VAR_RELEASE_MON_1},
+ [MSG_BYE_BYE] = {gText_ByeByePkmn, MSG_VAR_RELEASE_MON_3},
+ [MSG_MARK_POKE] = {gText_MarkYourPkmn, MSG_VAR_NONE},
+ [MSG_LAST_POKE] = {gText_ThatsYourLastPkmn, MSG_VAR_NONE},
+ [MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_VAR_NONE},
+ [MSG_HOLDING_POKE] = {gText_YoureHoldingAPkmn, MSG_VAR_NONE},
+ [MSG_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, MSG_VAR_NONE},
+ [MSG_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, MSG_VAR_NONE},
+ [MSG_CONTINUE_BOX] = {gText_ContinueBoxOperations, MSG_VAR_NONE},
+ [MSG_CAME_BACK] = {gText_PkmnCameBack, MSG_VAR_MON_NAME_1},
+ [MSG_WORRIED] = {gText_WasItWorriedAboutYou, MSG_VAR_NONE},
+ [MSG_SURPRISE] = {gText_FourEllipsesExclamation, MSG_VAR_NONE},
+ [MSG_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, MSG_VAR_NONE},
+ [MSG_IS_SELECTED2] = {gText_PkmnIsSelected, MSG_VAR_ITEM_NAME},
+ [MSG_GIVE_TO_MON] = {gText_GiveToAPkmn, MSG_VAR_NONE},
+ [MSG_PLACED_IN_BAG] = {gText_PlacedItemInBag, MSG_VAR_ITEM_NAME},
+ [MSG_BAG_FULL] = {gText_BagIsFull2, MSG_VAR_NONE},
+ [MSG_PUT_IN_BAG] = {gText_PutItemInBag, MSG_VAR_NONE},
+ [MSG_ITEM_IS_HELD] = {gText_ItemIsNowHeld, MSG_VAR_ITEM_NAME},
+ [MSG_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, MSG_VAR_ITEM_NAME},
+ [MSG_CANT_STORE_MAIL] = {gText_MailCantBeStored, MSG_VAR_NONE},
};
static const struct WindowTemplate sYesNoWindowTemplate =
@@ -1040,7 +1055,7 @@ static const struct WindowTemplate sYesNoWindowTemplate =
.baseBlock = 0x5C,
};
-static const struct OamData sOamData_CursorMon =
+static const struct OamData sOamData_DisplayMon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -1121,19 +1136,19 @@ static const struct SpriteTemplate sSpriteTemplate_Waveform =
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_85728EC;
-static const struct SpriteTemplate gUnknown_085728D4 =
+static const struct OamData sOamData_MonIcon;
+static const struct SpriteTemplate sSpriteTemplate_MonIcon =
{
.tileTag = GFXTAG_18,
.paletteTag = PALTAG_MON_ICON_0,
- .oam = &sOamData_85728EC,
+ .oam = &sOamData_MonIcon,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-static const struct OamData sOamData_85728EC =
+static const struct OamData sOamData_MonIcon =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -1150,23 +1165,23 @@ static const struct OamData sOamData_85728EC =
.affineParam = 0
};
-static const union AffineAnimCmd gSpriteAffineAnim_85728F4[] =
+static const union AffineAnimCmd sAffineAnim_ReleaseMon_Release[] =
{
AFFINEANIMCMD_FRAME(-2, -2, 0, 120),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd gSpriteAffineAnim_8572904[] =
+static const union AffineAnimCmd sAffineAnim_ReleaseMon_CameBack[] =
{
AFFINEANIMCMD_FRAME(16, 16, 0, 0),
AFFINEANIMCMD_FRAME(16, 16, 0, 15),
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gSpriteAffineAnimTable_857291C[] =
+static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] =
{
- gSpriteAffineAnim_85728F4,
- gSpriteAffineAnim_8572904
+ [RELEASE_ANIM_RELEASE] = sAffineAnim_ReleaseMon_Release,
+ [RELEASE_ANIM_CAME_BACK] = sAffineAnim_ReleaseMon_CameBack
};
#include "data/wallpapers.h"
@@ -1247,9 +1262,9 @@ static const struct SpriteTemplate sSpriteTemplate_Arrow =
.callback = SpriteCB_Arrow
};
-static const u16 gHandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal");
-static const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp");
-static const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
+static const u16 sHandCursor_Pal[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal");
+static const u8 sHandCursor_Gfx[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp");
+static const u8 sHandCursorShadow_Gfx[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, s32 bytesToBuffer)
{
@@ -2026,7 +2041,7 @@ static void Cb_InitPSS(u8 taskId)
sub_80C7F1C();
break;
case 4:
- sub_80CAF04();
+ InitMonIconFields();
if (!sPSSData->isReshowingPSS)
sub_80CD36C();
else
@@ -2059,8 +2074,8 @@ static void Cb_InitPSS(u8 taskId)
if (sPSSData->boxOption != OPTION_MOVE_ITEMS)
{
- sPSSData->markMenu.baseTileTag = GFXTAG_13;
- sPSSData->markMenu.basePaletteTag = PALTAG_14;
+ sPSSData->markMenu.baseTileTag = GFXTAG_MARKING_MENU;
+ sPSSData->markMenu.basePaletteTag = PALTAG_MARKING_MENU;
InitMonMarkingsMenu(&sPSSData->markMenu);
BufferMonMarkingsMenuTiles();
}
@@ -2169,7 +2184,7 @@ static void Cb_MainPSS(u8 taskId)
case INPUT_6:
if (sPSSData->boxOption == OPTION_MOVE_MONS)
{
- if (IsMonBeingMoved() && ItemIsMail(sPSSData->cursorMonItemId))
+ if (IsMonBeingMoved() && ItemIsMail(sPSSData->displayMonItemId))
sPSSData->state = 5;
else
SetPSSCallback(Cb_HidePartyPokemon);
@@ -2227,7 +2242,7 @@ static void Cb_MainPSS(u8 taskId)
case INPUT_11:
if (!CanMovePartyMon())
{
- if (ItemIsMail(sPSSData->cursorMonItemId))
+ if (ItemIsMail(sPSSData->displayMonItemId))
{
sPSSData->state = 5;
}
@@ -2326,7 +2341,7 @@ static void Cb_MainPSS(u8 taskId)
sub_80CA9EC();
if (sPSSData->setMosaic)
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
sPSSData->state = 0;
}
break;
@@ -2337,7 +2352,7 @@ static void Cb_MainPSS(u8 taskId)
if (!sInPartyMenu && !IsMonBeingMoved())
{
sub_80CE00C();
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
}
if (sPSSData->boxOption == OPTION_MOVE_ITEMS)
@@ -2387,7 +2402,7 @@ static void Cb_MainPSS(u8 taskId)
if (!sub_80D01E4())
{
if (sPSSData->setMosaic)
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
sPSSData->state = 0;
}
break;
@@ -2440,7 +2455,7 @@ static void Cb_HidePartyPokemon(u8 taskId)
if (!sub_80CD554())
{
if (sPSSData->setMosaic)
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
SetPSSCallback(Cb_MainPSS);
}
break;
@@ -2452,12 +2467,12 @@ static void Cb_OnSelectedMon(u8 taskId)
switch (sPSSData->state)
{
case 0:
- if (!GetCursorMonMosaic())
+ if (!IsDisplayMosaicActive())
{
PlaySE(SE_SELECT);
if (sPSSData->boxOption != OPTION_MOVE_ITEMS)
PrintMessage(MSG_IS_SELECTED);
- else if (IsMovingItem() || sPSSData->cursorMonItemId != ITEM_NONE)
+ else if (IsMovingItem() || sPSSData->displayMonItemId != ITEM_NONE)
PrintMessage(MSG_IS_SELECTED2);
else
PrintMessage(MSG_GIVE_TO_MON);
@@ -2517,7 +2532,7 @@ static void Cb_OnSelectedMon(u8 taskId)
{
sPSSData->state = 3;
}
- else if (ItemIsMail(sPSSData->cursorMonItemId))
+ else if (ItemIsMail(sPSSData->displayMonItemId))
{
sPSSData->state = 4;
}
@@ -2533,11 +2548,11 @@ static void Cb_OnSelectedMon(u8 taskId)
{
sPSSData->state = 3;
}
- else if (sPSSData->cursorMonIsEgg)
+ else if (sPSSData->displayMonIsEgg)
{
sPSSData->state = 5; // Cannot release an Egg.
}
- else if (ItemIsMail(sPSSData->cursorMonItemId))
+ else if (ItemIsMail(sPSSData->displayMonItemId))
{
sPSSData->state = 4;
}
@@ -2655,7 +2670,7 @@ static void Cb_ShiftMon(u8 taskId)
case 1:
if (!DoMonPlaceChange())
{
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
SetPSSCallback(Cb_MainPSS);
}
break;
@@ -2764,7 +2779,7 @@ static void Cb_DepositMenu(u8 taskId)
if (!sub_80CB9BC())
{
sub_80CE22C();
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
sub_80CAB20();
SetPSSCallback(Cb_MainPSS);
}
@@ -2792,33 +2807,33 @@ static void Cb_ReleaseMon(u8 taskId)
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
case MENU_B_PRESSED:
- case 1:
+ case 1: // No
ClearBottomWindow();
SetPSSCallback(Cb_MainPSS);
break;
- case 0:
+ case 0: // Yes
ClearBottomWindow();
- InitCanRelaseMonVars();
- sub_80CE250();
+ InitCanReleaseMonVars();
+ InitReleaseMon();
sPSSData->state++;
break;
}
break;
case 2:
RunCanReleaseMon();
- if (!sub_80CE2A8())
+ if (!TryHideReleaseMon())
{
while (1)
{
- s8 r0 = RunCanReleaseMon();
- if (r0 == 1)
+ s8 canRelease = RunCanReleaseMon();
+ if (canRelease == TRUE)
{
sPSSData->state++;
break;
}
- else if (r0 == 0)
+ else if (!canRelease)
{
- sPSSData->state = 8; // Can't release the mon.
+ sPSSData->state = 8;
break;
}
}
@@ -2826,7 +2841,7 @@ static void Cb_ReleaseMon(u8 taskId)
break;
case 3:
ReleaseMon();
- RefreshCursorMonData();
+ RefreshDisplayMonData();
PrintMessage(MSG_WAS_RELEASED);
sPSSData->state++;
break;
@@ -2857,7 +2872,7 @@ static void Cb_ReleaseMon(u8 taskId)
if (!sub_80CB9BC())
{
sub_80CE00C();
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
sub_80CAB20();
sPSSData->state++;
}
@@ -2866,6 +2881,7 @@ static void Cb_ReleaseMon(u8 taskId)
SetPSSCallback(Cb_MainPSS);
break;
case 8:
+ // Start "can't release" sequence
PrintMessage(MSG_WAS_RELEASED);
sPSSData->state++;
break;
@@ -2880,14 +2896,14 @@ static void Cb_ReleaseMon(u8 taskId)
if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY))
{
ClearBottomWindow();
- sub_80CC064();
+ ReshowReleaseMon();
sPSSData->state++;
}
break;
case 11:
- if (!sub_80CC0A0())
+ if (!ResetReleaseMonSpritePtr())
{
- sub_80CE324();
+ TrySetCursorFistAnim();
PrintMessage(MSG_CAME_BACK);
sPSSData->state++;
}
@@ -2915,8 +2931,8 @@ static void Cb_ShowMarkMenu(u8 taskId)
{
case 0:
PrintMessage(MSG_MARK_POKE);
- sPSSData->markMenu.markings = sPSSData->cursorMonMarkings;
- OpenMonMarkingsMenu(sPSSData->cursorMonMarkings, 0xb0, 0x10);
+ sPSSData->markMenu.markings = sPSSData->displayMonMarkings;
+ OpenMonMarkingsMenu(sPSSData->displayMonMarkings, 0xb0, 0x10);
sPSSData->state++;
break;
case 1:
@@ -2925,7 +2941,7 @@ static void Cb_ShowMarkMenu(u8 taskId)
FreeMonMarkingsMenu();
ClearBottomWindow();
SetMonMarkings(sPSSData->markMenu.markings);
- RefreshCursorMonData();
+ RefreshDisplayMonData();
SetPSSCallback(Cb_MainPSS);
}
break;
@@ -2937,7 +2953,7 @@ static void Cb_TakeItemForMoving(u8 taskId)
switch (sPSSData->state)
{
case 0:
- if (!ItemIsMail(sPSSData->cursorMonItemId))
+ if (!ItemIsMail(sPSSData->displayMonItemId))
{
ClearBottomWindow();
sPSSData->state++;
@@ -2948,17 +2964,17 @@ static void Cb_TakeItemForMoving(u8 taskId)
}
break;
case 1:
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
Item_FromMonToMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
sPSSData->state++;
break;
case 2:
if (!IsItemIconAnimActive())
{
- sub_80CFE54(3);
+ StartCursorAnim(CURSOR_ANIM_FIST);
ClearBottomWindow();
sub_80CE00C();
- PrintCursorMonInfo();
+ PrintDisplayMonInfo();
sPSSData->state++;
}
break;
@@ -2978,16 +2994,16 @@ static void Cb_GiveMovingItemToMon(u8 taskId)
sPSSData->state++;
break;
case 1:
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
Item_GiveMovingToMon((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
sPSSData->state++;
break;
case 2:
if (!IsItemIconAnimActive())
{
- sub_80CFE54(0);
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
sub_80CE00C();
- PrintCursorMonInfo();
+ PrintDisplayMonInfo();
PrintMessage(MSG_ITEM_IS_HELD);
sPSSData->state++;
}
@@ -3011,7 +3027,7 @@ static void Cb_ItemToBag(u8 taskId)
switch (sPSSData->state)
{
case 0:
- if (!AddBagItem(sPSSData->cursorMonItemId, 1))
+ if (!AddBagItem(sPSSData->displayMonItemId, 1))
{
PlaySE(SE_FAILURE);
PrintMessage(MSG_BAG_FULL);
@@ -3036,7 +3052,7 @@ static void Cb_ItemToBag(u8 taskId)
{
ClearBottomWindow();
sub_80CE00C();
- PrintCursorMonInfo();
+ PrintDisplayMonInfo();
sPSSData->state = 4;
}
break;
@@ -3059,7 +3075,7 @@ static void Cb_SwitchSelectedItem(u8 taskId)
switch (sPSSData->state)
{
case 0:
- if (!ItemIsMail(sPSSData->cursorMonItemId))
+ if (!ItemIsMail(sPSSData->displayMonItemId))
{
ClearBottomWindow();
sPSSData->state++;
@@ -3070,16 +3086,16 @@ static void Cb_SwitchSelectedItem(u8 taskId)
}
break;
case 1:
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
Item_SwitchMonsWithMoving((sInPartyMenu != FALSE) ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
sPSSData->state++;
break;
case 2:
if (!IsItemIconAnimActive())
{
- sub_80CFE54(3);
+ StartCursorAnim(CURSOR_ANIM_FIST);
sub_80CE00C();
- PrintCursorMonInfo();
+ PrintDisplayMonInfo();
PrintMessage(MSG_CHANGED_TO_ITEM);
sPSSData->state++;
}
@@ -3187,7 +3203,7 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId)
case 4:
if (!IsItemIconAnimActive())
{
- sub_80CFE54(0);
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
SetPSSCallback(Cb_MainPSS);
}
break;
@@ -3666,8 +3682,8 @@ static void FreePSSData(void)
static void SetScrollingBackground(void)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31));
- DecompressAndLoadBgGfxUsingHeap(3, gPokemonStorageScrollingBGTileset, 0, 0, 0);
- LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)BG_SCREEN_ADDR(31));
+ DecompressAndLoadBgGfxUsingHeap(3, sScrollingBg_Gfx, 0, 0, 0);
+ LZ77UnCompVram(sScrollingBg_Tilemap, (void *)BG_SCREEN_ADDR(31));
}
static void ScrollBackground(void)
@@ -3688,7 +3704,7 @@ static void LoadPSSMenuGfx(void)
static bool8 InitPSSWindows(void)
{
- if (!InitWindows(gUnknown_08572714))
+ if (!InitWindows(sWindowTemplates))
{
return FALSE;
}
@@ -3715,20 +3731,20 @@ static void sub_80CA0D8(void)
LoadPalette(gUnknown_0857243C, 0x30, 0x20);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30));
- CreateCursorMonSprite();
+ CreateDisplayMonSprite();
CreateMarkingComboSprite();
CreateWaveformSprites();
- RefreshCursorMonData();
+ RefreshDisplayMonData();
}
static void CreateMarkingComboSprite(void)
{
- sPSSData->markingComboSprite = CreateMonMarkingComboSprite(GFXTAG_MON_MARKING, PALTAG_MON_MARKING, NULL);
+ sPSSData->markingComboSprite = CreateMonMarkingComboSprite(GFXTAG_MARKING_COMBO, PALTAG_MARKING_COMBO, NULL);
sPSSData->markingComboSprite->oam.priority = 1;
sPSSData->markingComboSprite->subpriority = 1;
sPSSData->markingComboSprite->pos1.x = 40;
sPSSData->markingComboSprite->pos1.y = 150;
- sPSSData->markingComboTilesPtr = (void*) OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(GFXTAG_MON_MARKING);
+ sPSSData->markingComboTilesPtr = (void*) OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(GFXTAG_MARKING_COMBO);
}
static void CreateWaveformSprites(void)
@@ -3744,33 +3760,33 @@ static void CreateWaveformSprites(void)
}
}
-static void RefreshCursorMonData(void)
+static void RefreshDisplayMonData(void)
{
- LoadCursorMonGfx(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
- PrintCursorMonInfo();
+ LoadDisplayMonGfx(sPSSData->displayMonSpecies, sPSSData->displayMonPersonality);
+ PrintDisplayMonInfo();
UpdateWaveformAnimation();
ScheduleBgCopyTilemapToVram(0);
}
-static void BoxSetMosaic(void)
+static void StartDisplayMonMosaicEffect(void)
{
- RefreshCursorMonData();
- if (sPSSData->cursorMonSprite)
+ RefreshDisplayMonData();
+ if (sPSSData->displayMonSprite)
{
- sPSSData->cursorMonSprite->oam.mosaic = TRUE;
- sPSSData->cursorMonSprite->data[0] = 10;
- sPSSData->cursorMonSprite->data[1] = 1;
- sPSSData->cursorMonSprite->callback = sub_80CA2D0;
- SetGpuReg(REG_OFFSET_MOSAIC, (sPSSData->cursorMonSprite->data[0] << 12) | (sPSSData->cursorMonSprite->data[0] << 8));
+ sPSSData->displayMonSprite->oam.mosaic = TRUE;
+ sPSSData->displayMonSprite->data[0] = 10;
+ sPSSData->displayMonSprite->data[1] = 1;
+ sPSSData->displayMonSprite->callback = SpriteCB_DisplayMonMosaic;
+ SetGpuReg(REG_OFFSET_MOSAIC, (sPSSData->displayMonSprite->data[0] << 12) | (sPSSData->displayMonSprite->data[0] << 8));
}
}
-static u8 GetCursorMonMosaic(void)
+static u8 IsDisplayMosaicActive(void)
{
- return sPSSData->cursorMonSprite->oam.mosaic;
+ return sPSSData->displayMonSprite->oam.mosaic;
}
-static void sub_80CA2D0(struct Sprite *sprite)
+static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite)
{
sprite->data[0] -= sprite->data[1];
if (sprite->data[0] < 0)
@@ -3783,22 +3799,22 @@ static void sub_80CA2D0(struct Sprite *sprite)
}
}
-static void CreateCursorMonSprite(void)
+static void CreateDisplayMonSprite(void)
{
u16 i;
u16 tileStart;
u8 palSlot;
u8 spriteId;
- struct SpriteSheet sheet = {sPSSData->tileBuffer, MON_PIC_SIZE, GFXTAG_CURSOR_MON};
- struct SpritePalette palette = {sPSSData->cursorMonPalBuffer, PALTAG_CURSOR_MON};
- struct SpriteTemplate template = sSpriteTemplate_CursorMon;
+ struct SpriteSheet sheet = {sPSSData->tileBuffer, MON_PIC_SIZE, GFXTAG_DISPLAY_MON};
+ struct SpritePalette palette = {sPSSData->displayMonPalBuffer, PALTAG_DISPLAY_MON};
+ struct SpriteTemplate template = sSpriteTemplate_DisplayMon;
for (i = 0; i < MON_PIC_SIZE; i++)
sPSSData->tileBuffer[i] = 0;
for (i = 0; i < 16; i++)
- sPSSData->cursorMonPalBuffer[i] = 0;
+ sPSSData->displayMonPalBuffer[i] = 0;
- sPSSData->cursorMonSprite = NULL;
+ sPSSData->displayMonSprite = NULL;
do
{
@@ -3814,59 +3830,59 @@ static void CreateCursorMonSprite(void)
if (spriteId == MAX_SPRITES)
break;
- sPSSData->cursorMonSprite = &gSprites[spriteId];
- sPSSData->cursorMonPalOffset = palSlot * 16 + 0x100;
- sPSSData->cursorMonTilePtr = (void*) OBJ_VRAM0 + tileStart * 32;
+ sPSSData->displayMonSprite = &gSprites[spriteId];
+ sPSSData->displayMonPalOffset = palSlot * 16 + 0x100;
+ sPSSData->displayMonTilePtr = (void*) OBJ_VRAM0 + tileStart * 32;
} while (0);
- if (sPSSData->cursorMonSprite == NULL)
+ if (sPSSData->displayMonSprite == NULL)
{
- FreeSpriteTilesByTag(GFXTAG_CURSOR_MON);
- FreeSpritePaletteByTag(PALTAG_CURSOR_MON);
+ FreeSpriteTilesByTag(GFXTAG_DISPLAY_MON);
+ FreeSpritePaletteByTag(PALTAG_DISPLAY_MON);
}
}
-static void LoadCursorMonGfx(u16 species, u32 pid)
+static void LoadDisplayMonGfx(u16 species, u32 pid)
{
- if (sPSSData->cursorMonSprite == NULL)
+ if (sPSSData->displayMonSprite == NULL)
return;
if (species != SPECIES_NONE)
{
LoadSpecialPokePic(&gMonFrontPicTable[species], sPSSData->tileBuffer, species, pid, TRUE);
- LZ77UnCompWram(sPSSData->cursorMonPalette, sPSSData->cursorMonPalBuffer);
- CpuCopy32(sPSSData->tileBuffer, sPSSData->cursorMonTilePtr, MON_PIC_SIZE);
- LoadPalette(sPSSData->cursorMonPalBuffer, sPSSData->cursorMonPalOffset, 0x20);
- sPSSData->cursorMonSprite->invisible = FALSE;
+ LZ77UnCompWram(sPSSData->displayMonPalette, sPSSData->displayMonPalBuffer);
+ CpuCopy32(sPSSData->tileBuffer, sPSSData->displayMonTilePtr, MON_PIC_SIZE);
+ LoadPalette(sPSSData->displayMonPalBuffer, sPSSData->displayMonPalOffset, 0x20);
+ sPSSData->displayMonSprite->invisible = FALSE;
}
else
{
- sPSSData->cursorMonSprite->invisible = TRUE;
+ sPSSData->displayMonSprite->invisible = TRUE;
}
}
-static void PrintCursorMonInfo(void)
+static void PrintDisplayMonInfo(void)
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
if (sPSSData->boxOption != OPTION_MOVE_ITEMS)
{
- AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 0, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonSpeciesName, 6, 15, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonGenderLvlText, 10, 29, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 0, sPSSData->cursorMonItemName, 6, 43, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 1, sPSSData->displayMonNameText, 6, 0, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sPSSData->displayMonSpeciesName, 6, 15, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sPSSData->displayMonGenderLvlText, 10, 29, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 0, sPSSData->displayMonItemName, 6, 43, TEXT_SPEED_FF, NULL);
}
else
{
- AddTextPrinterParameterized(0, 0, sPSSData->cursorMonItemName, 6, 0, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 13, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonSpeciesName, 6, 28, TEXT_SPEED_FF, NULL);
- AddTextPrinterParameterized(0, 2, sPSSData->cursorMonGenderLvlText, 10, 42, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 0, sPSSData->displayMonItemName, 6, 0, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 1, sPSSData->displayMonNameText, 6, 13, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sPSSData->displayMonSpeciesName, 6, 28, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(0, 2, sPSSData->displayMonGenderLvlText, 10, 42, TEXT_SPEED_FF, NULL);
}
CopyWindowToVram(0, 2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ if (sPSSData->displayMonSpecies != SPECIES_NONE)
{
- UpdateMonMarkingTiles(sPSSData->cursorMonMarkings, sPSSData->markingComboTilesPtr);
+ UpdateMonMarkingTiles(sPSSData->displayMonMarkings, sPSSData->markingComboTilesPtr);
sPSSData->markingComboSprite->invisible = FALSE;
}
else
@@ -3880,7 +3896,7 @@ static void UpdateWaveformAnimation(void)
{
u16 i;
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ if (sPSSData->displayMonSpecies != SPECIES_NONE)
{
// Start animation
sub_80D27AC(0, 0, 0, 8, 2);
@@ -4039,7 +4055,7 @@ static void sub_80CAA74(void)
for (i = 1; i < PARTY_SIZE; i++)
{
- s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ s32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
sub_80CAAA8(i, (species != SPECIES_NONE));
}
}
@@ -4098,7 +4114,7 @@ static bool8 DoShowPartyMenu(void)
if (!sub_80CD554())
{
if (sPSSData->setMosaic)
- BoxSetMosaic();
+ StartDisplayMonMosaicEffect();
sPSSData->showPartyMenuState++;
}
break;
@@ -4132,23 +4148,23 @@ static void PrintMessage(u8 id)
DynamicPlaceholderTextUtil_Reset();
switch (sMessages[id].format)
{
- case MSG_FORMAT_NORMAL:
+ case MSG_VAR_NONE:
break;
- case MSG_FORMAT_MON_NAME_1:
- case MSG_FORMAT_MON_NAME_2:
- case MSG_FORMAT_MON_NAME_3:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->cursorMonNick);
+ case MSG_VAR_MON_NAME_1:
+ case MSG_VAR_MON_NAME_2:
+ case MSG_VAR_MON_NAME_3:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->displayMonName);
break;
- case MSG_FORMAT_MON_NAME_4:
- case MSG_FORMAT_MON_NAME_5:
- case MSG_FORMAT_MON_NAME_6:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->field_21E0);
+ case MSG_VAR_RELEASE_MON_1:
+ case MSG_VAR_RELEASE_MON_2:
+ case MSG_VAR_RELEASE_MON_3:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sPSSData->releaseMonName);
break;
- case MSG_FORMAT_ITEM_NAME:
+ case MSG_VAR_ITEM_NAME:
if (IsMovingItem())
txtPtr = StringCopy(sPSSData->itemName, GetMovingItemName());
else
- txtPtr = StringCopy(sPSSData->itemName, sPSSData->cursorMonItemName);
+ txtPtr = StringCopy(sPSSData->itemName, sPSSData->displayMonItemName);
while (*(txtPtr - 1) == CHAR_SPACE)
txtPtr--;
@@ -4242,19 +4258,19 @@ static void sub_80CAEAC(void)
if (sMovingItemId != ITEM_NONE)
{
sub_80D0F38(sMovingItemId);
- sub_80CFE54(3);
+ StartCursorAnim(CURSOR_ANIM_FIST);
}
}
-static void sub_80CAF04(void)
+static void InitMonIconFields(void)
{
u16 i;
LoadMonIconPalettes();
- for (i = 0; i < 40; i++)
- sPSSData->field_B08[i] = 0;
- for (i = 0; i < 40; i++)
- sPSSData->field_B58[i] = 0;
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ sPSSData->numIconsPerSpecies[i] = 0;
+ for (i = 0; i < MAX_MON_ICONS; i++)
+ sPSSData->iconSpeciesList[i] = SPECIES_NONE;
for (i = 0; i < PARTY_SIZE; i++)
sPSSData->partySprites[i] = NULL;
for (i = 0; i < IN_BOX_COUNT; i++)
@@ -4264,7 +4280,7 @@ static void sub_80CAF04(void)
sPSSData->field_78C = 0;
}
-static u8 sub_80CAFAC(void)
+static u8 GetMonIconPriorityByCursorPos(void)
{
return (IsCursorInBox() ? 2 : 1);
}
@@ -4273,10 +4289,10 @@ static void CreateMovingMonIcon(void)
{
u32 personality = GetMonData(&sPSSData->movingMon, MON_DATA_PERSONALITY);
u16 species = GetMonData(&sPSSData->movingMon, MON_DATA_SPECIES2);
- u8 priority = sub_80CAFAC();
+ u8 priority = GetMonIconPriorityByCursorPos();
sPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7);
- sPSSData->movingMonSprite->callback = sub_80CC100;
+ sPSSData->movingMonSprite->callback = SpriteCB_HeldMon;
}
static void InitBoxMonSprites(u8 boxId)
@@ -4744,8 +4760,8 @@ static void sub_80CBC14(u8 mode, u8 id)
return;
}
- sPSSData->movingMonSprite->callback = sub_80CC100;
- sPSSData->movingMonSprite->oam.priority = sub_80CAFAC();
+ sPSSData->movingMonSprite->callback = SpriteCB_HeldMon;
+ sPSSData->movingMonSprite->oam.priority = GetMonIconPriorityByCursorPos();
sPSSData->movingMonSprite->subpriority = 7;
}
@@ -4796,7 +4812,7 @@ static bool8 sub_80CBDC4(void)
{
sPSSData->movingMonSprite->oam.priority = (*sPSSData->field_B00)->oam.priority;
sPSSData->movingMonSprite->subpriority = (*sPSSData->field_B00)->subpriority;
- (*sPSSData->field_B00)->oam.priority = sub_80CAFAC();
+ (*sPSSData->field_B00)->oam.priority = GetMonIconPriorityByCursorPos();
(*sPSSData->field_B00)->subpriority = 7;
}
@@ -4806,76 +4822,77 @@ static bool8 sub_80CBDC4(void)
sPSSData->movingMonSprite = (*sPSSData->field_B00);
*sPSSData->field_B00 = sprite;
- sPSSData->movingMonSprite->callback = sub_80CC100;
+ sPSSData->movingMonSprite->callback = SpriteCB_HeldMon;
(*sPSSData->field_B00)->callback = SpriteCallbackDummy;
}
return TRUE;
}
-static void sub_80CBF14(u8 mode, u8 position)
+static void SetReleaseMon(u8 mode, u8 position)
{
switch (mode)
{
case MODE_PARTY:
- sPSSData->field_B04 = &sPSSData->partySprites[position];
+ sPSSData->releaseMonSpritePtr = &sPSSData->partySprites[position];
break;
case MODE_BOX:
- sPSSData->field_B04 = &sPSSData->boxMonsSprites[position];
+ sPSSData->releaseMonSpritePtr = &sPSSData->boxMonsSprites[position];
break;
case MODE_MOVE:
- sPSSData->field_B04 = &sPSSData->movingMonSprite;
+ sPSSData->releaseMonSpritePtr = &sPSSData->movingMonSprite;
break;
default:
return;
}
- if (*sPSSData->field_B04 != NULL)
+ if (*sPSSData->releaseMonSpritePtr != NULL)
{
- InitSpriteAffineAnim(*sPSSData->field_B04);
- (*sPSSData->field_B04)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
- (*sPSSData->field_B04)->affineAnims = gSpriteAffineAnimTable_857291C;
- StartSpriteAffineAnim(*sPSSData->field_B04, 0);
+ InitSpriteAffineAnim(*sPSSData->releaseMonSpritePtr);
+ (*sPSSData->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ (*sPSSData->releaseMonSpritePtr)->affineAnims = sAffineAnims_ReleaseMon;
+ StartSpriteAffineAnim(*sPSSData->releaseMonSpritePtr, RELEASE_ANIM_RELEASE);
}
}
-static bool8 sub_80CBFD8(void)
+static bool8 TryHideReleaseMonSprite(void)
{
- if (*sPSSData->field_B04 == NULL || (*sPSSData->field_B04)->invisible)
+ if (*sPSSData->releaseMonSpritePtr == NULL
+ || (*sPSSData->releaseMonSpritePtr)->invisible)
return FALSE;
- if ((*sPSSData->field_B04)->affineAnimEnded)
- (*sPSSData->field_B04)->invisible = TRUE;
+ if ((*sPSSData->releaseMonSpritePtr)->affineAnimEnded)
+ (*sPSSData->releaseMonSpritePtr)->invisible = TRUE;
return TRUE;
}
-static void sub_80CC020(void)
+static void DestroyReleaseMonIcon(void)
{
- if (*sPSSData->field_B04 != NULL)
+ if (*sPSSData->releaseMonSpritePtr != NULL)
{
- FreeOamMatrix((*sPSSData->field_B04)->oam.matrixNum);
- DestroyBoxMonIcon(*sPSSData->field_B04);
- *sPSSData->field_B04 = NULL;
+ FreeOamMatrix((*sPSSData->releaseMonSpritePtr)->oam.matrixNum);
+ DestroyBoxMonIcon(*sPSSData->releaseMonSpritePtr);
+ *sPSSData->releaseMonSpritePtr = NULL;
}
}
-static void sub_80CC064(void)
+static void ReshowReleaseMon(void)
{
- if (*sPSSData->field_B04 != NULL)
+ if (*sPSSData->releaseMonSpritePtr != NULL)
{
- (*sPSSData->field_B04)->invisible = FALSE;
- StartSpriteAffineAnim(*sPSSData->field_B04, 1);
+ (*sPSSData->releaseMonSpritePtr)->invisible = FALSE;
+ StartSpriteAffineAnim(*sPSSData->releaseMonSpritePtr, RELEASE_ANIM_CAME_BACK);
}
}
-static bool8 sub_80CC0A0(void)
+static bool8 ResetReleaseMonSpritePtr(void)
{
- if (sPSSData->field_B04 == NULL)
+ if (sPSSData->releaseMonSpritePtr == NULL)
return FALSE;
- if ((*sPSSData->field_B04)->affineAnimEnded)
- sPSSData->field_B04 = NULL;
+ if ((*sPSSData->releaseMonSpritePtr)->affineAnimEnded)
+ sPSSData->releaseMonSpritePtr = NULL;
return TRUE;
}
@@ -4885,51 +4902,57 @@ static void SetMovingMonPriority(u8 priority)
sPSSData->movingMonSprite->oam.priority = priority;
}
-static void sub_80CC100(struct Sprite *sprite)
+static void SpriteCB_HeldMon(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4;
+ sprite->pos1.x = sPSSData->cursorSprite->pos1.x;
+ sprite->pos1.y = sPSSData->cursorSprite->pos1.y + sPSSData->cursorSprite->pos2.y + 4;
}
-static u16 sub_80CC124(u16 species)
+static u16 TryLoadMonIconTiles(u16 species)
{
- u16 i, var;
+ u16 i, offset;
- for (i = 0; i < 40; i++)
+ // Search icon list for this species
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == species)
+ if (sPSSData->iconSpeciesList[i] == species)
break;
}
- if (i == 40)
+ if (i == MAX_MON_ICONS)
{
- for (i = 0; i < 40; i++)
+ // Species not present in the list
+ // Find first empty spot in the list to put it
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == 0)
+ if (sPSSData->iconSpeciesList[i] == 0)
break;
}
- if (i == 40)
+
+ // Failed to find an empty spot
+ if (i == MAX_MON_ICONS)
return 0xFFFF;
}
- sPSSData->field_B58[i] = species;
- sPSSData->field_B08[i]++;
- var = 16 * i;
- CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200);
+ // Add species to icon list and load tiles
+ sPSSData->iconSpeciesList[i] = species;
+ sPSSData->numIconsPerSpecies[i]++;
+ offset = 16 * i;
+ CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + offset * 32, 0x200);
- return var;
+ return offset;
}
-static void sub_80CC1E0(u16 species)
+static void RemoveSpeciesFromIconList(u16 species)
{
u16 i;
- for (i = 0; i < 40; i++)
+ for (i = 0; i < MAX_MON_ICONS; i++)
{
- if (sPSSData->field_B58[i] == species)
+ if (sPSSData->iconSpeciesList[i] == species)
{
- if (--sPSSData->field_B08[i] == 0)
- sPSSData->field_B58[i] = 0;
+ if (--sPSSData->numIconsPerSpecies[i] == 0)
+ sPSSData->iconSpeciesList[i] = SPECIES_NONE;
break;
}
}
@@ -4939,18 +4962,18 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s
{
u16 tileNum;
u8 spriteId;
- struct SpriteTemplate template = gUnknown_085728D4;
+ struct SpriteTemplate template = sSpriteTemplate_MonIcon;
species = GetIconSpecies(species, personality);
template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndices[species];
- tileNum = sub_80CC124(species);
+ tileNum = TryLoadMonIconTiles(species);
if (tileNum == 0xFFFF)
return NULL;
spriteId = CreateSprite(&template, x, y, subpriority);
if (spriteId == MAX_SPRITES)
{
- sub_80CC1E0(species);
+ RemoveSpeciesFromIconList(species);
return NULL;
}
@@ -4962,7 +4985,7 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s
static void DestroyBoxMonIcon(struct Sprite *sprite)
{
- sub_80CC1E0(sprite->data[0]);
+ RemoveSpeciesFromIconList(sprite->data[0]);
DestroySprite(sprite);
}
@@ -5580,7 +5603,7 @@ static void sub_80CD3EC(void)
}
}
-static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y)
+static void GetCursorCoordsByPos(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y)
{
switch (cursorArea)
{
@@ -5591,36 +5614,36 @@ static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y)
case CURSOR_AREA_IN_PARTY:
if (cursorPosition == 0)
{
- *x = 0x68;
- *y = 0x34;
+ *x = 104;
+ *y = 52;
}
else if (cursorPosition == PARTY_SIZE)
{
- *x = 0x98;
- *y = 0x84;
+ *x = 152;
+ *y = 132;
}
else
{
- *x = 0x98;
+ *x = 152;
*y = (cursorPosition - 1) * 24 + 4;
}
break;
case CURSOR_AREA_BOX:
- *x = 0xa2;
- *y = 0x0c;
+ *x = 162;
+ *y = 12;
break;
case CURSOR_AREA_BUTTONS:
*y = sIsMonBeingMoved ? 8 : 14;
- *x = cursorPosition * 0x58 + 0x78;
+ *x = cursorPosition * 88 + 120;
break;
case 4:
- *x = 0xa0;
- *y = 0x60;
+ *x = 160;
+ *y = 96;
break;
}
}
-static u16 sub_80CD504(void)
+static u16 GetSpeciesAtCursorPosition(void)
{
switch (sBoxCursorArea)
{
@@ -5648,35 +5671,35 @@ static bool8 sub_80CD554(void)
{
sPSSData->field_CBC += sPSSData->field_CC4;
sPSSData->field_CC0 += sPSSData->field_CC8;
- sPSSData->field_CB4->pos1.x = sPSSData->field_CBC >> 8;
- sPSSData->field_CB4->pos1.y = sPSSData->field_CC0 >> 8;
- if (sPSSData->field_CB4->pos1.x > DISPLAY_WIDTH + 16)
+ sPSSData->cursorSprite->pos1.x = sPSSData->field_CBC >> 8;
+ sPSSData->cursorSprite->pos1.y = sPSSData->field_CC0 >> 8;
+ if (sPSSData->cursorSprite->pos1.x > DISPLAY_WIDTH + 16)
{
- tmp = sPSSData->field_CB4->pos1.x - (DISPLAY_WIDTH + 16);
- sPSSData->field_CB4->pos1.x = tmp + 64;
+ tmp = sPSSData->cursorSprite->pos1.x - (DISPLAY_WIDTH + 16);
+ sPSSData->cursorSprite->pos1.x = tmp + 64;
}
- if (sPSSData->field_CB4->pos1.x < 64)
+ if (sPSSData->cursorSprite->pos1.x < 64)
{
- tmp = 64 - sPSSData->field_CB4->pos1.x;
- sPSSData->field_CB4->pos1.x = DISPLAY_WIDTH + 16 - tmp;
+ tmp = 64 - sPSSData->cursorSprite->pos1.x;
+ sPSSData->cursorSprite->pos1.x = DISPLAY_WIDTH + 16 - tmp;
}
- if (sPSSData->field_CB4->pos1.y > DISPLAY_HEIGHT + 16)
+ if (sPSSData->cursorSprite->pos1.y > DISPLAY_HEIGHT + 16)
{
- tmp = sPSSData->field_CB4->pos1.y - (DISPLAY_HEIGHT + 16);
- sPSSData->field_CB4->pos1.y = tmp - 16;
+ tmp = sPSSData->cursorSprite->pos1.y - (DISPLAY_HEIGHT + 16);
+ sPSSData->cursorSprite->pos1.y = tmp - 16;
}
- if (sPSSData->field_CB4->pos1.y < -16)
+ if (sPSSData->cursorSprite->pos1.y < -16)
{
- tmp = -16 - sPSSData->field_CB4->pos1.y;
- sPSSData->field_CB4->pos1.y = DISPLAY_HEIGHT + 16 - tmp;
+ tmp = -16 - sPSSData->cursorSprite->pos1.y;
+ sPSSData->cursorSprite->pos1.y = DISPLAY_HEIGHT + 16 - tmp;
}
if (sPSSData->field_CD7 && --sPSSData->field_CD7 == 0)
- sPSSData->field_CB4->vFlip = (sPSSData->field_CB4->vFlip == FALSE);
+ sPSSData->cursorSprite->vFlip = (sPSSData->cursorSprite->vFlip == FALSE);
}
else
{
- sPSSData->field_CB4->pos1.x = sPSSData->field_CCC;
- sPSSData->field_CB4->pos1.y = sPSSData->field_CCE;
+ sPSSData->cursorSprite->pos1.x = sPSSData->field_CCC;
+ sPSSData->cursorSprite->pos1.y = sPSSData->field_CCE;
sub_80CDA68();
}
@@ -5687,7 +5710,7 @@ static void sub_80CD6AC(u8 newCursorArea, u8 newCursorPosition)
{
u16 x, y;
- sub_80CD444(newCursorArea, newCursorPosition, &x, &y);
+ GetCursorCoordsByPos(newCursorArea, newCursorPosition, &x, &y);
sPSSData->field_CD4 = newCursorArea;
sPSSData->field_CD5 = newCursorPosition;
sPSSData->field_CCC = x;
@@ -5709,26 +5732,26 @@ static void sub_80CD70C(void)
switch (sPSSData->field_CD2)
{
default:
- r7 = sPSSData->field_CCE - sPSSData->field_CB4->pos1.y;
+ r7 = sPSSData->field_CCE - sPSSData->cursorSprite->pos1.y;
break;
case -1:
- r7 = sPSSData->field_CCE - 0xc0 - sPSSData->field_CB4->pos1.y;
+ r7 = sPSSData->field_CCE - 0xc0 - sPSSData->cursorSprite->pos1.y;
break;
case 1:
- r7 = sPSSData->field_CCE + 0xc0 - sPSSData->field_CB4->pos1.y;
+ r7 = sPSSData->field_CCE + 0xc0 - sPSSData->cursorSprite->pos1.y;
break;
}
switch (sPSSData->field_CD3)
{
default:
- r0 = sPSSData->field_CCC - sPSSData->field_CB4->pos1.x;
+ r0 = sPSSData->field_CCC - sPSSData->cursorSprite->pos1.x;
break;
case -1:
- r0 = sPSSData->field_CCC - 0xc0 - sPSSData->field_CB4->pos1.x;
+ r0 = sPSSData->field_CCC - 0xc0 - sPSSData->cursorSprite->pos1.x;
break;
case 1:
- r0 = sPSSData->field_CCC + 0xc0 - sPSSData->field_CB4->pos1.x;
+ r0 = sPSSData->field_CCC + 0xc0 - sPSSData->cursorSprite->pos1.x;
break;
}
@@ -5736,8 +5759,8 @@ static void sub_80CD70C(void)
r0 <<= 8;
sPSSData->field_CC4 = r0 / sPSSData->field_CD0;
sPSSData->field_CC8 = r7 / sPSSData->field_CD0;
- sPSSData->field_CBC = sPSSData->field_CB4->pos1.x << 8;
- sPSSData->field_CC0 = sPSSData->field_CB4->pos1.y << 8;
+ sPSSData->field_CBC = sPSSData->cursorSprite->pos1.x << 8;
+ sPSSData->field_CC0 = sPSSData->cursorSprite->pos1.y << 8;
}
static void sub_80CD894(u8 newCursorArea, u8 newCursorPosition)
@@ -5747,12 +5770,12 @@ static void sub_80CD894(u8 newCursorArea, u8 newCursorPosition)
if (sPSSData->boxOption != OPTION_MOVE_ITEMS)
{
if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_STILL);
}
else
{
if (!IsMovingItem())
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_STILL);
}
if (sPSSData->boxOption == OPTION_MOVE_ITEMS)
@@ -5779,19 +5802,19 @@ static void sub_80CD894(u8 newCursorArea, u8 newCursorPosition)
case CURSOR_AREA_IN_PARTY:
case CURSOR_AREA_BOX:
case CURSOR_AREA_BUTTONS:
- sPSSData->field_CB4->oam.priority = 1;
+ sPSSData->cursorSprite->oam.priority = 1;
sPSSData->field_CB8->invisible = TRUE;
sPSSData->field_CB8->oam.priority = 1;
break;
case CURSOR_AREA_IN_BOX:
if (sPSSData->inBoxMovingMode != 0)
{
- sPSSData->field_CB4->oam.priority = 0;
+ sPSSData->cursorSprite->oam.priority = 0;
sPSSData->field_CB8->invisible = TRUE;
}
else
{
- sPSSData->field_CB4->oam.priority = 2;
+ sPSSData->cursorSprite->oam.priority = 2;
if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved)
SetMovingMonPriority(2);
}
@@ -5806,12 +5829,12 @@ static void sub_80CDA68(void)
if (sPSSData->boxOption != OPTION_MOVE_ITEMS)
{
if (sPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_BOUNCE);
}
else
{
if (!IsMovingItem())
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_BOUNCE);
}
sub_80CEB40();
@@ -5830,7 +5853,7 @@ static void sub_80CDA68(void)
case CURSOR_AREA_IN_BOX:
if (sPSSData->inBoxMovingMode == 0)
{
- sPSSData->field_CB4->oam.priority = 1;
+ sPSSData->cursorSprite->oam.priority = 1;
sPSSData->field_CB8->oam.priority = 2;
sPSSData->field_CB8->subpriority = 21;
sPSSData->field_CB8->invisible = FALSE;
@@ -5854,7 +5877,7 @@ static void sub_80CDBA0(void)
if (partyCount >= PARTY_SIZE)
partyCount = PARTY_SIZE - 1;
}
- if (sPSSData->field_CB4->vFlip)
+ if (sPSSData->cursorSprite->vFlip)
sPSSData->field_CD7 = 1;
sub_80CD894(CURSOR_AREA_IN_PARTY, partyCount);
}
@@ -5916,13 +5939,13 @@ static bool8 MonPlaceChange_Move(void)
case 0:
if (sIsMonBeingMoved)
return FALSE;
- StartSpriteAnim(sPSSData->field_CB4, 2);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_OPEN);
sPSSData->monPlaceChangeState++;
break;
case 1:
if (!sub_80CDED4())
{
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_FIST);
MoveMon();
sPSSData->monPlaceChangeState++;
}
@@ -5945,7 +5968,7 @@ static bool8 MonPlaceChange_Place(void)
case 0:
if (!sub_80CDED4())
{
- StartSpriteAnim(sPSSData->field_CB4, 2);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_OPEN);
PlaceMon();
sPSSData->monPlaceChangeState++;
}
@@ -5953,7 +5976,7 @@ static bool8 MonPlaceChange_Place(void)
case 1:
if (!sub_80CDF08())
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_BOUNCE);
sPSSData->monPlaceChangeState++;
}
break;
@@ -5980,14 +6003,14 @@ static bool8 MonPlaceChange_Shift(void)
default:
return FALSE;
}
- StartSpriteAnim(sPSSData->field_CB4, 2);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_OPEN);
sub_80CBD5C(sPSSData->field_D91, sBoxCursorPosition);
sPSSData->monPlaceChangeState++;
break;
case 1:
if (!sub_80CBDC4())
{
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_FIST);
SetShiftedMonData(sPSSData->field_D91, sBoxCursorPosition);
sPSSData->monPlaceChangeState++;
}
@@ -6011,13 +6034,13 @@ static bool8 sub_80CDEC4(void)
static bool8 sub_80CDED4(void)
{
- switch (sPSSData->field_CB4->pos2.y)
+ switch (sPSSData->cursorSprite->pos2.y)
{
default:
- sPSSData->field_CB4->pos2.y++;
+ sPSSData->cursorSprite->pos2.y++;
break;
case 0:
- sPSSData->field_CB4->pos2.y++;
+ sPSSData->cursorSprite->pos2.y++;
break;
case 8:
return FALSE;
@@ -6028,12 +6051,12 @@ static bool8 sub_80CDED4(void)
static bool8 sub_80CDF08(void)
{
- switch (sPSSData->field_CB4->pos2.y)
+ switch (sPSSData->cursorSprite->pos2.y)
{
case 0:
return FALSE;
default:
- sPSSData->field_CB4->pos2.y--;
+ sPSSData->cursorSprite->pos2.y--;
break;
}
@@ -6125,13 +6148,13 @@ static void PurgeMonOrBoxMon(u8 boxId, u8 position)
static void SetShiftedMonData(u8 boxId, u8 position)
{
if (boxId == TOTAL_BOXES_COUNT)
- sPSSData->field_2108 = gPlayerParty[position];
+ sPSSData->tempMon = gPlayerParty[position];
else
- BoxMonAtToMon(boxId, position, &sPSSData->field_2108);
+ BoxMonAtToMon(boxId, position, &sPSSData->tempMon);
SetPlacedMonData(boxId, position);
- sPSSData->movingMon = sPSSData->field_2108;
- SetCursorMonData(&sPSSData->movingMon, MODE_PARTY);
+ sPSSData->movingMon = sPSSData->tempMon;
+ SetDisplayMonData(&sPSSData->movingMon, MODE_PARTY);
sMovingMonOrigBoxId = boxId;
sMovingMonOrigBoxPos = position;
}
@@ -6158,17 +6181,17 @@ static bool8 TryStorePartyMonInBox(u8 boxId)
if (boxId == StorageGetCurrentBox())
sub_80CB140(boxPosition);
- StartSpriteAnim(sPSSData->field_CB4, 1);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_STILL);
return TRUE;
}
static void sub_80CE22C(void)
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_BOUNCE);
sub_80CEB40();
}
-static void sub_80CE250(void)
+static void InitReleaseMon(void)
{
u8 mode;
@@ -6179,15 +6202,15 @@ static void sub_80CE250(void)
else
mode = MODE_BOX;
- sub_80CBF14(mode, sBoxCursorPosition);
- StringCopy(sPSSData->field_21E0, sPSSData->cursorMonNick);
+ SetReleaseMon(mode, sBoxCursorPosition);
+ StringCopy(sPSSData->releaseMonName, sPSSData->displayMonName);
}
-static bool8 sub_80CE2A8(void)
+static bool8 TryHideReleaseMon(void)
{
- if (!sub_80CBFD8())
+ if (!TryHideReleaseMonSprite())
{
- StartSpriteAnim(sPSSData->field_CB4, 0);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_BOUNCE);
return FALSE;
}
else
@@ -6200,7 +6223,7 @@ static void ReleaseMon(void)
{
u8 boxId;
- sub_80CC020();
+ DestroyReleaseMonIcon();
if (sIsMonBeingMoved)
{
sIsMonBeingMoved = FALSE;
@@ -6217,18 +6240,22 @@ static void ReleaseMon(void)
sub_80CEB40();
}
-static void sub_80CE324(void)
+static void TrySetCursorFistAnim(void)
{
if (sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_FIST);
}
+// If the player is on the listed map (or any map, if none is specified),
+// they may not release their last Pokémon that knows the specified move.
+// This is to stop the player from softlocking themselves by not having
+// a Pokémon that knows a required field move.
struct
{
s8 mapGroup;
s8 mapNum;
u16 move;
-} static const gUnknown_0857B9A4[] =
+} static const sRestrictedReleaseMoves[] =
{
{MAP_GROUPS_COUNT, 0, MOVE_SURF},
{MAP_GROUPS_COUNT, 0, MOVE_DIVE},
@@ -6238,73 +6265,79 @@ struct
{MAP_GROUP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MAP_NUM(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F), MOVE_ROCK_SMASH},
};
-static void sub_80CE350(u16 *moves)
+static void GetRestrictedReleaseMoves(u16 *moves)
{
s32 i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_0857B9A4); i++)
+ for (i = 0; i < ARRAY_COUNT(sRestrictedReleaseMoves); i++)
{
- if (gUnknown_0857B9A4[i].mapGroup == MAP_GROUPS_COUNT
- || (gUnknown_0857B9A4[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_0857B9A4[i].mapNum == gSaveBlock1Ptr->location.mapNum))
+ if (sRestrictedReleaseMoves[i].mapGroup == MAP_GROUPS_COUNT
+ || (sRestrictedReleaseMoves[i].mapGroup == gSaveBlock1Ptr->location.mapGroup
+ && sRestrictedReleaseMoves[i].mapNum == gSaveBlock1Ptr->location.mapNum))
{
- *moves = gUnknown_0857B9A4[i].move;
+ *moves = sRestrictedReleaseMoves[i].move;
moves++;
}
}
-
*moves = MOVES_COUNT;
}
-static void InitCanRelaseMonVars(void)
+static void InitCanReleaseMonVars(void)
{
if (!AtLeastThreeUsableMons())
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 0;
+ // The player only has 1 or 2 usable
+ // Pokémon, this one can't be released
+ sPSSData->releaseStatusResolved = TRUE;
+ sPSSData->canReleaseMon = FALSE;
return;
}
if (sIsMonBeingMoved)
{
- sPSSData->field_2108 = sPSSData->movingMon;
- sPSSData->field_2170 = -1;
- sPSSData->field_2171 = -1;
+ sPSSData->tempMon = sPSSData->movingMon;
+ sPSSData->releaseBoxId = -1;
+ sPSSData->releaseBoxPos = -1;
}
else
{
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
{
- sPSSData->field_2108 = gPlayerParty[sBoxCursorPosition];
- sPSSData->field_2170 = TOTAL_BOXES_COUNT;
+ sPSSData->tempMon = gPlayerParty[sBoxCursorPosition];
+ sPSSData->releaseBoxId = TOTAL_BOXES_COUNT;
}
else
{
- BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &sPSSData->field_2108);
- sPSSData->field_2170 = StorageGetCurrentBox();
+ BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &sPSSData->tempMon);
+ sPSSData->releaseBoxId = StorageGetCurrentBox();
}
- sPSSData->field_2171 = sBoxCursorPosition;
+ sPSSData->releaseBoxPos = sBoxCursorPosition;
}
- sub_80CE350(sPSSData->field_2176);
- sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- if (sPSSData->field_2174 != 0)
+ GetRestrictedReleaseMoves(sPSSData->restrictedMoveList);
+ sPSSData->restrictedReleaseMonMoves = GetMonData(&sPSSData->tempMon, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->restrictedMoveList);
+ if (sPSSData->restrictedReleaseMonMoves != 0)
{
- sPSSData->field_216D = 0;
+ // Pokémon knows at least one restricted release move
+ // Need to check if another Pokémon has this move first
+ sPSSData->releaseStatusResolved = FALSE;
}
else
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // Pokémon knows no restricted moves, can be released
+ sPSSData->releaseStatusResolved = TRUE;
+ sPSSData->canReleaseMon = TRUE;
}
- sPSSData->field_2172 = 0;
+ sPSSData->releaseCheckState = 0;
}
static bool32 AtLeastThreeUsableMons(void)
{
- s32 i, j, count;
-
- count = (sIsMonBeingMoved != FALSE);
+ s32 i, j;
+ s32 count = (sIsMonBeingMoved != FALSE);
+
+ // Check party for usable Pokémon
for (j = 0; j < PARTY_SIZE; j++)
{
if (GetMonData(&gPlayerParty[j], MON_DATA_SANITY_HAS_SPECIES))
@@ -6314,6 +6347,7 @@ static bool32 AtLeastThreeUsableMons(void)
if (count >= 3)
return TRUE;
+ // Check PC for usable Pokémon
for (i = 0; i < TOTAL_BOXES_COUNT; i++)
{
for (j = 0; j < IN_BOX_COUNT; j++)
@@ -6334,54 +6368,69 @@ static s8 RunCanReleaseMon(void)
u16 i;
u16 knownMoves;
- if (sPSSData->field_216D)
- return sPSSData->field_216C;
+ if (sPSSData->releaseStatusResolved)
+ return sPSSData->canReleaseMon;
- switch (sPSSData->field_2172)
+ switch (sPSSData->releaseCheckState)
{
case 0:
+ // Check party for other Pokémon that know any restricted
+ // moves the release Pokémon knows
for (i = 0; i < PARTY_SIZE; i++)
{
- if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i)
+ // Make sure party Pokémon isn't the one we're releasing first
+ if (sPSSData->releaseBoxId != TOTAL_BOXES_COUNT || sPSSData->releaseBoxPos != i)
{
- knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- sPSSData->field_2174 &= ~(knownMoves);
+ knownMoves = GetMonData(&gPlayerParty[i], MON_DATA_KNOWN_MOVES, (u8*)sPSSData->restrictedMoveList);
+ sPSSData->restrictedReleaseMonMoves &= ~(knownMoves);
}
}
- if (sPSSData->field_2174 == 0)
+ if (sPSSData->restrictedReleaseMonMoves == 0)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // No restricted moves on release Pokémon that
+ // aren't resolved by the party, it can be released.
+ sPSSData->releaseStatusResolved = TRUE;
+ sPSSData->canReleaseMon = TRUE;
}
else
{
- sPSSData->field_216E = 0;
- sPSSData->field_216F = 0;
- sPSSData->field_2172++;
+ // Release Pokémon has restricted moves not resolved by the party.
+ // Continue and check the PC next
+ sPSSData->releaseCheckBoxId = 0;
+ sPSSData->releaseCheckBoxPos = 0;
+ sPSSData->releaseCheckState++;
}
break;
case 1:
+ // Check PC for other Pokémon that know any restricted
+ // moves the release Pokémon knows
for (i = 0; i < IN_BOX_COUNT; i++)
{
- knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176);
- if (knownMoves != 0
- && !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F))
+ knownMoves = GetAndCopyBoxMonDataAt(sPSSData->releaseCheckBoxId, sPSSData->releaseCheckBoxPos, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->restrictedMoveList);
+ if (knownMoves != 0 && !(sPSSData->releaseBoxId == sPSSData->releaseCheckBoxId
+ && sPSSData->releaseBoxPos == sPSSData->releaseCheckBoxPos))
{
- sPSSData->field_2174 &= ~(knownMoves);
- if (sPSSData->field_2174 == 0)
+ // Found PC Pokémon with restricted move, clear move from list
+ sPSSData->restrictedReleaseMonMoves &= ~(knownMoves);
+ if (sPSSData->restrictedReleaseMonMoves == 0)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 1;
+ // No restricted moves on release Pokémon that
+ // aren't resolved, it can be released.
+ sPSSData->releaseStatusResolved = TRUE;
+ sPSSData->canReleaseMon = TRUE;
break;
}
}
- if (++sPSSData->field_216F >= IN_BOX_COUNT)
+ if (++sPSSData->releaseCheckBoxPos >= IN_BOX_COUNT)
{
- sPSSData->field_216F = 0;
- if (++sPSSData->field_216E >= TOTAL_BOXES_COUNT)
+ sPSSData->releaseCheckBoxPos = 0;
+ if (++sPSSData->releaseCheckBoxId >= TOTAL_BOXES_COUNT)
{
- sPSSData->field_216D = 1;
- sPSSData->field_216C = 0;
+ // Checked every Pokémon in the PC, release Pokémon is
+ // the sole owner of at least one restricted move.
+ // It cannot be released.
+ sPSSData->releaseStatusResolved = TRUE;
+ sPSSData->canReleaseMon = FALSE;
}
}
}
@@ -6449,7 +6498,7 @@ s16 CompactPartySlots(void)
for (i = 0, last = 0; i < PARTY_SIZE; i++)
{
- u16 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
if (species != SPECIES_NONE)
{
if (i != last)
@@ -6462,14 +6511,14 @@ s16 CompactPartySlots(void)
}
}
for (; last < PARTY_SIZE; last++)
- ZeroMonData(gPlayerParty + last);
+ ZeroMonData(&gPlayerParty[last]);
return retVal;
}
static void SetMonMarkings(u8 markings)
{
- sPSSData->cursorMonMarkings = markings;
+ sPSSData->displayMonMarkings = markings;
if (sIsMonBeingMoved)
{
SetMonData(&sPSSData->movingMon, MON_DATA_MARKINGS, &markings);
@@ -6477,7 +6526,7 @@ static void SetMonMarkings(u8 markings)
else
{
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
- SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings);
+ SetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_MARKINGS, &markings);
if (sBoxCursorArea == CURSOR_AREA_IN_BOX)
SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings);
}
@@ -6497,7 +6546,7 @@ static bool8 CanShiftMon(void)
{
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0)
{
- if (sPSSData->cursorMonIsEgg || GetMonData(&sPSSData->movingMon, MON_DATA_HP) == 0)
+ if (sPSSData->displayMonIsEgg || GetMonData(&sPSSData->movingMon, MON_DATA_HP) == 0)
return FALSE;
}
return TRUE;
@@ -6535,16 +6584,16 @@ static void sub_80CEB40(void)
case CURSOR_AREA_IN_PARTY:
if (sBoxCursorPosition < PARTY_SIZE)
{
- SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY);
+ SetDisplayMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY);
break;
}
// fallthrough
case CURSOR_AREA_BUTTONS:
case CURSOR_AREA_BOX:
- SetCursorMonData(NULL, MODE_MOVE);
+ SetDisplayMonData(NULL, MODE_MOVE);
break;
case CURSOR_AREA_IN_BOX:
- SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX);
+ SetDisplayMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX);
break;
}
}
@@ -6553,105 +6602,105 @@ static void sub_80CEB40(void)
static void sub_80CEBDC(void)
{
if (sIsMonBeingMoved)
- SetCursorMonData(&gUnknown_02039D14, MODE_PARTY);
+ SetDisplayMonData(&gUnknown_02039D14, MODE_PARTY);
else
sub_80CEB40();
}
-static void SetCursorMonData(void *pokemon, u8 mode)
+static void SetDisplayMonData(void *pokemon, u8 mode)
{
u8 *txtPtr;
u16 gender;
bool8 sanityIsBadEgg;
- sPSSData->cursorMonItemId = ITEM_NONE;
+ sPSSData->displayMonItemId = ITEM_NONE;
gender = MON_MALE;
sanityIsBadEgg = FALSE;
if (mode == MODE_PARTY)
{
struct Pokemon *mon = (struct Pokemon *)pokemon;
- sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ sPSSData->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
+ if (sPSSData->displayMonSpecies != SPECIES_NONE)
{
sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
if (sanityIsBadEgg)
- sPSSData->cursorMonIsEgg = TRUE;
+ sPSSData->displayMonIsEgg = TRUE;
else
- sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
-
- GetMonData(mon, MON_DATA_NICKNAME, sPSSData->cursorMonNick);
- StringGetEnd10(sPSSData->cursorMonNick);
- sPSSData->cursorMonLevel = GetMonData(mon, MON_DATA_LEVEL);
- sPSSData->cursorMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
- sPSSData->cursorMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- sPSSData->cursorMonPalette = GetMonFrontSpritePal(mon);
+ sPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
+
+ GetMonData(mon, MON_DATA_NICKNAME, sPSSData->displayMonName);
+ StringGetEnd10(sPSSData->displayMonName);
+ sPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL);
+ sPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
+ sPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
+ sPSSData->displayMonPalette = GetMonFrontSpritePal(mon);
gender = GetMonGender(mon);
- sPSSData->cursorMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM);
+ sPSSData->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM);
}
}
else if (mode == MODE_BOX)
{
struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon;
- sPSSData->cursorMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
- if (sPSSData->cursorMonSpecies != SPECIES_NONE)
+ sPSSData->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
+ if (sPSSData->displayMonSpecies != SPECIES_NONE)
{
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
if (sanityIsBadEgg)
- sPSSData->cursorMonIsEgg = TRUE;
+ sPSSData->displayMonIsEgg = TRUE;
else
- sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
+ sPSSData->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
- GetBoxMonData(boxMon, MON_DATA_NICKNAME, sPSSData->cursorMonNick);
- StringGetEnd10(sPSSData->cursorMonNick);
- sPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon);
- sPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
- sPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
- sPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, otId, sPSSData->cursorMonPersonality);
- gender = GetGenderFromSpeciesAndPersonality(sPSSData->cursorMonSpecies, sPSSData->cursorMonPersonality);
- sPSSData->cursorMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, sPSSData->displayMonName);
+ StringGetEnd10(sPSSData->displayMonName);
+ sPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon);
+ sPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
+ sPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
+ sPSSData->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sPSSData->displayMonSpecies, otId, sPSSData->displayMonPersonality);
+ gender = GetGenderFromSpeciesAndPersonality(sPSSData->displayMonSpecies, sPSSData->displayMonPersonality);
+ sPSSData->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
}
}
else
{
- sPSSData->cursorMonSpecies = SPECIES_NONE;
- sPSSData->cursorMonItemId = ITEM_NONE;
+ sPSSData->displayMonSpecies = SPECIES_NONE;
+ sPSSData->displayMonItemId = ITEM_NONE;
}
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sPSSData->displayMonSpecies == SPECIES_NONE)
{
- StringFill(sPSSData->cursorMonNick, CHAR_SPACE, 5);
- StringFill(sPSSData->cursorMonNickText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonSpeciesName, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonGenderLvlText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonName, CHAR_SPACE, 5);
+ StringFill(sPSSData->displayMonNameText, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonSpeciesName, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonGenderLvlText, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonItemName, CHAR_SPACE, 8);
}
- else if (sPSSData->cursorMonIsEgg)
+ else if (sPSSData->displayMonIsEgg)
{
if (sanityIsBadEgg)
- StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
+ StringCopyPadded(sPSSData->displayMonNameText, sPSSData->displayMonName, CHAR_SPACE, 5);
else
- StringCopyPadded(sPSSData->cursorMonNickText, gText_EggNickname, CHAR_SPACE, 8);
+ StringCopyPadded(sPSSData->displayMonNameText, gText_EggNickname, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonSpeciesName, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonGenderLvlText, CHAR_SPACE, 8);
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonSpeciesName, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonGenderLvlText, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonItemName, CHAR_SPACE, 8);
}
else
{
- if (sPSSData->cursorMonSpecies == SPECIES_NIDORAN_F || sPSSData->cursorMonSpecies == SPECIES_NIDORAN_M)
+ if (sPSSData->displayMonSpecies == SPECIES_NIDORAN_F || sPSSData->displayMonSpecies == SPECIES_NIDORAN_M)
gender = MON_GENDERLESS;
- StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
+ StringCopyPadded(sPSSData->displayMonNameText, sPSSData->displayMonName, CHAR_SPACE, 5);
- txtPtr = sPSSData->cursorMonSpeciesName;
+ txtPtr = sPSSData->displayMonSpeciesName;
*(txtPtr)++ = CHAR_SLASH;
- StringCopyPadded(txtPtr, gSpeciesNames[sPSSData->cursorMonSpecies], CHAR_SPACE, 5);
+ StringCopyPadded(txtPtr, gSpeciesNames[sPSSData->displayMonSpecies], CHAR_SPACE, 5);
- txtPtr = sPSSData->cursorMonGenderLvlText;
+ txtPtr = sPSSData->displayMonGenderLvlText;
*(txtPtr)++ = EXT_CTRL_CODE_BEGIN;
*(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
switch (gender)
@@ -6685,14 +6734,14 @@ static void SetCursorMonData(void *pokemon, u8 mode)
*(txtPtr++) = CHAR_EXTRA_SYMBOL;
*(txtPtr++) = CHAR_LV_2;
- txtPtr = ConvertIntToDecimalStringN(txtPtr, sPSSData->cursorMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, sPSSData->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
txtPtr[0] = CHAR_SPACE;
txtPtr[1] = EOS;
- if (sPSSData->cursorMonItemId != ITEM_NONE)
- StringCopyPadded(sPSSData->cursorMonItemName, ItemId_GetName(sPSSData->cursorMonItemId), CHAR_SPACE, 8);
+ if (sPSSData->displayMonItemId != ITEM_NONE)
+ StringCopyPadded(sPSSData->displayMonItemName, ItemId_GetName(sPSSData->displayMonItemId), CHAR_SPACE, 8);
else
- StringFill(sPSSData->cursorMonItemName, CHAR_SPACE, 8);
+ StringFill(sPSSData->displayMonItemName, CHAR_SPACE, 8);
}
}
@@ -6916,7 +6965,7 @@ static u8 InBoxInput_GrabbingMultiple(void)
}
else
{
- sIsMonBeingMoved = (sPSSData->cursorMonSpecies != SPECIES_NONE);
+ sIsMonBeingMoved = (sPSSData->displayMonSpecies != SPECIES_NONE);
sPSSData->inBoxMovingMode = 2;
sMovingMonOrigBoxId = StorageGetCurrentBox();
return INPUT_23;
@@ -7316,18 +7365,18 @@ static u8 sub_80CFA5C(void)
static bool8 sub_80CFA84(void)
{
- u16 var0 = sub_80CD504();
+ u16 species = GetSpeciesAtCursorPosition();
switch (sPSSData->boxOption)
{
case OPTION_DEPOSIT:
- if (var0)
+ if (species != SPECIES_NONE)
SetMenuText(MENU_STORE);
else
return FALSE;
break;
case OPTION_WITHDRAW:
- if (var0)
+ if (species != SPECIES_NONE)
SetMenuText(MENU_WITHDRAW);
else
return FALSE;
@@ -7335,14 +7384,14 @@ static bool8 sub_80CFA84(void)
case OPTION_MOVE_MONS:
if (sIsMonBeingMoved)
{
- if (var0)
+ if (species != SPECIES_NONE)
SetMenuText(MENU_SHIFT);
else
SetMenuText(MENU_PLACE);
}
else
{
- if (var0)
+ if (species != SPECIES_NONE)
SetMenuText(MENU_MOVE);
else
return FALSE;
@@ -7370,21 +7419,21 @@ static bool8 sub_80CFA84(void)
static bool8 sub_80CFB44(void)
{
- if (sPSSData->cursorMonSpecies == SPECIES_EGG)
+ if (sPSSData->displayMonSpecies == SPECIES_EGG)
return FALSE;
if (!IsMovingItem())
{
- if (sPSSData->cursorMonItemId == ITEM_NONE)
+ if (sPSSData->displayMonItemId == ITEM_NONE)
{
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sPSSData->displayMonSpecies == SPECIES_NONE)
return FALSE;
SetMenuText(MENU_GIVE_2);
}
else
{
- if (!ItemIsMail(sPSSData->cursorMonItemId))
+ if (!ItemIsMail(sPSSData->displayMonItemId))
{
SetMenuText(MENU_TAKE);
SetMenuText(MENU_BAG);
@@ -7394,16 +7443,16 @@ static bool8 sub_80CFB44(void)
}
else
{
- if (sPSSData->cursorMonItemId == ITEM_NONE)
+ if (sPSSData->displayMonItemId == ITEM_NONE)
{
- if (sPSSData->cursorMonSpecies == SPECIES_NONE)
+ if (sPSSData->displayMonSpecies == SPECIES_NONE)
return FALSE;
SetMenuText(MENU_GIVE);
}
else
{
- if (ItemIsMail(sPSSData->cursorMonItemId) == TRUE)
+ if (ItemIsMail(sPSSData->displayMonItemId) == TRUE)
return FALSE;
SetMenuText(MENU_SWITCH);
@@ -7414,10 +7463,10 @@ static bool8 sub_80CFB44(void)
return TRUE;
}
-static void sub_80CFBF4(struct Sprite *sprite)
+static void SpriteCB_CursorShadow(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + 20;
+ sprite->pos1.x = sPSSData->cursorSprite->pos1.x;
+ sprite->pos1.y = sPSSData->cursorSprite->pos1.y + 20;
}
static void sub_80CFC14(void)
@@ -7427,100 +7476,100 @@ static void sub_80CFC14(void)
u8 priority, subpriority;
struct SpriteSheet spriteSheets[] =
{
- {gHandCursorTiles, 0x800, 0},
- {gHandCursorShadowTiles, 0x80, 1},
+ {sHandCursor_Gfx, 0x800, GFXTAG_CURSOR},
+ {sHandCursorShadow_Gfx, 0x80, GFXTAG_CURSOR_SHADOW},
{}
};
struct SpritePalette spritePalettes[] =
{
- {gHandCursorPalette, PALTAG_7},
+ {sHandCursor_Pal, PALTAG_7},
{}
};
- static const struct OamData sOamData_857BA0C =
+ static const struct OamData sOamData_Cursor =
{
.shape = SPRITE_SHAPE(32x32),
.size = SPRITE_SIZE(32x32),
.priority = 1,
};
- static const struct OamData sOamData_857BA14 =
+ static const struct OamData sOamData_CursorShadow =
{
.shape = SPRITE_SHAPE(16x16),
.size = SPRITE_SIZE(16x16),
.priority = 1,
};
- static const union AnimCmd sSpriteAnim_857BA1C[] =
+ static const union AnimCmd sAnim_Cursor_Bouncing[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(16, 30),
ANIMCMD_JUMP(0)
};
- static const union AnimCmd sSpriteAnim_857BA28[] =
+ static const union AnimCmd sAnim_Cursor_Still[] =
{
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
- static const union AnimCmd sSpriteAnim_857BA30[] =
+ static const union AnimCmd sAnim_Cursor_Open[] =
{
ANIMCMD_FRAME(32, 5),
ANIMCMD_END
};
- static const union AnimCmd sSpriteAnim_857BA38[] =
+ static const union AnimCmd sAnim_Cursor_Fist[] =
{
ANIMCMD_FRAME(48, 5),
ANIMCMD_END
};
- static const union AnimCmd *const sSpriteAnimTable_857BA40[] =
+ static const union AnimCmd *const sAnims_Cursor[] =
{
- sSpriteAnim_857BA1C,
- sSpriteAnim_857BA28,
- sSpriteAnim_857BA30,
- sSpriteAnim_857BA38
+ [CURSOR_ANIM_BOUNCE] = sAnim_Cursor_Bouncing,
+ [CURSOR_ANIM_STILL] = sAnim_Cursor_Still,
+ [CURSOR_ANIM_OPEN] = sAnim_Cursor_Open,
+ [CURSOR_ANIM_FIST] = sAnim_Cursor_Fist
};
- static const struct SpriteTemplate gSpriteTemplate_857BA50 =
+ static const struct SpriteTemplate sSpriteTemplate_Cursor =
{
- .tileTag = TAG_TILE_0,
+ .tileTag = GFXTAG_CURSOR,
.paletteTag = PALTAG_10,
- .oam = &sOamData_857BA0C,
- .anims = sSpriteAnimTable_857BA40,
+ .oam = &sOamData_Cursor,
+ .anims = sAnims_Cursor,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
- static const struct SpriteTemplate gSpriteTemplate_857BA68 =
+ static const struct SpriteTemplate sSpriteTemplate_CursorShadow =
{
- .tileTag = TAG_TILE_1,
+ .tileTag = GFXTAG_CURSOR_SHADOW,
.paletteTag = PALTAG_10,
- .oam = &sOamData_857BA14,
+ .oam = &sOamData_CursorShadow,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80CFBF4,
+ .callback = SpriteCB_CursorShadow,
};
LoadSpriteSheets(spriteSheets);
LoadSpritePalettes(spritePalettes);
- sPSSData->field_CD8[0] = IndexOfSpritePaletteTag(PALTAG_10);
- sPSSData->field_CD8[1] = IndexOfSpritePaletteTag(PALTAG_7);
+ sPSSData->cursorPalNums[0] = IndexOfSpritePaletteTag(PALTAG_10);
+ sPSSData->cursorPalNums[1] = IndexOfSpritePaletteTag(PALTAG_7);
- sub_80CD444(sBoxCursorArea, sBoxCursorPosition, &x, &y);
- spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6);
+ GetCursorCoordsByPos(sBoxCursorArea, sBoxCursorPosition, &x, &y);
+ spriteId = CreateSprite(&sSpriteTemplate_Cursor, x, y, 6);
if (spriteId != MAX_SPRITES)
{
- sPSSData->field_CB4 = &gSprites[spriteId];
- sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
- sPSSData->field_CB4->oam.priority = 1;
+ sPSSData->cursorSprite = &gSprites[spriteId];
+ sPSSData->cursorSprite->oam.paletteNum = sPSSData->cursorPalNums[sCanOnlyMove];
+ sPSSData->cursorSprite->oam.priority = 1;
if (sIsMonBeingMoved)
- StartSpriteAnim(sPSSData->field_CB4, 3);
+ StartSpriteAnim(sPSSData->cursorSprite, CURSOR_ANIM_FIST);
}
else
{
- sPSSData->field_CB4 = NULL;
+ sPSSData->cursorSprite = NULL;
}
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
@@ -7534,7 +7583,7 @@ static void sub_80CFC14(void)
priority = 2;
}
- spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority);
+ spriteId = CreateSprite(&sSpriteTemplate_CursorShadow, 0, 0, subpriority);
if (spriteId != MAX_SPRITES)
{
sPSSData->field_CB8 = &gSprites[spriteId];
@@ -7551,7 +7600,7 @@ static void sub_80CFC14(void)
static void sub_80CFDC4(void)
{
sCanOnlyMove = !sCanOnlyMove;
- sPSSData->field_CB4->oam.paletteNum = sPSSData->field_CD8[sCanOnlyMove];
+ sPSSData->cursorSprite->oam.paletteNum = sPSSData->cursorPalNums[sCanOnlyMove];
}
static u8 GetBoxCursorPosition(void)
@@ -7573,9 +7622,9 @@ static void sub_80CFE14(u8 *arg0, u8 *arg1)
}
}
-static void sub_80CFE54(u8 animNum)
+static void StartCursorAnim(u8 animNum)
{
- StartSpriteAnim(sPSSData->field_CB4, animNum);
+ StartSpriteAnim(sPSSData->cursorSprite, animNum);
}
static u8 sub_80CFE78(void)
@@ -7583,9 +7632,9 @@ static u8 sub_80CFE78(void)
return sMovingMonOrigBoxId;
}
-static void sub_80CFE84(void)
+static void SetCursorPriorityTo1(void)
{
- sPSSData->field_CB4->oam.priority = 1;
+ sPSSData->cursorSprite->oam.priority = 1;
}
static void sub_80CFEA8(void)
@@ -7777,8 +7826,7 @@ EWRAM_DATA static struct
u16 bgY;
u16 field_10;
struct BoxPokemon boxMons[IN_BOX_COUNT];
-}
-*sMoveMonsPtr = NULL;
+} *sMoveMonsPtr = NULL;
static bool8 sub_80D0164(void)
{
@@ -7851,7 +7899,7 @@ static bool8 sub_80D024C(void)
PutWindowTilemap(sPSSData->field_2200);
CopyWindowToVram8Bit(sPSSData->field_2200, 3);
BlendPalettes(0x3F00, 8, RGB_WHITE);
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR);
sMoveMonsPtr->state++;
break;
@@ -7877,13 +7925,13 @@ static bool8 sub_80D0344(void)
break;
case 1:
sub_80D0B5C();
- sub_80CFE54(0);
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
sMoveMonsPtr->state++;
break;
case 2:
if (!IsDma3ManagerBusyWithBgCopy())
{
- sub_80CFE84();
+ SetCursorPriorityTo1();
LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20);
ShowBg(0);
return FALSE;
@@ -7931,7 +7979,7 @@ static bool8 sub_80D0420(void)
case 1:
if (!DoMonPlaceChange())
{
- sub_80CFE54(3);
+ StartCursorAnim(CURSOR_ANIM_FIST);
sub_80D0884(0, 256, 8);
sub_80CDC64(TRUE);
sMoveMonsPtr->state++;
@@ -7973,7 +8021,7 @@ static bool8 sub_80D04C8(void)
if (!DoMonPlaceChange() && !sub_80D0894())
{
sub_80D0A1C();
- sub_80CFE54(2);
+ StartCursorAnim(CURSOR_ANIM_OPEN);
sub_80CDC64(TRUE);
HideBg(0);
sMoveMonsPtr->state++;
@@ -7982,7 +8030,7 @@ static bool8 sub_80D04C8(void)
case 2:
if (!DoMonPlaceChange())
{
- sub_80CFE54(0);
+ StartCursorAnim(CURSOR_ANIM_BOUNCE);
sub_80D0B5C();
sMoveMonsPtr->state++;
}
@@ -7991,7 +8039,7 @@ static bool8 sub_80D04C8(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
LoadPalette(GetTextWindowPalette(3), 0xD0, 0x20);
- sub_80CFE84();
+ SetCursorPriorityTo1();
ShowBg(0);
return FALSE;
}
@@ -8524,7 +8572,7 @@ static void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
SetPartyMonIconObjMode(cursorPos, 1);
}
- sPSSData->movingItemId = sPSSData->cursorMonItemId;
+ sPSSData->movingItemId = sPSSData->displayMonItemId;
}
static void sub_80D0F38(u16 itemId)
@@ -8635,7 +8683,7 @@ static void sub_80D11CC(void)
for (i = 0; i < MAX_ITEM_ICONS; i++)
{
if (sPSSData->itemIcons[i].active
- && sPSSData->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY)
+ && sPSSData->itemIcons[i].area == CURSOR_AREA_IN_PARTY)
SetItemIconCallback(i, ITEM_CB_HIDE_PARTY, CURSOR_AREA_IN_HAND, 0);
}
}
@@ -8668,7 +8716,7 @@ static bool8 IsMovingItem(void)
for (i = 0; i < MAX_ITEM_ICONS; i++)
{
if (sPSSData->itemIcons[i].active
- && sPSSData->itemIcons[i].cursorArea == CURSOR_AREA_IN_HAND)
+ && sPSSData->itemIcons[i].area == CURSOR_AREA_IN_HAND)
return TRUE;
}
}
@@ -8707,8 +8755,8 @@ static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos)
for (i = 0; i < MAX_ITEM_ICONS; i++)
{
if (sPSSData->itemIcons[i].active
- && sPSSData->itemIcons[i].cursorArea == cursorArea
- && sPSSData->itemIcons[i].cursorPos == cursorPos)
+ && sPSSData->itemIcons[i].area == cursorArea
+ && sPSSData->itemIcons[i].pos == cursorPos)
return TRUE;
}
return FALSE;
@@ -8721,8 +8769,8 @@ static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos)
for (i = 0; i < MAX_ITEM_ICONS; i++)
{
if (sPSSData->itemIcons[i].active
- && sPSSData->itemIcons[i].cursorArea == cursorArea
- && sPSSData->itemIcons[i].cursorPos == cursorPos)
+ && sPSSData->itemIcons[i].area == cursorArea
+ && sPSSData->itemIcons[i].pos == cursorPos)
return i;
}
return MAX_ITEM_ICONS;
@@ -8772,8 +8820,8 @@ static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos)
break;
}
- sPSSData->itemIcons[id].cursorArea = cursorArea;
- sPSSData->itemIcons[id].cursorPos = cursorPos;
+ sPSSData->itemIcons[id].area = cursorArea;
+ sPSSData->itemIcons[id].pos = cursorPos;
}
static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal)
@@ -8874,7 +8922,7 @@ static void PrintItemDescription(void)
if (IsMovingItem())
description = ItemId_GetDescription(sPSSData->movingItemId);
else
- description = ItemId_GetDescription(sPSSData->cursorMonItemId);
+ description = ItemId_GetDescription(sPSSData->displayMonItemId);
FillWindowPixelBuffer(2, PIXEL_FILL(1));
AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1);
@@ -8974,9 +9022,9 @@ static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite)
static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite)
{
- sprite->pos1.x = sPSSData->field_CB4->pos1.x + 4;
- sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 8;
- sprite->oam.priority = sPSSData->field_CB4->oam.priority;
+ sprite->pos1.x = sPSSData->cursorSprite->pos1.x + 4;
+ sprite->pos1.y = sPSSData->cursorSprite->pos1.y + sPSSData->cursorSprite->pos2.y + 8;
+ sprite->oam.priority = sPSSData->cursorSprite->oam.priority;
}
static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite)
@@ -9133,9 +9181,9 @@ u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition)
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES))
lvl = GetLevelFromBoxMonExp(&gPokemonStoragePtr->boxes[boxId][boxPosition]);
- #ifdef BUGFIX
+#ifdef BUGFIX
else
- #endif
+#endif
lvl = 0;
return lvl;