Synced src/mon_markings.c and partly synced PSS

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