From 40005fe0385a0480ecc2787d67ef03eb600dbc3d Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Sun, 3 Nov 2024 18:57:45 +0100 Subject: [PATCH] storage icons --- src/pokemon_icon.c | 16 ++++++++-------- src/pokemon_storage_system_graphics.c | 17 +++++++++++++++-- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index 124e43193..cfb1e13a1 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -157,14 +157,14 @@ u8 CreateMonIconNoPersonality(u16 species, SpriteCallback callback, s16 x, s16 y { u8 spriteId; struct MonIconSpriteTemplate iconTemplate = - { - .oam = &sMonIconOamData, - .image = NULL, - .anims = sMonIconAnims, - .affineAnims = sMonIconAffineAnims, - .callback = callback, - .paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex, - }; + { + .oam = &sMonIconOamData, + .image = NULL, + .anims = sMonIconAnims, + .affineAnims = sMonIconAffineAnims, + .callback = callback, + .paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex, + }; iconTemplate.image = GetMonIconTiles(species, 0); spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority); diff --git a/src/pokemon_storage_system_graphics.c b/src/pokemon_storage_system_graphics.c index f5ed3ceca..040749c15 100644 --- a/src/pokemon_storage_system_graphics.c +++ b/src/pokemon_storage_system_graphics.c @@ -9,6 +9,8 @@ #include "task.h" #include "trig.h" +#define GENDER_MASK 0x7FFF + static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite); static void SetBoxSpeciesAndPersonalities(u8 boxId); static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 idx); @@ -967,7 +969,8 @@ static u16 TryLoadMonIconTiles(u16 species, u32 personality) gStorage->iconSpeciesList[i] = species; gStorage->numIconsPerSpecies[i]++; offset = 16 * i; - CpuCopy32(GetMonIconTiles(species, personality), (void *)(OBJ_VRAM0) + offset * 32, 0x200); + species &= GENDER_MASK; + CpuCopy32(GetMonIconTiles(species, personality), (void *)(OBJ_VRAM0) + offset * TILE_SIZE_4BPP, 0x200); return offset; } @@ -975,10 +978,20 @@ static u16 TryLoadMonIconTiles(u16 species, u32 personality) static void RemoveSpeciesFromIconList(u16 species) { u16 i; + bool8 hasFemale = FALSE; for (i = 0; i < MAX_MON_ICONS; i++) { - if (gStorage->iconSpeciesList[i] == species) + if (gStorage->iconSpeciesList[i] == (species | 0x8000)) + { + hasFemale = TRUE; + break; + } + } + + for (i = 0; i < MAX_MON_ICONS; i++) + { + if (gStorage->iconSpeciesList[i] == species && !hasFemale) { if (--gStorage->numIconsPerSpecies[i] == 0) gStorage->iconSpeciesList[i] = SPECIES_NONE;