From fd87a79b277e23aad952002b08486423777013e1 Mon Sep 17 00:00:00 2001 From: sneed <56992013+Sneed69@users.noreply.github.com> Date: Mon, 15 Apr 2024 00:23:14 +0300 Subject: [PATCH] Pokedex plus defaults to male icons and front pics (#4390) * Pokedex defaults to male icons and front pics * Choose palette from personality * Unknown icon matches front pic --- src/pokedex_plus_hgss.c | 43 ++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index db80b2dc19..b65f60dc65 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -4548,6 +4548,8 @@ static u8 PrintCryScreenSpeciesName(u8 windowId, u16 num, u8 left, u8 top) return i; } +#define MALE_PERSONALITY 0xFE + // Unown and Spinda use the personality of the first seen individual of that species // All others use personality 0 static u32 GetPokedexMonPersonality(u16 species) @@ -4561,7 +4563,7 @@ static u32 GetPokedexMonPersonality(u16 species) } else { - return 0; + return MALE_PERSONALITY; } } @@ -4925,9 +4927,11 @@ static void Task_LoadStatsScreen(u8 taskId) if (gTasks[taskId].data[1] == 0) { //Icon + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - gTasks[taskId].data[6] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + gTasks[taskId].data[6] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4]].oam.priority = 0; } gMain.state++; @@ -6059,13 +6063,15 @@ static void Task_LoadEvolutionScreen(u8 taskId) case 3: if (gTasks[taskId].data[1] == 0) { + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); sPokedexView->selectedScreen = EVO_SCREEN; ResetEvoScreenDataStruct(); //Icon FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - PrintPreEvolutions(taskId, NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); - gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + PrintPreEvolutions(taskId, species); + gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18 + 32*sPokedexView->numPreEvolutions, 31, 4, personality); //Create pokemon sprite EvoFormsPage_PrintNavigationButtons(); // Navigation buttons gSprites[gTasks[taskId].data[4]].oam.priority = 0; } @@ -6247,11 +6253,12 @@ static void HandleTargetSpeciesPrint(u8 taskId, u16 targetSpecies, u16 previousT if (base_i < iterations) { - LoadMonIconPalette(targetSpecies); //Loads pallete for current mon + u32 personality = GetPokedexMonPersonality(targetSpecies); + LoadMonIconPalettePersonality(targetSpecies, personality); //Loads pallete for current mon if (isEevee) - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 45 + 26*base_i, 31, 4, personality); //Create pokemon sprite else - gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+base_i] = CreateMonIcon(targetSpecies, SpriteCB_MonIcon, 50 + 32*base_i, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; } } @@ -6292,8 +6299,9 @@ static void HandlePreEvolutionSpeciesPrint(u8 taskId, u16 preSpecies, u16 specie if (base_i < 3) { - LoadMonIconPalette(preSpecies); //Loads pallete for current mon - gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, 0); //Create pokemon sprite + u32 personality = GetPokedexMonPersonality(preSpecies); + LoadMonIconPalettePersonality(preSpecies, personality); //Loads pallete for current mon + gTasks[taskId].data[4+base_i] = CreateMonIcon(preSpecies, SpriteCB_MonIcon, 18 + 32*base_i, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+base_i]].oam.priority = 0; } } @@ -6765,9 +6773,11 @@ static void Task_LoadFormsScreen(u8 taskId) if (gTasks[taskId].data[1] == 0) { //Icon + u32 species = NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum); + u32 personality = GetPokedexMonPersonality(species); FreeMonIconPalettes(); //Free space for new pallete - LoadMonIconPalette(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum)); //Loads pallete for current mon - gTasks[taskId].data[4] = CreateMonIcon(NationalPokedexNumToSpeciesHGSS(sPokedexListItem->dexNum), SpriteCB_MonIcon, 18, 31, 4, 0); //Create pokemon sprite + LoadMonIconPalettePersonality(species, personality); //Loads pallete for current mon + gTasks[taskId].data[4] = CreateMonIcon(species, SpriteCB_MonIcon, 18, 31, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4]].oam.priority = 0; } EvoFormsPage_PrintNavigationButtons(); // Navigation buttons @@ -6946,13 +6956,14 @@ static void PrintForms(u8 taskId, u16 species) continue; else { + u32 personality = GetPokedexMonPersonality(speciesForm); sPokedexView->sFormScreenData.formIds[j++] = i; times += 1; - LoadMonIconPalette(speciesForm); //Loads pallete for current mon + LoadMonIconPalettePersonality(speciesForm, personality); //Loads pallete for current mon if (times < 7) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 52 + 34*(times-1), 31, 4, personality); //Create pokemon sprite else if (times < 14) - gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, 0); //Create pokemon sprite + gTasks[taskId].data[4+times] = CreateMonIcon(speciesForm, SpriteCB_MonIcon, 18 + 34*(times-7), 70 - y_offset_icons, 4, personality); //Create pokemon sprite gSprites[gTasks[taskId].data[4+times]].oam.priority = 0; } }