From b632b469c215b30b133108b4f247d3b8d7d436c6 Mon Sep 17 00:00:00 2001 From: thornAvery <145814585+thornAvery@users.noreply.github.com> Date: Thu, 4 Sep 2025 19:48:15 +1000 Subject: [PATCH] Shiny Pokedex Fix + Personal Gripe (#79) * Tossing balls lag back to Crystal levels * reversed order of text speed options * fixed shiny palette on pokedex new entry * fixed shiny palette on pokedex new entry + gamecorner * added fix to celadon too --------- Co-authored-by: Thorn Avery --- data/events/special_pointers.asm | 1 + engine/events/specials.asm | 15 ++++++++++++--- engine/items/item_effects.asm | 9 +++++++++ engine/menus/options_menu.asm | 6 +++--- engine/pokemon/move_mon.asm | 18 +++++++++++++++++- maps/CeladonGameCornerPrizeRoom.asm | 6 ++++++ maps/GoldenrodGameCorner.asm | 6 ++++++ ram/wram.asm | 1 + 8 files changed, 55 insertions(+), 7 deletions(-) diff --git a/data/events/special_pointers.asm b/data/events/special_pointers.asm index 1f1a1ae..1f9c8d8 100644 --- a/data/events/special_pointers.asm +++ b/data/events/special_pointers.asm @@ -69,6 +69,7 @@ SpecialsPointers:: add_special UpdateSprites ; bank 0 add_special UpdatePlayerSprite ; bank 0 add_special GameCornerPrizeMonCheckDex + add_special GameCornerPrizeMonShowDex add_special UnusedSetSeenMon ; unused add_special WaitSFX ; bank 0 add_special PlayMapMusic ; bank 0 diff --git a/engine/events/specials.asm b/engine/events/specials.asm index 10cf094..645eabb 100644 --- a/engine/events/specials.asm +++ b/engine/events/specials.asm @@ -236,17 +236,26 @@ SetPlayerPalette: ret GameCornerPrizeMonCheckDex: + xor a + ld [wPokedexShinyToggle], a + ld [wWasMonCaught], a ld a, [wScriptVar] call CheckCaughtMon ret nz - ld a, [wScriptVar] - call SetSeenAndCaughtMon + ld a, 1 + ld [wWasMonCaught], a + ret + +GameCornerPrizeMonShowDex: + ld a, [wWasMonCaught] + cp 0 + ret z call FadeToMenu ld a, [wScriptVar] ld [wNamedObjectIndex], a farcall NewPokedexEntry call ExitAllMenus - ret + ret UnusedSetSeenMon: ld a, [wScriptVar] diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index 51c3b0f..1cd551a 100644 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -532,6 +532,15 @@ PokeBallEffect: ld a, [wEnemyMonSpecies] ld [wTempSpecies], a + farcall BattleCheckEnemyShininess + jp c, .shiny + xor a + jp .shinycont +.shiny + xor a + inc a +.shinycont + ld [wPokedexShinyToggle], a predef NewPokedexEntry .skip_pokedex diff --git a/engine/menus/options_menu.asm b/engine/menus/options_menu.asm index 6bb630f..8d1626c 100644 --- a/engine/menus/options_menu.asm +++ b/engine/menus/options_menu.asm @@ -114,9 +114,9 @@ GetOptionPointer: Options_TextSpeed: call GetTextSpeed ldh a, [hJoyPressed] - bit D_LEFT_F, a - jr nz, .LeftPressed bit D_RIGHT_F, a + jr nz, .RightPressed + bit D_LEFT_F, a jr z, .NonePressed ld a, c ; right pressed cp OPT_TEXT_SPEED_NONE @@ -128,7 +128,7 @@ Options_TextSpeed: ld a, e jr .Save -.LeftPressed: +.RightPressed: ld a, c and a jr nz, .Decrease diff --git a/engine/pokemon/move_mon.asm b/engine/pokemon/move_mon.asm index de10b57..c9a4f89 100644 --- a/engine/pokemon/move_mon.asm +++ b/engine/pokemon/move_mon.asm @@ -210,8 +210,24 @@ endr inc de ld a, c ld [de], a - inc de + ; Set Shininess for New Dex Entry + dec de + ld b, d + ld c, e + farcall CheckShininess + jp c, .shiny + xor a + jp .shinycont +.shiny + xor a + inc a +.shinycont + ld [wPokedexShinyToggle], a + ; Unclobber de + inc de + inc de + ; Initialize PP. push hl push de diff --git a/maps/CeladonGameCornerPrizeRoom.asm b/maps/CeladonGameCornerPrizeRoom.asm index 55ab9aa..65cc864 100644 --- a/maps/CeladonGameCornerPrizeRoom.asm +++ b/maps/CeladonGameCornerPrizeRoom.asm @@ -154,6 +154,8 @@ CeladonGameCornerPrizeRoomPokemonVendor: loadmonindex 1, PIKACHU special GameCornerPrizeMonCheckDex givepoke PIKACHU, 25 + loadmonindex 1, PIKACHU + special GameCornerPrizeMonShowDex takecoins CELADONGAMECORNERPRIZEROOM_PIKACHU_COINS sjump .loop @@ -172,6 +174,8 @@ CeladonGameCornerPrizeRoomPokemonVendor: loadmonindex 2, PORYGON special GameCornerPrizeMonCheckDex givepoke PORYGON, 15 + loadmonindex 2, PORYGON + special GameCornerPrizeMonShowDex takecoins CELADONGAMECORNERPRIZEROOM_PORYGON_COINS sjump .loop @@ -190,6 +194,8 @@ CeladonGameCornerPrizeRoomPokemonVendor: loadmonindex 3, LARVITAR special GameCornerPrizeMonCheckDex givepoke LARVITAR, 40 + loadmonindex 3, LARVITAR + special GameCornerPrizeMonShowDex takecoins CELADONGAMECORNERPRIZEROOM_LARVITAR_COINS sjump .loop diff --git a/maps/GoldenrodGameCorner.asm b/maps/GoldenrodGameCorner.asm index 4d5ae20..c298696 100644 --- a/maps/GoldenrodGameCorner.asm +++ b/maps/GoldenrodGameCorner.asm @@ -190,6 +190,8 @@ GoldenrodGameCornerPrizeMonVendorScript: loadmonindex 1, ABRA special GameCornerPrizeMonCheckDex givepoke ABRA, 5 + loadmonindex 1, ABRA + special GameCornerPrizeMonShowDex takecoins GOLDENRODGAMECORNER_ABRA_COINS sjump .loop @@ -208,6 +210,8 @@ GoldenrodGameCornerPrizeMonVendorScript: loadmonindex 2, CUBONE special GameCornerPrizeMonCheckDex givepoke CUBONE, 15 + loadmonindex 2, CUBONE + special GameCornerPrizeMonShowDex takecoins GOLDENRODGAMECORNER_CUBONE_COINS sjump .loop @@ -226,6 +230,8 @@ GoldenrodGameCornerPrizeMonVendorScript: loadmonindex 3, WOBBUFFET special GameCornerPrizeMonCheckDex givepoke WOBBUFFET, 15 + loadmonindex 3, WOBBUFFET + special GameCornerPrizeMonShowDex takecoins GOLDENRODGAMECORNER_WOBBUFFET_COINS sjump .loop diff --git a/ram/wram.asm b/ram/wram.asm index 5d4b7a0..018c963 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -739,6 +739,7 @@ wPokedexDisplayNumber:: dw wDexLastSeenIndex:: db ; index into wPokedexSeen containing the last non-zero value wDexLastSeenValue:: db ; value at index wDexTempCounter:: dw +wWasMonCaught:: db ; for use with givepoke wPokedexDataEnd:: wPrevDexEntry:: dw