From 675957c24ace17038ee373b1ae0930f6c1b36a29 Mon Sep 17 00:00:00 2001 From: TheXaman <48356183+TheXaman@users.noreply.github.com> Date: Sun, 15 May 2022 00:41:35 +0200 Subject: [PATCH] new caught mon page should now show proper form in PE --- include/pokedex.h | 2 +- src/battle_script_commands.c | 2 +- src/pokedex.c | 24 ++++++++++++++++++------ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/pokedex.h b/include/pokedex.h index 36a48da1e5..c1a1c0800d 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -35,7 +35,7 @@ void ResetPokedex(void); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); -u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality); +u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); bool16 HasAllHoennMons(void); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3c8bbfdee4..338d203b15 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9979,7 +9979,7 @@ static void Cmd_displaydexinfo(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(SpeciesToNationalPokedexNum(species), + gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species, gBattleMons[gBattlerTarget].otId, gBattleMons[gBattlerTarget].personality); gBattleCommunication[0]++; diff --git a/src/pokedex.c b/src/pokedex.c index a7ba0e9e78..d4cd78e1f1 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4421,7 +4421,7 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) } #define tState data[0] -#define tDexNum data[1] +#define tSpecies data[1] #define tPalTimer data[2] #define tMonSpriteId data[3] #define tOtIdLo data[12] @@ -4429,12 +4429,12 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) #define tPersonalityLo data[14] #define tPersonalityHi data[15] -u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) +u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) { u8 taskId = CreateTask(Task_DisplayCaughtMonDexPage, 0); gTasks[taskId].tState = 0; - gTasks[taskId].tDexNum = dexNum; + gTasks[taskId].tSpecies = species; gTasks[taskId].tOtIdLo = otId; gTasks[taskId].tOtIdHi = otId >> 16; gTasks[taskId].tPersonalityLo = personality; @@ -4445,7 +4445,8 @@ u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality) static void Task_DisplayCaughtMonDexPage(u8 taskId) { u8 spriteId; - u16 dexNum = gTasks[taskId].tDexNum; + u16 species = gTasks[taskId].tSpecies; + u16 dexNum = SpeciesToNationalPokedexNum(species); switch (gTasks[taskId].tState) { @@ -4469,11 +4470,18 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) sPokedexView = AllocZeroed(sizeof(struct PokedexView)); //for type icons ResetPokedexView(sPokedexView); + #ifdef POKEMON_EXPANSION + if (gFormSpeciesIdTables[species] != NULL) + sPokedexView->formSpecies = species; + else + sPokedexView->formSpecies = 0; + #endif + LoadTilesetTilemapHGSS(INFO_SCREEN); FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, gTasks[taskId].tDexNum); + DrawFootprint(WIN_FOOTPRINT, dexNum); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4567,7 +4575,7 @@ static void Task_ExitCaughtMonPage(u8 taskId) if (buffer) Free(buffer); - species = NationalPokedexNumToSpecies(gTasks[taskId].tDexNum); + species = gTasks[taskId].tSpecies; otId = ((u16)gTasks[taskId].tOtIdHi << 16) | (u16)gTasks[taskId].tOtIdLo; personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; @@ -5262,7 +5270,11 @@ static u32 GetPokedexMonPersonality(u16 species) u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); + #ifndef POKEMON_EXPANSION return CreateMonPicSprite_HandleDeoxys(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); + #else + return CreateMonPicSprite(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); + #endif } static u16 CreateSizeScreenTrainerPic(u16 species, s16 x, s16 y, s8 paletteSlot)