From 4aa7c096b7d4a1806dead8514bd96d765768e7a2 Mon Sep 17 00:00:00 2001 From: BuffelSaft Date: Sat, 11 Sep 2021 16:30:09 +1200 Subject: [PATCH] Show gender differences in evo scene --- include/decompress.h | 2 ++ src/decompress.c | 8 ++++++++ src/evolution_scene.c | 30 +++++++++++++++--------------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/include/decompress.h b/include/decompress.h index bddbe96ac..81f142501 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -18,6 +18,8 @@ bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species); +void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality); + void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality); void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); diff --git a/src/decompress.c b/src/decompress.c index 94d09ddfe..4d917e8d6 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -67,6 +67,14 @@ void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffe LZ77UnCompWram(src->data, buffer); } +void DecompressPicFromTableGender(void* buffer, s32 species, u32 personality) +{ + if (SpeciesHasGenderDifference[species] && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE) + DecompressPicFromTable(&gMonFrontPicTableFemale[species], buffer, species); + else + DecompressPicFromTable(&gMonFrontPicTable[species], buffer, species); +} + void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality) { bool8 isFrontPic; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index ac24b6315..1d5fcc05b 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -259,9 +259,9 @@ void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u currSpecies = GetMonData(mon, MON_DATA_SPECIES); trainerId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); - DecompressPicFromTable(&gMonFrontPicTable[currSpecies], - gMonSpritesGfxPtr->sprites.ptr[1], - currSpecies); + DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[1], + currSpecies, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x110, 0x20); @@ -274,9 +274,9 @@ void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u gSprites[ID].invisible = TRUE; // postEvo sprite - DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites.ptr[3], - postEvoSpecies); + DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[3], + postEvoSpecies, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); @@ -351,9 +351,9 @@ static void CB2_EvolutionSceneLoadGraphics(void) FreeAllSpritePalettes(); gReservedSpritePaletteCount = 4; - DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites.ptr[3], - postEvoSpecies); + DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[3], + postEvoSpecies, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); @@ -423,9 +423,9 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) const struct CompressedSpritePalette* pokePal; u32 trainerId = GetMonData(mon, MON_DATA_OT_ID); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY); - DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites.ptr[3], - postEvoSpecies); + DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[3], + postEvoSpecies, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); gMain.state++; @@ -487,9 +487,9 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, u8 preEvoSprit sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; - DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites.ptr[1], - postEvoSpecies); + DecompressPicFromTableGender(gMonSpritesGfxPtr->sprites.ptr[1], + postEvoSpecies, + personality); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20);