Fix hgss pokedex when catching mon with terrain (#7884)
Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
This commit is contained in:
parent
c455665115
commit
e44c9866e7
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user