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
+112 -105
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);
@@ -475,7 +482,7 @@ bool8 IsCursorOnBox(void);
bool8 IsCursorInBox(void);
void sub_808FFAC(void);
struct Sprite * CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority);
struct Sprite *CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority);
void CreatePartyMonsSprites(bool8 species);
void sub_80909F4(void);
bool8 sub_8090A60(void);