Synced src/mon_markings.c and partly synced PSS
This commit is contained in:
+3
-3
@@ -2980,7 +2980,7 @@ extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[];
|
|||||||
extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
|
extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
|
||||||
extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
|
extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
|
||||||
extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
|
extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
|
||||||
extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];;
|
extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];
|
||||||
extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
|
extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
|
||||||
extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
|
extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
|
||||||
extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
|
extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
|
||||||
@@ -4829,8 +4829,8 @@ extern const u16 gTradeButtons_Gfx[];
|
|||||||
extern const u16 gTradeMenuMonBox_Tilemap[];
|
extern const u16 gTradeMenuMonBox_Tilemap[];
|
||||||
|
|
||||||
// mon_markings
|
// mon_markings
|
||||||
extern const u16 gUnknown_8E9CBBC[];
|
extern const u16 gMonMarkingsMenu_Gfx[];
|
||||||
extern const u16 gUnknown_8E9CB9C[];
|
extern const u16 gMonMarkingsMenu_Pal[];
|
||||||
|
|
||||||
// hall_of_fame
|
// hall_of_fame
|
||||||
extern const u32 gFile_graphics_misc_confetti_sheet[];
|
extern const u32 gFile_graphics_misc_confetti_sheet[];
|
||||||
|
|||||||
+18
-16
@@ -1,33 +1,35 @@
|
|||||||
#ifndef GUARD_MON_MARKINGS_H
|
#ifndef GUARD_MON_MARKINGS_H
|
||||||
#define GUARD_MON_MARKINGS_H
|
#define GUARD_MON_MARKINGS_H
|
||||||
|
|
||||||
struct PokemonMarkMenu
|
#define NUM_MON_MARKINGS 4
|
||||||
|
|
||||||
|
struct MonMarkingsMenu
|
||||||
{
|
{
|
||||||
/*0x0000*/ u16 baseTileTag;
|
/*0x0000*/ u16 baseTileTag;
|
||||||
/*0x0002*/ u16 basePaletteTag;
|
/*0x0002*/ u16 basePaletteTag;
|
||||||
/*0x0004*/ u8 markings; // bit flags
|
/*0x0004*/ u8 markings; // bit flags
|
||||||
/*0x0005*/ s8 cursorPos;
|
/*0x0005*/ s8 cursorPos;
|
||||||
/*0x0006*/ bool8 markingsArray[4];
|
/*0x0006*/ bool8 markingsArray[NUM_MON_MARKINGS];
|
||||||
/*0x000A*/ u8 cursorBaseY;
|
/*0x000A*/ u8 cursorBaseY;
|
||||||
/*0x000B*/ bool8 spriteSheetLoadRequired;
|
/*0x000B*/ bool8 spriteSheetLoadRequired;
|
||||||
/*0x000C*/ struct Sprite * menuWindowSprites[2]; // upper and lower halves of menu window
|
/*0x000C*/ struct Sprite *windowSprites[2]; // upper and lower halves of menu window
|
||||||
/*0x0014*/ struct Sprite * menuMarkingSprites[4];
|
/*0x0014*/ struct Sprite *markingSprites[NUM_MON_MARKINGS];
|
||||||
/*0x0024*/ struct Sprite * unkSprite;
|
/*0x0024*/ struct Sprite *cursorSprite;
|
||||||
/*0x0028*/ struct Sprite * menuTextSprite;
|
/*0x0028*/ struct Sprite *textSprite;
|
||||||
/*0x002C*/ const u8 *frameTiles;
|
/*0x002C*/ const u8 *frameTiles;
|
||||||
/*0x0030*/ const u16 *framePalette;
|
/*0x0030*/ const u16 *framePalette;
|
||||||
/*0x0034*/ u8 menuWindowSpriteTiles[0x1000];
|
/*0x0034*/ u8 windowSpriteTiles[0x1000];
|
||||||
/*0x1034*/ u8 filler1034[0x80];
|
/*0x1034*/ u8 unused[0x80];
|
||||||
/*0x10B4*/ u8 tileLoadState;
|
/*0x10B4*/ u8 tileLoadState;
|
||||||
}; // 10b8
|
}; // 10b8
|
||||||
|
|
||||||
void SetMonMarkingsMenuPointer(struct PokemonMarkMenu * markMenu);
|
void InitMonMarkingsMenu(struct MonMarkingsMenu *ptr);
|
||||||
void LoadMonMarkingsFrameGfx(void);
|
void BufferMonMarkingsMenuTiles(void);
|
||||||
void DrawMonMarkingsMenu(u8 markings, s16 x, s16 y);
|
void OpenMonMarkingsMenu(u8 markings, s16 x, s16 y);
|
||||||
void TeardownMonMarkingsMenu(void);
|
void FreeMonMarkingsMenu(void);
|
||||||
bool8 MonMarkingsHandleInput(void);
|
bool8 HandleMonMarkingsMenuInput(void);
|
||||||
struct Sprite * CreateMonMarkingSprite_SelectCombo(u16 tileTag, u16 paletteTag, const u16 *palette);
|
struct Sprite *CreateMonMarkingAllCombosSprite(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||||
struct Sprite * CreateMonMarkingSprite_AllOff(u16 tileTag, u16 paletteTag, const u16 *palette);
|
struct Sprite *CreateMonMarkingComboSprite(u16 tileTag, u16 paletteTag, const u16 *palette);
|
||||||
void RequestDma3LoadMonMarking(u8 markings, void * dest);
|
void UpdateMonMarkingTiles(u8 markings, void *dest);
|
||||||
|
|
||||||
#endif //GUARD_MON_MARKINGS_H
|
#endif //GUARD_MON_MARKINGS_H
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ enum
|
|||||||
WALLPAPER_PLAIN,
|
WALLPAPER_PLAIN,
|
||||||
WALLPAPER_COUNT
|
WALLPAPER_COUNT
|
||||||
};
|
};
|
||||||
|
#define MAX_DEFAULT_WALLPAPER WALLPAPER_SAVANNA
|
||||||
|
|
||||||
u8 *GetBoxNamePtr(u8 boxNumber);
|
u8 *GetBoxNamePtr(u8 boxNumber);
|
||||||
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
|
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 monPosition);
|
||||||
|
|||||||
@@ -7,8 +7,15 @@
|
|||||||
#define IN_BOX_COLUMNS 5
|
#define IN_BOX_COLUMNS 5
|
||||||
#define IN_BOX_ROWS 6
|
#define IN_BOX_ROWS 6
|
||||||
|
|
||||||
#define MAX_MON_ICONS 40
|
// 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
|
||||||
#define MAX_ITEM_ICONS 3
|
#define MAX_ITEM_ICONS 3
|
||||||
|
|
||||||
#define MAX_MENU_ITEMS 7
|
#define MAX_MENU_ITEMS 7
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -167,19 +174,19 @@ struct StorageAction
|
|||||||
u8 format;
|
u8 format;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkPSSStruct_2002370
|
struct ChooseBoxMenu
|
||||||
{
|
{
|
||||||
struct Sprite *unk_0000;
|
struct Sprite *menuSprite;
|
||||||
struct Sprite *unk_0004[4];
|
struct Sprite *menuSideSprites[4];
|
||||||
u32 unk_0014[3]; // unused
|
u32 unused1[3];
|
||||||
struct Sprite *unk_0020[2];
|
struct Sprite *arrowSprites[2];
|
||||||
u8 buffer[0x200]; // passed but not used
|
u8 buffer[0x200]; // passed but not used
|
||||||
u8 strbuf[20];
|
u8 strbuf[20];
|
||||||
bool32 loadPal;
|
bool32 loadedPalette;
|
||||||
u16 tilesTag;
|
u16 tileTag;
|
||||||
u16 paletteTag;
|
u16 paletteTag;
|
||||||
u8 curBox;
|
u8 curBox;
|
||||||
u8 unk_0245; // unused
|
u8 unused3;
|
||||||
u8 subpriority;
|
u8 subpriority;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -189,19 +196,19 @@ struct StorageMenu
|
|||||||
int textId;
|
int textId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkStruct_2000028
|
struct UnkUtilData
|
||||||
{
|
{
|
||||||
const u8 *unk_00;
|
const u8 *unk_00;
|
||||||
u8 *unk_04;
|
u8 *unk_04;
|
||||||
u16 unk_08;
|
u16 unk_08;
|
||||||
u16 unk_0a;
|
u16 unk_0a;
|
||||||
u16 newField;
|
u16 newField;
|
||||||
void (*unk_0c)(struct UnkStruct_2000028 *data);
|
void (*unk_0c)(struct UnkUtilData *data);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct UnkStruct_2000020
|
struct UnkUtil
|
||||||
{
|
{
|
||||||
struct UnkStruct_2000028 *unk_00;
|
struct UnkUtilData *unk_00;
|
||||||
u8 unk_04;
|
u8 unk_04;
|
||||||
u8 unk_05;
|
u8 unk_05;
|
||||||
};
|
};
|
||||||
@@ -231,115 +238,115 @@ struct PokemonStorageSystemData
|
|||||||
u8 screenChangeType;
|
u8 screenChangeType;
|
||||||
bool8 isReshowingPSS;
|
bool8 isReshowingPSS;
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
struct UnkStruct_2000020 unk_0020;
|
struct UnkUtil unkUtil;
|
||||||
struct UnkStruct_2000028 unk_0028[8];
|
struct UnkUtilData unkUtilData[8];
|
||||||
u16 field_B0[528 / 2];
|
u16 partyMenuTilemapBuffer[0x108];
|
||||||
u16 field_2C0;
|
u16 partyMenuUnused1; // Never read
|
||||||
u16 field_2C2;
|
u16 partyMenuY;
|
||||||
u8 field_2C4;
|
u8 partyMenuUnused2; // Unused
|
||||||
u8 field_2C5;
|
u8 partyMenuMoveTimer;
|
||||||
u8 showPartyMenuState;
|
u8 showPartyMenuState;
|
||||||
bool8 unk_02C7;
|
bool8 closeBoxFlashing;
|
||||||
u8 unk_02C8;
|
u8 closeBoxFlashTimer;
|
||||||
bool8 unk_02C9;
|
bool8 closeBoxFlashState;
|
||||||
s16 newCurrBoxId;
|
s16 newCurrBoxId;
|
||||||
u16 bg2_X;
|
u16 bg2_X;
|
||||||
s16 field_2CE;
|
s16 scrollSpeed;
|
||||||
u16 field_2D0;
|
u16 scrollTimer;
|
||||||
u8 field_2D2;
|
u8 wallpaperOffset;
|
||||||
u8 field_2D3;
|
u8 scrollUnused1; // Never read
|
||||||
u8 field_2D4;
|
u8 scrollToBoxIdUnused; // Never read
|
||||||
u16 field_2D6;
|
u16 scrollUnused2; // Never read
|
||||||
s16 field_2D8;
|
s16 scrollDirectionUnused; // Never read.
|
||||||
u16 field_2DA;
|
u16 scrollUnused3; // Never read
|
||||||
u16 field_2DC;
|
u16 scrollUnused4; // Never read
|
||||||
u16 field_2DE;
|
u16 scrollUnused5; // Never read
|
||||||
u16 field_2E0;
|
u16 scrollUnused6; // Never read
|
||||||
u8 filler[22];
|
u8 filler1[22];
|
||||||
u8 field_2F8[512];
|
u8 field_2F8[512];
|
||||||
u8 field_4F8[512];
|
u8 field_4F8[512];
|
||||||
u8 field_6F8;
|
u8 boxTitleCycleId;
|
||||||
u8 field_6F9;
|
u8 wallpaperLoadState; // Written to, but never read.
|
||||||
u8 field_6FA;
|
u8 wallpaperLoadBoxId;
|
||||||
s8 field_6FB;
|
s8 wallpaperLoadDir;
|
||||||
u16 field_6FC[16];
|
u16 boxTitlePal[16];
|
||||||
u16 field_71C;
|
u16 boxTitlePalOffset;
|
||||||
u16 field_71E;
|
u16 boxTitleAltPalOffset;
|
||||||
struct Sprite *field_720[2];
|
struct Sprite *curBoxTitleSprites[2];
|
||||||
struct Sprite *field_728[2];
|
struct Sprite *nextBoxTitleSprites[2];
|
||||||
struct Sprite *field_730[2];
|
struct Sprite *arrowSprites[2];
|
||||||
u32 field_738;
|
u32 wallpaperPalBits;
|
||||||
u8 field_73C[80];
|
u8 filler2[80]; // Unused
|
||||||
u16 field_78C;
|
u16 unkUnused1; // Never read.
|
||||||
s16 wallpaperSetId;
|
s16 wallpaperSetId;
|
||||||
s16 wallpaperId;
|
s16 wallpaperId;
|
||||||
u16 field_792[360];
|
u16 wallpaperTilemap[360];
|
||||||
u8 wallpaperChangeState;
|
u8 wallpaperChangeState;
|
||||||
u8 field_A63;
|
u8 scrollState;
|
||||||
u8 field_A64;
|
u8 scrollToBoxId;
|
||||||
s8 field_A65;
|
s8 scrollDirection;
|
||||||
// u8 *wallpaperTiles; // used only in Emerald for Walda
|
// u8 *wallpaperTiles; // used only in Emerald for Walda
|
||||||
/* 0a68 */ struct Sprite *movingMonSprite;
|
/* 0a68 */ struct Sprite *movingMonSprite;
|
||||||
/* 0a6c */ struct Sprite *partySprites[PARTY_SIZE];
|
/* 0a6c */ struct Sprite *partySprites[PARTY_SIZE];
|
||||||
/* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT];
|
/* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT];
|
||||||
/* 0afc */ struct Sprite **field_B00;
|
/* 0afc */ struct Sprite **shiftMonSpritePtr;
|
||||||
/* 0b00 */ struct Sprite **field_B04;
|
/* 0b00 */ struct Sprite **releaseMonSpritePtr;
|
||||||
/* 0b04 */ u16 field_B08[MAX_MON_ICONS];
|
/* 0b04 */ u16 numIconsPerSpecies[MAX_MON_ICONS];
|
||||||
/* 0b54 */ u16 field_B58[MAX_MON_ICONS];
|
/* 0b54 */ u16 iconSpeciesList[MAX_MON_ICONS];
|
||||||
/* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT];
|
/* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT];
|
||||||
/* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT];
|
/* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT];
|
||||||
/* 0c58 */ u8 field_C5C;
|
/* 0c58 */ u8 incomingBoxId;
|
||||||
/* 0c59 */ u8 field_C5D;
|
/* 0c59 */ u8 shiftTimer;
|
||||||
/* 0c5a */ u8 field_C5E;
|
/* 0c5a */ u8 numPartyToCompact;
|
||||||
/* 0c5c */ u16 field_C60;
|
/* 0c5c */ u16 iconScrollDistance;
|
||||||
/* 0c5e */ s16 field_C62;
|
/* 0c5e */ s16 iconScrollPos;
|
||||||
/* 0c60 */ s16 field_C64;
|
/* 0c60 */ s16 iconScrollSpeed;
|
||||||
/* 0c62 */ u16 field_C66;
|
/* 0c62 */ u16 iconScrollNumIncoming;
|
||||||
/* 0c64 */ u8 field_C68;
|
/* 0c64 */ u8 iconScrollCurColumn;
|
||||||
/* 0c65 */ s8 field_C69;
|
/* 0c65 */ s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection
|
||||||
/* 0c66 */ u8 field_C6A;
|
/* 0c66 */ u8 iconScrollState;
|
||||||
/* 0c67 */ u8 field_C6B;
|
/* 0c67 */ u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId
|
||||||
/* 0c68 */ struct WindowTemplate menuWindow;
|
/* 0c68 */ struct WindowTemplate menuWindow;
|
||||||
/* 0c70 */ struct StorageMenu menuItems[MAX_MENU_ITEMS];
|
/* 0c70 */ struct StorageMenu menuItems[MAX_MENU_ITEMS];
|
||||||
/* 0ca8 */ u8 menuItemsCount;
|
/* 0ca8 */ u8 menuItemsCount;
|
||||||
/* 0ca9 */ u8 menuWidth;
|
/* 0ca9 */ u8 menuWidth;
|
||||||
/* 0caa */ u8 field_CAE;
|
/* 0caa */ u8 menuUnusedField; // Never read.
|
||||||
/* 0cac */ u16 field_CB0;
|
/* 0cac */ u16 menuWindowId;
|
||||||
/* 0cb0 */ struct Sprite *field_CB4;
|
/* 0cb0 */ struct Sprite *cursorSprite;
|
||||||
/* 0cb4 */ struct Sprite *field_CB8;
|
/* 0cb4 */ struct Sprite *cursorShadowSprite;
|
||||||
/* 0cb8 */ s32 field_CBC;
|
/* 0cb8 */ s32 cursorNewX;
|
||||||
/* 0cbc */ s32 field_CC0;
|
/* 0cbc */ s32 cursorNewY;
|
||||||
/* 0cc0 */ u32 field_CC4;
|
/* 0cc0 */ u32 cursorSpeedX;
|
||||||
/* 0cc4 */ u32 field_CC8;
|
/* 0cc4 */ u32 cursorSpeedY;
|
||||||
/* 0cc8 */ s16 field_CCC;
|
/* 0cc8 */ s16 cursorTargetX;
|
||||||
/* 0cca */ s16 field_CCE;
|
/* 0cca */ s16 cursorTargetY;
|
||||||
/* 0ccc */ u16 field_CD0;
|
/* 0ccc */ u16 cursorMoveSteps;
|
||||||
/* 0cce */ s8 field_CD2;
|
/* 0cce */ s8 cursorVerticalWrap;
|
||||||
/* 0ccf */ s8 field_CD3;
|
/* 0ccf */ s8 cursorHorizontalWrap;
|
||||||
/* 0cd0 */ u8 field_CD4;
|
/* 0cd0 */ u8 newCursorArea;
|
||||||
/* 0cd1 */ u8 field_CD5;
|
/* 0cd1 */ u8 newCursorPosition;
|
||||||
/* 0cd2 */ u8 field_CD6;
|
/* 0cd2 */ u8 cursorPrevHorizPos;
|
||||||
/* 0cd3 */ u8 field_CD7;
|
/* 0cd3 */ u8 cursorFlipTimer;
|
||||||
/* 0cd4 */ u8 field_CD8[2];
|
/* 0cd4 */ u8 cursorPalNums[2];
|
||||||
/* 0cd8 */ const u32 *cursorMonPalette;
|
/* 0cd8 */ const u32 *displayMonPalette;
|
||||||
/* 0cdc */ u32 cursorMonPersonality;
|
/* 0cdc */ u32 displayMonPersonality;
|
||||||
/* 0ce0 */ u16 cursorMonSpecies;
|
/* 0ce0 */ u16 displayMonSpecies;
|
||||||
/* 0ce2 */ u16 cursorMonItem;
|
/* 0ce2 */ u16 displayMonItemId;
|
||||||
/* 0ce4 */ u16 field_CE8;
|
/* 0ce4 */ u16 displayUnusedVar;
|
||||||
/* 0ce6 */ bool8 setMosaic;
|
/* 0ce6 */ bool8 setMosaic;
|
||||||
/* 0ce7 */ u8 cursorMonMarkings;
|
/* 0ce7 */ u8 displayMonMarkings;
|
||||||
/* 0ce8 */ u8 cursorMonLevel;
|
/* 0ce8 */ u8 displayMonLevel;
|
||||||
/* 0ce9 */ bool8 cursorMonIsEgg;
|
/* 0ce9 */ bool8 displayMonIsEgg;
|
||||||
/* 0cea */ u8 cursorMonNick[POKEMON_NAME_LENGTH + 1];
|
/* 0cea */ u8 displayMonName[POKEMON_NAME_LENGTH + 1];
|
||||||
/* 0cf5 */ u8 cursorMonTexts[4][36];
|
/* 0cf5 */ u8 displayMonTexts[4][36];
|
||||||
/* 0d88 */ bool8 (*monPlaceChangeFunc)(void);
|
/* 0d88 */ bool8 (*monPlaceChangeFunc)(void);
|
||||||
/* 0d8c */ u8 monPlaceChangeState;
|
/* 0d8c */ u8 monPlaceChangeState;
|
||||||
/* 0d8d */ u8 field_D91;
|
/* 0d8d */ u8 shiftBoxId;
|
||||||
/* 0d90 */ struct Sprite *monMarkingSprite;
|
/* 0d90 */ struct Sprite *markingComboSprite;
|
||||||
/* 0d94 */ struct Sprite *field_D98[2];
|
/* 0d94 */ struct Sprite *waveformSprites[2];
|
||||||
/* 0d9c */ u16 *monMarkingSpriteTileStart;
|
/* 0d9c */ u16 *markingComboTilesPtr;
|
||||||
/* 0da0 */ struct PokemonMarkMenu field_DA4;
|
/* 0da0 */ struct MonMarkingsMenu markMenu;
|
||||||
/* 1e58 */ struct UnkPSSStruct_2002370 field_1E5C;
|
/* 1e58 */ struct ChooseBoxMenu field_1E5C;
|
||||||
/* 20a0 */ struct Pokemon movingMon;
|
/* 20a0 */ struct Pokemon movingMon;
|
||||||
/* 2104 */ struct Pokemon field_2108;
|
/* 2104 */ struct Pokemon field_2108;
|
||||||
/* 2168 */ u8 field_216C;
|
/* 2168 */ u8 field_216C;
|
||||||
@@ -392,12 +399,12 @@ void SetCurrentBox(u8 boxId);
|
|||||||
void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst);
|
void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon * dst);
|
||||||
void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src);
|
void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src);
|
||||||
|
|
||||||
void Cb2_ExitPSS(void);
|
void CB2_ExitPokeStorage(void);
|
||||||
void FreeBoxSelectionPopupSpriteGfx(void);
|
void FreeBoxSelectionPopupSpriteGfx(void);
|
||||||
void sub_808C940(u8 curBox);
|
void sub_808C940(u8 curBox);
|
||||||
void sub_808C950(void);
|
void sub_808C950(void);
|
||||||
u8 HandleBoxChooseSelectionInput(void);
|
u8 HandleBoxChooseSelectionInput(void);
|
||||||
void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
|
void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal);
|
||||||
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value);
|
void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value);
|
||||||
u32 GetCurrentBoxMonData(u8 boxPosition, s32 request);
|
u32 GetCurrentBoxMonData(u8 boxPosition, s32 request);
|
||||||
u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst);
|
u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst);
|
||||||
@@ -438,7 +445,7 @@ const u8 *GetMovingItemName(void);
|
|||||||
void sub_80966F4(void);
|
void sub_80966F4(void);
|
||||||
bool8 sub_8096728(void);
|
bool8 sub_8096728(void);
|
||||||
bool8 sub_80967C0(void);
|
bool8 sub_80967C0(void);
|
||||||
void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2);
|
void sub_8096BE4(struct UnkUtil *arg0, struct UnkUtilData *arg1, u32 arg2);
|
||||||
void sub_8096BF8(void);
|
void sub_8096BF8(void);
|
||||||
void AddMenu(void);
|
void AddMenu(void);
|
||||||
bool8 CanMovePartyMon(void);
|
bool8 CanMovePartyMon(void);
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ extern const u16 gUnknown_8471DEC[][16];
|
|||||||
|
|
||||||
extern const struct TextWindowGraphics gUserFrames[];
|
extern const struct TextWindowGraphics gUserFrames[];
|
||||||
|
|
||||||
const struct TextWindowGraphics * GetUserFrameGraphicsInfo(u8 idx);
|
const struct TextWindowGraphics *GetWindowFrameTilesPal(u8 idx);
|
||||||
|
|
||||||
#endif //GUARD_TEXT_WINDOW_GRAPHICS_H
|
#endif //GUARD_TEXT_WINDOW_GRAPHICS_H
|
||||||
|
|||||||
@@ -918,7 +918,7 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
|
|||||||
{
|
{
|
||||||
lman.reserveDisconnectSlot_flag = 0;
|
lman.reserveDisconnectSlot_flag = 0;
|
||||||
lman.acceptCount = 0;
|
lman.acceptCount = 0;
|
||||||
lman.acceptSlot_flag = 0;;
|
lman.acceptSlot_flag = 0;
|
||||||
lman.parent_child = MODE_NEUTRAL;
|
lman.parent_child = MODE_NEUTRAL;
|
||||||
rfu_LMAN_managerChangeAgbClockMaster();
|
rfu_LMAN_managerChangeAgbClockMaster();
|
||||||
if (reqCommandId == ID_STOP_MODE_REQ)
|
if (reqCommandId == ID_STOP_MODE_REQ)
|
||||||
|
|||||||
@@ -833,8 +833,8 @@ void sub_81546C0(void)
|
|||||||
|
|
||||||
static void sub_81546EC(u8 frameId)
|
static void sub_81546EC(u8 frameId)
|
||||||
{
|
{
|
||||||
LoadBgTiles(0, GetUserFrameGraphicsInfo(frameId)->tiles, 0x120, 1);
|
LoadBgTiles(0, GetWindowFrameTilesPal(frameId)->tiles, 0x120, 1);
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(frameId)->palette, 0xA0, 0x20);
|
LoadPalette(GetWindowFrameTilesPal(frameId)->palette, 0xA0, 0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8154720(void)
|
static void sub_8154720(void)
|
||||||
|
|||||||
+2
-2
@@ -1255,8 +1255,8 @@ const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz");
|
|||||||
|
|
||||||
const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz");
|
const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz");
|
||||||
|
|
||||||
const u16 gUnknown_8E9CB9C[] = INCBIN_U16("graphics/misc/markings2.gbapal");
|
const u16 gMonMarkingsMenu_Pal[] = INCBIN_U16("graphics/misc/markings2.gbapal");
|
||||||
const u16 gUnknown_8E9CBBC[] = INCBIN_U16("graphics/misc/markings2.4bpp");
|
const u16 gMonMarkingsMenu_Gfx[] = INCBIN_U16("graphics/misc/markings2.4bpp");
|
||||||
|
|
||||||
const u16 gTradeMenu_Pal[] = INCBIN_U16("graphics/trade/menu.gbapal");
|
const u16 gTradeMenu_Pal[] = INCBIN_U16("graphics/trade/menu.gbapal");
|
||||||
const u16 gTradeButtons_Pal[] = INCBIN_U16("graphics/trade/unknown_DDB444.gbapal");
|
const u16 gTradeButtons_Pal[] = INCBIN_U16("graphics/trade/unknown_DDB444.gbapal");
|
||||||
|
|||||||
+2
-2
@@ -677,8 +677,8 @@ static void PrintBadgeCount(void)
|
|||||||
|
|
||||||
static void LoadUserFrameToBg(u8 bgId)
|
static void LoadUserFrameToBg(u8 bgId)
|
||||||
{
|
{
|
||||||
LoadBgTiles(bgId, GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1B1);
|
LoadBgTiles(bgId, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1B1);
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType)->palette, 0x20, 0x20);
|
LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->palette, 0x20, 0x20);
|
||||||
MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]);
|
MainMenu_EraseWindow(&sWindowTemplate[MAIN_MENU_WINDOW_ERROR]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+433
-337
@@ -5,510 +5,606 @@
|
|||||||
#include "graphics.h"
|
#include "graphics.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
|
|
||||||
static EWRAM_DATA struct PokemonMarkMenu * sMenu = NULL;
|
#define ANIM_CURSOR (NUM_MON_MARKINGS * 2)
|
||||||
|
#define ANIM_TEXT (ANIM_CURSOR + 1)
|
||||||
|
|
||||||
static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 tilesTag, u16 paletteTag);
|
#define SELECTION_OK NUM_MON_MARKINGS
|
||||||
static void nullsub_62(struct Sprite * sprite);
|
#define SELECTION_CANCEL (SELECTION_OK + 1)
|
||||||
static void SpriteCB_MarkingIcon(struct Sprite * sprite);
|
|
||||||
static void SpriteCB_Cursor(struct Sprite * sprite);
|
static void CreateMonMarkingsMenuSprites(s16, s16, u16, u16);
|
||||||
static struct Sprite * CreateMonMarkingSprite(u16 tilesTag, u16 paletteTag, const u16 *palette, u16 size);
|
static void SpriteCB_Dummy(struct Sprite *);
|
||||||
|
static void SpriteCB_Marking(struct Sprite *);
|
||||||
|
static void SpriteCB_Cursor(struct Sprite *);
|
||||||
|
static struct Sprite *CreateMarkingComboSprite(u16, u16, const u16 *, u16);
|
||||||
|
|
||||||
static const u16 sMonMarkingsPal[] = INCBIN_U16("graphics/misc/mon_markings.gbapal");
|
static const u16 sMonMarkingsPal[] = INCBIN_U16("graphics/misc/mon_markings.gbapal");
|
||||||
static const u16 sMonMarkingsTiles[] = INCBIN_U16("graphics/misc/mon_markings.4bpp");
|
static const u16 sMonMarkings_Gfx[] = INCBIN_U16("graphics/misc/mon_markings.4bpp");
|
||||||
static const u8 sUnref_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF};
|
static const u8 sUnref_83EE828[] = {0x09, 0x50, 0x13, 0x02, 0xFF};
|
||||||
|
|
||||||
static const struct OamData sOamData_64x64 = {
|
static const struct OamData sOamData_MenuWindow =
|
||||||
.shape = SPRITE_SHAPE(64x64),
|
|
||||||
.size = SPRITE_SIZE(64x64)
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct OamData sOamData_8x8 = {
|
|
||||||
.shape = SPRITE_SHAPE(8x8),
|
|
||||||
.size = SPRITE_SIZE(8x8)
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_CircleOff[] = {
|
|
||||||
ANIMCMD_FRAME(0x0, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_CircleOn[] = {
|
|
||||||
ANIMCMD_FRAME(0x1, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_SquareOff[] = {
|
|
||||||
ANIMCMD_FRAME(0x2, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_SquareOn[] = {
|
|
||||||
ANIMCMD_FRAME(0x3, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_TriangleOff[] = {
|
|
||||||
ANIMCMD_FRAME(0x4, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_TriangleOn[] = {
|
|
||||||
ANIMCMD_FRAME(0x5, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_HeartOff[] = {
|
|
||||||
ANIMCMD_FRAME(0x6, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_HeartOn[] = {
|
|
||||||
ANIMCMD_FRAME(0x7, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_Cursor[] = {
|
|
||||||
ANIMCMD_FRAME(0x8, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MenuMark_Blank[] = {
|
|
||||||
ANIMCMD_FRAME(0x9, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd *const sSpriteAnimTable_MenuMark[] = {
|
|
||||||
sAnimCmd_MenuMark_CircleOff,
|
|
||||||
sAnimCmd_MenuMark_CircleOn,
|
|
||||||
sAnimCmd_MenuMark_SquareOff,
|
|
||||||
sAnimCmd_MenuMark_SquareOn,
|
|
||||||
sAnimCmd_MenuMark_TriangleOff,
|
|
||||||
sAnimCmd_MenuMark_TriangleOn,
|
|
||||||
sAnimCmd_MenuMark_HeartOff,
|
|
||||||
sAnimCmd_MenuMark_HeartOn,
|
|
||||||
sAnimCmd_MenuMark_Cursor,
|
|
||||||
sAnimCmd_MenuMark_Blank
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_Frame_0[] = {
|
|
||||||
ANIMCMD_FRAME(0x0, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_Frame_1[] = {
|
|
||||||
ANIMCMD_FRAME(0x40, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd *const sSpriteAnimTable_Frame[] = {
|
|
||||||
sAnimCmd_Frame_0,
|
|
||||||
sAnimCmd_Frame_1
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct OamData sOamData_32x8 = {
|
|
||||||
.shape = SPRITE_SHAPE(32x8),
|
|
||||||
.size = SPRITE_SIZE(32x8)
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0000[] = {
|
|
||||||
ANIMCMD_FRAME(0x0, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1000[] = {
|
|
||||||
ANIMCMD_FRAME(0x4, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0100[] = {
|
|
||||||
ANIMCMD_FRAME(0x8, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1100[] = {
|
|
||||||
ANIMCMD_FRAME(0xc, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0010[] = {
|
|
||||||
ANIMCMD_FRAME(0x10, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1010[] = {
|
|
||||||
ANIMCMD_FRAME(0x14, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0110[] = {
|
|
||||||
ANIMCMD_FRAME(0x18, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1110[] = {
|
|
||||||
ANIMCMD_FRAME(0x1c, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0001[] = {
|
|
||||||
ANIMCMD_FRAME(0x20, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1001[] = {
|
|
||||||
ANIMCMD_FRAME(0x24, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0101[] = {
|
|
||||||
ANIMCMD_FRAME(0x28, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1101[] = {
|
|
||||||
ANIMCMD_FRAME(0x2c, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0011[] = {
|
|
||||||
ANIMCMD_FRAME(0x30, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1011[] = {
|
|
||||||
ANIMCMD_FRAME(0x34, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_0111[] = {
|
|
||||||
ANIMCMD_FRAME(0x38, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd sAnimCmd_MonMark_1111[] = {
|
|
||||||
ANIMCMD_FRAME(0x3c, 5),
|
|
||||||
ANIMCMD_END
|
|
||||||
};
|
|
||||||
|
|
||||||
static const union AnimCmd *const sSpriteAnimTable_MonMarkSet[] = {
|
|
||||||
sAnimCmd_MonMark_0000,
|
|
||||||
sAnimCmd_MonMark_1000,
|
|
||||||
sAnimCmd_MonMark_0100,
|
|
||||||
sAnimCmd_MonMark_1100,
|
|
||||||
sAnimCmd_MonMark_0010,
|
|
||||||
sAnimCmd_MonMark_1010,
|
|
||||||
sAnimCmd_MonMark_0110,
|
|
||||||
sAnimCmd_MonMark_1110,
|
|
||||||
sAnimCmd_MonMark_0001,
|
|
||||||
sAnimCmd_MonMark_1001,
|
|
||||||
sAnimCmd_MonMark_0101,
|
|
||||||
sAnimCmd_MonMark_1101,
|
|
||||||
sAnimCmd_MonMark_0011,
|
|
||||||
sAnimCmd_MonMark_1011,
|
|
||||||
sAnimCmd_MonMark_0111,
|
|
||||||
sAnimCmd_MonMark_1111
|
|
||||||
};
|
|
||||||
|
|
||||||
void SetMonMarkingsMenuPointer(struct PokemonMarkMenu * markMenu)
|
|
||||||
{
|
{
|
||||||
sMenu = markMenu;
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(64x64),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(64x64),
|
||||||
|
.tileNum = 0,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0,
|
||||||
|
.affineParam = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Used for the markings, OK/Cancel text, and cursor sprites
|
||||||
|
static const struct OamData sOamData_8x8 =
|
||||||
|
{
|
||||||
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(8x8),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(8x8),
|
||||||
|
.tileNum = 0,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0,
|
||||||
|
.affineParam = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_CircleOff[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_CircleOn[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(1, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_SquareOff[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(2, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_SquareOn[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(3, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_TriangleOff[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(4, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_TriangleOn[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(5, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_HeartOff[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(6, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Marking_HeartOn[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(7, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_Cursor[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(8, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_OKCancelText[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(9, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd *const sAnims_MenuSprite[] =
|
||||||
|
{
|
||||||
|
sAnim_Marking_CircleOff,
|
||||||
|
sAnim_Marking_CircleOn,
|
||||||
|
sAnim_Marking_SquareOff,
|
||||||
|
sAnim_Marking_SquareOn,
|
||||||
|
sAnim_Marking_TriangleOff,
|
||||||
|
sAnim_Marking_TriangleOn,
|
||||||
|
sAnim_Marking_HeartOff,
|
||||||
|
sAnim_Marking_HeartOn,
|
||||||
|
[ANIM_CURSOR] = sAnim_Cursor,
|
||||||
|
[ANIM_TEXT] = sAnim_OKCancelText,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MenuWindow_UpperHalf[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MenuWindow_LowerHalf[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(64, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd *const sAnims_MenuWindow[] =
|
||||||
|
{
|
||||||
|
sAnim_MenuWindow_UpperHalf,
|
||||||
|
sAnim_MenuWindow_LowerHalf,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct OamData sOamData_MarkingCombo =
|
||||||
|
{
|
||||||
|
.y = 0,
|
||||||
|
.affineMode = ST_OAM_AFFINE_OFF,
|
||||||
|
.objMode = ST_OAM_OBJ_NORMAL,
|
||||||
|
.mosaic = FALSE,
|
||||||
|
.bpp = ST_OAM_4BPP,
|
||||||
|
.shape = SPRITE_SHAPE(32x8),
|
||||||
|
.x = 0,
|
||||||
|
.matrixNum = 0,
|
||||||
|
.size = SPRITE_SIZE(32x8),
|
||||||
|
.tileNum = 0,
|
||||||
|
.priority = 0,
|
||||||
|
.paletteNum = 0,
|
||||||
|
.affineParam = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_AllOff[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(0, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_Circle[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(4, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_Square[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(8, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleSquare[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(12, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_Triangle[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(16, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleTriangle[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(20, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_SquareTriangle[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(24, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleSquareTriangle[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(28, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_Heart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(32, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(36, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_SquareHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(40, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleSquareHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(44, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_TriangleHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(48, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_CircleTriangleHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(52, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_SquareTriangleHeart[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(56, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd sAnim_MarkingCombo_AllOn[] =
|
||||||
|
{
|
||||||
|
ANIMCMD_FRAME(60, 5),
|
||||||
|
ANIMCMD_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const union AnimCmd *const sAnims_MarkingCombo[] =
|
||||||
|
{
|
||||||
|
sAnim_MarkingCombo_AllOff,
|
||||||
|
sAnim_MarkingCombo_Circle,
|
||||||
|
sAnim_MarkingCombo_Square,
|
||||||
|
sAnim_MarkingCombo_CircleSquare,
|
||||||
|
sAnim_MarkingCombo_Triangle,
|
||||||
|
sAnim_MarkingCombo_CircleTriangle,
|
||||||
|
sAnim_MarkingCombo_SquareTriangle,
|
||||||
|
sAnim_MarkingCombo_CircleSquareTriangle,
|
||||||
|
sAnim_MarkingCombo_Heart,
|
||||||
|
sAnim_MarkingCombo_CircleHeart,
|
||||||
|
sAnim_MarkingCombo_SquareHeart,
|
||||||
|
sAnim_MarkingCombo_CircleSquareHeart,
|
||||||
|
sAnim_MarkingCombo_TriangleHeart,
|
||||||
|
sAnim_MarkingCombo_CircleTriangleHeart,
|
||||||
|
sAnim_MarkingCombo_SquareTriangleHeart,
|
||||||
|
sAnim_MarkingCombo_AllOn,
|
||||||
|
};
|
||||||
|
|
||||||
|
static EWRAM_DATA struct MonMarkingsMenu *sMenu = NULL;
|
||||||
|
|
||||||
|
void InitMonMarkingsMenu(struct MonMarkingsMenu *ptr)
|
||||||
|
{
|
||||||
|
sMenu = ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GetUserFrameForMonMarkings(void)
|
static void BufferMenuWindowTiles(void)
|
||||||
{
|
{
|
||||||
const struct TextWindowGraphics * frame = GetUserFrameGraphicsInfo(gSaveBlock2Ptr->optionsWindowFrameType);
|
const struct TextWindowGraphics *frame = GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType);
|
||||||
sMenu->frameTiles = frame->tiles;
|
sMenu->frameTiles = frame->tiles;
|
||||||
sMenu->framePalette = frame->palette;
|
sMenu->framePalette = frame->palette;
|
||||||
sMenu->tileLoadState = 0;
|
sMenu->tileLoadState = 0;
|
||||||
CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles));
|
CpuFill16(0, sMenu->windowSpriteTiles, sizeof(sMenu->windowSpriteTiles));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 DoLoadMonMarkingsFrameGfx(void)
|
static bool8 BufferMenuFrameTiles(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
u8 *menuWindowSpriteTiles = &sMenu->menuWindowSpriteTiles[256 * sMenu->tileLoadState];
|
u8 *dest = sMenu->windowSpriteTiles + sMenu->tileLoadState * 0x100;
|
||||||
|
|
||||||
switch (sMenu->tileLoadState)
|
switch (sMenu->tileLoadState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x00, menuWindowSpriteTiles, 0x20);
|
CpuFastCopy(sMenu->frameTiles, dest, TILE_SIZE_4BPP);
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x20, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x40, menuWindowSpriteTiles + 0x20 * 7, 0x20);
|
|
||||||
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 2, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
|
||||||
sMenu->tileLoadState++;
|
sMenu->tileLoadState++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x60, menuWindowSpriteTiles + 0x00, 0x20);
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 3, dest, TILE_SIZE_4BPP);
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x80, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 4, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
|
||||||
CpuFastCopy(sMenu->frameTiles + 0xA0, menuWindowSpriteTiles + 0x20 * 7, 0x20);
|
|
||||||
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 5, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
|
||||||
sMenu->tileLoadState++;
|
sMenu->tileLoadState++;
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
CpuFastCopy(sMenu->frameTiles + 0xC0, menuWindowSpriteTiles + 0x00, 0x20);
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 6, dest, TILE_SIZE_4BPP);
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
CpuFastCopy(sMenu->frameTiles + 0xE0, menuWindowSpriteTiles + 0x20 * (i + 1), 0x20);
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 7, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
|
||||||
CpuFastCopy(sMenu->frameTiles + 0x100, menuWindowSpriteTiles + 0x20 * 7, 0x20);
|
|
||||||
|
CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 8, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
|
||||||
sMenu->tileLoadState++;
|
sMenu->tileLoadState++;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
case 14:
|
case 14:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadMonMarkingsFrameGfx(void)
|
void BufferMonMarkingsMenuTiles(void)
|
||||||
{
|
{
|
||||||
GetUserFrameForMonMarkings();
|
BufferMenuWindowTiles();
|
||||||
while (DoLoadMonMarkingsFrameGfx())
|
while (BufferMenuFrameTiles());
|
||||||
{}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawMonMarkingsMenu(u8 markings, s16 x, s16 y)
|
void OpenMonMarkingsMenu(u8 markings, s16 x, s16 y)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
sMenu->cursorPos = 0;
|
sMenu->cursorPos = 0;
|
||||||
sMenu->markings = markings;
|
sMenu->markings = markings;
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||||
{
|
|
||||||
sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
|
sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
|
||||||
}
|
CreateMonMarkingsMenuSprites(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
|
||||||
CreateMonMarkingsMenuSprites(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeardownMonMarkingsMenu(void)
|
void FreeMonMarkingsMenu(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
FreeSpriteTilesByTag(sMenu->baseTileTag + i);
|
FreeSpriteTilesByTag(sMenu->baseTileTag + i);
|
||||||
|
}
|
||||||
FreeSpritePaletteByTag(sMenu->basePaletteTag);
|
FreeSpritePaletteByTag(sMenu->basePaletteTag);
|
||||||
FreeSpritePaletteByTag(sMenu->basePaletteTag + 1);
|
FreeSpritePaletteByTag(sMenu->basePaletteTag + 1);
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < ARRAY_COUNT(sMenu->windowSprites); i++)
|
||||||
{
|
{
|
||||||
if (sMenu->menuWindowSprites[i] == NULL)
|
if (sMenu->windowSprites[i] == NULL)
|
||||||
return; // break;
|
return; // break;
|
||||||
DestroySprite(sMenu->menuWindowSprites[i]);
|
DestroySprite(sMenu->windowSprites[i]);
|
||||||
}
|
}
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||||
{
|
{
|
||||||
if (sMenu->menuMarkingSprites[i] == NULL)
|
if (sMenu->markingSprites[i] == NULL)
|
||||||
return; // break;
|
return; // break;
|
||||||
DestroySprite(sMenu->menuMarkingSprites[i]);
|
DestroySprite(sMenu->markingSprites[i]);
|
||||||
}
|
}
|
||||||
if (sMenu->unkSprite != NULL)
|
if (sMenu->cursorSprite != NULL)
|
||||||
DestroySprite(sMenu->unkSprite);
|
DestroySprite(sMenu->cursorSprite);
|
||||||
if (sMenu->menuTextSprite != NULL)
|
if (sMenu->textSprite != NULL)
|
||||||
DestroySprite(sMenu->menuTextSprite);
|
DestroySprite(sMenu->textSprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 MonMarkingsHandleInput(void)
|
bool8 HandleMonMarkingsMenuInput(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
if (JOY_NEW(DPAD_UP))
|
if (JOY_NEW(DPAD_UP))
|
||||||
{
|
{
|
||||||
|
s8 pos;
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
if (--sMenu->cursorPos < 0)
|
pos = --sMenu->cursorPos;
|
||||||
sMenu->cursorPos = 5;
|
if (pos < 0)
|
||||||
|
sMenu->cursorPos = SELECTION_CANCEL;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JOY_NEW(DPAD_DOWN))
|
if (JOY_NEW(DPAD_DOWN))
|
||||||
{
|
{
|
||||||
|
s8 pos;
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
if (++sMenu->cursorPos > 5)
|
pos = ++sMenu->cursorPos;
|
||||||
|
if (pos > SELECTION_CANCEL)
|
||||||
sMenu->cursorPos = 0;
|
sMenu->cursorPos = 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JOY_NEW(A_BUTTON))
|
if (JOY_NEW(A_BUTTON))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
|
|
||||||
switch (sMenu->cursorPos)
|
switch (sMenu->cursorPos)
|
||||||
{
|
{
|
||||||
case 4:
|
case SELECTION_OK:
|
||||||
sMenu->markings = 0;
|
sMenu->markings = 0;
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||||
sMenu->markings |= sMenu->markingsArray[i] << i;
|
sMenu->markings |= sMenu->markingsArray[i] << i;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
case 5:
|
case SELECTION_CANCEL:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
sMenu->markingsArray[sMenu->cursorPos] = sMenu->markingsArray[sMenu->cursorPos] ? FALSE : TRUE;
|
|
||||||
|
sMenu->markingsArray[sMenu->cursorPos] = !sMenu->markingsArray[sMenu->cursorPos];
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JOY_NEW(B_BUTTON))
|
if (JOY_NEW(B_BUTTON))
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 tilesTag, u16 paletteTag)
|
#define sMarkingId data[0]
|
||||||
|
#define sCursorYOffset data[0]
|
||||||
|
|
||||||
|
static void CreateMonMarkingsMenuSprites(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
struct SpriteSheet sheets[] = {
|
|
||||||
|
struct SpriteSheet sheets[] =
|
||||||
{
|
{
|
||||||
.data = sMenu->menuWindowSpriteTiles,
|
{ sMenu->windowSpriteTiles, 0x1000, baseTileTag },
|
||||||
.size = 0x1000,
|
{ gMonMarkingsMenu_Gfx, 0x320, baseTileTag + 1 },
|
||||||
.tag = tilesTag
|
{}
|
||||||
}, {
|
|
||||||
.data = gUnknown_8E9CBBC,
|
|
||||||
.size = 0x320,
|
|
||||||
.tag = tilesTag + 1
|
|
||||||
}, {}
|
|
||||||
};
|
};
|
||||||
struct SpritePalette palettes[] = {
|
|
||||||
|
struct SpritePalette palettes[] =
|
||||||
{
|
{
|
||||||
.data = sMenu->framePalette,
|
{ sMenu->framePalette, basePaletteTag },
|
||||||
.tag = paletteTag
|
{ gMonMarkingsMenu_Pal, basePaletteTag + 1},
|
||||||
}, {
|
{}
|
||||||
.data = gUnknown_8E9CB9C,
|
|
||||||
.tag = paletteTag + 1
|
|
||||||
}, {}
|
|
||||||
};
|
};
|
||||||
struct SpriteTemplate sprTemplate = {
|
|
||||||
.tileTag = tilesTag,
|
struct SpriteTemplate template =
|
||||||
.paletteTag = paletteTag,
|
{
|
||||||
.oam = &sOamData_64x64,
|
.tileTag = baseTileTag,
|
||||||
.anims = sSpriteAnimTable_Frame,
|
.paletteTag = basePaletteTag,
|
||||||
|
.oam = &sOamData_MenuWindow,
|
||||||
|
.anims = sAnims_MenuWindow,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = nullsub_62
|
.callback = SpriteCB_Dummy,
|
||||||
};
|
};
|
||||||
|
|
||||||
LoadSpriteSheets(sheets);
|
LoadSpriteSheets(sheets);
|
||||||
LoadSpritePalettes(palettes);
|
LoadSpritePalettes(palettes);
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
// Create window sprites
|
||||||
|
for (i = 0; i < ARRAY_COUNT(sMenu->windowSprites); i++)
|
||||||
{
|
{
|
||||||
spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 1);
|
spriteId = CreateSprite(&template, x + 32, y + 32, 1);
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
sMenu->menuWindowSprites[i] = &gSprites[spriteId];
|
sMenu->windowSprites[i] = &gSprites[spriteId];
|
||||||
StartSpriteAnim(&gSprites[spriteId], i);
|
StartSpriteAnim(&gSprites[spriteId], i);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sMenu->menuWindowSprites[i] = NULL;
|
sMenu->windowSprites[i] = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sMenu->windowSprites[1]->y = y + 96;
|
||||||
|
|
||||||
|
// Create marking sprites
|
||||||
|
template.tileTag++;
|
||||||
|
template.paletteTag++;
|
||||||
|
template.anims = sAnims_MenuSprite;
|
||||||
|
template.callback = SpriteCB_Marking;
|
||||||
|
template.oam = &sOamData_8x8;
|
||||||
|
for (i = 0; i < NUM_MON_MARKINGS; i++)
|
||||||
|
{
|
||||||
|
spriteId = CreateSprite(&template, x + 32, y + 16 + 16 * i, 0);
|
||||||
|
if (spriteId != MAX_SPRITES)
|
||||||
|
{
|
||||||
|
sMenu->markingSprites[i] = &gSprites[spriteId];
|
||||||
|
gSprites[spriteId].sMarkingId = i;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sMenu->markingSprites[i] = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sMenu->menuWindowSprites[1]->y = y + 96;
|
// Create OK/Cancel text sprite
|
||||||
|
template.callback = SpriteCallbackDummy;
|
||||||
sprTemplate.tileTag++;
|
spriteId = CreateSprite(&template, 0, 0, 0);
|
||||||
sprTemplate.paletteTag++;
|
|
||||||
sprTemplate.anims = sSpriteAnimTable_MenuMark;
|
|
||||||
sprTemplate.callback = SpriteCB_MarkingIcon;
|
|
||||||
sprTemplate.oam = &sOamData_8x8;
|
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 0);
|
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
sMenu->menuMarkingSprites[i] = &gSprites[spriteId];
|
sMenu->textSprite = &gSprites[spriteId];
|
||||||
gSprites[spriteId].data[0] = i;
|
sMenu->textSprite->oam.shape = SPRITE_SHAPE(32x32);
|
||||||
|
sMenu->textSprite->oam.size = SPRITE_SIZE(32x32);
|
||||||
|
StartSpriteAnim(sMenu->textSprite, ANIM_TEXT);
|
||||||
|
sMenu->textSprite->x = x + 32;
|
||||||
|
sMenu->textSprite->y = y + 80;
|
||||||
|
CalcCenterToCornerVec(sMenu->textSprite, SPRITE_SHAPE(32x16), SPRITE_SIZE(32x16), ST_OAM_AFFINE_OFF);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sMenu->menuMarkingSprites[i] = NULL;
|
sMenu->textSprite = NULL;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sprTemplate.callback = SpriteCallbackDummy;
|
// Create cursor sprite
|
||||||
|
template.callback = SpriteCB_Cursor;
|
||||||
spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
|
spriteId = CreateSprite(&template, x + 12, 0, 0);
|
||||||
|
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
sMenu->menuTextSprite = &gSprites[spriteId];
|
sMenu->cursorSprite = &gSprites[spriteId];
|
||||||
sMenu->menuTextSprite->oam.shape = ST_OAM_SQUARE;
|
sMenu->cursorSprite->sCursorYOffset = y + 16;
|
||||||
sMenu->menuTextSprite->oam.size = 2;
|
StartSpriteAnim(sMenu->cursorSprite, ANIM_CURSOR);
|
||||||
StartSpriteAnim(sMenu->menuTextSprite, 9);
|
|
||||||
sMenu->menuTextSprite->x = x + 32;
|
|
||||||
sMenu->menuTextSprite->y = y + 80;
|
|
||||||
CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sMenu->menuTextSprite = NULL;
|
sMenu->cursorSprite = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sprTemplate.callback = SpriteCB_Cursor;
|
static void SpriteCB_Dummy(struct Sprite *sprite)
|
||||||
|
|
||||||
spriteId = CreateSprite(&sprTemplate, x + 12, 0, 0);
|
|
||||||
|
|
||||||
if (spriteId != MAX_SPRITES)
|
|
||||||
{
|
{
|
||||||
sMenu->unkSprite = &gSprites[spriteId];
|
|
||||||
sMenu->unkSprite->data[0] = y + 16;
|
|
||||||
StartSpriteAnim(sMenu->unkSprite, 8);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SpriteCB_Marking(struct Sprite *sprite)
|
||||||
|
{
|
||||||
|
if (sMenu->markingsArray[sprite->sMarkingId])
|
||||||
|
StartSpriteAnim(sprite, 2 * sprite->sMarkingId + 1); // Set marking 'on'
|
||||||
else
|
else
|
||||||
{
|
StartSpriteAnim(sprite, 2 * sprite->sMarkingId); // Set marking 'off'
|
||||||
sMenu->unkSprite = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void nullsub_62(struct Sprite * sprite)
|
#undef sMarkingId
|
||||||
{}
|
|
||||||
|
|
||||||
static void SpriteCB_MarkingIcon(struct Sprite * sprite)
|
|
||||||
{
|
|
||||||
if (sMenu->markingsArray[sprite->data[0]])
|
|
||||||
StartSpriteAnim(sprite, 2 * sprite->data[0] + 1);
|
|
||||||
else
|
|
||||||
StartSpriteAnim(sprite, 2 * sprite->data[0] + 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void SpriteCB_Cursor(struct Sprite *sprite)
|
static void SpriteCB_Cursor(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->y = 16 * sMenu->cursorPos + sprite->data[0];
|
sprite->y = (16 * sMenu->cursorPos) + sprite->sCursorYOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Sprite * CreateMonMarkingSprite_SelectCombo(u16 tileTag, u16 paletteTag, const u16 *palette)
|
#undef sCursorYOffset
|
||||||
|
|
||||||
|
// Creates a mon marking combination sprite with a spritesheet that holds every possible combination, used by the summary screen / Pokénav
|
||||||
|
struct Sprite *CreateMonMarkingAllCombosSprite(u16 tileTag, u16 paletteTag, const u16 *palette)
|
||||||
{
|
{
|
||||||
if (palette == NULL)
|
if (palette == NULL)
|
||||||
palette = sMonMarkingsPal;
|
palette = sMonMarkingsPal;
|
||||||
return CreateMonMarkingSprite(tileTag, paletteTag, palette, 16);
|
return CreateMarkingComboSprite(tileTag, paletteTag, palette, 1 << NUM_MON_MARKINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Sprite * CreateMonMarkingSprite_AllOff(u16 tileTag, u16 paletteTag, const u16 *palette)
|
// Creates a mon marking combination sprite with a spritesheet that holds only one combination, used for the currently selected PC mon
|
||||||
|
struct Sprite *CreateMonMarkingComboSprite(u16 tileTag, u16 paletteTag, const u16 *palette)
|
||||||
{
|
{
|
||||||
if (palette == NULL)
|
if (palette == NULL)
|
||||||
palette = sMonMarkingsPal;
|
palette = sMonMarkingsPal;
|
||||||
return CreateMonMarkingSprite(tileTag, paletteTag, palette, 1);
|
return CreateMarkingComboSprite(tileTag, paletteTag, palette, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct Sprite * CreateMonMarkingSprite(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
|
static struct Sprite *CreateMarkingComboSprite(u16 tileTag, u16 paletteTag, const u16 *palette, u16 size)
|
||||||
{
|
{
|
||||||
u8 spriteId;
|
u8 spriteId;
|
||||||
struct SpriteTemplate sprTemplate;
|
struct SpriteTemplate template;
|
||||||
struct SpriteSheet sheet = { sMonMarkingsTiles, 0x80, tileTag };
|
struct SpriteSheet sheet = { sMonMarkings_Gfx, 0x80, tileTag };
|
||||||
struct SpritePalette sprPalette = { palette, paletteTag };
|
struct SpritePalette sprPalette = { palette, paletteTag };
|
||||||
|
|
||||||
sprTemplate.tileTag = tileTag;
|
template.tileTag = tileTag;
|
||||||
sprTemplate.paletteTag = paletteTag;
|
template.paletteTag = paletteTag;
|
||||||
sprTemplate.oam = &sOamData_32x8;
|
template.oam = &sOamData_MarkingCombo;
|
||||||
sprTemplate.anims = sSpriteAnimTable_MonMarkSet;
|
template.anims = sAnims_MarkingCombo;
|
||||||
sprTemplate.images = NULL;
|
template.images = NULL;
|
||||||
sprTemplate.affineAnims = gDummySpriteAffineAnimTable;
|
template.affineAnims = gDummySpriteAffineAnimTable;
|
||||||
sprTemplate.callback = nullsub_62;
|
template.callback = SpriteCB_Dummy;
|
||||||
|
|
||||||
sheet.size = size * 0x80;
|
sheet.size = size * 0x80;
|
||||||
|
|
||||||
LoadSpriteSheet(&sheet);
|
LoadSpriteSheet(&sheet);
|
||||||
LoadSpritePalette(&sprPalette);
|
LoadSpritePalette(&sprPalette);
|
||||||
|
|
||||||
spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
|
spriteId = CreateSprite(&template, 0, 0, 0);
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
return &gSprites[spriteId];
|
return &gSprites[spriteId];
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RequestDma3LoadMonMarking(u8 markings, void * dest)
|
// Update what combination is shown, used for sprites created with CreateMonMarkingComboSprite
|
||||||
|
void UpdateMonMarkingTiles(u8 markings, void *dest)
|
||||||
{
|
{
|
||||||
RequestDma3Copy(&sMonMarkingsTiles[64 * markings], dest, 0x80, DMA3_32BIT);
|
RequestDma3Copy(&sMonMarkings_Gfx[64 * markings], dest, 0x80, DMA3_32BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -337,10 +337,10 @@ static bool8 LoadOptionMenuPalette(void)
|
|||||||
switch (sOptionMenuPtr->loadPaletteState)
|
switch (sOptionMenuPtr->loadPaletteState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
LoadBgTiles(1, GetWindowFrameTilesPal(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
LoadPalette(GetWindowFrameTilesPal(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
LoadPalette(sOptionMenuPalette, 0x10, 0x20);
|
LoadPalette(sOptionMenuPalette, 0x10, 0x20);
|
||||||
@@ -381,8 +381,8 @@ static void Task_OptionMenu(u8 taskId)
|
|||||||
sOptionMenuPtr->loadState++;
|
sOptionMenuPtr->loadState++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
LoadBgTiles(1, GetWindowFrameTilesPal(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
|
||||||
LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
LoadPalette(GetWindowFrameTilesPal(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
|
||||||
BufferOptionMenuString(sOptionMenuPtr->cursorPos);
|
BufferOptionMenuString(sOptionMenuPtr->cursorPos);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
|||||||
+144
-98
@@ -15,14 +15,18 @@
|
|||||||
#include "constants/field_weather.h"
|
#include "constants/field_weather.h"
|
||||||
#include "constants/help_system.h"
|
#include "constants/help_system.h"
|
||||||
|
|
||||||
struct PSS_MenuStringPtrs
|
// PC main menu options
|
||||||
{
|
enum {
|
||||||
const u8 *text;
|
OPTION_WITHDRAW,
|
||||||
const u8 *desc;
|
OPTION_DEPOSIT,
|
||||||
|
OPTION_MOVE_MONS,
|
||||||
|
OPTION_MOVE_ITEMS,
|
||||||
|
OPTION_EXIT,
|
||||||
|
OPTIONS_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
static EWRAM_DATA u8 sPreviousBoxOption = 0;
|
static EWRAM_DATA u8 sPreviousBoxOption = 0;
|
||||||
static EWRAM_DATA struct UnkPSSStruct_2002370 *sBoxSelectionPopupSpriteManager = NULL;
|
static EWRAM_DATA struct ChooseBoxMenu *sBoxSelectionPopupSpriteManager = NULL;
|
||||||
|
|
||||||
static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
|
static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr);
|
||||||
static void sub_808C9C4(u8 curBox);
|
static void sub_808C9C4(u8 curBox);
|
||||||
@@ -39,12 +43,15 @@ static const u16 sBoxSelectionPopupPalette[];
|
|||||||
static const u16 sBoxSelectionPopupCenterTiles[];
|
static const u16 sBoxSelectionPopupCenterTiles[];
|
||||||
static const u16 sBoxSelectionPopupSidesTiles[];
|
static const u16 sBoxSelectionPopupSidesTiles[];
|
||||||
|
|
||||||
static const struct PSS_MenuStringPtrs sUnknown_83CDA20[] = {
|
struct {
|
||||||
{gText_WithdrawPokemon, gText_WithdrawMonDescription},
|
const u8 *text;
|
||||||
{gText_DepositPokemon, gText_DepositMonDescription },
|
const u8 *desc;
|
||||||
{gText_MovePokemon, gText_MoveMonDescription },
|
} static const sMainMenuTexts[OPTIONS_COUNT] = {
|
||||||
{gText_MoveItems, gText_MoveItemsDescription },
|
[OPTION_WITHDRAW] = {gText_WithdrawPokemon, gText_WithdrawMonDescription},
|
||||||
{gText_SeeYa, gText_SeeYaDescription }
|
[OPTION_DEPOSIT] = {gText_DepositPokemon, gText_DepositMonDescription},
|
||||||
|
[OPTION_MOVE_MONS] = {gText_MovePokemon, gText_MoveMonDescription},
|
||||||
|
[OPTION_MOVE_ITEMS] = {gText_MoveItems, gText_MoveItemsDescription},
|
||||||
|
[OPTION_EXIT] = {gText_SeeYa, gText_SeeYaDescription}
|
||||||
};
|
};
|
||||||
|
|
||||||
void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer)
|
void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer)
|
||||||
@@ -60,7 +67,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero
|
|||||||
windowId = AddWindow(&winTemplate);
|
windowId = AddWindow(&winTemplate);
|
||||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(zero2));
|
FillWindowPixelBuffer(windowId, PIXEL_FILL(zero2));
|
||||||
tileData1 = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
|
tileData1 = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
|
||||||
tileData2 = (winTemplate.width * 32) + tileData1;
|
tileData2 = (winTemplate.width * TILE_SIZE_4BPP) + tileData1;
|
||||||
|
|
||||||
if (!zero1)
|
if (!zero1)
|
||||||
txtColor[0] = TEXT_COLOR_TRANSPARENT;
|
txtColor[0] = TEXT_COLOR_TRANSPARENT;
|
||||||
@@ -223,7 +230,8 @@ static void sub_808C25C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_808C2D8(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
|
// Unused
|
||||||
|
static void UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
@@ -233,109 +241,138 @@ static void sub_808C2D8(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 h
|
|||||||
Dma3FillLarge16_(0, dest, width);
|
Dma3FillLarge16_(0, dest, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Task_PokemonStorageSystemPC(u8 taskId)
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// SECTION: Main menu
|
||||||
|
//
|
||||||
|
// The below functions generally handle the PC main menu where the main
|
||||||
|
// options can be selected (Withdraw, Deposit, etc.), as well as exiting
|
||||||
|
// Pokémon Storage back to this menu.
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
enum {
|
||||||
|
STATE_LOAD,
|
||||||
|
STATE_FADE_IN,
|
||||||
|
STATE_HANDLE_INPUT,
|
||||||
|
STATE_ERROR_MSG,
|
||||||
|
STATE_ENTER_PC,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define tState data[0]
|
||||||
|
#define tSelectedOption data[1]
|
||||||
|
#define tInput data[2]
|
||||||
|
#define tNextOption data[3]
|
||||||
|
#define tWindowId data[15]
|
||||||
|
|
||||||
|
static void Task_PCMainMenu(u8 taskId)
|
||||||
{
|
{
|
||||||
struct Task *task = &gTasks[taskId];
|
struct Task *task = &gTasks[taskId];
|
||||||
|
|
||||||
switch (task->data[0])
|
switch (task->tState)
|
||||||
{
|
{
|
||||||
case 0:
|
case STATE_LOAD:
|
||||||
SetHelpContext(HELPCONTEXT_BILLS_PC);
|
SetHelpContext(HELPCONTEXT_BILLS_PC);
|
||||||
PSS_CreatePCMenu(task->data[1], &task->data[15]);
|
PSS_CreatePCMenu(task->tSelectedOption, &task->tWindowId);
|
||||||
LoadStdWindowFrameGfx();
|
LoadStdWindowFrameGfx();
|
||||||
DrawDialogueFrame(0, 0);
|
DrawDialogueFrame(0, FALSE);
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, TEXT_SKIP_DRAW, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, sMainMenuTexts[task->tSelectedOption].desc, TEXT_SKIP_DRAW, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
CopyWindowToVram(0, COPYWIN_FULL);
|
CopyWindowToVram(0, COPYWIN_FULL);
|
||||||
CopyWindowToVram(task->data[15], COPYWIN_FULL);
|
CopyWindowToVram(task->tWindowId, COPYWIN_FULL);
|
||||||
task->data[0]++;
|
task->tState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case STATE_FADE_IN:
|
||||||
if (IsWeatherNotFadingIn())
|
if (IsWeatherNotFadingIn())
|
||||||
{
|
{
|
||||||
task->data[0]++;
|
task->tState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case STATE_HANDLE_INPUT:
|
||||||
task->data[2] = Menu_ProcessInput();
|
task->tInput = Menu_ProcessInput();
|
||||||
switch(task->data[2])
|
switch(task->tInput)
|
||||||
{
|
{
|
||||||
case MENU_NOTHING_CHOSEN:
|
case MENU_NOTHING_CHOSEN:
|
||||||
task->data[3] = task->data[1];
|
task->tNextOption = task->tSelectedOption;
|
||||||
if (JOY_NEW(DPAD_UP) && --task->data[3] < 0)
|
if (JOY_NEW(DPAD_UP) && --task->tNextOption < 0)
|
||||||
task->data[3] = 4;
|
task->tNextOption = OPTIONS_COUNT - 1;
|
||||||
|
if (JOY_NEW(DPAD_DOWN) && ++task->tNextOption > OPTIONS_COUNT - 1)
|
||||||
|
task->tNextOption = 0;
|
||||||
|
|
||||||
if (JOY_NEW(DPAD_DOWN) && ++task->data[3] > 4)
|
if (task->tSelectedOption != task->tNextOption)
|
||||||
task->data[3] = 0;
|
|
||||||
if (task->data[1] != task->data[3])
|
|
||||||
{
|
{
|
||||||
task->data[1] = task->data[3];
|
task->tSelectedOption = task->tNextOption;
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENU_B_PRESSED:
|
case MENU_B_PRESSED:
|
||||||
case 4:
|
case OPTION_EXIT:
|
||||||
ClearStdWindowAndFrame(0, TRUE);
|
ClearStdWindowAndFrame(0, TRUE);
|
||||||
ClearStdWindowAndFrame(task->data[15], TRUE);
|
ClearStdWindowAndFrame(task->tWindowId, TRUE);
|
||||||
ScriptContext2_Disable();
|
ScriptContext2_Disable();
|
||||||
EnableBothScriptContexts();
|
EnableBothScriptContexts();
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE)
|
if (task->tInput == 0 && CountPartyMons() == PARTY_SIZE)
|
||||||
{
|
{
|
||||||
|
// Can't withdraw
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
task->data[0] = 3;
|
task->tState = 3;
|
||||||
}
|
}
|
||||||
else if (task->data[2] == 1 && CountPartyMons() == 1)
|
else if (task->tInput == 1 && CountPartyMons() == 1)
|
||||||
{
|
{
|
||||||
|
// Can't deposit
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, gText_JustOnePkmn, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, gText_JustOnePkmn, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
task->data[0] = 3;
|
task->tState = STATE_ERROR_MSG;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Enter PC
|
||||||
FadeScreen(FADE_TO_BLACK, 0);
|
FadeScreen(FADE_TO_BLACK, 0);
|
||||||
task->data[0] = 4;
|
task->tState = STATE_ENTER_PC;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case STATE_ERROR_MSG:
|
||||||
|
// Printed "can't do PC option message"
|
||||||
|
// Wait for new input after message
|
||||||
if (JOY_NEW(A_BUTTON | B_BUTTON))
|
if (JOY_NEW(A_BUTTON | B_BUTTON))
|
||||||
{
|
{
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
task->data[0] = 2;
|
task->tState = STATE_HANDLE_INPUT;
|
||||||
}
|
}
|
||||||
else if (JOY_NEW(DPAD_UP))
|
else if (JOY_NEW(DPAD_UP))
|
||||||
{
|
{
|
||||||
if (--task->data[1] < 0)
|
if (--task->tSelectedOption < 0)
|
||||||
task->data[1] = 4;
|
task->tSelectedOption = 4;
|
||||||
Menu_MoveCursor(-1);
|
Menu_MoveCursor(-1);
|
||||||
task->data[1] = Menu_GetCursorPos();
|
task->tSelectedOption = Menu_GetCursorPos();
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
task->data[0] = 2;
|
task->tState = STATE_HANDLE_INPUT;
|
||||||
}
|
}
|
||||||
else if (JOY_NEW(DPAD_DOWN))
|
else if (JOY_NEW(DPAD_DOWN))
|
||||||
{
|
{
|
||||||
if (++task->data[1] > 3)
|
if (++task->tSelectedOption > 3)
|
||||||
task->data[1] = 0;
|
task->tSelectedOption = 0;
|
||||||
Menu_MoveCursor(1);
|
Menu_MoveCursor(1);
|
||||||
task->data[1] = Menu_GetCursorPos();
|
task->tSelectedOption = Menu_GetCursorPos();
|
||||||
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
FillWindowPixelBuffer(0, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized2(0, 2, sUnknown_83CDA20[task->data[1]].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
AddTextPrinterParameterized2(0, 2, sMainMenuTexts[task->tSelectedOption].desc, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY);
|
||||||
task->data[0] = 2;
|
task->tState = STATE_HANDLE_INPUT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case STATE_ENTER_PC:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
CleanupOverworldWindowsAndTilemaps();
|
CleanupOverworldWindowsAndTilemaps();
|
||||||
Cb2_EnterPSS(task->data[2]);
|
Cb2_EnterPSS(task->tInput);
|
||||||
DestroyTask(taskId);
|
DestroyTask(taskId);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -344,22 +381,22 @@ static void Task_PokemonStorageSystemPC(u8 taskId)
|
|||||||
|
|
||||||
void ShowPokemonStorageSystemPC(void)
|
void ShowPokemonStorageSystemPC(void)
|
||||||
{
|
{
|
||||||
u8 taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
|
u8 taskId = CreateTask(Task_PCMainMenu, 80);
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].tState = 0;
|
||||||
gTasks[taskId].data[1] = 0;
|
gTasks[taskId].tSelectedOption = 0;
|
||||||
ScriptContext2_Enable();
|
ScriptContext2_Enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FieldCb_ReturnToPcMenu(void)
|
static void FieldTask_ReturnToPcMenu(void)
|
||||||
{
|
{
|
||||||
u8 taskId;
|
u8 taskId;
|
||||||
MainCallback vblankCb = gMain.vblankCallback;
|
MainCallback vblankCb = gMain.vblankCallback;
|
||||||
|
|
||||||
SetVBlankCallback(NULL);
|
SetVBlankCallback(NULL);
|
||||||
taskId = CreateTask(Task_PokemonStorageSystemPC, 80);
|
taskId = CreateTask(Task_PCMainMenu, 80);
|
||||||
gTasks[taskId].data[0] = 0;
|
gTasks[taskId].tState = 0;
|
||||||
gTasks[taskId].data[1] = sPreviousBoxOption;
|
gTasks[taskId].tSelectedOption = sPreviousBoxOption;
|
||||||
Task_PokemonStorageSystemPC(taskId);
|
Task_PCMainMenu(taskId);
|
||||||
SetVBlankCallback(vblankCb);
|
SetVBlankCallback(vblankCb);
|
||||||
FadeInFromBlack();
|
FadeInFromBlack();
|
||||||
}
|
}
|
||||||
@@ -380,15 +417,15 @@ static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr)
|
|||||||
windowId = AddWindow(&sUnknown_83CDA48);
|
windowId = AddWindow(&sUnknown_83CDA48);
|
||||||
|
|
||||||
DrawStdWindowFrame(windowId, FALSE);
|
DrawStdWindowFrame(windowId, FALSE);
|
||||||
PrintTextArray(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, NELEMS(sUnknown_83CDA20), (void *)sUnknown_83CDA20);
|
PrintTextArray(windowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 16, NELEMS(sMainMenuTexts), (void *)sMainMenuTexts);
|
||||||
Menu_InitCursor(windowId, 2, 0, 2, 16, NELEMS(sUnknown_83CDA20), whichMenu);
|
Menu_InitCursor(windowId, 2, 0, 2, 16, NELEMS(sMainMenuTexts), whichMenu);
|
||||||
*windowIdPtr = windowId;
|
*windowIdPtr = windowId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cb2_ExitPSS(void)
|
void CB2_ExitPokeStorage(void)
|
||||||
{
|
{
|
||||||
sPreviousBoxOption = GetCurrentBoxOption();
|
sPreviousBoxOption = GetCurrentBoxOption();
|
||||||
gFieldCallback = FieldCb_ReturnToPcMenu;
|
gFieldCallback = FieldTask_ReturnToPcMenu;
|
||||||
SetMainCallback2(CB2_ReturnToField);
|
SetMainCallback2(CB2_ReturnToField);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -407,13 +444,22 @@ void ResetPokemonStorageSystem(void)
|
|||||||
u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box);
|
u8 *dest = StringCopy(GetBoxNamePtr(boxId), gText_Box);
|
||||||
ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
|
ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
|
for (boxId = 0; boxId < TOTAL_BOXES_COUNT; boxId++)
|
||||||
{
|
SetBoxWallpaper(boxId, boxId % (MAX_DEFAULT_WALLPAPER + 1));
|
||||||
SetBoxWallpaper(boxId, boxId % 4);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal)
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// SECTION: Choose Box menu
|
||||||
|
//
|
||||||
|
// The below functions handle the popup menu that allows the player to cycle
|
||||||
|
// through the boxes and select one. Used when storing Pokémon in Deposit mode
|
||||||
|
// and for the Jump feature.
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal)
|
||||||
{
|
{
|
||||||
struct SpritePalette palette = {
|
struct SpritePalette palette = {
|
||||||
sBoxSelectionPopupPalette, palTag
|
sBoxSelectionPopupPalette, palTag
|
||||||
@@ -429,18 +475,18 @@ void LoadBoxSelectionPopupSpriteGfx(struct UnkPSSStruct_2002370 *a0, u16 tileTag
|
|||||||
|
|
||||||
LoadSpriteSheets(sheets);
|
LoadSpriteSheets(sheets);
|
||||||
sBoxSelectionPopupSpriteManager = a0;
|
sBoxSelectionPopupSpriteManager = a0;
|
||||||
a0->tilesTag = tileTag;
|
a0->tileTag = tileTag;
|
||||||
a0->paletteTag = palTag;
|
a0->paletteTag = palTag;
|
||||||
a0->subpriority = a3;
|
a0->subpriority = a3;
|
||||||
a0->loadPal = loadPal;
|
a0->loadedPalette = loadPal;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeBoxSelectionPopupSpriteGfx(void)
|
void FreeBoxSelectionPopupSpriteGfx(void)
|
||||||
{
|
{
|
||||||
if (sBoxSelectionPopupSpriteManager->loadPal)
|
if (sBoxSelectionPopupSpriteManager->loadedPalette)
|
||||||
FreeSpritePaletteByTag(sBoxSelectionPopupSpriteManager->paletteTag);
|
FreeSpritePaletteByTag(sBoxSelectionPopupSpriteManager->paletteTag);
|
||||||
FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tilesTag);
|
FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag);
|
||||||
FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tilesTag + 1);
|
FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_808C940(u8 curBox)
|
void sub_808C940(u8 curBox)
|
||||||
@@ -529,43 +575,43 @@ static void sub_808C9C4(u8 curBox)
|
|||||||
const u8 gUnknown_83CDA94[] = _("/30");
|
const u8 gUnknown_83CDA94[] = _("/30");
|
||||||
|
|
||||||
sBoxSelectionPopupSpriteManager->curBox = curBox;
|
sBoxSelectionPopupSpriteManager->curBox = curBox;
|
||||||
template.tileTag = sBoxSelectionPopupSpriteManager->tilesTag;
|
template.tileTag = sBoxSelectionPopupSpriteManager->tileTag;
|
||||||
template.paletteTag = sBoxSelectionPopupSpriteManager->paletteTag;
|
template.paletteTag = sBoxSelectionPopupSpriteManager->paletteTag;
|
||||||
|
|
||||||
spriteId = CreateSprite(&template, 160, 96, 0);
|
spriteId = CreateSprite(&template, 160, 96, 0);
|
||||||
sBoxSelectionPopupSpriteManager->unk_0000 = gSprites + spriteId;
|
sBoxSelectionPopupSpriteManager->menuSprite = gSprites + spriteId;
|
||||||
|
|
||||||
// Manual subsprites
|
// Manual subsprites
|
||||||
oamData.shape = SPRITE_SHAPE(8x32);
|
oamData.shape = SPRITE_SHAPE(8x32);
|
||||||
oamData.size = SPRITE_SIZE(8x32);
|
oamData.size = SPRITE_SIZE(8x32);
|
||||||
template.tileTag = sBoxSelectionPopupSpriteManager->tilesTag + 1;
|
template.tileTag = sBoxSelectionPopupSpriteManager->tileTag + 1;
|
||||||
template.anims = gUnknown_83CDA70;
|
template.anims = gUnknown_83CDA70;
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
u16 r5;
|
u16 r5;
|
||||||
spriteId = CreateSprite(&template, 124, 80, sBoxSelectionPopupSpriteManager->subpriority);
|
spriteId = CreateSprite(&template, 124, 80, sBoxSelectionPopupSpriteManager->subpriority);
|
||||||
sBoxSelectionPopupSpriteManager->unk_0004[i] = gSprites + spriteId;
|
sBoxSelectionPopupSpriteManager->menuSideSprites[i] = gSprites + spriteId;
|
||||||
r5 = 0;
|
r5 = 0;
|
||||||
if (i & 2)
|
if (i & 2)
|
||||||
{
|
{
|
||||||
sBoxSelectionPopupSpriteManager->unk_0004[i]->x = 196;
|
sBoxSelectionPopupSpriteManager->menuSideSprites[i]->x = 196;
|
||||||
r5 = 2;
|
r5 = 2;
|
||||||
}
|
}
|
||||||
if (i & 1)
|
if (i & 1)
|
||||||
{
|
{
|
||||||
sBoxSelectionPopupSpriteManager->unk_0004[i]->y = 112;
|
sBoxSelectionPopupSpriteManager->menuSideSprites[i]->y = 112;
|
||||||
sBoxSelectionPopupSpriteManager->unk_0004[i]->oam.size = SPRITE_SIZE(8x16);
|
sBoxSelectionPopupSpriteManager->menuSideSprites[i]->oam.size = SPRITE_SIZE(8x16);
|
||||||
r5++;
|
r5++;
|
||||||
}
|
}
|
||||||
StartSpriteAnim(sBoxSelectionPopupSpriteManager->unk_0004[i], r5);
|
StartSpriteAnim(sBoxSelectionPopupSpriteManager->menuSideSprites[i], r5);
|
||||||
}
|
}
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
sBoxSelectionPopupSpriteManager->unk_0020[i] = sub_809223C(72 * i + 0x7c, 0x58, i, 0, sBoxSelectionPopupSpriteManager->subpriority);
|
sBoxSelectionPopupSpriteManager->arrowSprites[i] = sub_809223C(72 * i + 0x7c, 0x58, i, 0, sBoxSelectionPopupSpriteManager->subpriority);
|
||||||
if (sBoxSelectionPopupSpriteManager->unk_0020[i])
|
if (sBoxSelectionPopupSpriteManager->arrowSprites[i])
|
||||||
{
|
{
|
||||||
sBoxSelectionPopupSpriteManager->unk_0020[i]->data[0] = (i == 0 ? -1 : 1);
|
sBoxSelectionPopupSpriteManager->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1);
|
||||||
sBoxSelectionPopupSpriteManager->unk_0020[i]->callback = sub_808CD64;
|
sBoxSelectionPopupSpriteManager->arrowSprites[i]->callback = sub_808CD64;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PrintBoxNameAndCountToSprite();
|
PrintBoxNameAndCountToSprite();
|
||||||
@@ -576,23 +622,23 @@ static void sub_808C9C4(u8 curBox)
|
|||||||
static void sub_808CBA4(void)
|
static void sub_808CBA4(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
if (sBoxSelectionPopupSpriteManager->unk_0000)
|
if (sBoxSelectionPopupSpriteManager->menuSprite)
|
||||||
{
|
{
|
||||||
DestroySprite(sBoxSelectionPopupSpriteManager->unk_0000);
|
DestroySprite(sBoxSelectionPopupSpriteManager->menuSprite);
|
||||||
sBoxSelectionPopupSpriteManager->unk_0000 = NULL;
|
sBoxSelectionPopupSpriteManager->menuSprite = NULL;
|
||||||
}
|
}
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if (sBoxSelectionPopupSpriteManager->unk_0004[i])
|
if (sBoxSelectionPopupSpriteManager->menuSideSprites[i])
|
||||||
{
|
{
|
||||||
DestroySprite(sBoxSelectionPopupSpriteManager->unk_0004[i]);
|
DestroySprite(sBoxSelectionPopupSpriteManager->menuSideSprites[i]);
|
||||||
sBoxSelectionPopupSpriteManager->unk_0004[i] = NULL;
|
sBoxSelectionPopupSpriteManager->menuSideSprites[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
if (sBoxSelectionPopupSpriteManager->unk_0020[i])
|
if (sBoxSelectionPopupSpriteManager->arrowSprites[i])
|
||||||
DestroySprite(sBoxSelectionPopupSpriteManager->unk_0020[i]);
|
DestroySprite(sBoxSelectionPopupSpriteManager->arrowSprites[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -627,7 +673,7 @@ static void PrintBoxNameAndCountToSprite(void)
|
|||||||
|
|
||||||
static void PrintToSpriteWithTagUnk0240(const u8 *str, u16 x, u16 y)
|
static void PrintToSpriteWithTagUnk0240(const u8 *str, u16 x, u16 y)
|
||||||
{
|
{
|
||||||
u16 tileStart = GetSpriteTileStartByTag(sBoxSelectionPopupSpriteManager->tilesTag);
|
u16 tileStart = GetSpriteTileStartByTag(sBoxSelectionPopupSpriteManager->tileTag);
|
||||||
PrintStringToBufferCopyNow(str, (void *)(OBJ_VRAM0 + tileStart * 32 + 256 * y + 32 * x), 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sBoxSelectionPopupSpriteManager->buffer);
|
PrintStringToBufferCopyNow(str, (void *)(OBJ_VRAM0 + tileStart * 32 + 256 * y + 32 * x), 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sBoxSelectionPopupSpriteManager->buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -370,7 +370,7 @@ void Cb2_EnterPSS(u8 boxOption)
|
|||||||
sCurrentBoxOption = boxOption;
|
sCurrentBoxOption = boxOption;
|
||||||
gPSSData = Alloc(sizeof(struct PokemonStorageSystemData));
|
gPSSData = Alloc(sizeof(struct PokemonStorageSystemData));
|
||||||
if (gPSSData == NULL)
|
if (gPSSData == NULL)
|
||||||
SetMainCallback2(Cb2_ExitPSS);
|
SetMainCallback2(CB2_ExitPokeStorage);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->boxOption = boxOption;
|
gPSSData->boxOption = boxOption;
|
||||||
@@ -389,7 +389,7 @@ void Cb2_ReturnToPSS(void)
|
|||||||
ResetTasks();
|
ResetTasks();
|
||||||
gPSSData = Alloc(sizeof(struct PokemonStorageSystemData));
|
gPSSData = Alloc(sizeof(struct PokemonStorageSystemData));
|
||||||
if (gPSSData == NULL)
|
if (gPSSData == NULL)
|
||||||
SetMainCallback2(Cb2_ExitPSS);
|
SetMainCallback2(CB2_ExitPokeStorage);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->boxOption = sCurrentBoxOption;
|
gPSSData->boxOption = sCurrentBoxOption;
|
||||||
@@ -421,13 +421,13 @@ static void sub_808CF10(void)
|
|||||||
FreeAllSpritePalettes();
|
FreeAllSpritePalettes();
|
||||||
ClearDma3Requests();
|
ClearDma3Requests();
|
||||||
gReservedSpriteTileCount = 0x280;
|
gReservedSpriteTileCount = 0x280;
|
||||||
sub_8096BE4(&gPSSData->unk_0020, gPSSData->unk_0028, 8);
|
sub_8096BE4(&gPSSData->unkUtil, gPSSData->unkUtilData, 8);
|
||||||
gKeyRepeatStartDelay = 20;
|
gKeyRepeatStartDelay = 20;
|
||||||
ClearScheduledBgCopiesToVram();
|
ClearScheduledBgCopiesToVram();
|
||||||
AllocBoxPartyPokemonDropdowns(3);
|
AllocBoxPartyPokemonDropdowns(3);
|
||||||
SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4);
|
SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4);
|
||||||
SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0);
|
SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0);
|
||||||
gPSSData->unk_02C7 = FALSE;
|
gPSSData->closeBoxFlashing = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_808CF94(void)
|
static void sub_808CF94(void)
|
||||||
@@ -531,10 +531,10 @@ static void Cb_InitPSS(u8 taskId)
|
|||||||
|
|
||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
{
|
{
|
||||||
gPSSData->field_DA4.baseTileTag = TAG_TILE_D;
|
gPSSData->markMenu.baseTileTag = TAG_TILE_D;
|
||||||
gPSSData->field_DA4.basePaletteTag = TAG_PAL_DACE;
|
gPSSData->markMenu.basePaletteTag = TAG_PAL_DACE;
|
||||||
SetMonMarkingsMenuPointer(&gPSSData->field_DA4);
|
InitMonMarkingsMenu(&gPSSData->markMenu);
|
||||||
LoadMonMarkingsFrameGfx();
|
BufferMonMarkingsMenuTiles();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -622,7 +622,7 @@ static void Cb_MainPSS(u8 taskId)
|
|||||||
case 6:
|
case 6:
|
||||||
if (gPSSData->boxOption == BOX_OPTION_MOVE_MONS)
|
if (gPSSData->boxOption == BOX_OPTION_MOVE_MONS)
|
||||||
{
|
{
|
||||||
if (IsMonBeingMoved() && ItemIsMail(gPSSData->cursorMonItem))
|
if (IsMonBeingMoved() && ItemIsMail(gPSSData->displayMonItemId))
|
||||||
gPSSData->state = 5;
|
gPSSData->state = 5;
|
||||||
else
|
else
|
||||||
SetPSSCallback(Cb_HidePartyPokemon);
|
SetPSSCallback(Cb_HidePartyPokemon);
|
||||||
@@ -680,7 +680,7 @@ static void Cb_MainPSS(u8 taskId)
|
|||||||
case 11:
|
case 11:
|
||||||
if (!CanMovePartyMon())
|
if (!CanMovePartyMon())
|
||||||
{
|
{
|
||||||
if (ItemIsMail(gPSSData->cursorMonItem))
|
if (ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
gPSSData->state = 5;
|
gPSSData->state = 5;
|
||||||
}
|
}
|
||||||
@@ -911,7 +911,7 @@ static void Cb_OnSelectedMon(u8 taskId)
|
|||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
PrintStorageActionText(PC_TEXT_IS_SELECTED);
|
PrintStorageActionText(PC_TEXT_IS_SELECTED);
|
||||||
else if (IsActiveItemMoving() || gPSSData->cursorMonItem != 0)
|
else if (IsActiveItemMoving() || gPSSData->displayMonItemId != 0)
|
||||||
PrintStorageActionText(PC_TEXT_IS_SELECTED2);
|
PrintStorageActionText(PC_TEXT_IS_SELECTED2);
|
||||||
else
|
else
|
||||||
PrintStorageActionText(PC_TEXT_GIVE_TO_MON);
|
PrintStorageActionText(PC_TEXT_GIVE_TO_MON);
|
||||||
@@ -971,7 +971,7 @@ static void Cb_OnSelectedMon(u8 taskId)
|
|||||||
{
|
{
|
||||||
gPSSData->state = 3;
|
gPSSData->state = 3;
|
||||||
}
|
}
|
||||||
else if (ItemIsMail(gPSSData->cursorMonItem))
|
else if (ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
gPSSData->state = 4;
|
gPSSData->state = 4;
|
||||||
}
|
}
|
||||||
@@ -987,11 +987,11 @@ static void Cb_OnSelectedMon(u8 taskId)
|
|||||||
{
|
{
|
||||||
gPSSData->state = 3;
|
gPSSData->state = 3;
|
||||||
}
|
}
|
||||||
else if (gPSSData->cursorMonIsEgg)
|
else if (gPSSData->displayMonIsEgg)
|
||||||
{
|
{
|
||||||
gPSSData->state = 5; // Cannot release an Egg.
|
gPSSData->state = 5; // Cannot release an Egg.
|
||||||
}
|
}
|
||||||
else if (ItemIsMail(gPSSData->cursorMonItem))
|
else if (ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
gPSSData->state = 4;
|
gPSSData->state = 4;
|
||||||
}
|
}
|
||||||
@@ -1177,7 +1177,7 @@ static void Cb_DepositMenu(u8 taskId)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
|
PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
|
||||||
LoadBoxSelectionPopupSpriteGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
|
LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
|
||||||
sub_808C940(gUnknown_20397B6);
|
sub_808C940(gUnknown_20397B6);
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
break;
|
break;
|
||||||
@@ -1372,16 +1372,16 @@ static void Cb_ShowMarkMenu(u8 taskId)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
PrintStorageActionText(PC_TEXT_MARK_POKE);
|
PrintStorageActionText(PC_TEXT_MARK_POKE);
|
||||||
gPSSData->field_DA4.markings = gPSSData->cursorMonMarkings;
|
gPSSData->markMenu.markings = gPSSData->displayMonMarkings;
|
||||||
DrawMonMarkingsMenu(gPSSData->cursorMonMarkings, 0xb0, 0x10);
|
OpenMonMarkingsMenu(gPSSData->displayMonMarkings, 0xb0, 0x10);
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!MonMarkingsHandleInput())
|
if (!HandleMonMarkingsMenuInput())
|
||||||
{
|
{
|
||||||
TeardownMonMarkingsMenu();
|
FreeMonMarkingsMenu();
|
||||||
ClearBottomWindow();
|
ClearBottomWindow();
|
||||||
SetMonMarkings(gPSSData->field_DA4.markings);
|
SetMonMarkings(gPSSData->markMenu.markings);
|
||||||
RefreshCursorMonData();
|
RefreshCursorMonData();
|
||||||
SetPSSCallback(Cb_MainPSS);
|
SetPSSCallback(Cb_MainPSS);
|
||||||
}
|
}
|
||||||
@@ -1394,7 +1394,7 @@ static void Cb_TakeItemForMoving(u8 taskId)
|
|||||||
switch (gPSSData->state)
|
switch (gPSSData->state)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (!ItemIsMail(gPSSData->cursorMonItem))
|
if (!ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
ClearBottomWindow();
|
ClearBottomWindow();
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
@@ -1468,7 +1468,7 @@ static void Cb_ItemToBag(u8 taskId)
|
|||||||
switch (gPSSData->state)
|
switch (gPSSData->state)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (!AddBagItem(gPSSData->cursorMonItem, 1))
|
if (!AddBagItem(gPSSData->displayMonItemId, 1))
|
||||||
{
|
{
|
||||||
PlaySE(SE_FAILURE);
|
PlaySE(SE_FAILURE);
|
||||||
PrintStorageActionText(PC_TEXT_BAG_FULL);
|
PrintStorageActionText(PC_TEXT_BAG_FULL);
|
||||||
@@ -1516,7 +1516,7 @@ static void Cb_SwitchSelectedItem(u8 taskId)
|
|||||||
switch (gPSSData->state)
|
switch (gPSSData->state)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if (!ItemIsMail(gPSSData->cursorMonItem))
|
if (!ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
ClearBottomWindow();
|
ClearBottomWindow();
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
@@ -1814,7 +1814,7 @@ static void Cb_JumpBox(u8 taskId)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
|
PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
|
||||||
LoadBoxSelectionPopupSpriteGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
|
LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE);
|
||||||
sub_808C940(StorageGetCurrentBox());
|
sub_808C940(StorageGetCurrentBox());
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
break;
|
break;
|
||||||
@@ -2051,7 +2051,7 @@ static void Cb_ChangeScreen(u8 taskId)
|
|||||||
case SCREEN_CHANGE_EXIT_BOX:
|
case SCREEN_CHANGE_EXIT_BOX:
|
||||||
default:
|
default:
|
||||||
FreePSSData();
|
FreePSSData();
|
||||||
SetMainCallback2(Cb2_ExitPSS);
|
SetMainCallback2(CB2_ExitPokeStorage);
|
||||||
break;
|
break;
|
||||||
case SCREEN_CHANGE_SUMMARY_SCREEN:
|
case SCREEN_CHANGE_SUMMARY_SCREEN:
|
||||||
partyMon = gPSSData->field_218C.mon;
|
partyMon = gPSSData->field_218C.mon;
|
||||||
@@ -2163,12 +2163,12 @@ static void sub_808F078(void)
|
|||||||
|
|
||||||
static void PSS_CreateMonMarkingSprite(void)
|
static void PSS_CreateMonMarkingSprite(void)
|
||||||
{
|
{
|
||||||
gPSSData->monMarkingSprite = CreateMonMarkingSprite_AllOff(TAG_TILE_10, TAG_PAL_DAC8, NULL);
|
gPSSData->markingComboSprite = CreateMonMarkingComboSprite(TAG_TILE_10, TAG_PAL_DAC8, NULL);
|
||||||
gPSSData->monMarkingSprite->oam.priority = 1;
|
gPSSData->markingComboSprite->oam.priority = 1;
|
||||||
gPSSData->monMarkingSprite->subpriority = 1;
|
gPSSData->markingComboSprite->subpriority = 1;
|
||||||
gPSSData->monMarkingSprite->x = 40;
|
gPSSData->markingComboSprite->x = 40;
|
||||||
gPSSData->monMarkingSprite->y = 150;
|
gPSSData->markingComboSprite->y = 150;
|
||||||
gPSSData->monMarkingSpriteTileStart = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10);
|
gPSSData->markingComboTilesPtr = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CreateWaveformSprites(void)
|
static void CreateWaveformSprites(void)
|
||||||
@@ -2180,13 +2180,13 @@ static void CreateWaveformSprites(void)
|
|||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2);
|
u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2);
|
||||||
gPSSData->field_D98[i] = &gSprites[spriteId];
|
gPSSData->waveformSprites[i] = &gSprites[spriteId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RefreshCursorMonData(void)
|
static void RefreshCursorMonData(void)
|
||||||
{
|
{
|
||||||
LoadCursorMonGfx(gPSSData->cursorMonSpecies, gPSSData->cursorMonPersonality);
|
LoadCursorMonGfx(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality);
|
||||||
PrintCursorMonInfo();
|
PrintCursorMonInfo();
|
||||||
sub_808F5E8();
|
sub_808F5E8();
|
||||||
ScheduleBgCopyTilemapToVram(0);
|
ScheduleBgCopyTilemapToVram(0);
|
||||||
@@ -2274,7 +2274,7 @@ static void LoadCursorMonGfx(u16 species, u32 pid)
|
|||||||
if (species != SPECIES_NONE)
|
if (species != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gPSSData->field_22C4, species, pid);
|
HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gPSSData->field_22C4, species, pid);
|
||||||
LZ77UnCompWram(gPSSData->cursorMonPalette, gPSSData->field_2244);
|
LZ77UnCompWram(gPSSData->displayMonPalette, gPSSData->field_2244);
|
||||||
CpuCopy32(gPSSData->field_22C4, gPSSData->field_223C, 0x800);
|
CpuCopy32(gPSSData->field_22C4, gPSSData->field_223C, 0x800);
|
||||||
LoadPalette(gPSSData->field_2244, gPSSData->field_223A, 0x20);
|
LoadPalette(gPSSData->field_2244, gPSSData->field_223A, 0x20);
|
||||||
gPSSData->cursorMonSprite->invisible = FALSE;
|
gPSSData->cursorMonSprite->invisible = FALSE;
|
||||||
@@ -2294,28 +2294,28 @@ static void PrintCursorMonInfo(void)
|
|||||||
{
|
{
|
||||||
for (i = 0, y = 0; i < 3; i++, y += 14)
|
for (i = 0, y = 0; i < 3; i++, y += 14)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(0, 2, gPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL);
|
AddTextPrinterParameterized(0, 2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL);
|
||||||
}
|
}
|
||||||
AddTextPrinterParameterized(0, 0, gPSSData->cursorMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL);
|
AddTextPrinterParameterized(0, 0, gPSSData->displayMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(0, 0, gPSSData->cursorMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL);
|
AddTextPrinterParameterized(0, 0, gPSSData->displayMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL);
|
||||||
for (i = 0, y = 15; i < 3; i++, y += 14)
|
for (i = 0, y = 15; i < 3; i++, y += 14)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized(0, 2, gPSSData->cursorMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL);
|
AddTextPrinterParameterized(0, 2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyWindowToVram(0, COPYWIN_GFX);
|
CopyWindowToVram(0, COPYWIN_GFX);
|
||||||
if (gPSSData->cursorMonSpecies != SPECIES_NONE)
|
if (gPSSData->displayMonSpecies != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
RequestDma3LoadMonMarking(gPSSData->cursorMonMarkings, gPSSData->monMarkingSpriteTileStart);
|
UpdateMonMarkingTiles(gPSSData->displayMonMarkings, gPSSData->markingComboTilesPtr);
|
||||||
gPSSData->monMarkingSprite->invisible = FALSE;
|
gPSSData->markingComboSprite->invisible = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->monMarkingSprite->invisible = TRUE;
|
gPSSData->markingComboSprite->invisible = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2323,17 +2323,17 @@ static void sub_808F5E8(void)
|
|||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
if (gPSSData->cursorMonSpecies != SPECIES_NONE)
|
if (gPSSData->displayMonSpecies != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2);
|
SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2);
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
StartSpriteAnimIfDifferent(gPSSData->field_D98[i], i * 2 + 1);
|
StartSpriteAnimIfDifferent(gPSSData->waveformSprites[i], i * 2 + 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2);
|
SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2);
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
StartSpriteAnim(gPSSData->field_D98[i], i * 2);
|
StartSpriteAnim(gPSSData->waveformSprites[i], i * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0);
|
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0);
|
||||||
@@ -2342,9 +2342,9 @@ static void sub_808F5E8(void)
|
|||||||
|
|
||||||
static void sub_808F68C(void)
|
static void sub_808F68C(void)
|
||||||
{
|
{
|
||||||
LZ77UnCompWram(gUnknown_8E9CAEC, gPSSData->field_B0);
|
LZ77UnCompWram(gUnknown_8E9CAEC, gPSSData->partyMenuTilemapBuffer);
|
||||||
LoadPalette(gPSSMenu_Pal, 0x10, 0x20);
|
LoadPalette(gPSSMenu_Pal, 0x10, 0x20);
|
||||||
SetBoxPartyPokemonDropdownMap2(1, 1, gPSSData->field_B0, 12, 22);
|
SetBoxPartyPokemonDropdownMap2(1, 1, gPSSData->partyMenuTilemapBuffer, 12, 22);
|
||||||
SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4);
|
SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4);
|
||||||
SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0);
|
SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0);
|
||||||
SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0);
|
SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0);
|
||||||
@@ -2365,29 +2365,29 @@ static void sub_808F68C(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ScheduleBgCopyTilemapToVram(1);
|
ScheduleBgCopyTilemapToVram(1);
|
||||||
gPSSData->unk_02C7 = FALSE;
|
gPSSData->closeBoxFlashing = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SetUpShowPartyMenu(void)
|
static void SetUpShowPartyMenu(void)
|
||||||
{
|
{
|
||||||
gPSSData->field_2C0 = 20;
|
gPSSData->partyMenuUnused1 = 20;
|
||||||
gPSSData->field_2C2 = 2;
|
gPSSData->partyMenuY = 2;
|
||||||
gPSSData->field_2C5 = 0;
|
gPSSData->partyMenuMoveTimer = 0;
|
||||||
CreatePartyMonsSprites(FALSE);
|
CreatePartyMonsSprites(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 ShowPartyMenu(void)
|
static bool8 ShowPartyMenu(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_2C5 == 20)
|
if (gPSSData->partyMenuMoveTimer == 20)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
gPSSData->field_2C0--;
|
gPSSData->partyMenuUnused1--;
|
||||||
gPSSData->field_2C2++;
|
gPSSData->partyMenuY++;
|
||||||
AdjustBoxPartyPokemonDropdownPos(1, 3, 1);
|
AdjustBoxPartyPokemonDropdownPos(1, 3, 1);
|
||||||
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
|
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
|
||||||
ScheduleBgCopyTilemapToVram(1);
|
ScheduleBgCopyTilemapToVram(1);
|
||||||
sub_8090B98(8);
|
sub_8090B98(8);
|
||||||
if (++gPSSData->field_2C5 == 20)
|
if (++gPSSData->partyMenuMoveTimer == 20)
|
||||||
{
|
{
|
||||||
sInPartyMenu = TRUE;
|
sInPartyMenu = TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -2400,24 +2400,24 @@ static bool8 ShowPartyMenu(void)
|
|||||||
|
|
||||||
static void SetUpHidePartyMenu(void)
|
static void SetUpHidePartyMenu(void)
|
||||||
{
|
{
|
||||||
gPSSData->field_2C0 = 0;
|
gPSSData->partyMenuUnused1 = 0;
|
||||||
gPSSData->field_2C2 = 22;
|
gPSSData->partyMenuY = 22;
|
||||||
gPSSData->field_2C5 = 0;
|
gPSSData->partyMenuMoveTimer = 0;
|
||||||
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
||||||
sub_80960C0();
|
sub_80960C0();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 HidePartyMenu(void)
|
static bool8 HidePartyMenu(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_2C5 != 20)
|
if (gPSSData->partyMenuMoveTimer != 20)
|
||||||
{
|
{
|
||||||
gPSSData->field_2C0++;
|
gPSSData->partyMenuUnused1++;
|
||||||
gPSSData->field_2C2--;
|
gPSSData->partyMenuY--;
|
||||||
AdjustBoxPartyPokemonDropdownPos(1, 3, -1);
|
AdjustBoxPartyPokemonDropdownPos(1, 3, -1);
|
||||||
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
|
CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1);
|
||||||
FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gPSSData->field_2C2, 12, 1);
|
FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gPSSData->partyMenuY, 12, 1);
|
||||||
sub_8090B98(-8);
|
sub_8090B98(-8);
|
||||||
if (++gPSSData->field_2C5 != 20)
|
if (++gPSSData->partyMenuMoveTimer != 20)
|
||||||
{
|
{
|
||||||
ScheduleBgCopyTilemapToVram(1);
|
ScheduleBgCopyTilemapToVram(1);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -2450,27 +2450,27 @@ static void sub_808F90C(bool8 arg0)
|
|||||||
|
|
||||||
static void sub_808F948(void)
|
static void sub_808F948(void)
|
||||||
{
|
{
|
||||||
gPSSData->unk_02C7 = TRUE;
|
gPSSData->closeBoxFlashing = TRUE;
|
||||||
gPSSData->unk_02C8 = 30;
|
gPSSData->closeBoxFlashTimer = 30;
|
||||||
gPSSData->unk_02C9 = TRUE;
|
gPSSData->closeBoxFlashState = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_808F974(void)
|
static void sub_808F974(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->unk_02C7)
|
if (gPSSData->closeBoxFlashing)
|
||||||
{
|
{
|
||||||
gPSSData->unk_02C7 = FALSE;
|
gPSSData->closeBoxFlashing = FALSE;
|
||||||
sub_808F90C(TRUE);
|
sub_808F90C(TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_808F99C(void)
|
static void sub_808F99C(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->unk_02C7 && ++gPSSData->unk_02C8 > 30)
|
if (gPSSData->closeBoxFlashing && ++gPSSData->closeBoxFlashTimer > 30)
|
||||||
{
|
{
|
||||||
gPSSData->unk_02C8 = 0;
|
gPSSData->closeBoxFlashTimer = 0;
|
||||||
gPSSData->unk_02C9 = (gPSSData->unk_02C9 == FALSE);
|
gPSSData->closeBoxFlashState = (gPSSData->closeBoxFlashState == FALSE);
|
||||||
sub_808F90C(gPSSData->unk_02C9);
|
sub_808F90C(gPSSData->closeBoxFlashState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2502,7 +2502,7 @@ static void sub_808FA30(u8 pos, bool8 isPartyMon)
|
|||||||
{
|
{
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
gPSSData->field_B0[index + j] = data[j];
|
gPSSData->partyMenuTilemapBuffer[index + j] = data[j];
|
||||||
}
|
}
|
||||||
data += 4;
|
data += 4;
|
||||||
index += 12;
|
index += 12;
|
||||||
@@ -2569,7 +2569,7 @@ static void PrintStorageActionText(u8 id)
|
|||||||
case PC_TEXT_FMT_MON_NAME_1:
|
case PC_TEXT_FMT_MON_NAME_1:
|
||||||
case PC_TEXT_FMT_MON_NAME_2:
|
case PC_TEXT_FMT_MON_NAME_2:
|
||||||
case PC_TEXT_FMT_MON_NAME_3:
|
case PC_TEXT_FMT_MON_NAME_3:
|
||||||
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->cursorMonNick);
|
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->displayMonName);
|
||||||
break;
|
break;
|
||||||
case PC_TEXT_FMT_MON_NAME_4:
|
case PC_TEXT_FMT_MON_NAME_4:
|
||||||
case PC_TEXT_FMT_MON_NAME_5:
|
case PC_TEXT_FMT_MON_NAME_5:
|
||||||
@@ -2580,7 +2580,7 @@ static void PrintStorageActionText(u8 id)
|
|||||||
if (IsActiveItemMoving())
|
if (IsActiveItemMoving())
|
||||||
txtPtr = StringCopy(gPSSData->itemName, GetMovingItemName());
|
txtPtr = StringCopy(gPSSData->itemName, GetMovingItemName());
|
||||||
else
|
else
|
||||||
txtPtr = StringCopy(gPSSData->itemName, gPSSData->cursorMonTexts[3]);
|
txtPtr = StringCopy(gPSSData->itemName, gPSSData->displayMonTexts[3]);
|
||||||
|
|
||||||
while (*(txtPtr - 1) == CHAR_SPACE)
|
while (*(txtPtr - 1) == CHAR_SPACE)
|
||||||
txtPtr--;
|
txtPtr--;
|
||||||
@@ -2680,7 +2680,7 @@ static void sub_808FE54(u8 action)
|
|||||||
{
|
{
|
||||||
u16 event;
|
u16 event;
|
||||||
u8 fromBox = sub_8094D34();
|
u8 fromBox = sub_8094D34();
|
||||||
u16 species = gPSSData->cursorMonSpecies;
|
u16 species = gPSSData->displayMonSpecies;
|
||||||
u16 species2;
|
u16 species2;
|
||||||
u8 toBox;
|
u8 toBox;
|
||||||
struct PssQuestLogBuffer * qlogBuffer;
|
struct PssQuestLogBuffer * qlogBuffer;
|
||||||
|
|||||||
+176
-176
@@ -259,16 +259,16 @@ void sub_808FFAC(void)
|
|||||||
|
|
||||||
LoadMonIconPalettes();
|
LoadMonIconPalettes();
|
||||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||||
gPSSData->field_B08[i] = 0;
|
gPSSData->numIconsPerSpecies[i] = 0;
|
||||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||||
gPSSData->field_B58[i] = 0;
|
gPSSData->iconSpeciesList[i] = 0;
|
||||||
for (i = 0; i < PARTY_SIZE; i++)
|
for (i = 0; i < PARTY_SIZE; i++)
|
||||||
gPSSData->partySprites[i] = NULL;
|
gPSSData->partySprites[i] = NULL;
|
||||||
for (i = 0; i < IN_BOX_COUNT; i++)
|
for (i = 0; i < IN_BOX_COUNT; i++)
|
||||||
gPSSData->boxMonsSprites[i] = NULL;
|
gPSSData->boxMonsSprites[i] = NULL;
|
||||||
|
|
||||||
gPSSData->movingMonSprite = NULL;
|
gPSSData->movingMonSprite = NULL;
|
||||||
gPSSData->field_78C = 0;
|
gPSSData->unkUnused1 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_8090058(void)
|
static u8 sub_8090058(void)
|
||||||
@@ -364,7 +364,7 @@ static void sub_80902E0(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_C66--;
|
gPSSData->iconScrollNumIncoming--;
|
||||||
sprite->x = sprite->data[3];
|
sprite->x = sprite->data[3];
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
@@ -448,7 +448,7 @@ static u8 sub_80903A4(u8 row, u16 times, s16 xDelta)
|
|||||||
gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
|
gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta;
|
||||||
gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
|
gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest;
|
||||||
gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0;
|
gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0;
|
||||||
if (GetBoxMonDataAt(gPSSData->field_C5C, boxPosition, MON_DATA_HELD_ITEM) == 0)
|
if (GetBoxMonDataAt(gPSSData->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == 0)
|
||||||
gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
|
gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@@ -463,56 +463,56 @@ static u8 sub_80903A4(u8 row, u16 times, s16 xDelta)
|
|||||||
|
|
||||||
static void sub_8090574(u8 boxId, s8 direction)
|
static void sub_8090574(u8 boxId, s8 direction)
|
||||||
{
|
{
|
||||||
gPSSData->field_C6A = 0;
|
gPSSData->iconScrollState = 0;
|
||||||
gPSSData->field_C6B = boxId;
|
gPSSData->iconScrollToBoxId = boxId;
|
||||||
gPSSData->field_C69 = direction;
|
gPSSData->iconScrollDirection = direction;
|
||||||
gPSSData->field_C60 = 32;
|
gPSSData->iconScrollDistance = 32;
|
||||||
gPSSData->field_C64 = -(6 * direction);
|
gPSSData->iconScrollSpeed = -(6 * direction);
|
||||||
gPSSData->field_C66 = 0;
|
gPSSData->iconScrollNumIncoming = 0;
|
||||||
SetBoxSpeciesAndPersonalities(boxId);
|
SetBoxSpeciesAndPersonalities(boxId);
|
||||||
if (direction > 0)
|
if (direction > 0)
|
||||||
gPSSData->field_C68 = 0;
|
gPSSData->iconScrollCurColumn = 0;
|
||||||
else
|
else
|
||||||
gPSSData->field_C68 = IN_BOX_ROWS - 1;
|
gPSSData->iconScrollCurColumn = IN_BOX_ROWS - 1;
|
||||||
|
|
||||||
gPSSData->field_C62 = (24 * gPSSData->field_C68) + 100;
|
gPSSData->iconScrollPos = (24 * gPSSData->iconScrollCurColumn) + 100;
|
||||||
sub_809029C(gPSSData->field_C64);
|
sub_809029C(gPSSData->iconScrollSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_809062C(void)
|
static bool8 sub_809062C(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_C60 != 0)
|
if (gPSSData->iconScrollDistance != 0)
|
||||||
gPSSData->field_C60--;
|
gPSSData->iconScrollDistance--;
|
||||||
|
|
||||||
switch (gPSSData->field_C6A)
|
switch (gPSSData->iconScrollState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
gPSSData->field_C62 += gPSSData->field_C64;
|
gPSSData->iconScrollPos += gPSSData->iconScrollSpeed;
|
||||||
if (gPSSData->field_C62 <= 64 || gPSSData->field_C62 >= 252)
|
if (gPSSData->iconScrollPos <= 64 || gPSSData->iconScrollPos >= 252)
|
||||||
{
|
{
|
||||||
DestroyAllIconsInRow(gPSSData->field_C68);
|
DestroyAllIconsInRow(gPSSData->iconScrollCurColumn);
|
||||||
gPSSData->field_C62 += gPSSData->field_C69 * 24;
|
gPSSData->iconScrollPos += gPSSData->iconScrollDirection * 24;
|
||||||
gPSSData->field_C6A++;
|
gPSSData->iconScrollState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
gPSSData->field_C62 += gPSSData->field_C64;
|
gPSSData->iconScrollPos += gPSSData->iconScrollSpeed;
|
||||||
gPSSData->field_C66 += sub_80903A4(gPSSData->field_C68, gPSSData->field_C60, gPSSData->field_C64);
|
gPSSData->iconScrollNumIncoming += sub_80903A4(gPSSData->iconScrollCurColumn, gPSSData->iconScrollDistance, gPSSData->iconScrollSpeed);
|
||||||
if ((gPSSData->field_C69 > 0 && gPSSData->field_C68 == IN_BOX_ROWS - 1)
|
if ((gPSSData->iconScrollDirection > 0 && gPSSData->iconScrollCurColumn == IN_BOX_ROWS - 1)
|
||||||
|| (gPSSData->field_C69 < 0 && gPSSData->field_C68 == 0))
|
|| (gPSSData->iconScrollDirection < 0 && gPSSData->iconScrollCurColumn == 0))
|
||||||
{
|
{
|
||||||
gPSSData->field_C6A++;
|
gPSSData->iconScrollState++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_C68 += gPSSData->field_C69;
|
gPSSData->iconScrollCurColumn += gPSSData->iconScrollDirection;
|
||||||
gPSSData->field_C6A = 0;
|
gPSSData->iconScrollState = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (gPSSData->field_C66 == 0)
|
if (gPSSData->iconScrollNumIncoming == 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_C60++;
|
gPSSData->iconScrollDistance++;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -539,7 +539,7 @@ static void SetBoxSpeciesAndPersonalities(u8 boxId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->field_C5C = boxId;
|
gPSSData->incomingBoxId = boxId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DestroyBoxMonIconAtPosition(u8 boxPosition)
|
void DestroyBoxMonIconAtPosition(u8 boxPosition)
|
||||||
@@ -605,7 +605,7 @@ void sub_80909F4(void)
|
|||||||
{
|
{
|
||||||
u16 i, count;
|
u16 i, count;
|
||||||
|
|
||||||
gPSSData->field_C5E = 0;
|
gPSSData->numPartyToCompact = 0;
|
||||||
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
for (i = 0, count = 0; i < PARTY_SIZE; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->partySprites[i] != NULL)
|
if (gPSSData->partySprites[i] != NULL)
|
||||||
@@ -614,7 +614,7 @@ void sub_80909F4(void)
|
|||||||
{
|
{
|
||||||
sub_8090A74(gPSSData->partySprites[i], count);
|
sub_8090A74(gPSSData->partySprites[i], count);
|
||||||
gPSSData->partySprites[i] = NULL;
|
gPSSData->partySprites[i] = NULL;
|
||||||
gPSSData->field_C5E++;
|
gPSSData->numPartyToCompact++;
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@@ -623,7 +623,7 @@ void sub_80909F4(void)
|
|||||||
|
|
||||||
u8 sub_8090A60(void)
|
u8 sub_8090A60(void)
|
||||||
{
|
{
|
||||||
return gPSSData->field_C5E;
|
return gPSSData->numPartyToCompact;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8090A74(struct Sprite *sprite, u16 partyId)
|
static void sub_8090A74(struct Sprite *sprite, u16 partyId)
|
||||||
@@ -668,7 +668,7 @@ static void sub_8090AE0(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
gPSSData->partySprites[sprite->data[1]] = sprite;
|
gPSSData->partySprites[sprite->data[1]] = sprite;
|
||||||
gPSSData->field_C5E--;
|
gPSSData->numPartyToCompact--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -774,44 +774,44 @@ void sub_8090D58(u8 boxId, u8 position)
|
|||||||
void sub_8090E08(u8 boxId, u8 position)
|
void sub_8090E08(u8 boxId, u8 position)
|
||||||
{
|
{
|
||||||
if (boxId == TOTAL_BOXES_COUNT) // party mon
|
if (boxId == TOTAL_BOXES_COUNT) // party mon
|
||||||
gPSSData->field_B00 = &gPSSData->partySprites[position];
|
gPSSData->shiftMonSpritePtr = &gPSSData->partySprites[position];
|
||||||
else
|
else
|
||||||
gPSSData->field_B00 = &gPSSData->boxMonsSprites[position];
|
gPSSData->shiftMonSpritePtr = &gPSSData->boxMonsSprites[position];
|
||||||
|
|
||||||
gPSSData->movingMonSprite->callback = SpriteCallbackDummy;
|
gPSSData->movingMonSprite->callback = SpriteCallbackDummy;
|
||||||
gPSSData->field_C5D = 0;
|
gPSSData->shiftTimer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8090E74(void)
|
bool8 sub_8090E74(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_C5D == 16)
|
if (gPSSData->shiftTimer == 16)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
gPSSData->field_C5D++;
|
gPSSData->shiftTimer++;
|
||||||
if (gPSSData->field_C5D & 1)
|
if (gPSSData->shiftTimer & 1)
|
||||||
{
|
{
|
||||||
(*gPSSData->field_B00)->y--;
|
(*gPSSData->shiftMonSpritePtr)->y--;
|
||||||
gPSSData->movingMonSprite->y++;
|
gPSSData->movingMonSprite->y++;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*gPSSData->field_B00)->x2 = gSineTable[gPSSData->field_C5D * 8] / 16;
|
(*gPSSData->shiftMonSpritePtr)->x2 = gSineTable[gPSSData->shiftTimer * 8] / 16;
|
||||||
gPSSData->movingMonSprite->x2 = -(gSineTable[gPSSData->field_C5D * 8] / 16);
|
gPSSData->movingMonSprite->x2 = -(gSineTable[gPSSData->shiftTimer * 8] / 16);
|
||||||
if (gPSSData->field_C5D == 8)
|
if (gPSSData->shiftTimer == 8)
|
||||||
{
|
{
|
||||||
gPSSData->movingMonSprite->oam.priority = (*gPSSData->field_B00)->oam.priority;
|
gPSSData->movingMonSprite->oam.priority = (*gPSSData->shiftMonSpritePtr)->oam.priority;
|
||||||
gPSSData->movingMonSprite->subpriority = (*gPSSData->field_B00)->subpriority;
|
gPSSData->movingMonSprite->subpriority = (*gPSSData->shiftMonSpritePtr)->subpriority;
|
||||||
(*gPSSData->field_B00)->oam.priority = sub_8090058();
|
(*gPSSData->shiftMonSpritePtr)->oam.priority = sub_8090058();
|
||||||
(*gPSSData->field_B00)->subpriority = 7;
|
(*gPSSData->shiftMonSpritePtr)->subpriority = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gPSSData->field_C5D == 16)
|
if (gPSSData->shiftTimer == 16)
|
||||||
{
|
{
|
||||||
struct Sprite *sprite = gPSSData->movingMonSprite;
|
struct Sprite *sprite = gPSSData->movingMonSprite;
|
||||||
gPSSData->movingMonSprite = (*gPSSData->field_B00);
|
gPSSData->movingMonSprite = (*gPSSData->shiftMonSpritePtr);
|
||||||
*gPSSData->field_B00 = sprite;
|
*gPSSData->shiftMonSpritePtr = sprite;
|
||||||
|
|
||||||
gPSSData->movingMonSprite->callback = sub_80911B0;
|
gPSSData->movingMonSprite->callback = sub_80911B0;
|
||||||
(*gPSSData->field_B00)->callback = SpriteCallbackDummy;
|
(*gPSSData->shiftMonSpritePtr)->callback = SpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -822,64 +822,64 @@ void sub_8090FC4(u8 mode, u8 position)
|
|||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case MODE_PARTY:
|
case MODE_PARTY:
|
||||||
gPSSData->field_B04 = &gPSSData->partySprites[position];
|
gPSSData->releaseMonSpritePtr = &gPSSData->partySprites[position];
|
||||||
break;
|
break;
|
||||||
case MODE_BOX:
|
case MODE_BOX:
|
||||||
gPSSData->field_B04 = &gPSSData->boxMonsSprites[position];
|
gPSSData->releaseMonSpritePtr = &gPSSData->boxMonsSprites[position];
|
||||||
break;
|
break;
|
||||||
case MODE_2:
|
case MODE_2:
|
||||||
gPSSData->field_B04 = &gPSSData->movingMonSprite;
|
gPSSData->releaseMonSpritePtr = &gPSSData->movingMonSprite;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*gPSSData->field_B04 != NULL)
|
if (*gPSSData->releaseMonSpritePtr != NULL)
|
||||||
{
|
{
|
||||||
InitSpriteAffineAnim(*gPSSData->field_B04);
|
InitSpriteAffineAnim(*gPSSData->releaseMonSpritePtr);
|
||||||
(*gPSSData->field_B04)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
(*gPSSData->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||||
(*gPSSData->field_B04)->affineAnims = gUnknown_83CEC38;
|
(*gPSSData->releaseMonSpritePtr)->affineAnims = gUnknown_83CEC38;
|
||||||
StartSpriteAffineAnim(*gPSSData->field_B04, 0);
|
StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8091084(void)
|
bool8 sub_8091084(void)
|
||||||
{
|
{
|
||||||
if (*gPSSData->field_B04 == NULL || (*gPSSData->field_B04)->invisible)
|
if (*gPSSData->releaseMonSpritePtr == NULL || (*gPSSData->releaseMonSpritePtr)->invisible)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if ((*gPSSData->field_B04)->affineAnimEnded)
|
if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded)
|
||||||
(*gPSSData->field_B04)->invisible = TRUE;
|
(*gPSSData->releaseMonSpritePtr)->invisible = TRUE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80910CC(void)
|
void sub_80910CC(void)
|
||||||
{
|
{
|
||||||
if (*gPSSData->field_B04 != NULL)
|
if (*gPSSData->releaseMonSpritePtr != NULL)
|
||||||
{
|
{
|
||||||
FreeOamMatrix((*gPSSData->field_B04)->oam.matrixNum);
|
FreeOamMatrix((*gPSSData->releaseMonSpritePtr)->oam.matrixNum);
|
||||||
DestroyBoxMonIcon(*gPSSData->field_B04);
|
DestroyBoxMonIcon(*gPSSData->releaseMonSpritePtr);
|
||||||
*gPSSData->field_B04 = NULL;
|
*gPSSData->releaseMonSpritePtr = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8091114(void)
|
void sub_8091114(void)
|
||||||
{
|
{
|
||||||
if (*gPSSData->field_B04 != NULL)
|
if (*gPSSData->releaseMonSpritePtr != NULL)
|
||||||
{
|
{
|
||||||
(*gPSSData->field_B04)->invisible = FALSE;
|
(*gPSSData->releaseMonSpritePtr)->invisible = FALSE;
|
||||||
StartSpriteAffineAnim(*gPSSData->field_B04, 1);
|
StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8091150(void)
|
bool8 sub_8091150(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_B04 == NULL)
|
if (gPSSData->releaseMonSpritePtr == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if ((*gPSSData->field_B04)->affineAnimEnded)
|
if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded)
|
||||||
gPSSData->field_B04 = NULL;
|
gPSSData->releaseMonSpritePtr = NULL;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -891,8 +891,8 @@ void SetMovingMonPriority(u8 priority)
|
|||||||
|
|
||||||
static void sub_80911B0(struct Sprite *sprite)
|
static void sub_80911B0(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->x = gPSSData->field_CB4->x;
|
sprite->x = gPSSData->cursorSprite->x;
|
||||||
sprite->y = gPSSData->field_CB4->y + gPSSData->field_CB4->y2 + 4;
|
sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u16 sub_80911D4(u16 species)
|
static u16 sub_80911D4(u16 species)
|
||||||
@@ -902,7 +902,7 @@ static u16 sub_80911D4(u16 species)
|
|||||||
// Find the currently-allocated slot
|
// Find the currently-allocated slot
|
||||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_B58[i] == species)
|
if (gPSSData->iconSpeciesList[i] == species)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -911,15 +911,15 @@ static u16 sub_80911D4(u16 species)
|
|||||||
// Find the first empty slot
|
// Find the first empty slot
|
||||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_B58[i] == SPECIES_NONE)
|
if (gPSSData->iconSpeciesList[i] == SPECIES_NONE)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == MAX_MON_ICONS)
|
if (i == MAX_MON_ICONS)
|
||||||
return 0xFFFF;
|
return 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->field_B58[i] = species;
|
gPSSData->iconSpeciesList[i] = species;
|
||||||
gPSSData->field_B08[i]++;
|
gPSSData->numIconsPerSpecies[i]++;
|
||||||
var = 16 * i;
|
var = 16 * i;
|
||||||
CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + var * 32, 0x200);
|
CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + var * 32, 0x200);
|
||||||
|
|
||||||
@@ -932,10 +932,10 @@ static void sub_8091290(u16 species)
|
|||||||
|
|
||||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_B58[i] == species)
|
if (gPSSData->iconSpeciesList[i] == species)
|
||||||
{
|
{
|
||||||
if (--gPSSData->field_B08[i] == 0)
|
if (--gPSSData->numIconsPerSpecies[i] == 0)
|
||||||
gPSSData->field_B58[i] = 0;
|
gPSSData->iconSpeciesList[i] = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -991,7 +991,7 @@ static void sub_8091420(u8 taskId)
|
|||||||
switch (task->data[0])
|
switch (task->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
gPSSData->field_2D2 = 0;
|
gPSSData->wallpaperOffset = 0;
|
||||||
gPSSData->bg2_X = 0;
|
gPSSData->bg2_X = 0;
|
||||||
task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, DMA3_32BIT);
|
task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, DMA3_32BIT);
|
||||||
break;
|
break;
|
||||||
@@ -1029,44 +1029,44 @@ void SetUpScrollToBox(u8 boxId)
|
|||||||
{
|
{
|
||||||
s8 direction = sub_80916F4(boxId);
|
s8 direction = sub_80916F4(boxId);
|
||||||
|
|
||||||
gPSSData->field_2CE = (direction > 0) ? 6 : -6;
|
gPSSData->scrollSpeed = (direction > 0) ? 6 : -6;
|
||||||
gPSSData->field_2D3 = (direction > 0) ? 1 : 2;
|
gPSSData->scrollUnused1 = (direction > 0) ? 1 : 2;
|
||||||
gPSSData->field_2D0 = 32;
|
gPSSData->scrollTimer = 32;
|
||||||
gPSSData->field_2D4 = boxId;
|
gPSSData->scrollToBoxIdUnused = boxId;
|
||||||
gPSSData->field_2D6 = (direction <= 0) ? 5 : 0;
|
gPSSData->scrollUnused2 = (direction <= 0) ? 5 : 0;
|
||||||
gPSSData->field_2D8 = direction;
|
gPSSData->scrollDirectionUnused = direction;
|
||||||
gPSSData->field_2DA = (direction > 0) ? 264 : 56;
|
gPSSData->scrollUnused3 = (direction > 0) ? 264 : 56;
|
||||||
gPSSData->field_2DC = (direction <= 0) ? 5 : 0;
|
gPSSData->scrollUnused4 = (direction <= 0) ? 5 : 0;
|
||||||
gPSSData->field_2DE = 0;
|
gPSSData->scrollUnused5 = 0;
|
||||||
gPSSData->field_2E0 = 2;
|
gPSSData->scrollUnused6 = 2;
|
||||||
gPSSData->field_A64 = boxId;
|
gPSSData->scrollToBoxId = boxId;
|
||||||
gPSSData->field_A65 = direction;
|
gPSSData->scrollDirection = direction;
|
||||||
gPSSData->field_A63 = 0;
|
gPSSData->scrollState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 ScrollToBox(void)
|
bool8 ScrollToBox(void)
|
||||||
{
|
{
|
||||||
bool8 var;
|
bool8 var;
|
||||||
|
|
||||||
switch (gPSSData->field_A63)
|
switch (gPSSData->scrollState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
LoadWallpaperGfx(gPSSData->field_A64, gPSSData->field_A65);
|
LoadWallpaperGfx(gPSSData->scrollToBoxId, gPSSData->scrollDirection);
|
||||||
gPSSData->field_A63++;
|
gPSSData->scrollState++;
|
||||||
case 1:
|
case 1:
|
||||||
if (!WaitForWallpaperGfxLoad())
|
if (!WaitForWallpaperGfxLoad())
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
sub_8090574(gPSSData->field_A64, gPSSData->field_A65);
|
sub_8090574(gPSSData->scrollToBoxId, gPSSData->scrollDirection);
|
||||||
sub_8091C48(gPSSData->field_A64, gPSSData->field_A65);
|
sub_8091C48(gPSSData->scrollToBoxId, gPSSData->scrollDirection);
|
||||||
sub_809200C(gPSSData->field_A65);
|
sub_809200C(gPSSData->scrollDirection);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
var = sub_809062C();
|
var = sub_809062C();
|
||||||
if (gPSSData->field_2D0 != 0)
|
if (gPSSData->scrollTimer != 0)
|
||||||
{
|
{
|
||||||
gPSSData->bg2_X += gPSSData->field_2CE;
|
gPSSData->bg2_X += gPSSData->scrollSpeed;
|
||||||
if (--gPSSData->field_2D0 != 0)
|
if (--gPSSData->scrollTimer != 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
sub_8091E34();
|
sub_8091E34();
|
||||||
sub_80920AC();
|
sub_80920AC();
|
||||||
@@ -1074,7 +1074,7 @@ bool8 ScrollToBox(void)
|
|||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->field_A63++;
|
gPSSData->scrollState++;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1105,7 +1105,7 @@ bool8 DoWallpaperGfxChange(void)
|
|||||||
switch (gPSSData->wallpaperChangeState)
|
switch (gPSSData->wallpaperChangeState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
BeginNormalPaletteFade(gPSSData->field_738, 1, 0, 16, RGB_WHITEALPHA);
|
BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA);
|
||||||
gPSSData->wallpaperChangeState++;
|
gPSSData->wallpaperChangeState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
@@ -1120,7 +1120,7 @@ bool8 DoWallpaperGfxChange(void)
|
|||||||
if (WaitForWallpaperGfxLoad() == TRUE)
|
if (WaitForWallpaperGfxLoad() == TRUE)
|
||||||
{
|
{
|
||||||
sub_8091EF0();
|
sub_8091EF0();
|
||||||
BeginNormalPaletteFade(gPSSData->field_738, 1, 16, 0, RGB_WHITEALPHA);
|
BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA);
|
||||||
gPSSData->wallpaperChangeState++;
|
gPSSData->wallpaperChangeState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1142,26 +1142,26 @@ static void LoadWallpaperGfx(u8 boxId, s8 direction)
|
|||||||
void *iconGfx;
|
void *iconGfx;
|
||||||
u32 size1, size2;
|
u32 size1, size2;
|
||||||
|
|
||||||
gPSSData->field_6F9 = 0;
|
gPSSData->wallpaperLoadState = 0;
|
||||||
gPSSData->field_6FA = boxId;
|
gPSSData->wallpaperLoadBoxId = boxId;
|
||||||
gPSSData->field_6FB = direction;
|
gPSSData->wallpaperLoadDir = direction;
|
||||||
if (gPSSData->field_6FB != 0)
|
if (gPSSData->wallpaperLoadDir != 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_2D2 = (gPSSData->field_2D2 == 0);
|
gPSSData->wallpaperOffset = (gPSSData->wallpaperOffset == 0);
|
||||||
sub_8091A24(gPSSData->field_4AC4);
|
sub_8091A24(gPSSData->field_4AC4);
|
||||||
}
|
}
|
||||||
|
|
||||||
wallpaperId = GetBoxWallpaper(gPSSData->field_6FA);
|
wallpaperId = GetBoxWallpaper(gPSSData->wallpaperLoadBoxId);
|
||||||
wallpaperGfx = &sWallpaperTable[wallpaperId];
|
wallpaperGfx = &sWallpaperTable[wallpaperId];
|
||||||
LZ77UnCompWram(wallpaperGfx->tileMap, gPSSData->field_792);
|
LZ77UnCompWram(wallpaperGfx->tileMap, gPSSData->wallpaperTilemap);
|
||||||
sub_8091984(gPSSData->field_4AC4, gPSSData->field_792, gPSSData->field_6FB, gPSSData->field_2D2);
|
sub_8091984(gPSSData->field_4AC4, gPSSData->wallpaperTilemap, gPSSData->wallpaperLoadDir, gPSSData->wallpaperOffset);
|
||||||
|
|
||||||
if (gPSSData->field_6FB != 0)
|
if (gPSSData->wallpaperLoadDir != 0)
|
||||||
LoadPalette(wallpaperGfx->palettes, (gPSSData->field_2D2 * 32) + 0x40, 0x40);
|
LoadPalette(wallpaperGfx->palettes, (gPSSData->wallpaperOffset * 32) + 0x40, 0x40);
|
||||||
else
|
else
|
||||||
CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(gPSSData->field_2D2 * 32) + 0x40], 0x40);
|
CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(gPSSData->wallpaperOffset * 32) + 0x40], 0x40);
|
||||||
|
|
||||||
DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * gPSSData->field_2D2, 0);
|
DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * gPSSData->wallpaperOffset, 0);
|
||||||
|
|
||||||
CopyBgTilemapBufferToVram(2);
|
CopyBgTilemapBufferToVram(2);
|
||||||
}
|
}
|
||||||
@@ -1221,24 +1221,24 @@ static void sub_8091A94(u8 boxId)
|
|||||||
|
|
||||||
struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3};
|
struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3};
|
||||||
struct SpritePalette palettes[] = {
|
struct SpritePalette palettes[] = {
|
||||||
{gPSSData->field_6FC, TAG_PAL_DAC9},
|
{gPSSData->boxTitlePal, TAG_PAL_DAC9},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
u16 wallpaperId = GetBoxWallpaper(boxId);
|
u16 wallpaperId = GetBoxWallpaper(boxId);
|
||||||
|
|
||||||
gPSSData->field_6FC[14] = gUnknown_83D29D0[wallpaperId][0];
|
gPSSData->boxTitlePal[14] = gUnknown_83D29D0[wallpaperId][0];
|
||||||
gPSSData->field_6FC[15] = gUnknown_83D29D0[wallpaperId][1];
|
gPSSData->boxTitlePal[15] = gUnknown_83D29D0[wallpaperId][1];
|
||||||
LoadSpritePalettes(palettes);
|
LoadSpritePalettes(palettes);
|
||||||
gPSSData->field_738 = 0x3f0;
|
gPSSData->wallpaperPalBits = 0x3f0;
|
||||||
|
|
||||||
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
||||||
gPSSData->field_71C = 0x10e + 16 * tagIndex;
|
gPSSData->boxTitlePalOffset = 0x10e + 16 * tagIndex;
|
||||||
gPSSData->field_738 |= 0x10000 << tagIndex;
|
gPSSData->wallpaperPalBits |= 0x10000 << tagIndex;
|
||||||
|
|
||||||
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
||||||
gPSSData->field_71E = 0x10e + 16 * tagIndex;
|
gPSSData->boxTitleAltPalOffset = 0x10e + 16 * tagIndex;
|
||||||
gPSSData->field_738 |= 0x10000 << tagIndex;
|
gPSSData->wallpaperPalBits |= 0x10000 << tagIndex;
|
||||||
|
|
||||||
StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
||||||
DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2);
|
DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2);
|
||||||
@@ -1248,10 +1248,10 @@ static void sub_8091A94(u8 boxId)
|
|||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24);
|
u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24);
|
||||||
gPSSData->field_720[i] = &gSprites[spriteId];
|
gPSSData->curBoxTitleSprites[i] = &gSprites[spriteId];
|
||||||
StartSpriteAnim(gPSSData->field_720[i], i);
|
StartSpriteAnim(gPSSData->curBoxTitleSprites[i], i);
|
||||||
}
|
}
|
||||||
gPSSData->field_6F8 = 0;
|
gPSSData->boxTitleCycleId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8091C48(u8 boxId, s8 direction)
|
static void sub_8091C48(u8 boxId, s8 direction)
|
||||||
@@ -1262,16 +1262,16 @@ static void sub_8091C48(u8 boxId, s8 direction)
|
|||||||
struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3};
|
struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3};
|
||||||
struct SpriteTemplate template = gUnknown_83D2B7C;
|
struct SpriteTemplate template = gUnknown_83D2B7C;
|
||||||
|
|
||||||
gPSSData->field_6F8 = (gPSSData->field_6F8 == 0);
|
gPSSData->boxTitleCycleId = (gPSSData->boxTitleCycleId == 0);
|
||||||
if (gPSSData->field_6F8 == 0)
|
if (gPSSData->boxTitleCycleId == 0)
|
||||||
{
|
{
|
||||||
spriteSheet.tag = TAG_TILE_3;
|
spriteSheet.tag = TAG_TILE_3;
|
||||||
r8 = gPSSData->field_71C;
|
r8 = gPSSData->boxTitlePalOffset;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spriteSheet.tag = TAG_TILE_4;
|
spriteSheet.tag = TAG_TILE_4;
|
||||||
r8 = gPSSData->field_71C;
|
r8 = gPSSData->boxTitlePalOffset;
|
||||||
template.tileTag = TAG_TILE_4;
|
template.tileTag = TAG_TILE_4;
|
||||||
template.paletteTag = TAG_PAL_DAC9;
|
template.paletteTag = TAG_PAL_DAC9;
|
||||||
}
|
}
|
||||||
@@ -1288,28 +1288,28 @@ static void sub_8091C48(u8 boxId, s8 direction)
|
|||||||
{
|
{
|
||||||
u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24);
|
u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24);
|
||||||
|
|
||||||
gPSSData->field_728[i] = &gSprites[spriteId];
|
gPSSData->nextBoxTitleSprites[i] = &gSprites[spriteId];
|
||||||
gPSSData->field_728[i]->data[0] = (-direction) * 6;
|
gPSSData->nextBoxTitleSprites[i]->data[0] = (-direction) * 6;
|
||||||
gPSSData->field_728[i]->data[1] = i * 32 + x;
|
gPSSData->nextBoxTitleSprites[i]->data[1] = i * 32 + x;
|
||||||
gPSSData->field_728[i]->data[2] = 0;
|
gPSSData->nextBoxTitleSprites[i]->data[2] = 0;
|
||||||
gPSSData->field_728[i]->callback = sub_8091E84;
|
gPSSData->nextBoxTitleSprites[i]->callback = sub_8091E84;
|
||||||
StartSpriteAnim(gPSSData->field_728[i], i);
|
StartSpriteAnim(gPSSData->nextBoxTitleSprites[i], i);
|
||||||
|
|
||||||
gPSSData->field_720[i]->data[0] = (-direction) * 6;
|
gPSSData->curBoxTitleSprites[i]->data[0] = (-direction) * 6;
|
||||||
gPSSData->field_720[i]->data[1] = 1;
|
gPSSData->curBoxTitleSprites[i]->data[1] = 1;
|
||||||
gPSSData->field_720[i]->callback = sub_8091EB8;
|
gPSSData->curBoxTitleSprites[i]->callback = sub_8091EB8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8091E34(void)
|
static void sub_8091E34(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->field_6F8 == 0)
|
if (gPSSData->boxTitleCycleId == 0)
|
||||||
FreeSpriteTilesByTag(TAG_TILE_4);
|
FreeSpriteTilesByTag(TAG_TILE_4);
|
||||||
else
|
else
|
||||||
FreeSpriteTilesByTag(TAG_TILE_3);
|
FreeSpriteTilesByTag(TAG_TILE_3);
|
||||||
|
|
||||||
gPSSData->field_720[0] = gPSSData->field_728[0];
|
gPSSData->curBoxTitleSprites[0] = gPSSData->nextBoxTitleSprites[0];
|
||||||
gPSSData->field_720[1] = gPSSData->field_728[1];
|
gPSSData->curBoxTitleSprites[1] = gPSSData->nextBoxTitleSprites[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8091E84(struct Sprite *sprite)
|
static void sub_8091E84(struct Sprite *sprite)
|
||||||
@@ -1339,10 +1339,10 @@ static void sub_8091EF0(void)
|
|||||||
{
|
{
|
||||||
u8 boxId = StorageGetCurrentBox();
|
u8 boxId = StorageGetCurrentBox();
|
||||||
u8 wallpaperId = GetBoxWallpaper(boxId);
|
u8 wallpaperId = GetBoxWallpaper(boxId);
|
||||||
if (gPSSData->field_6F8 == 0)
|
if (gPSSData->boxTitleCycleId == 0)
|
||||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->field_71C, 4);
|
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitlePalOffset, 4);
|
||||||
else
|
else
|
||||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->field_71E, 4);
|
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitleAltPalOffset, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static s16 sub_8091F60(const u8 *string)
|
static s16 sub_8091F60(const u8 *string)
|
||||||
@@ -1363,7 +1363,7 @@ static void sub_8091F80(void)
|
|||||||
struct Sprite *sprite = &gSprites[spriteId];
|
struct Sprite *sprite = &gSprites[spriteId];
|
||||||
StartSpriteAnim(sprite, i);
|
StartSpriteAnim(sprite, i);
|
||||||
sprite->data[3] = (i == 0) ? -1 : 1;
|
sprite->data[3] = (i == 0) ? -1 : 1;
|
||||||
gPSSData->field_730[i] = sprite;
|
gPSSData->arrowSprites[i] = sprite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (IsCursorOnBox())
|
if (IsCursorOnBox())
|
||||||
@@ -1376,25 +1376,25 @@ static void sub_809200C(s8 direction)
|
|||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gPSSData->field_730[i]->x2 = 0;
|
gPSSData->arrowSprites[i]->x2 = 0;
|
||||||
gPSSData->field_730[i]->data[0] = 2;
|
gPSSData->arrowSprites[i]->data[0] = 2;
|
||||||
}
|
}
|
||||||
if (direction < 0)
|
if (direction < 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_730[0]->data[1] = 29;
|
gPSSData->arrowSprites[0]->data[1] = 29;
|
||||||
gPSSData->field_730[1]->data[1] = 5;
|
gPSSData->arrowSprites[1]->data[1] = 5;
|
||||||
gPSSData->field_730[0]->data[2] = 0x48;
|
gPSSData->arrowSprites[0]->data[2] = 0x48;
|
||||||
gPSSData->field_730[1]->data[2] = 0x48;
|
gPSSData->arrowSprites[1]->data[2] = 0x48;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_730[0]->data[1] = 5;
|
gPSSData->arrowSprites[0]->data[1] = 5;
|
||||||
gPSSData->field_730[1]->data[1] = 29;
|
gPSSData->arrowSprites[1]->data[1] = 29;
|
||||||
gPSSData->field_730[0]->data[2] = 0xF8;
|
gPSSData->arrowSprites[0]->data[2] = 0xF8;
|
||||||
gPSSData->field_730[1]->data[2] = 0xF8;
|
gPSSData->arrowSprites[1]->data[2] = 0xF8;
|
||||||
}
|
}
|
||||||
gPSSData->field_730[0]->data[7] = 0;
|
gPSSData->arrowSprites[0]->data[7] = 0;
|
||||||
gPSSData->field_730[1]->data[7] = 1;
|
gPSSData->arrowSprites[1]->data[7] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80920AC(void)
|
static void sub_80920AC(void)
|
||||||
@@ -1403,9 +1403,9 @@ static void sub_80920AC(void)
|
|||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gPSSData->field_730[i]->x = 0x88 * i + 0x5c;
|
gPSSData->arrowSprites[i]->x = 0x88 * i + 0x5c;
|
||||||
gPSSData->field_730[i]->x2 = 0;
|
gPSSData->arrowSprites[i]->x2 = 0;
|
||||||
gPSSData->field_730[i]->invisible = FALSE;
|
gPSSData->arrowSprites[i]->invisible = FALSE;
|
||||||
}
|
}
|
||||||
sub_80920FC(TRUE);
|
sub_80920FC(TRUE);
|
||||||
}
|
}
|
||||||
@@ -1418,17 +1418,17 @@ void sub_80920FC(bool8 a0)
|
|||||||
{
|
{
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gPSSData->field_730[i]->data[0] = 1;
|
gPSSData->arrowSprites[i]->data[0] = 1;
|
||||||
gPSSData->field_730[i]->data[1] = 0;
|
gPSSData->arrowSprites[i]->data[1] = 0;
|
||||||
gPSSData->field_730[i]->data[2] = 0;
|
gPSSData->arrowSprites[i]->data[2] = 0;
|
||||||
gPSSData->field_730[i]->data[4] = 0;
|
gPSSData->arrowSprites[i]->data[4] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
gPSSData->field_730[i]->data[0] = 0;
|
gPSSData->arrowSprites[i]->data[0] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1456,7 +1456,7 @@ static void sub_8092164(struct Sprite *sprite)
|
|||||||
sprite->data[0] = 3;
|
sprite->data[0] = 3;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sprite->x -= gPSSData->field_2CE;
|
sprite->x -= gPSSData->scrollSpeed;
|
||||||
if (sprite->x < 73 || sprite->x > 247)
|
if (sprite->x < 73 || sprite->x > 247)
|
||||||
sprite->invisible = TRUE;
|
sprite->invisible = TRUE;
|
||||||
if (--sprite->data[1] == 0)
|
if (--sprite->data[1] == 0)
|
||||||
@@ -1467,7 +1467,7 @@ static void sub_8092164(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
sprite->x -= gPSSData->field_2CE;
|
sprite->x -= gPSSData->scrollSpeed;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+182
-182
@@ -63,7 +63,7 @@ void sub_80922C0(void)
|
|||||||
sCanOnlyMove = FALSE;
|
sCanOnlyMove = FALSE;
|
||||||
sub_8092B50();
|
sub_8092B50();
|
||||||
sub_8094AD8();
|
sub_8094AD8();
|
||||||
gPSSData->field_CD6 = 1;
|
gPSSData->cursorPrevHorizPos = 1;
|
||||||
gPSSData->inBoxMovingMode = 0;
|
gPSSData->inBoxMovingMode = 0;
|
||||||
sub_8093A10();
|
sub_8093A10();
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,7 @@ void sub_8092340(void)
|
|||||||
{
|
{
|
||||||
sub_8094AD8();
|
sub_8094AD8();
|
||||||
sub_8093AAC();
|
sub_8093AAC();
|
||||||
gPSSData->field_CD6 = 1;
|
gPSSData->cursorPrevHorizPos = 1;
|
||||||
gPSSData->inBoxMovingMode = 0;
|
gPSSData->inBoxMovingMode = 0;
|
||||||
if (sIsMonBeingMoved)
|
if (sIsMonBeingMoved)
|
||||||
{
|
{
|
||||||
@@ -138,46 +138,46 @@ bool8 sub_80924A8(void)
|
|||||||
{
|
{
|
||||||
s16 tmp;
|
s16 tmp;
|
||||||
|
|
||||||
if (gPSSData->field_CD0 == 0)
|
if (gPSSData->cursorMoveSteps == 0)
|
||||||
{
|
{
|
||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
return sub_809610C();
|
return sub_809610C();
|
||||||
}
|
}
|
||||||
else if (--gPSSData->field_CD0 != 0)
|
else if (--gPSSData->cursorMoveSteps != 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_CBC += gPSSData->field_CC4;
|
gPSSData->cursorNewX += gPSSData->cursorSpeedX;
|
||||||
gPSSData->field_CC0 += gPSSData->field_CC8;
|
gPSSData->cursorNewY += gPSSData->cursorSpeedY;
|
||||||
gPSSData->field_CB4->x = gPSSData->field_CBC >> 8;
|
gPSSData->cursorSprite->x = gPSSData->cursorNewX >> 8;
|
||||||
gPSSData->field_CB4->y = gPSSData->field_CC0 >> 8;
|
gPSSData->cursorSprite->y = gPSSData->cursorNewY >> 8;
|
||||||
if (gPSSData->field_CB4->x > 0x100)
|
if (gPSSData->cursorSprite->x > 0x100)
|
||||||
{
|
{
|
||||||
tmp = gPSSData->field_CB4->x - 0x100;
|
tmp = gPSSData->cursorSprite->x - 0x100;
|
||||||
gPSSData->field_CB4->x = tmp + 0x40;
|
gPSSData->cursorSprite->x = tmp + 0x40;
|
||||||
}
|
}
|
||||||
if (gPSSData->field_CB4->x < 0x40)
|
if (gPSSData->cursorSprite->x < 0x40)
|
||||||
{
|
{
|
||||||
tmp = 0x40 - gPSSData->field_CB4->x;
|
tmp = 0x40 - gPSSData->cursorSprite->x;
|
||||||
gPSSData->field_CB4->x = 0x100 - tmp;
|
gPSSData->cursorSprite->x = 0x100 - tmp;
|
||||||
}
|
}
|
||||||
if (gPSSData->field_CB4->y > 0xb0)
|
if (gPSSData->cursorSprite->y > 0xb0)
|
||||||
{
|
{
|
||||||
tmp = gPSSData->field_CB4->y - 0xb0;
|
tmp = gPSSData->cursorSprite->y - 0xb0;
|
||||||
gPSSData->field_CB4->y = tmp - 0x10;
|
gPSSData->cursorSprite->y = tmp - 0x10;
|
||||||
}
|
}
|
||||||
if (gPSSData->field_CB4->y < -0x10)
|
if (gPSSData->cursorSprite->y < -0x10)
|
||||||
{
|
{
|
||||||
tmp = -0x10 - gPSSData->field_CB4->y;
|
tmp = -0x10 - gPSSData->cursorSprite->y;
|
||||||
gPSSData->field_CB4->y = 0xb0 - tmp;
|
gPSSData->cursorSprite->y = 0xb0 - tmp;
|
||||||
}
|
}
|
||||||
if (gPSSData->field_CD7 && --gPSSData->field_CD7 == 0)
|
if (gPSSData->cursorFlipTimer && --gPSSData->cursorFlipTimer == 0)
|
||||||
gPSSData->field_CB4->vFlip = (gPSSData->field_CB4->vFlip == FALSE);
|
gPSSData->cursorSprite->vFlip = (gPSSData->cursorSprite->vFlip == FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4->x = gPSSData->field_CCC;
|
gPSSData->cursorSprite->x = gPSSData->cursorTargetX;
|
||||||
gPSSData->field_CB4->y = gPSSData->field_CCE;
|
gPSSData->cursorSprite->y = gPSSData->cursorTargetY;
|
||||||
sub_80929B0();
|
sub_80929B0();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,56 +189,56 @@ static void sub_8092604(u8 newCurosrArea, u8 newCursorPosition)
|
|||||||
u16 x, y;
|
u16 x, y;
|
||||||
|
|
||||||
sub_8092398(newCurosrArea, newCursorPosition, &x, &y);
|
sub_8092398(newCurosrArea, newCursorPosition, &x, &y);
|
||||||
gPSSData->field_CD4 = newCurosrArea;
|
gPSSData->newCursorArea = newCurosrArea;
|
||||||
gPSSData->field_CD5 = newCursorPosition;
|
gPSSData->newCursorPosition = newCursorPosition;
|
||||||
gPSSData->field_CCC = x;
|
gPSSData->cursorTargetX = x;
|
||||||
gPSSData->field_CCE = y;
|
gPSSData->cursorTargetY = y;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8092660(void)
|
static void sub_8092660(void)
|
||||||
{
|
{
|
||||||
int r7, r0;
|
int r7, r0;
|
||||||
|
|
||||||
if (gPSSData->field_CD2 != 0 || gPSSData->field_CD3 != 0)
|
if (gPSSData->cursorVerticalWrap != 0 || gPSSData->cursorHorizontalWrap != 0)
|
||||||
gPSSData->field_CD0 = 12;
|
gPSSData->cursorMoveSteps = 12;
|
||||||
else
|
else
|
||||||
gPSSData->field_CD0 = 6;
|
gPSSData->cursorMoveSteps = 6;
|
||||||
|
|
||||||
if (gPSSData->field_CD7)
|
if (gPSSData->cursorFlipTimer)
|
||||||
gPSSData->field_CD7 = gPSSData->field_CD0 >> 1;
|
gPSSData->cursorFlipTimer = gPSSData->cursorMoveSteps >> 1;
|
||||||
|
|
||||||
switch (gPSSData->field_CD2)
|
switch (gPSSData->cursorVerticalWrap)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
r7 = gPSSData->field_CCE - gPSSData->field_CB4->y;
|
r7 = gPSSData->cursorTargetY - gPSSData->cursorSprite->y;
|
||||||
break;
|
break;
|
||||||
case -1:
|
case -1:
|
||||||
r7 = gPSSData->field_CCE - 0xc0 - gPSSData->field_CB4->y;
|
r7 = gPSSData->cursorTargetY - 0xc0 - gPSSData->cursorSprite->y;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
r7 = gPSSData->field_CCE + 0xc0 - gPSSData->field_CB4->y;
|
r7 = gPSSData->cursorTargetY + 0xc0 - gPSSData->cursorSprite->y;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (gPSSData->field_CD3)
|
switch (gPSSData->cursorHorizontalWrap)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
r0 = gPSSData->field_CCC - gPSSData->field_CB4->x;
|
r0 = gPSSData->cursorTargetX - gPSSData->cursorSprite->x;
|
||||||
break;
|
break;
|
||||||
case -1:
|
case -1:
|
||||||
r0 = gPSSData->field_CCC - 0xc0 - gPSSData->field_CB4->x;
|
r0 = gPSSData->cursorTargetX - 0xc0 - gPSSData->cursorSprite->x;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
r0 = gPSSData->field_CCC + 0xc0 - gPSSData->field_CB4->x;
|
r0 = gPSSData->cursorTargetX + 0xc0 - gPSSData->cursorSprite->x;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
r7 <<= 8;
|
r7 <<= 8;
|
||||||
r0 <<= 8;
|
r0 <<= 8;
|
||||||
gPSSData->field_CC4 = r0 / gPSSData->field_CD0;
|
gPSSData->cursorSpeedX = r0 / gPSSData->cursorMoveSteps;
|
||||||
gPSSData->field_CC8 = r7 / gPSSData->field_CD0;
|
gPSSData->cursorSpeedY = r7 / gPSSData->cursorMoveSteps;
|
||||||
gPSSData->field_CBC = gPSSData->field_CB4->x << 8;
|
gPSSData->cursorNewX = gPSSData->cursorSprite->x << 8;
|
||||||
gPSSData->field_CC0 = gPSSData->field_CB4->y << 8;
|
gPSSData->cursorNewY = gPSSData->cursorSprite->y << 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
||||||
@@ -248,12 +248,12 @@ static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
|||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
{
|
{
|
||||||
if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
|
if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 1);
|
StartSpriteAnim(gPSSData->cursorSprite, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!IsActiveItemMoving())
|
if (!IsActiveItemMoving())
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 1);
|
StartSpriteAnim(gPSSData->cursorSprite, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
||||||
@@ -271,8 +271,8 @@ static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
|||||||
|
|
||||||
if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY)
|
if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY)
|
||||||
{
|
{
|
||||||
gPSSData->field_CD6 = newCurosrArea;
|
gPSSData->cursorPrevHorizPos = newCurosrArea;
|
||||||
gPSSData->field_CB8->invisible = TRUE;
|
gPSSData->cursorShadowSprite->invisible = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (newCurosrArea)
|
switch (newCurosrArea)
|
||||||
@@ -280,19 +280,19 @@ static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
|||||||
case CURSOR_AREA_IN_PARTY:
|
case CURSOR_AREA_IN_PARTY:
|
||||||
case CURSOR_AREA_BOX:
|
case CURSOR_AREA_BOX:
|
||||||
case CURSOR_AREA_BUTTONS:
|
case CURSOR_AREA_BUTTONS:
|
||||||
gPSSData->field_CB4->oam.priority = 1;
|
gPSSData->cursorSprite->oam.priority = 1;
|
||||||
gPSSData->field_CB8->invisible = TRUE;
|
gPSSData->cursorShadowSprite->invisible = TRUE;
|
||||||
gPSSData->field_CB8->oam.priority = 1;
|
gPSSData->cursorShadowSprite->oam.priority = 1;
|
||||||
break;
|
break;
|
||||||
case CURSOR_AREA_IN_BOX:
|
case CURSOR_AREA_IN_BOX:
|
||||||
if (gPSSData->inBoxMovingMode != 0)
|
if (gPSSData->inBoxMovingMode != 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4->oam.priority = 0;
|
gPSSData->cursorSprite->oam.priority = 0;
|
||||||
gPSSData->field_CB8->invisible = TRUE;
|
gPSSData->cursorShadowSprite->invisible = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4->oam.priority = 2;
|
gPSSData->cursorSprite->oam.priority = 2;
|
||||||
if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved)
|
if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved)
|
||||||
SetMovingMonPriority(2);
|
SetMovingMonPriority(2);
|
||||||
}
|
}
|
||||||
@@ -302,17 +302,17 @@ static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition)
|
|||||||
|
|
||||||
static void sub_80929B0(void)
|
static void sub_80929B0(void)
|
||||||
{
|
{
|
||||||
sBoxCursorArea = gPSSData->field_CD4;
|
sBoxCursorArea = gPSSData->newCursorArea;
|
||||||
sBoxCursorPosition = gPSSData->field_CD5;
|
sBoxCursorPosition = gPSSData->newCursorPosition;
|
||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
{
|
{
|
||||||
if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
|
if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved)
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 1);
|
StartSpriteAnim(gPSSData->cursorSprite, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!IsActiveItemMoving())
|
if (!IsActiveItemMoving())
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 1);
|
StartSpriteAnim(gPSSData->cursorSprite, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub_8093A10();
|
sub_8093A10();
|
||||||
@@ -325,16 +325,16 @@ static void sub_80929B0(void)
|
|||||||
sub_80920FC(TRUE);
|
sub_80920FC(TRUE);
|
||||||
break;
|
break;
|
||||||
case CURSOR_AREA_IN_PARTY:
|
case CURSOR_AREA_IN_PARTY:
|
||||||
gPSSData->field_CB8->subpriority = 13;
|
gPSSData->cursorShadowSprite->subpriority = 13;
|
||||||
SetMovingMonPriority(1);
|
SetMovingMonPriority(1);
|
||||||
break;
|
break;
|
||||||
case CURSOR_AREA_IN_BOX:
|
case CURSOR_AREA_IN_BOX:
|
||||||
if (gPSSData->inBoxMovingMode == 0)
|
if (gPSSData->inBoxMovingMode == 0)
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4->oam.priority = 1;
|
gPSSData->cursorSprite->oam.priority = 1;
|
||||||
gPSSData->field_CB8->oam.priority = 2;
|
gPSSData->cursorShadowSprite->oam.priority = 2;
|
||||||
gPSSData->field_CB8->subpriority = 21;
|
gPSSData->cursorShadowSprite->subpriority = 21;
|
||||||
gPSSData->field_CB8->invisible = FALSE;
|
gPSSData->cursorShadowSprite->invisible = FALSE;
|
||||||
SetMovingMonPriority(2);
|
SetMovingMonPriority(2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -355,8 +355,8 @@ void sub_8092AE4(void)
|
|||||||
if (partyCount >= PARTY_SIZE)
|
if (partyCount >= PARTY_SIZE)
|
||||||
partyCount = PARTY_SIZE - 1;
|
partyCount = PARTY_SIZE - 1;
|
||||||
}
|
}
|
||||||
if (gPSSData->field_CB4->vFlip)
|
if (gPSSData->cursorSprite->vFlip)
|
||||||
gPSSData->field_CD7 = 1;
|
gPSSData->cursorFlipTimer = 1;
|
||||||
sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount);
|
sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -414,13 +414,13 @@ static bool8 MonPlaceChange_Move(void)
|
|||||||
case 0:
|
case 0:
|
||||||
if (sIsMonBeingMoved)
|
if (sIsMonBeingMoved)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 2);
|
StartSpriteAnim(gPSSData->cursorSprite, 2);
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!sub_8092E20())
|
if (!sub_8092E20())
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 3);
|
StartSpriteAnim(gPSSData->cursorSprite, 3);
|
||||||
MoveMon();
|
MoveMon();
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
}
|
}
|
||||||
@@ -443,7 +443,7 @@ static bool8 MonPlaceChange_Place(void)
|
|||||||
case 0:
|
case 0:
|
||||||
if (!sub_8092E20())
|
if (!sub_8092E20())
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 2);
|
StartSpriteAnim(gPSSData->cursorSprite, 2);
|
||||||
PlaceMon();
|
PlaceMon();
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
}
|
}
|
||||||
@@ -451,7 +451,7 @@ static bool8 MonPlaceChange_Place(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!sub_8092E54())
|
if (!sub_8092E54())
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 0);
|
StartSpriteAnim(gPSSData->cursorSprite, 0);
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -470,23 +470,23 @@ static bool8 MonPlaceChange_Shift(void)
|
|||||||
switch (sBoxCursorArea)
|
switch (sBoxCursorArea)
|
||||||
{
|
{
|
||||||
case CURSOR_AREA_IN_PARTY:
|
case CURSOR_AREA_IN_PARTY:
|
||||||
gPSSData->field_D91 = TOTAL_BOXES_COUNT;
|
gPSSData->shiftBoxId = TOTAL_BOXES_COUNT;
|
||||||
break;
|
break;
|
||||||
case CURSOR_AREA_IN_BOX:
|
case CURSOR_AREA_IN_BOX:
|
||||||
gPSSData->field_D91 = StorageGetCurrentBox();
|
gPSSData->shiftBoxId = StorageGetCurrentBox();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 2);
|
StartSpriteAnim(gPSSData->cursorSprite, 2);
|
||||||
sub_8090E08(gPSSData->field_D91, sBoxCursorPosition);
|
sub_8090E08(gPSSData->shiftBoxId, sBoxCursorPosition);
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (!sub_8090E74())
|
if (!sub_8090E74())
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 3);
|
StartSpriteAnim(gPSSData->cursorSprite, 3);
|
||||||
SetShiftedMonData(gPSSData->field_D91, sBoxCursorPosition);
|
SetShiftedMonData(gPSSData->shiftBoxId, sBoxCursorPosition);
|
||||||
gPSSData->monPlaceChangeState++;
|
gPSSData->monPlaceChangeState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -509,13 +509,13 @@ static bool8 sub_8092E10(void)
|
|||||||
|
|
||||||
static bool8 sub_8092E20(void)
|
static bool8 sub_8092E20(void)
|
||||||
{
|
{
|
||||||
switch (gPSSData->field_CB4->y2)
|
switch (gPSSData->cursorSprite->y2)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
gPSSData->field_CB4->y2++;
|
gPSSData->cursorSprite->y2++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
gPSSData->field_CB4->y2++;
|
gPSSData->cursorSprite->y2++;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -526,12 +526,12 @@ static bool8 sub_8092E20(void)
|
|||||||
|
|
||||||
static bool8 sub_8092E54(void)
|
static bool8 sub_8092E54(void)
|
||||||
{
|
{
|
||||||
switch (gPSSData->field_CB4->y2)
|
switch (gPSSData->cursorSprite->y2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
default:
|
default:
|
||||||
gPSSData->field_CB4->y2--;
|
gPSSData->cursorSprite->y2--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -656,13 +656,13 @@ bool8 TryStorePartyMonInBox(u8 boxId)
|
|||||||
if (boxId == StorageGetCurrentBox())
|
if (boxId == StorageGetCurrentBox())
|
||||||
sub_80901EC(boxPosition);
|
sub_80901EC(boxPosition);
|
||||||
|
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 1);
|
StartSpriteAnim(gPSSData->cursorSprite, 1);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8093174(void)
|
void sub_8093174(void)
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 0);
|
StartSpriteAnim(gPSSData->cursorSprite, 0);
|
||||||
sub_8093A10();
|
sub_8093A10();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -678,14 +678,14 @@ void sub_8093194(void)
|
|||||||
mode = MODE_BOX;
|
mode = MODE_BOX;
|
||||||
|
|
||||||
sub_8090FC4(mode, sBoxCursorPosition);
|
sub_8090FC4(mode, sBoxCursorPosition);
|
||||||
StringCopy(gPSSData->field_21E0, gPSSData->cursorMonNick);
|
StringCopy(gPSSData->field_21E0, gPSSData->displayMonName);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80931EC(void)
|
bool8 sub_80931EC(void)
|
||||||
{
|
{
|
||||||
if (!sub_8091084())
|
if (!sub_8091084())
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 0);
|
StartSpriteAnim(gPSSData->cursorSprite, 0);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -718,7 +718,7 @@ void ReleaseMon(void)
|
|||||||
void sub_8093264(void)
|
void sub_8093264(void)
|
||||||
{
|
{
|
||||||
if (sIsMonBeingMoved)
|
if (sIsMonBeingMoved)
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 3);
|
StartSpriteAnim(gPSSData->cursorSprite, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitCanReleaseMonVars(void)
|
void InitCanReleaseMonVars(void)
|
||||||
@@ -914,7 +914,7 @@ s16 CompactPartySlots(void)
|
|||||||
|
|
||||||
void SetMonMarkings(u8 markings)
|
void SetMonMarkings(u8 markings)
|
||||||
{
|
{
|
||||||
gPSSData->cursorMonMarkings = markings;
|
gPSSData->displayMonMarkings = markings;
|
||||||
if (sIsMonBeingMoved)
|
if (sIsMonBeingMoved)
|
||||||
{
|
{
|
||||||
SetMonData(&gPSSData->movingMon, MON_DATA_MARKINGS, &markings);
|
SetMonData(&gPSSData->movingMon, MON_DATA_MARKINGS, &markings);
|
||||||
@@ -942,7 +942,7 @@ bool8 CanShiftMon(void)
|
|||||||
{
|
{
|
||||||
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0)
|
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0)
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonIsEgg || GetMonData(&gPSSData->movingMon, MON_DATA_HP) == 0)
|
if (gPSSData->displayMonIsEgg || GetMonData(&gPSSData->movingMon, MON_DATA_HP) == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -1009,94 +1009,94 @@ static void SetCursorMonData(void *pokemon, u8 mode)
|
|||||||
u16 gender;
|
u16 gender;
|
||||||
bool8 sanityIsBagEgg;
|
bool8 sanityIsBagEgg;
|
||||||
|
|
||||||
gPSSData->cursorMonItem = 0;
|
gPSSData->displayMonItemId = 0;
|
||||||
gender = MON_MALE;
|
gender = MON_MALE;
|
||||||
sanityIsBagEgg = FALSE;
|
sanityIsBagEgg = FALSE;
|
||||||
if (mode == MODE_PARTY)
|
if (mode == MODE_PARTY)
|
||||||
{
|
{
|
||||||
struct Pokemon *mon = (struct Pokemon *)pokemon;
|
struct Pokemon *mon = (struct Pokemon *)pokemon;
|
||||||
|
|
||||||
gPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
|
gPSSData->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
|
||||||
if (gPSSData->cursorMonSpecies != SPECIES_NONE)
|
if (gPSSData->displayMonSpecies != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
|
sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
|
||||||
if (sanityIsBagEgg)
|
if (sanityIsBagEgg)
|
||||||
gPSSData->cursorMonIsEgg = TRUE;
|
gPSSData->displayMonIsEgg = TRUE;
|
||||||
else
|
else
|
||||||
gPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
|
gPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
|
||||||
|
|
||||||
GetMonData(mon, MON_DATA_NICKNAME, gPSSData->cursorMonNick);
|
GetMonData(mon, MON_DATA_NICKNAME, gPSSData->displayMonName);
|
||||||
StringGetEnd10(gPSSData->cursorMonNick);
|
StringGetEnd10(gPSSData->displayMonName);
|
||||||
gPSSData->cursorMonLevel = GetMonData(mon, MON_DATA_LEVEL);
|
gPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL);
|
||||||
gPSSData->cursorMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
|
gPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS);
|
||||||
gPSSData->cursorMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
|
gPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||||
gPSSData->cursorMonPalette = GetMonFrontSpritePal(mon);
|
gPSSData->displayMonPalette = GetMonFrontSpritePal(mon);
|
||||||
gender = GetMonGender(mon);
|
gender = GetMonGender(mon);
|
||||||
gPSSData->cursorMonItem = GetMonData(mon, MON_DATA_HELD_ITEM);
|
gPSSData->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mode == MODE_BOX)
|
else if (mode == MODE_BOX)
|
||||||
{
|
{
|
||||||
struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon;
|
struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon;
|
||||||
|
|
||||||
gPSSData->cursorMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
|
gPSSData->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
|
||||||
if (gPSSData->cursorMonSpecies != SPECIES_NONE)
|
if (gPSSData->displayMonSpecies != SPECIES_NONE)
|
||||||
{
|
{
|
||||||
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
|
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
|
||||||
sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
|
sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
|
||||||
if (sanityIsBagEgg)
|
if (sanityIsBagEgg)
|
||||||
gPSSData->cursorMonIsEgg = TRUE;
|
gPSSData->displayMonIsEgg = TRUE;
|
||||||
else
|
else
|
||||||
gPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
|
gPSSData->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
|
||||||
|
|
||||||
|
|
||||||
GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->cursorMonNick);
|
GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->displayMonName);
|
||||||
StringGetEnd10(gPSSData->cursorMonNick);
|
StringGetEnd10(gPSSData->displayMonName);
|
||||||
gPSSData->cursorMonLevel = GetLevelFromBoxMonExp(boxMon);
|
gPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon);
|
||||||
gPSSData->cursorMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
|
gPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS);
|
||||||
gPSSData->cursorMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
|
gPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY);
|
||||||
gPSSData->cursorMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gPSSData->cursorMonSpecies, otId, gPSSData->cursorMonPersonality);
|
gPSSData->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gPSSData->displayMonSpecies, otId, gPSSData->displayMonPersonality);
|
||||||
gender = GetGenderFromSpeciesAndPersonality(gPSSData->cursorMonSpecies, gPSSData->cursorMonPersonality);
|
gender = GetGenderFromSpeciesAndPersonality(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality);
|
||||||
gPSSData->cursorMonItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
|
gPSSData->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->cursorMonSpecies = SPECIES_NONE;
|
gPSSData->displayMonSpecies = SPECIES_NONE;
|
||||||
gPSSData->cursorMonItem = 0;
|
gPSSData->displayMonItemId = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gPSSData->cursorMonSpecies == SPECIES_NONE)
|
if (gPSSData->displayMonSpecies == SPECIES_NONE)
|
||||||
{
|
{
|
||||||
StringFill(gPSSData->cursorMonNick, CHAR_SPACE, 5);
|
StringFill(gPSSData->displayMonName, CHAR_SPACE, 5);
|
||||||
StringFill(gPSSData->cursorMonTexts[0], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[0], CHAR_SPACE, 8);
|
||||||
StringFill(gPSSData->cursorMonTexts[1], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8);
|
||||||
StringFill(gPSSData->cursorMonTexts[2], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8);
|
||||||
StringFill(gPSSData->cursorMonTexts[3], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8);
|
||||||
}
|
}
|
||||||
else if (gPSSData->cursorMonIsEgg)
|
else if (gPSSData->displayMonIsEgg)
|
||||||
{
|
{
|
||||||
if (sanityIsBagEgg)
|
if (sanityIsBagEgg)
|
||||||
StringCopyPadded(gPSSData->cursorMonTexts[0], gPSSData->cursorMonNick, CHAR_SPACE, 5);
|
StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5);
|
||||||
else
|
else
|
||||||
StringCopyPadded(gPSSData->cursorMonTexts[0], gText_EggNickname, CHAR_SPACE, 8);
|
StringCopyPadded(gPSSData->displayMonTexts[0], gText_EggNickname, CHAR_SPACE, 8);
|
||||||
|
|
||||||
StringFill(gPSSData->cursorMonTexts[1], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8);
|
||||||
StringFill(gPSSData->cursorMonTexts[2], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8);
|
||||||
StringFill(gPSSData->cursorMonTexts[3], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonSpecies == SPECIES_NIDORAN_F || gPSSData->cursorMonSpecies == SPECIES_NIDORAN_M)
|
if (gPSSData->displayMonSpecies == SPECIES_NIDORAN_F || gPSSData->displayMonSpecies == SPECIES_NIDORAN_M)
|
||||||
gender = MON_GENDERLESS;
|
gender = MON_GENDERLESS;
|
||||||
|
|
||||||
StringCopyPadded(gPSSData->cursorMonTexts[0], gPSSData->cursorMonNick, CHAR_SPACE, 5);
|
StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5);
|
||||||
|
|
||||||
txtPtr = gPSSData->cursorMonTexts[1];
|
txtPtr = gPSSData->displayMonTexts[1];
|
||||||
*(txtPtr)++ = CHAR_SLASH;
|
*(txtPtr)++ = CHAR_SLASH;
|
||||||
StringCopyPadded(txtPtr, gSpeciesNames[gPSSData->cursorMonSpecies], CHAR_SPACE, 5);
|
StringCopyPadded(txtPtr, gSpeciesNames[gPSSData->displayMonSpecies], CHAR_SPACE, 5);
|
||||||
|
|
||||||
txtPtr = gPSSData->cursorMonTexts[2];
|
txtPtr = gPSSData->displayMonTexts[2];
|
||||||
*(txtPtr)++ = EXT_CTRL_CODE_BEGIN;
|
*(txtPtr)++ = EXT_CTRL_CODE_BEGIN;
|
||||||
*(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
|
*(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
|
||||||
switch (gender)
|
switch (gender)
|
||||||
@@ -1130,14 +1130,14 @@ static void SetCursorMonData(void *pokemon, u8 mode)
|
|||||||
*(txtPtr++) = CHAR_EXTRA_SYMBOL;
|
*(txtPtr++) = CHAR_EXTRA_SYMBOL;
|
||||||
*(txtPtr++) = 5; // LV_2
|
*(txtPtr++) = 5; // LV_2
|
||||||
|
|
||||||
txtPtr = ConvertIntToDecimalStringN(txtPtr, gPSSData->cursorMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
|
txtPtr = ConvertIntToDecimalStringN(txtPtr, gPSSData->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||||
txtPtr[0] = CHAR_SPACE;
|
txtPtr[0] = CHAR_SPACE;
|
||||||
txtPtr[1] = EOS;
|
txtPtr[1] = EOS;
|
||||||
|
|
||||||
if (gPSSData->cursorMonItem != 0)
|
if (gPSSData->displayMonItemId != 0)
|
||||||
StringCopyPadded(gPSSData->cursorMonTexts[3], ItemId_GetName(gPSSData->cursorMonItem), CHAR_SPACE, 8);
|
StringCopyPadded(gPSSData->displayMonTexts[3], ItemId_GetName(gPSSData->displayMonItemId), CHAR_SPACE, 8);
|
||||||
else
|
else
|
||||||
StringFill(gPSSData->cursorMonTexts[3], CHAR_SPACE, 8);
|
StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1165,9 +1165,9 @@ static u8 InBoxInput_Normal(void)
|
|||||||
{
|
{
|
||||||
cursorArea = sBoxCursorArea;
|
cursorArea = sBoxCursorArea;
|
||||||
cursorPosition = sBoxCursorPosition;
|
cursorPosition = sBoxCursorPosition;
|
||||||
gPSSData->field_CD2 = 0;
|
gPSSData->cursorVerticalWrap = 0;
|
||||||
gPSSData->field_CD3 = 0;
|
gPSSData->cursorHorizontalWrap = 0;
|
||||||
gPSSData->field_CD7 = 0;
|
gPSSData->cursorFlipTimer = 0;
|
||||||
if (JOY_REPT(DPAD_UP))
|
if (JOY_REPT(DPAD_UP))
|
||||||
{
|
{
|
||||||
retVal = TRUE;
|
retVal = TRUE;
|
||||||
@@ -1191,8 +1191,8 @@ static u8 InBoxInput_Normal(void)
|
|||||||
cursorArea = CURSOR_AREA_BUTTONS;
|
cursorArea = CURSOR_AREA_BUTTONS;
|
||||||
cursorPosition -= IN_BOX_COUNT;
|
cursorPosition -= IN_BOX_COUNT;
|
||||||
cursorPosition /= 3;
|
cursorPosition /= 3;
|
||||||
gPSSData->field_CD2 = 1;
|
gPSSData->cursorVerticalWrap = 1;
|
||||||
gPSSData->field_CD7 = 1;
|
gPSSData->cursorFlipTimer = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1205,7 +1205,7 @@ static u8 InBoxInput_Normal(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CD3 = -1;
|
gPSSData->cursorHorizontalWrap = -1;
|
||||||
cursorPosition += (IN_BOX_ROWS - 1);
|
cursorPosition += (IN_BOX_ROWS - 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1219,7 +1219,7 @@ static u8 InBoxInput_Normal(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CD3 = 1;
|
gPSSData->cursorHorizontalWrap = 1;
|
||||||
cursorPosition -= (IN_BOX_ROWS - 1);
|
cursorPosition -= (IN_BOX_ROWS - 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1355,12 +1355,12 @@ static u8 InBoxInput_GrabbingMultiple(void)
|
|||||||
if (sub_8095AA0() == sBoxCursorPosition)
|
if (sub_8095AA0() == sBoxCursorPosition)
|
||||||
{
|
{
|
||||||
gPSSData->inBoxMovingMode = 0;
|
gPSSData->inBoxMovingMode = 0;
|
||||||
gPSSData->field_CB8->invisible = FALSE;
|
gPSSData->cursorShadowSprite->invisible = FALSE;
|
||||||
return 22;
|
return 22;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sIsMonBeingMoved = (gPSSData->cursorMonSpecies != SPECIES_NONE);
|
sIsMonBeingMoved = (gPSSData->displayMonSpecies != SPECIES_NONE);
|
||||||
gPSSData->inBoxMovingMode = 2;
|
gPSSData->inBoxMovingMode = 2;
|
||||||
sMovingMonOrigBoxId = StorageGetCurrentBox();
|
sMovingMonOrigBoxId = StorageGetCurrentBox();
|
||||||
return 23;
|
return 23;
|
||||||
@@ -1460,9 +1460,9 @@ static u8 HandleInput_InParty(void)
|
|||||||
{
|
{
|
||||||
cursorArea = sBoxCursorArea;
|
cursorArea = sBoxCursorArea;
|
||||||
cursorPosition = sBoxCursorPosition;
|
cursorPosition = sBoxCursorPosition;
|
||||||
gPSSData->field_CD3 = 0;
|
gPSSData->cursorHorizontalWrap = 0;
|
||||||
gPSSData->field_CD2 = 0;
|
gPSSData->cursorVerticalWrap = 0;
|
||||||
gPSSData->field_CD7 = 0;
|
gPSSData->cursorFlipTimer = 0;
|
||||||
gotoBox = FALSE;
|
gotoBox = FALSE;
|
||||||
retVal = 0;
|
retVal = 0;
|
||||||
|
|
||||||
@@ -1485,7 +1485,7 @@ static u8 HandleInput_InParty(void)
|
|||||||
else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0)
|
else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0)
|
||||||
{
|
{
|
||||||
retVal = 1;
|
retVal = 1;
|
||||||
gPSSData->field_CD6 = sBoxCursorPosition;
|
gPSSData->cursorPrevHorizPos = sBoxCursorPosition;
|
||||||
cursorPosition = 0;
|
cursorPosition = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1494,7 +1494,7 @@ static u8 HandleInput_InParty(void)
|
|||||||
if (sBoxCursorPosition == 0)
|
if (sBoxCursorPosition == 0)
|
||||||
{
|
{
|
||||||
retVal = 1;
|
retVal = 1;
|
||||||
cursorPosition = gPSSData->field_CD6;
|
cursorPosition = gPSSData->cursorPrevHorizPos;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1580,16 +1580,16 @@ static u8 HandleInput_OnBox(void)
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
gPSSData->field_CD3 = 0;
|
gPSSData->cursorHorizontalWrap = 0;
|
||||||
gPSSData->field_CD2 = 0;
|
gPSSData->cursorVerticalWrap = 0;
|
||||||
gPSSData->field_CD7 = 0;
|
gPSSData->cursorFlipTimer = 0;
|
||||||
|
|
||||||
if (JOY_REPT(DPAD_UP))
|
if (JOY_REPT(DPAD_UP))
|
||||||
{
|
{
|
||||||
retVal = 1;
|
retVal = 1;
|
||||||
cursorArea = CURSOR_AREA_BUTTONS;
|
cursorArea = CURSOR_AREA_BUTTONS;
|
||||||
cursorPosition = 0;
|
cursorPosition = 0;
|
||||||
gPSSData->field_CD7 = 1;
|
gPSSData->cursorFlipTimer = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (JOY_REPT(DPAD_DOWN))
|
else if (JOY_REPT(DPAD_DOWN))
|
||||||
@@ -1654,20 +1654,20 @@ static u8 HandleInput_OnButtons(void)
|
|||||||
{
|
{
|
||||||
cursorArea = sBoxCursorArea;
|
cursorArea = sBoxCursorArea;
|
||||||
cursorPosition = sBoxCursorPosition;
|
cursorPosition = sBoxCursorPosition;
|
||||||
gPSSData->field_CD3 = 0;
|
gPSSData->cursorHorizontalWrap = 0;
|
||||||
gPSSData->field_CD2 = 0;
|
gPSSData->cursorVerticalWrap = 0;
|
||||||
gPSSData->field_CD7 = 0;
|
gPSSData->cursorFlipTimer = 0;
|
||||||
|
|
||||||
if (JOY_REPT(DPAD_UP))
|
if (JOY_REPT(DPAD_UP))
|
||||||
{
|
{
|
||||||
retVal = 1;
|
retVal = 1;
|
||||||
cursorArea = CURSOR_AREA_IN_BOX;
|
cursorArea = CURSOR_AREA_IN_BOX;
|
||||||
gPSSData->field_CD2 = -1;
|
gPSSData->cursorVerticalWrap = -1;
|
||||||
if (sBoxCursorPosition == 0)
|
if (sBoxCursorPosition == 0)
|
||||||
cursorPosition = IN_BOX_COUNT - 1 - 5;
|
cursorPosition = IN_BOX_COUNT - 1 - 5;
|
||||||
else
|
else
|
||||||
cursorPosition = IN_BOX_COUNT - 1;
|
cursorPosition = IN_BOX_COUNT - 1;
|
||||||
gPSSData->field_CD7 = 1;
|
gPSSData->cursorFlipTimer = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (JOY_REPT(DPAD_DOWN | START_BUTTON))
|
else if (JOY_REPT(DPAD_DOWN | START_BUTTON))
|
||||||
@@ -1675,7 +1675,7 @@ static u8 HandleInput_OnButtons(void)
|
|||||||
retVal = 1;
|
retVal = 1;
|
||||||
cursorArea = CURSOR_AREA_BOX;
|
cursorArea = CURSOR_AREA_BOX;
|
||||||
cursorPosition = 0;
|
cursorPosition = 0;
|
||||||
gPSSData->field_CD7 = 1;
|
gPSSData->cursorFlipTimer = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1816,21 +1816,21 @@ static bool8 sub_809494C(void)
|
|||||||
|
|
||||||
static bool8 sub_8094A0C(void)
|
static bool8 sub_8094A0C(void)
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonSpecies == SPECIES_EGG)
|
if (gPSSData->displayMonSpecies == SPECIES_EGG)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (!IsActiveItemMoving())
|
if (!IsActiveItemMoving())
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonItem == ITEM_NONE)
|
if (gPSSData->displayMonItemId == ITEM_NONE)
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonSpecies == SPECIES_NONE)
|
if (gPSSData->displayMonSpecies == SPECIES_NONE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
SetMenuText(PC_TEXT_GIVE2);
|
SetMenuText(PC_TEXT_GIVE2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ItemIsMail(gPSSData->cursorMonItem))
|
if (!ItemIsMail(gPSSData->displayMonItemId))
|
||||||
{
|
{
|
||||||
SetMenuText(PC_TEXT_TAKE);
|
SetMenuText(PC_TEXT_TAKE);
|
||||||
SetMenuText(PC_TEXT_BAG);
|
SetMenuText(PC_TEXT_BAG);
|
||||||
@@ -1840,16 +1840,16 @@ static bool8 sub_8094A0C(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonItem == ITEM_NONE)
|
if (gPSSData->displayMonItemId == ITEM_NONE)
|
||||||
{
|
{
|
||||||
if (gPSSData->cursorMonSpecies == SPECIES_NONE)
|
if (gPSSData->displayMonSpecies == SPECIES_NONE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
SetMenuText(PC_TEXT_GIVE);
|
SetMenuText(PC_TEXT_GIVE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ItemIsMail(gPSSData->cursorMonItem) == TRUE)
|
if (ItemIsMail(gPSSData->displayMonItemId) == TRUE)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
SetMenuText(PC_TEXT_SWITCH);
|
SetMenuText(PC_TEXT_SWITCH);
|
||||||
@@ -1862,8 +1862,8 @@ static bool8 sub_8094A0C(void)
|
|||||||
|
|
||||||
static void sub_8094AB8(struct Sprite *sprite)
|
static void sub_8094AB8(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->x = gPSSData->field_CB4->x;
|
sprite->x = gPSSData->cursorSprite->x;
|
||||||
sprite->y = gPSSData->field_CB4->y + 20;
|
sprite->y = gPSSData->cursorSprite->y + 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8094AD8(void)
|
static void sub_8094AD8(void)
|
||||||
@@ -1940,22 +1940,22 @@ static void sub_8094AD8(void)
|
|||||||
|
|
||||||
LoadSpriteSheets(spriteSheets);
|
LoadSpriteSheets(spriteSheets);
|
||||||
LoadSpritePalettes(spritePalettes);
|
LoadSpritePalettes(spritePalettes);
|
||||||
gPSSData->field_CD8[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM);
|
gPSSData->cursorPalNums[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM);
|
||||||
gPSSData->field_CD8[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7);
|
gPSSData->cursorPalNums[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7);
|
||||||
|
|
||||||
sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y);
|
sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y);
|
||||||
spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6);
|
spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6);
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4 = &gSprites[spriteId];
|
gPSSData->cursorSprite = &gSprites[spriteId];
|
||||||
gPSSData->field_CB4->oam.paletteNum = gPSSData->field_CD8[sCanOnlyMove];
|
gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove];
|
||||||
gPSSData->field_CB4->oam.priority = 1;
|
gPSSData->cursorSprite->oam.priority = 1;
|
||||||
if (sIsMonBeingMoved)
|
if (sIsMonBeingMoved)
|
||||||
StartSpriteAnim(gPSSData->field_CB4, 3);
|
StartSpriteAnim(gPSSData->cursorSprite, 3);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4 = NULL;
|
gPSSData->cursorSprite = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
|
if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
|
||||||
@@ -1972,21 +1972,21 @@ static void sub_8094AD8(void)
|
|||||||
spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority);
|
spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority);
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
gPSSData->field_CB8 = &gSprites[spriteId];
|
gPSSData->cursorShadowSprite = &gSprites[spriteId];
|
||||||
gPSSData->field_CB8->oam.priority = priority;
|
gPSSData->cursorShadowSprite->oam.priority = priority;
|
||||||
if (sBoxCursorArea)
|
if (sBoxCursorArea)
|
||||||
gPSSData->field_CB8->invisible = 1;
|
gPSSData->cursorShadowSprite->invisible = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->field_CB8 = NULL;
|
gPSSData->cursorShadowSprite = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8094C84(void)
|
static void sub_8094C84(void)
|
||||||
{
|
{
|
||||||
sCanOnlyMove = !sCanOnlyMove;
|
sCanOnlyMove = !sCanOnlyMove;
|
||||||
gPSSData->field_CB4->oam.paletteNum = gPSSData->field_CD8[sCanOnlyMove];
|
gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove];
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 GetBoxCursorPosition(void)
|
u8 GetBoxCursorPosition(void)
|
||||||
@@ -2010,7 +2010,7 @@ void sub_8094CD4(u8 *arg0, u8 *arg1)
|
|||||||
|
|
||||||
void sub_8094D14(u8 animNum)
|
void sub_8094D14(u8 animNum)
|
||||||
{
|
{
|
||||||
StartSpriteAnim(gPSSData->field_CB4, animNum);
|
StartSpriteAnim(gPSSData->cursorSprite, animNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 sub_8094D34(void)
|
u8 sub_8094D34(void)
|
||||||
@@ -2020,7 +2020,7 @@ u8 sub_8094D34(void)
|
|||||||
|
|
||||||
void sub_8094D40(void)
|
void sub_8094D40(void)
|
||||||
{
|
{
|
||||||
gPSSData->field_CB4->oam.priority = 1;
|
gPSSData->cursorSprite->oam.priority = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8094D60(void)
|
void sub_8094D60(void)
|
||||||
|
|||||||
@@ -87,13 +87,13 @@ void AddMenu(void)
|
|||||||
gPSSData->menuWindow.height = 2 * gPSSData->menuItemsCount;
|
gPSSData->menuWindow.height = 2 * gPSSData->menuItemsCount;
|
||||||
gPSSData->menuWindow.tilemapLeft = 29 - gPSSData->menuWindow.width;
|
gPSSData->menuWindow.tilemapLeft = 29 - gPSSData->menuWindow.width;
|
||||||
gPSSData->menuWindow.tilemapTop = 15 - gPSSData->menuWindow.height;
|
gPSSData->menuWindow.tilemapTop = 15 - gPSSData->menuWindow.height;
|
||||||
gPSSData->field_CB0 = AddWindow(&gPSSData->menuWindow);
|
gPSSData->menuWindowId = AddWindow(&gPSSData->menuWindow);
|
||||||
ClearWindowTilemap(gPSSData->field_CB0);
|
ClearWindowTilemap(gPSSData->menuWindowId);
|
||||||
DrawStdFrameWithCustomTileAndPalette(gPSSData->field_CB0, FALSE, 0x00b, 14);
|
DrawStdFrameWithCustomTileAndPalette(gPSSData->menuWindowId, FALSE, 0x00b, 14);
|
||||||
PrintTextArray(gPSSData->field_CB0, 1, 8, 2, 16, gPSSData->menuItemsCount, (void *)gPSSData->menuItems);
|
PrintTextArray(gPSSData->menuWindowId, 1, 8, 2, 16, gPSSData->menuItemsCount, (void *)gPSSData->menuItems);
|
||||||
Menu_InitCursor(gPSSData->field_CB0, 1, 0, 2, 16, gPSSData->menuItemsCount, 0);
|
Menu_InitCursor(gPSSData->menuWindowId, 1, 0, 2, 16, gPSSData->menuItemsCount, 0);
|
||||||
ScheduleBgCopyTilemapToVram(0);
|
ScheduleBgCopyTilemapToVram(0);
|
||||||
gPSSData->field_CAE = 0;
|
gPSSData->menuUnusedField = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8094F90(void)
|
bool8 sub_8094F90(void)
|
||||||
@@ -142,6 +142,6 @@ s16 sub_8094F94(void)
|
|||||||
|
|
||||||
void sub_8095024(void)
|
void sub_8095024(void)
|
||||||
{
|
{
|
||||||
ClearStdWindowAndFrameToTransparent(gPSSData->field_CB0, TRUE);
|
ClearStdWindowAndFrameToTransparent(gPSSData->menuWindowId, TRUE);
|
||||||
RemoveWindow(gPSSData->field_CB0);
|
RemoveWindow(gPSSData->menuWindowId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
|
|||||||
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
|
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->movingItem = gPSSData->cursorMonItem;
|
gPSSData->movingItem = gPSSData->displayMonItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8095E2C(u16 item)
|
void sub_8095E2C(u16 item)
|
||||||
@@ -560,7 +560,7 @@ void PrintItemDescription(void)
|
|||||||
if (IsActiveItemMoving())
|
if (IsActiveItemMoving())
|
||||||
description = ItemId_GetDescription(gPSSData->movingItem);
|
description = ItemId_GetDescription(gPSSData->movingItem);
|
||||||
else
|
else
|
||||||
description = ItemId_GetDescription(gPSSData->cursorMonItem);
|
description = ItemId_GetDescription(gPSSData->displayMonItemId);
|
||||||
|
|
||||||
FillWindowPixelBuffer(2, PIXEL_FILL(1));
|
FillWindowPixelBuffer(2, PIXEL_FILL(1));
|
||||||
AddTextPrinterParameterized5(2, 2, description, 2, 0, 0, NULL, 0, 0);
|
AddTextPrinterParameterized5(2, 2, description, 2, 0, 0, NULL, 0, 0);
|
||||||
@@ -660,9 +660,9 @@ static void sub_8096958(struct Sprite *sprite)
|
|||||||
|
|
||||||
static void sub_80969BC(struct Sprite *sprite)
|
static void sub_80969BC(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->x = gPSSData->field_CB4->x + 4;
|
sprite->x = gPSSData->cursorSprite->x + 4;
|
||||||
sprite->y = gPSSData->field_CB4->y + gPSSData->field_CB4->y2 + 8;
|
sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 8;
|
||||||
sprite->oam.priority = gPSSData->field_CB4->oam.priority;
|
sprite->oam.priority = gPSSData->cursorSprite->oam.priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80969F4(struct Sprite *sprite)
|
static void sub_80969F4(struct Sprite *sprite)
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
#include "gflib.h"
|
#include "gflib.h"
|
||||||
#include "pokemon_storage_system_internal.h"
|
#include "pokemon_storage_system_internal.h"
|
||||||
|
|
||||||
static EWRAM_DATA struct UnkStruct_2000020 *gUnknown_203982C = NULL;
|
static EWRAM_DATA struct UnkUtil *gUnknown_203982C = NULL;
|
||||||
|
|
||||||
static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct);
|
static void sub_8096CDC(struct UnkUtilData *unkStruct);
|
||||||
static void sub_8096D70(struct UnkStruct_2000028 *unkStruct);
|
static void sub_8096D70(struct UnkUtilData *unkStruct);
|
||||||
|
|
||||||
void sub_8096BE4(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2)
|
void sub_8096BE4(struct UnkUtil *arg0, struct UnkUtilData *arg1, u32 arg2)
|
||||||
{
|
{
|
||||||
gUnknown_203982C = arg0;
|
gUnknown_203982C = arg0;
|
||||||
arg0->unk_00 = arg1;
|
arg0->unk_00 = arg1;
|
||||||
@@ -23,7 +23,7 @@ void sub_8096BF8(void)
|
|||||||
{
|
{
|
||||||
for (i = 0; i < gUnknown_203982C->unk_04; i++)
|
for (i = 0; i < gUnknown_203982C->unk_04; i++)
|
||||||
{
|
{
|
||||||
struct UnkStruct_2000028 *unkStruct = &gUnknown_203982C->unk_00[i];
|
struct UnkUtilData *unkStruct = &gUnknown_203982C->unk_00[i];
|
||||||
unkStruct->unk_0c(unkStruct);
|
unkStruct->unk_0c(unkStruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ void sub_8096BF8(void)
|
|||||||
|
|
||||||
static bool8 sub_8096C40(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
|
static bool8 sub_8096C40(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sTop, u16 width, u16 height, u16 unkArg)
|
||||||
{
|
{
|
||||||
struct UnkStruct_2000028 *unkStruct;
|
struct UnkUtilData *unkStruct;
|
||||||
|
|
||||||
if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
|
if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -48,7 +48,7 @@ static bool8 sub_8096C40(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct)
|
static void sub_8096CDC(struct UnkUtilData *unkStruct)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ static void sub_8096CDC(struct UnkStruct_2000028 *unkStruct)
|
|||||||
|
|
||||||
static bool8 sub_8096D14(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
|
static bool8 sub_8096D14(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
|
||||||
{
|
{
|
||||||
struct UnkStruct_2000028 *unkStruct;
|
struct UnkUtilData *unkStruct;
|
||||||
|
|
||||||
if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
|
if (gUnknown_203982C->unk_04 >= gUnknown_203982C->unk_05)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -75,7 +75,7 @@ static bool8 sub_8096D14(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096D70(struct UnkStruct_2000028 *unkStruct)
|
static void sub_8096D70(struct UnkUtilData *unkStruct)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
|
|||||||
@@ -4881,7 +4881,7 @@ static void PokeSum_CreateMonMarkingsSprite(void)
|
|||||||
u32 markings = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MARKINGS);
|
u32 markings = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_MARKINGS);
|
||||||
|
|
||||||
DestroySpriteAndFreeResources(sMonSummaryScreen->markingSprite);
|
DestroySpriteAndFreeResources(sMonSummaryScreen->markingSprite);
|
||||||
sMonSummaryScreen->markingSprite = CreateMonMarkingSprite_SelectCombo(TAG_PSS_UNK_8C, TAG_PSS_UNK_8C, sMonMarkingSpritePalette);
|
sMonSummaryScreen->markingSprite = CreateMonMarkingAllCombosSprite(TAG_PSS_UNK_8C, TAG_PSS_UNK_8C, sMonMarkingSpritePalette);
|
||||||
|
|
||||||
if (sMonSummaryScreen->markingSprite != NULL)
|
if (sMonSummaryScreen->markingSprite != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -1017,7 +1017,7 @@ static void sub_80B3D78(u8 taskId)
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
task->data[1] -= 4;
|
task->data[1] -= 4;
|
||||||
task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);;
|
task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);
|
||||||
SetSpriteRotScale(task->data[15], task->data[2], task->data[2], 0);
|
SetSpriteRotScale(task->data[15], task->data[2], task->data[2], 0);
|
||||||
SetBattlerSpriteYOffsetFromOtherYScale(task->data[15], task->data[13]);
|
SetBattlerSpriteYOffsetFromOtherYScale(task->data[15], task->data[13]);
|
||||||
if (task->data[1] == 0)
|
if (task->data[1] == 0)
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const struct TextWindowGraphics gUserFrames[] = {
|
|||||||
{gUnknown_84717CC, gUnknown_8471A2C}
|
{gUnknown_84717CC, gUnknown_8471A2C}
|
||||||
}; // NELEMS = 10
|
}; // NELEMS = 10
|
||||||
|
|
||||||
const struct TextWindowGraphics * GetUserFrameGraphicsInfo(u8 idx)
|
const struct TextWindowGraphics *GetWindowFrameTilesPal(u8 idx)
|
||||||
{
|
{
|
||||||
if (idx >= 20) // if (idx >= NELEMS(gUserFrames))
|
if (idx >= 20) // if (idx >= NELEMS(gUserFrames))
|
||||||
return &gUserFrames[0];
|
return &gUserFrames[0];
|
||||||
|
|||||||
Reference in New Issue
Block a user