summaryrefslogtreecommitdiff
path: root/src/item_menu_icons.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/item_menu_icons.c')
-rw-r--r--src/item_menu_icons.c98
1 files changed, 58 insertions, 40 deletions
diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c
index c728a720f..60de132b0 100644
--- a/src/item_menu_icons.c
+++ b/src/item_menu_icons.c
@@ -11,6 +11,15 @@
#include "window.h"
#include "constants/items.h"
+enum {
+ TAG_BAG_GFX = 100,
+ TAG_ROTATING_BALL_GFX,
+ TAG_ITEM_ICON,
+ TAG_ITEM_ICON_ALT,
+};
+#define TAG_BERRY_CHECK_CIRCLE_GFX 10000
+#define TAG_BERRY_PIC_PAL 30020
+
struct CompressedTilesPal
{
const u32 *tiles;
@@ -128,7 +137,7 @@ const struct CompressedSpritePalette gBagPaletteTable =
gBagPalette, TAG_BAG_GFX
};
-static const struct SpriteTemplate gBagSpriteTemplate =
+static const struct SpriteTemplate sBagSpriteTemplate =
{
.tileTag = TAG_BAG_GFX,
.paletteTag = TAG_BAG_GFX,
@@ -189,17 +198,17 @@ static const union AffineAnimCmd *const sRotatingBallAnimCmds_FullRotation[] =
sSpriteAffineAnim_RotatingBallRotation2,
};
-static const struct SpriteSheet gRotatingBallTable =
+static const struct SpriteSheet sRotatingBallTable =
{
gRotatingBall, 0x80, TAG_ROTATING_BALL_GFX
};
-static const struct SpritePalette gRotatingBallPaletteTable =
+static const struct SpritePalette sRotatingBallPaletteTable =
{
gRotatingBall_Pal, TAG_ROTATING_BALL_GFX
};
-static const struct SpriteTemplate gRotatingBallSpriteTemplate =
+static const struct SpriteTemplate sRotatingBallSpriteTemplate =
{
.tileTag = TAG_ROTATING_BALL_GFX,
.paletteTag = TAG_ROTATING_BALL_GFX,
@@ -262,7 +271,7 @@ static const struct SpriteFrameImage sBerryPicSpriteImageTable[] =
static const struct SpriteTemplate gBerryPicSpriteTemplate =
{
- .tileTag = TAG_BERRY_PIC_TILE,
+ .tileTag = TAG_NONE,
.paletteTag = TAG_BERRY_PIC_PAL,
.oam = &sBerryPicOamData,
.anims = sBerryPicSpriteAnimTable,
@@ -301,7 +310,7 @@ static const union AffineAnimCmd *const sBerryPicRotatingAnimCmds[] =
static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate =
{
- .tileTag = TAG_BERRY_PIC_TILE,
+ .tileTag = TAG_NONE,
.paletteTag = TAG_BERRY_PIC_PAL,
.oam = &sBerryPicRotatingOamData,
.anims = sBerryPicSpriteAnimTable,
@@ -409,11 +418,11 @@ static const struct SpriteTemplate gBerryCheckCircleSpriteTemplate =
// code
void RemoveBagSprite(u8 id)
{
- u8 *spriteId = &gBagMenu->spriteId[id];
+ u8 *spriteId = &gBagMenu->spriteIds[id];
if (*spriteId != SPRITE_NONE)
{
- FreeSpriteTilesByTag(id + 100);
- FreeSpritePaletteByTag(id + 100);
+ FreeSpriteTilesByTag(id + TAG_BAG_GFX);
+ FreeSpritePaletteByTag(id + TAG_BAG_GFX);
FreeSpriteOamMatrix(&gSprites[*spriteId]);
DestroySprite(&gSprites[*spriteId]);
*spriteId = SPRITE_NONE;
@@ -422,17 +431,17 @@ void RemoveBagSprite(u8 id)
void AddBagVisualSprite(u8 bagPocketId)
{
- u8 *spriteId = &gBagMenu->spriteId[0];
- *spriteId = CreateSprite(&gBagSpriteTemplate, 68, 66, 0);
+ u8 *spriteId = &gBagMenu->spriteIds[ITEMMENUSPRITE_BAG];
+ *spriteId = CreateSprite(&sBagSpriteTemplate, 68, 66, 0);
SetBagVisualPocketId(bagPocketId, FALSE);
}
void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
{
- struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
+ struct Sprite *sprite = &gSprites[gBagMenu->spriteIds[ITEMMENUSPRITE_BAG]];
if (isSwitchingPockets)
{
- sprite->pos2.y = -5;
+ sprite->y2 = -5;
sprite->callback = SpriteCB_BagVisualSwitchingPockets;
sprite->data[0] = bagPocketId + 1;
StartSpriteAnim(sprite, 0);
@@ -445,9 +454,9 @@ void SetBagVisualPocketId(u8 bagPocketId, bool8 isSwitchingPockets)
static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
{
- if (sprite->pos2.y != 0)
+ if (sprite->y2 != 0)
{
- sprite->pos2.y++;
+ sprite->y2++;
}
else
{
@@ -458,7 +467,7 @@ static void SpriteCB_BagVisualSwitchingPockets(struct Sprite *sprite)
void ShakeBagSprite(void)
{
- struct Sprite *sprite = &gSprites[gBagMenu->spriteId[0]];
+ struct Sprite *sprite = &gSprites[gBagMenu->spriteIds[ITEMMENUSPRITE_BAG]];
if (sprite->affineAnimEnded)
{
StartSpriteAffineAnim(sprite, 1);
@@ -477,10 +486,10 @@ static void SpriteCB_ShakeBagSprite(struct Sprite *sprite)
void AddSwitchPocketRotatingBallSprite(s16 rotationDirection)
{
- u8 *spriteId = &gBagMenu->spriteId[1];
- LoadSpriteSheet(&gRotatingBallTable);
- LoadSpritePalette(&gRotatingBallPaletteTable);
- *spriteId = CreateSprite(&gRotatingBallSpriteTemplate, 16, 16, 0);
+ u8 *spriteId = &gBagMenu->spriteIds[ITEMMENUSPRITE_BALL];
+ LoadSpriteSheet(&sRotatingBallTable);
+ LoadSpritePalette(&sRotatingBallPaletteTable);
+ *spriteId = CreateSprite(&sRotatingBallSpriteTemplate, 16, 16, 0);
gSprites[*spriteId].data[0] = rotationDirection;
}
@@ -510,65 +519,74 @@ static void SpriteCB_SwitchPocketRotatingBallContinue(struct Sprite *sprite)
sprite->data[3]++;
UpdateSwitchPocketRotatingBallCoords(sprite);
if (sprite->data[3] == 16)
- RemoveBagSprite(1);
+ RemoveBagSprite(ITEMMENUSPRITE_BALL);
}
void AddBagItemIconSprite(u16 itemId, u8 id)
{
- u8 *spriteId = &gBagMenu->spriteId[id + 2];
+ u8 *spriteId = &gBagMenu->spriteIds[id + ITEMMENUSPRITE_ITEM];
if (*spriteId == SPRITE_NONE)
{
u8 iconSpriteId;
- FreeSpriteTilesByTag(id + 102);
- FreeSpritePaletteByTag(id + 102);
- iconSpriteId = AddItemIconSprite(id + 102, id + 102, itemId);
+ // Either TAG_ITEM_ICON or TAG_ITEM_ICON_ALT
+ FreeSpriteTilesByTag(id + TAG_ITEM_ICON);
+ FreeSpritePaletteByTag(id + TAG_ITEM_ICON);
+ iconSpriteId = AddItemIconSprite(id + TAG_ITEM_ICON, id + TAG_ITEM_ICON, itemId);
if (iconSpriteId != MAX_SPRITES)
{
*spriteId = iconSpriteId;
- gSprites[iconSpriteId].pos2.x = 24;
- gSprites[iconSpriteId].pos2.y = 88;
+ gSprites[iconSpriteId].x2 = 24;
+ gSprites[iconSpriteId].y2 = 88;
}
}
}
void RemoveBagItemIconSprite(u8 id)
{
- RemoveBagSprite(id + 2);
+ RemoveBagSprite(id + ITEMMENUSPRITE_ITEM);
}
void CreateItemMenuSwapLine(void)
{
- CreateSwapLineSprites(&gBagMenu->spriteId[4], 8);
+ CreateSwapLineSprites(&gBagMenu->spriteIds[ITEMMENUSPRITE_SWAP_LINE], ITEMMENU_SWAP_LINE_LENGTH);
}
void SetItemMenuSwapLineInvisibility(bool8 invisible)
{
- SetSwapLineSpritesInvisibility(&gBagMenu->spriteId[4], 8, invisible);
+ SetSwapLineSpritesInvisibility(&gBagMenu->spriteIds[ITEMMENUSPRITE_SWAP_LINE], ITEMMENU_SWAP_LINE_LENGTH, invisible);
}
void UpdateItemMenuSwapLinePos(u8 y)
{
- UpdateSwapLineSpritesPos(&gBagMenu->spriteId[4], 136, 120, (y + 1) * 16);
+ UpdateSwapLineSpritesPos(&gBagMenu->spriteIds[ITEMMENUSPRITE_SWAP_LINE], ITEMMENU_SWAP_LINE_LENGTH | SWAP_LINE_HAS_MARGIN, 120, (y + 1) * 16);
}
-static void sub_80D5018(void *mem0, void *mem1)
+static void ArrangeBerryGfx(void *src, void *dest)
{
u8 i, j;
- memset(mem1, 0, 0x800);
- mem1 += 0x100;
+ memset(dest, 0, 0x800);
+
+ // Create top margin
+ dest += 0x100;
+
for (i = 0; i < 6; i++)
{
- mem1 += 0x20;
+ // Create left margin
+ dest += 0x20;
+
+ // Copy one row of berry's icon
for (j = 0; j < 6; j++)
{
- memcpy(mem1, mem0, 0x20);
- mem1 += 0x20;
- mem0 += 0x20;
+ memcpy(dest, src, 0x20);
+ dest += 0x20;
+ src += 0x20;
}
+
+ // Create right margin
if (i != 5)
- mem1 += 0x20;
+ dest += 0x20;
}
}
@@ -585,7 +603,7 @@ static void LoadBerryGfx(u8 berryId)
pal.tag = TAG_BERRY_PIC_PAL;
LoadCompressedSpritePalette(&pal);
LZDecompressWram(sBerryPicTable[berryId].tiles, &gDecompressionBuffer[0x1000]);
- sub_80D5018(&gDecompressionBuffer[0x1000], &gDecompressionBuffer[0]);
+ ArrangeBerryGfx(&gDecompressionBuffer[0x1000], &gDecompressionBuffer[0]);
}
u8 CreateBerryTagSprite(u8 id, s16 x, s16 y)