mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 10:20:01 +01:00
Support for gender difference mon icons.
This commit is contained in:
parent
d7fbaa6cbf
commit
5e33281350
@ -2,8 +2,9 @@
|
||||
#define GUARD_POKEMON_ICON_H
|
||||
|
||||
extern const u8 gMonIconPaletteIndices[];
|
||||
extern const u8 gMonIconPaletteIndicesFemale[];
|
||||
|
||||
const u8 *GetMonIconTiles(u16 species, bool32);
|
||||
const u8 *GetMonIconTiles(u16 species, bool32, u32 personality);
|
||||
void sub_80D304C(u16 offset);
|
||||
u8 GetValidMonIconPalIndex(u16 species);
|
||||
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "palette.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "sprite.h"
|
||||
#include "data.h"
|
||||
|
||||
#define POKE_ICON_BASE_PAL_TAG 56000
|
||||
|
||||
@ -962,7 +963,10 @@ const u8 *const gMonIconTable[] =
|
||||
[SPECIES_UNOWN_Z] = gMonIcon_UnownZ,
|
||||
[SPECIES_UNOWN_EMARK] = gMonIcon_UnownExclamationMark,
|
||||
[SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark,
|
||||
|
||||
};
|
||||
const u8 *const gMonIconTableFemale[] =
|
||||
{
|
||||
[SPECIES_EEVEE] = gMonIcon_Eevee,
|
||||
};
|
||||
|
||||
const u8 gMonIconPaletteIndices[] =
|
||||
@ -1876,6 +1880,11 @@ const u8 gMonIconPaletteIndices[] =
|
||||
[SPECIES_EGG] = 1,
|
||||
};
|
||||
|
||||
const u8 gMonIconPaletteIndicesFemale[] =
|
||||
{
|
||||
[SPECIES_EEVEE] = 2,
|
||||
};
|
||||
|
||||
const struct SpritePalette gMonIconPaletteTable[] =
|
||||
{
|
||||
{ gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 },
|
||||
@ -2004,6 +2013,8 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
|
||||
|
||||
if (species > NUM_SPECIES)
|
||||
iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG;
|
||||
else if (SpeciesHasGenderDifference[species] && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE)
|
||||
iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndicesFemale[species];
|
||||
|
||||
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
|
||||
|
||||
@ -2025,7 +2036,7 @@ u8 sub_80D2D78(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8
|
||||
.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
|
||||
};
|
||||
|
||||
iconTemplate.image = GetMonIconTiles(species, extra);
|
||||
iconTemplate.image = GetMonIconTiles(species, extra, 0);
|
||||
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
|
||||
|
||||
UpdateMonIconFrame(&gSprites[spriteId]);
|
||||
@ -2080,7 +2091,7 @@ u16 sub_80D2E84(u16 species)
|
||||
|
||||
const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 handleDeoxys)
|
||||
{
|
||||
return GetMonIconTiles(GetIconSpecies(species, personality), handleDeoxys);
|
||||
return GetMonIconTiles(GetIconSpecies(species, personality), handleDeoxys, personality);
|
||||
}
|
||||
|
||||
void FreeAndDestroyMonIconSprite(struct Sprite *sprite)
|
||||
@ -2142,13 +2153,17 @@ void SpriteCB_MonIcon(struct Sprite *sprite)
|
||||
UpdateMonIconFrame(sprite);
|
||||
}
|
||||
|
||||
const u8* GetMonIconTiles(u16 species, bool32 handleDeoxys)
|
||||
const u8* GetMonIconTiles(u16 species, bool32 handleDeoxys, u32 personality)
|
||||
{
|
||||
const u8* iconSprite = gMonIconTable[species];
|
||||
if (species == SPECIES_DEOXYS && handleDeoxys == TRUE)
|
||||
{
|
||||
iconSprite = (const u8*)(0x400 + (u32)iconSprite); // use the specific Deoxys form icon (Speed in this case)
|
||||
}
|
||||
else if (SpeciesHasGenderDifference[species] && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE)
|
||||
{
|
||||
iconSprite = gMonIconTableFemale[species];
|
||||
}
|
||||
return iconSprite;
|
||||
}
|
||||
|
||||
|
@ -5145,7 +5145,7 @@ static void sub_80CC100(struct Sprite *sprite)
|
||||
sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4;
|
||||
}
|
||||
|
||||
static u16 sub_80CC124(u16 species)
|
||||
static u16 sub_80CC124(u16 species, u32 personality)
|
||||
{
|
||||
u16 i, var;
|
||||
|
||||
@ -5169,7 +5169,7 @@ static u16 sub_80CC124(u16 species)
|
||||
sPSSData->field_B58[i] = species;
|
||||
sPSSData->field_B08[i]++;
|
||||
var = 16 * i;
|
||||
CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200);
|
||||
CpuCopy32(GetMonIconTiles(species, TRUE, personality), (void*)(OBJ_VRAM0) + var * 32, 0x200);
|
||||
|
||||
return var;
|
||||
}
|
||||
@ -5197,7 +5197,7 @@ static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s
|
||||
|
||||
species = GetIconSpecies(species, personality);
|
||||
tempalte.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species];
|
||||
tileNum = sub_80CC124(species);
|
||||
tileNum = sub_80CC124(species, personality);
|
||||
if (tileNum == 0xFFFF)
|
||||
return NULL;
|
||||
|
||||
|
@ -1379,7 +1379,7 @@ static void LoadMonIconGfx(void)
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (sData->trainerCard.monSpecies[i])
|
||||
LoadBgTiles(3, GetMonIconTiles(sData->trainerCard.monSpecies[i], 0), 512, 16 * i + 32);
|
||||
LoadBgTiles(3, GetMonIconTiles(sData->trainerCard.monSpecies[i], FALSE, 0), 512, 16 * i + 32);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user