diff --git a/include/pokedex.h b/include/pokedex.h index 0dfc802312..c558cd1b07 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -8,6 +8,7 @@ void ResetPokedex(void); u16 GetNationalPokedexCount(u8 caseID); u16 GetHoennPokedexCount(u8 caseID); u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality); +u32 Pokedex_CreateCaughtMonSprite(u32 species, s32 x, s32 y); s8 GetSetPokedexFlag(enum NationalDexOrder nationalDexNo, u8 caseID); void DrawFootprint(u8 windowId, u16 species); u16 CreateMonSpriteFromNationalDexNumber(enum NationalDexOrder nationalNum, s16 x, s16 y, u16 paletteSlot); diff --git a/src/pokedex.c b/src/pokedex.c index bcd6cb607d..7f2ebe2d9c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4048,6 +4048,17 @@ static void LoadDexMonPalette(u32 taskId, bool32 isShiny) LoadPalette(paletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); } +u32 Pokedex_CreateCaughtMonSprite(u32 species, s32 x, s32 y) +{ + u32 spriteId; + + SetMultiuseSpriteTemplateToPokemon(species, GetCatchingBattler()); + spriteId = CreateSprite(&gMultiuseSpriteTemplate, x, y, 0); + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].callback = SpriteCallbackDummy; + return spriteId; +} + static void Task_DisplayCaughtMonDexPage(u8 taskId) { u8 spriteId; @@ -4096,11 +4107,8 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) break; case 4: // We're using a different mon sprite creation method, because we don't have enough memory to safely use CreateMonPicSprite. - SetMultiuseSpriteTemplateToPokemon(species, GetCatchingBattler()); - spriteId = CreateSprite(&gMultiuseSpriteTemplate, MON_PAGE_X, MON_PAGE_Y, 0); + spriteId = Pokedex_CreateCaughtMonSprite(species, MON_PAGE_X, MON_PAGE_Y); gTasks[taskId].tMonSpriteId = spriteId; - gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].callback = SpriteCallbackDummy; LoadDexMonPalette(taskId, FALSE); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 49e1016d32..2e4463ac80 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4148,13 +4148,18 @@ void Task_DisplayCaughtMonDexPageHGSS(u8 taskId) gTasks[taskId].tState++; break; case 4: - spriteId = CreateMonSpriteFromNationalDexNumberHGSS(dexNum, MON_PAGE_X, MON_PAGE_Y, 0); - gSprites[spriteId].oam.priority = 0; + { + u32 personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; + const u16 *paletteData = GetMonSpritePalFromSpeciesAndPersonality(species, FALSE, personality); + + spriteId = Pokedex_CreateCaughtMonSprite(species, MON_PAGE_X, MON_PAGE_Y); + LoadPalette(paletteData, OBJ_PLTT_ID(gSprites[spriteId].oam.paletteNum), PLTT_SIZE_4BPP); BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); gTasks[taskId].tMonSpriteId = spriteId; gTasks[taskId].tState++; break; + } case 5: SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -4532,8 +4537,8 @@ static u32 GetPokedexMonPersonality(u16 species) static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { - nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); - return CreateMonPicSprite(nationalNum, FALSE, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); + u32 species = NationalPokedexNumToSpeciesHGSS(nationalNum); + return CreateMonPicSprite(nationalNum, FALSE, GetPokedexMonPersonality(species), TRUE, x, y, paletteSlot, TAG_NONE); } static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum)