All the slot machines have their odds randomly generated each play. As such, there is no single slot machine that is good for every player all the time. Generation 3: Generation 3 includes two sets of games: ruby/sapphire/emerald and fire red/leaf green. For Ruby/Sapphire/Emerald, the slots.
- Pokemon Center Slot Machine
- Pokemon Crystal Broken Slot Machine Jackpots
- Pokemon Crystal Slots
- Pokemon Crystal Broken Slot Machine Machines
- Pokemon Slot Machine Trick
Please report any issues on Discord.
Pokémon HeartGold Version and SoulSilver Version |
---|
Also known as: Pocket Monsters HeartGold and SoulSilver (JP/KR), literally “Pokémon Gold Version HeartGold and Silver Version SoulSilver” in all other languages This game has unused areas. |
This article is a work in progress. ...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes. |
Pokémon HeartGold and SoulSilver Versions are remakes of the original Pokémon Gold and Silver.
- 3Leftover Content
- 5Unused Items
- 11Unobtainable Shiny Pokémon
- 17Regional Differences
Subpages
Unused Maps Slot Machines were too good for international players. |
Unused Graphics More leftovers than a Snorlax. |
Moves 468-470
When taught to a Pokémon, data about unused attacks 468, 469 and 470 does not necessarily freeze the game. Such attacks are special, have a power and accuracy of 100 and a PP of 10. Other invalid attacks do not give this data and simply freeze the game as soon as they are recalled, perhaps suggesting that the move database was once intended to end at 470 as a nice round figure rather than 467 (Shadow Force).
Leftover Content
To do: The sprites of the heroes from Platinum still exist in the game, since cheat codes allow them to appear. This whole section should be revised to accurately specify what Platinum content is really missing. In addition, the /pbr/ directory has a lot of Diamond/Pearl/Platinum data. There may be more files of interest in there. |
Files originally found in Pokémon Diamond and Pearl have found their way into HeartGold and SoulSilver.
Item Bag
The sprites for the Diamond/Pearl male hero's item pocket selection's upper screen remain. Missing are the female hero's purse and Platinum's white bags.
Overworld Sprites
Several overworld sprites were not reintroduced in HeartGold and SoulSilver but still exist within the game, such as the associated data for the playable male and female characters (as they appeared in Diamond and Pearl) including their 'berry planting' poses and Gym Leaders (with the exception of Maylene and Crasher Wake, who appear in Celadon and Johto Route 47, respectively).
Slot Machines
Most graphics from the Diamond/Pearl slots game remain, including the Clefairy bonus mode. The slots had a design overhaul in Japan, but were replaced by a Voltorb Flip minigame for everyone else.
The Underground
There are quite a few files related to the huge underground complex found in the three earlier Pokémon DS games. Most (if not all) of the 2D graphics remain, including the traps, radar pinging, and the mining mini-game. It's a possibility that it was going to be remade, being that the walking sprites for both the Diamond/Pearl heroes exist with the other underground files; Platinum's heroes are missing. There is also an entire map header dedicated to the Underground, however, the map matrix responsible for it just reloads the entire Johto and Kanto overworlds.
Audio Data
The sound file (sound_data.sdat) from Diamond/Pearl is still in the game's files, completely unused.
Pokétch Graphics
Pokétch graphics used in Platinum are all still in the game's files, including the two unused graphics from Diamond and Pearl.
Lost Debug Mode
Nearly 2,000 text strings can be found talking about changing values for unknown debugging features. However, the debug menu code is probably lost. This debug mode is apparently based on the one in Platinum, containing references to events such as the Distortion World; it seems more of it survives than in that game.
To see the debug mode strings, please look at the Notes page.
Unused Items
Photo Album
'A nice photo album for storing all the photos taken along your adventure.'
In the final version, photos are stored on your PC instead.
Slowpoke Tail
'A very tasty tail of something. It sells for a high price.'
Existed in the original Gold/Silver, it has been upgraded to a key item but ends up unused.
Lock Capsule
To do: What is the “correct” configuration? |
'A sturdy Capsule that can only be opened with a special key.'
This unreleased event item, intended to be transferred to Black and White to unlock an event there, can be added to the Bag through hacking. Since its only intended purpose is to be transferred to another game, it does absolutely nothing in HeartGold and SoulSilver. However, if the Lock Capsule is obtained by a correctly configured Mystery Gift, then an option to view the Lock Capsule's status will be added to the Mystery Gift menu.
The Lock Capsule can't be found by the Relocator unless this option is unlocked, either – presumably an anti-cheating measure.
Blank Item Data
Blank item data occupying 21 identifiers exists between identifiers 0x0070 (Griseous Orb) and 0x0087 (Adamant Orb). These are perfectly formatted items which do not crash the game, unlike invalid items. They use the error handler '???' as a name and a ? symbol as the picture, suggesting that they may have once been items from Diamond/Pearl when they were still in development.
Unused hex values
To do: Find out more items and list them and their properties |
There are many hex values that go unused and have the same data as the Blank Item Data. It appears that some glitch items above 0x0F00 have similar sprites of already existing items but have a different colour palette. They don't seem to be usable but may possibly connected to other data like map data. In earlier generations, performing an item underflow glitch and swapping some of the items under the cancel button seem to change up the game concluding that the items are connected to other data of the game. It is currently unknown if glitch items in gen 4 connect with other game data.
Unused Wild Held Item Data
Some Pokémon when found in the wild has a chance of holding an item. But several Pokémon can only obtained via evolution or other means, so catching a Pokémon with these items is impossible.
# | Pokémon | Held Items | Note |
---|---|---|---|
026 | Raichu | (5%) Oran Berry | |
036 | Clefable | (5%) Moon Stone (50%) Leppa Berry | |
037 | Vulpix | (50%) Rawst Berry | Available in Soul Silver |
038 | Ninetales | (50%) Rawst Berry | |
052 | Meowth | (5%) Quick Claw | Available in Soul Silver |
053 | Persian | (5%) Quick Claw | Available in Soul Silver |
056 | Mankey | (5%) Payapa Berry | Available in Heart Gold |
057 | Primeape | (5%) Payapa Berry | Available in Heart Gold |
058 | Growlithe | (100%) Rawst Berry | Available in Heart Gold |
059 | Arcanine | (100%) Rawst Berry | |
062 | Poliwrath | (5%) King's Rock | |
065 | Alakazam | (5%) TwistedSpoon | |
075 | Golem | (5%) Everstone Stone | |
091 | Cloyster | (5%) Big Pearl (50%) Pearl | |
110 | Weezing | (5%) Smoke Ball | |
121 | Starmie | (5%) Star Piece (50%) Stardust | |
149 | Dragonite | (5%) Dragon Scale | |
151 | Mew | (100%) Lum Berry | |
172 | Pichu | (5%) Oran Berry | |
173 | Clefa | (5%) Moon Stone (50%) Leppa Berry | |
186 | Politoed | (5%) King's Rock | |
199 | Slowking | (5%) King's Rock | |
230 | Kingdra | (5%) Dragon Scale | |
231 | Phanpy | (5%) Passho Berry | Available in Heart Gold |
232 | Donphan | (5%) Passho Berry | Available in Heart Gold |
242 | Blissey | (5%) Lucky Egg (50%) Oval Stone | |
251 | Celebi | (100%) Lum Berry | |
262 | Mightyena | (5%) Pecha Berry | |
277 | Swellow | (5%) Charti Berry | |
286 | Breloom | (5%) Kebia Berry | |
294 | Loudred | (5%) Chesto Berry | |
295 | Exploud | (5%) Chesto Berry | |
297 | Hariyama | (5%) King's Rock | |
300 | Skitty | (5%) Leppa Berry | |
301 | Delcatty | (5%) Leppa Berry | |
303 | Mawile | (5%) Hard Rock | Available in Soul Silver |
306 | Aggron | (5%) Hard Rock | |
315 | Roselia | (5%) Poison Barb | |
316 | Gulpin | (5%) Big Pearl | Available in Soul Silver |
317 | Swalot | (5%) Big Pearl | |
318 | Carvanha | (5%) Deep Sea Tooth | |
319 | Sharpedo | (5%) Deep Sea Tooth | |
323 | Camerupt | (100%) Rawst Berry | |
326 | Grumpig | (5%) Tenga Berry | |
332 | Cacturne | (5%) Sticky Barb | |
345 | Lileep | (5%) Big Root | |
346 | Cradily | (5%) Big Root | |
351 | Castform | (100%) Mystical Water | |
352 | Kecleon | (5%) Persim Berry | |
362 | Glalie | (5%) Babiri Berry | |
367 | Huntail | (5%) DeepSeaTooth | |
368 | Gorebyss | (5%) DeepSeaScale | |
372 | Shelgon | (5%) Dragon Fang | |
373 | Salamence | (5%) Dragon Fang | |
374 | Beldum | (5%) Metal Coat | |
375 | Metang | (5%) Metal Coat | |
376 | Metagross | (5%) Metal Coat | |
385 | Jirachi | (100%) Star Piece | |
397 | Staravia | (5%) Yache Berry | |
398 | Staraptor | (5%) Yache Berry | |
400 | Bibarel | (5%) Sitrus Berry (50%) Oran Berry | |
407 | Roserade | (5%) Poison Barb | |
413 | Wormadam | (5%) Silver Powder | |
414 | Mothim | (5%) Silver Powder | |
416 | Vespiquen | (5%) Poison Barb | |
419 | Floatzel | (5%) Wacan Berry | |
421 | Cherrim | (5%) Miracle Seed | |
428 | Lopunny | (5%) Chople Berry | |
431 | Glameow | (5%) Cheri Berry | |
432 | Purugly | (5%) Cheri Berry | |
433 | Stunky | (5%) Pecha Berry | |
434 | Skuntank | (5%) Pecha Berry | |
437 | Bronzong | (5%) Metal Coat | |
439 | Mime Jr. | (5%) Leppa Berry | |
440 | Happiny | (5%) Lucky Punch (50%) Oval Stone | |
444 | Gabite | (5%) Haban Berry | |
445 | Garchomp | (5%) Haban Berry | |
446 | Munchlax | (100%) Leftovers | |
452 | Drapion | (5%) Poison Barb | |
454 | Toxicroak | (5%) Black Sludge | |
456 | Finneon | (5%) Rindo Berry | |
457 | Lumineon | (5%) Rindo Berry | |
459 | Snover | (5%) Never-Melt Ice | |
460 | Abomasnow | (5%) Never-Melt Ice | |
461 | Weavile | (5%) Quick Claw (50%) Grip Claw | |
462 | Magnezone | (5%) Metal Coat | |
463 | Lickilicky | (5%) Lagging Tail | |
466 | Electivire | (5%) Electirizer | |
467 | Magmortar | (5%) Magmarizer | |
469 | Yanmega | (5%) Wide Lens | |
476 | Probopass | (5%) Hard Stone | |
477 | Dusknoir | (5%) Kasib Berry | |
478 | Froslass | (5%) Babiri Berry | |
492 | Shaymin | (100%) Lum Berry |
Route 23
Route 23, the huge route on which Victory Road is situated in Pokémon Red/Blue, Yellow, and FireRed/LeafGreen right after the Pokémon League Front Gate on Route 22, is unceremoniously replaced by the Pokémon League Reception Gate in both the original Pokémon Gold/Silver, Crystal, and HeartGold/SoulSilver. However, a small stretch leading from the northern exit of Victory Road to the Indigo Plateau's front door is still identified within Gold/Silver/Crystal as 'Route 23'; in HeartGold and SoulSilver, this stretch is identified as Indigo Plateau.
Nonetheless, the location header for Route 23 is present in HeartGold and SoulSilver.
Unused Text
To do: Find more and put them here. |
There are unused text strings related to the unused Photo Album key item.
Sinjoh Ruins Return Trip
As is well known, the Arceus distributed at Japanese movie theatres and at Toys 'R' Us can enable the player to enter an area called the Sinjoh Ruins and choose between a Level 1 Dialga, Palkia, or Giratina, all holding their signature items.
What is less well known is that the unused Hall of Origin event Arceus within Diamond, Pearl, and Platinum can, if obtained through a hacked Azure Flute or a warp to the Hall, enable a second trip to the Sinjoh Ruins, where the Hiker in the cabin has some different dialog and it is possible to choose one of the dragons that you did not choose the first time (complete with the really creepy cutscene). There is no way to obtain the last dragon whatsoever.
The Hiker in the cabin's special return-trip dialogue:
Arceus ???-Type
Arceus' ???-type form from previous games makes its final appearance here, as Black/White would take out the ???-type entirely.
Unobtainable Shiny Pokémon
For the sake of consistency, every Pokémon in every Pokémon game is given a Shiny variant. Most Shiny Pokémon have been obtainable through random chance encounters or event distributions, including most Legendary Pokémon. However, a few Pokémon cannot be obtained in this form without hacking, and as a consequence, normal players would never be able to see their Shiny coloration.
Arceus
Arceus has a Shiny palette for each of its 18 forms, including the unused ???-type (see above). However, because the only way to obtain it legitimately was through distributions, the Shiny version of Arceus was left unobtainable through normal means. Shiny Arceus was later made available as a distribution via serial code in Omega Ruby and Alpha Sapphire with the purchase of tickets to the 18th Pokémon movie.
Spiky-eared Pichu
The Spiky-eared Pichu from the special Ilex Forest event (unlocked via the Shiny Pichu distribution) has a Shiny palette as well. However, it cannot be obtained as Shiny from the event.
Head Smash Nosepass
Nosepass gained the ability to learn Head Smash as an egg move in these games. Normally, that wouldn't be notable, because everyone and their mother gained the ability to learn Head Smash as an egg move in these games.
Except Nosepass can't breed with anything that learns Head Smash, making the move unobtainable. Oops!
The egg move was removed in Pokémon Black and White and remains unavailable as of Pokémon Ultra Sun and Ultra Moon, despite that an Aegislash or Sudowoodo would be able to pass down the move.
Anti-Piracy
If the game detects it is being played on a flash card or emulator, it will freeze at the start of a battle with the player's Poké Balls constantly spinning. Most emulators are able to avoid triggering this.
Unused Textures
To do: There are models, as mentioned below, that use the unused gym texture. I need to get them appearing in-game and get screenshots. |
There is an unused texture within the 41st tileset in the game, which simply spells 'YoBi'. When translated, it simply means 'preliminary'.
A texture with the word 'gym' on it. It's a placeholder graphic for a placeholder model.
Unused 3D Models
There are unused 3D models for both Dialga and Palkia from the title screen of Diamond & Pearl.
Obsolete References to Gold/Silver/Crystal Features
To do: There are likely more obsolete references in the game; hunting them all down may be quite a task. |
There are several references in the game's dialog to features that were present in the original Gold/Silver/Crystal, but are either no longer present or have been altered in such a way that the references are no longer relevant.
- Kurt in Azalea Town still refers to 'Poké Ball' in the singular form in most of his dialogue. In Gold/Silver, he would only turn one Apricorn at a time into a Poké Ball for the player, whereas in Crystal and HeartGold/SoulSilver the player can give him multiple Apricorns at a time and receive multiple Poké Balls, making his speech slightly awkward. This is probably just a typo.
- In the English versions, the poster on the first floor of the Goldenrod Radio Tower advertising the 'Lucky Channel' remains. This was the radio show in Gold/Silver/Crystal that would broadcast lottery numbers which, if they matched the Trainer ID of any of the player's Pokémon, would allow them to win prizes. The show is no longer broadcasted in HeartGold/SoulSilver, having been replaced by Felicity the lottery attendant behind the counter at the Radio Tower, who tells the player the daily lotto number when spoken to. In the Japanese versions, it refers to the show as だいこうひょうポケモンくじ (The Super-Popular Pokémon Lottery) instead of ラッキーチャンネル as in the originals, indicating that this could have been a new yet scrapped show instead.
Regional Differences
Game Corners
To do: Maybe Voltorb Flip exists in the Japanese ROM too? And check the map IDs to clear up any doubts. |
In all non-Japanese versions of the game, the traditional slot machines were replaced with a Minesweeper/Sudoku hybrid called Voltorb Flip. This was due to then-recent European legislation which automatically prescribes a 12+ rating to any game featuring interactive gambling content. While this same law previously affected Platinum as well, it was only in the European versions of the game. Although the original Game Corner maps from the Japanese version of HeartGold and SoulSilver are no longer accessible in regular gameplay, they still remain within the internal data: the Goldenrod one has a hexadecimal identifier of 0x00B7 and the Celadon one is 0x017D. Read more here.
In the Japanese version, the modified Game Corner maps also exist without events or warps. Their identifiers are 0x0218 (Goldenrod) and 0x0219 (Celadon).
Sage
In the Korean versions, the sprite for Sages was seemingly altered for religious reasons: the prayer beads were removed, the robes were slightly recolored, and a red robe was added on their left shoulder. Their title was also changed to 수행자 (Ascetic); in Gold and Silver, it was 중 (Monk).
GTS Notifications
To do: What about the Korean version? |
In the Japanese version, players could receive e-mail messages stating when a trade on the GTS was complete. In the North American and European versions, players could only receive notifications through Wii Messaging. This change also applies to Pokémon Platinum.
The Pokémon series | |
---|---|
Generation I | Red, Green, & Blue • Yellow Hey You, Pikachu! • Trading Card Game • Pinball • Picross Snap (Demo) • Stadium (Japan) • Stadium (International) • Puzzle League • PokéROM |
Generation II | Gold & Silver (Prototypes) • Crystal (Prototypes) Card GB2 • Puzzle Challenge • Pinball Mini • Stadium 2 (International) Suuji o Tsukamaeyou! |
Generation III | Ruby & Sapphire (German Ruby Debug Version) • FireRed & LeafGreen (Prototype) • Emerald (Prototype) Mystery Dungeon: Red Rescue Team & Blue Rescue Team Pinball: Ruby & Sapphire • Channel • Colosseum • XD • Trozei! • Ranger • Dash Masters Arena • Team Turbo • Poké Ball Launcher |
Generation IV | Diamond & Pearl (Prototypes) • Platinum • HeartGold & SoulSilver • Battle Revolution • My Pokémon Ranch Mystery Dungeon: Explorers of Darkness & Time • Mystery Dungeon: Explorers of Sky • Ranger: Shadows of Almia • Ranger: Guardian Signs PokéPark Wii: Pikachu's Adventure • Rumble |
Generation V | Black & White • Black 2 & White 2 Trading Card Game Online • Learn with Pokémon: Typing Adventure • Conquest • Mystery Dungeon: Gates to Infinity Pokédex 3D • Rumble U |
Generation VI | X & Y • Omega Ruby & Alpha Sapphire Bank & Transporter • Shuffle • Super Mystery Dungeon Pokkén Tournament (Wii U) • GO |
Generation VII | Sun & Moon • Ultra Sun & Ultra Moon • Let's Go, Pikachu! & Let's Go, Eevee! Detective Pikachu • Magikarp Jump |
Generation VIII | Sword & Shield (Prototypes) HOME (iOS/Android) • Mystery Dungeon: Rescue Team DX (Prototype) |
These are known bugs and glitches in the original Pokémon Crystal game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash.
Fixes are written in the diff
format. If you've used Git before, this should look familiar:
Fixes in the multi-player battle engine category will break compatibility with standard Pokémon Gold/Silver/Crystal for link battles, unless otherwise noted. This can be avoided by writing more complicated fixes that only apply if the value at [wLinkMode]
is not LINK_COLOSSEUM
. That's how Crystal itself fixed two bugs in Gold and Silver regarding the moves Reflect and Light Screen and Present.
Contents
- Multi-player battle engine
- Single-player battle engine
- Overworld engine
- Graphics
- Audio
- Text
- Scripted events
- Internal engine routines
Multi-player battle engine
Perish Song and Spikes can leave a Pokémon with 0 HP and not faint
(Video)
Fix: Edit CheckFaint_PlayerThenEnemy
and CheckFaint_EnemyThenPlayer
in engine/battle/core.asm:
Thick Club and Light Ball can make (Special) Attack wrap around above 1024
(Video)
Fix: Edit SpeciesItemBoost
in engine/battle/effect_commands.asm
Metal Powder can increase damage taken with boosted (Special) Defense
(Video)
Fix: Edit DittoMetalPowder
in engine/battle/effect_commands.asm:
Reflect and Light Screen can make (Special) Defense wrap around above 1024
This bug existed for all battles in Gold and Silver, and was only fixed for single-player battles in Crystal to preserve link compatibility.
Fix: Edit TruncateHL_BC
in engine/battle/effect_commands.asm
(This fix also affects Thick Club, Light Ball, and Metal Powder, as described above, but their specific fixes in the above bugs allow more accurate damage calculations.)
Moves with a 100% secondary effect chance will not trigger it in 1/256 uses
(Video)
Fix: Edit BattleCommand_EffectChance
in engine/battle/effect_commands.asm:
Compatibility preservation: If you wish to keep compatibility with standard Pokémon Crystal, you can disable the fix during link battles by also applying the following edit in the same place:
Belly Drum sharply boosts Attack even with under 50% HP
(Video)
Fix: Edit BattleCommand_BellyDrum
in engine/battle/move_effects/belly_drum.asm:
Berserk Gene's confusion lasts for 256 turns or the previous Pokémon's confusion count
(Video)
Fix: Edit HandleBerserkGene
in engine/battle/core.asm:
This makes the Berserk Gene use the regular confusion duration (2–5 turns).
Confusion damage is affected by type-boosting items and Explosion/Self-Destruct doubling
(Video)
Fix:
First, edit wram.asm:
Then edit four routines in engine/battle/effect_commands.asm:
Moves that lower Defense can do so after breaking a Substitute
(Video)
This bug affects Acid, Iron Tail, and Rock Smash.
Fix: Edit DefenseDownHit
in data/moves/effects.asm:
Counter and Mirror Coat still work if the opponent uses an item
(Video)
Fix: Edit BattleCommand_Counter
in engine/battle/move_effects/counter.asm and BattleCommand_MirrorCoat
in engine/battle/move_effects/mirror_coat.asm:
Add this to the end of each file:
A Disabled but PP Up–enhanced move may not trigger Struggle
(Video)
Fix: Edit CheckPlayerHasUsableMoves
in engine/battle/core.asm:
A Pokémon that fainted from Pursuit will have its old status condition when revived
(Video)
Fix: Edit PursuitSwitch
in engine/battle/core.asm
Lock-On and Mind Reader don't always bypass Fly and Dig
This bug affects Attract, Curse, Foresight, Mean Look, Mimic, Nightmare, Spider Web, Transform, and stat-lowering effects of moves like String Shot or Bubble during the semi-invulnerable turn of Fly or Dig.
Fix: Edit CheckHiddenOpponent
in engine/battle/effect_commands.asm:
Beat Up can desynchronize link battles
(Video)
Fix: Edit BattleCommand_BeatUp
in engine/battle/move_effects/beat_up.asm:
Beat Up works incorrectly with only one Pokémon in the party
This bug prevents the rest of Beat Up's effect from being executed if the player or enemy only has one Pokémon in their party while using it. It prevents Substitute from being raised and King's Rock from working.
Fix: Edit BattleCommand_EndLoop
in engine/battle/effect_commands.asm:
Cosmetic fix: This fix does not break compatibility, but it only affects what's shown on the screen for the patched game.
Beat Up may fail to raise Substitute
Fixing this cosmetic bug will not break link battle compatibility.
This bug prevents Substitute from being raised if Beat Up was blocked by Protect or Detect.
Fix: Edit BattleCommand_FailureText
in engine/battle/effect_commands.asm.
Beat Up may trigger King's Rock even if it failed
This bug is caused because Beat Up never sets wAttackMissed
, even when no Pokémon was able to attack (due to being fainted or having a status condition).
Fix: Edit BattleCommand_BeatUpFailText
in engine/battle/move_effects/beat_up.asm:
Present damage is incorrect in link battles
(Video)
This bug existed for all battles in Gold and Silver, and was only fixed for single-player battles in Crystal to preserve link compatibility.
Fix: Edit BattleCommand_Present
in engine/battle/move_effects/present.asm:
Dragon Scale, not Dragon Fang, boosts Dragon-type moves
Fix: Edit ItemAttributes
in data/items/attributes.asm:
HP bar animation is slow for high HP
Fixing this cosmetic bug will not break link battle compatibility.
(Video)
Fix: Edit LongAnim_UpdateVariables
in engine/battle/anim_hp_bar.asm:
HP bar animation off-by-one error for low HP
Fixing this cosmetic bug will not break link battle compatibility.
(Video)
Fix: Edit ShortHPBar_CalcPixelFrame
in engine/battle/anim_hp_bar.asm:
Single-player battle engine
A Transformed Pokémon can use Sketch and learn otherwise unobtainable moves
(Video)
Fix: Edit BattleCommand_Sketch
in engine/battle/move_effects/sketch.asm:
Catching a Transformed Pokémon always catches a Ditto
This bug can affect Mew or Pokémon other than Ditto that used Transform via Mirror Move or Sketch.
Fix: Edit PokeBallEffect
in engine/items/item_effects.asm:
Experience underflow for level 1 Pokémon with Medium-Slow growth rate
(Video)
This can bring Pokémon straight from level 1 to 100 by gaining just a few experience points.
Fix: Edit CalcExpAtLevel
in engine/pokemon/experience.asm:
The Dude's catching tutorial may crash if his Poké Ball can't be used
(Video)
This can occur if your party and current PC box are both full when you start the tutorial.
Fix: Edit PokeBallEffect
in engine/items/item_effects.asm:
Pokemon Center Slot Machine
BRN/PSN/PAR do not affect catch rate
Fix: Edit PokeBallEffect
in engine/items/item_effects.asm:
Moon Ball does not boost catch rate
Fix: Edit MoonBallMultiplier
in engine/items/item_effects.asm:
Love Ball boosts catch rate for the wrong gender
Fix: Edit LoveBallMultiplier
in engine/items/item_effects.asm:
Fast Ball only boosts catch rate for three Pokémon
Fix: Edit FastBallMultiplier
in engine/items/item_effects.asm:
Heavy Ball uses wrong weight value for three Pokémon
Fix: Edit GetPokedexEntryBank
in engine/items/item_effects.asm:
Glacier Badge may not boost Special Defense depending on the value of Special Attack
Pokemon Crystal Broken Slot Machine Jackpots
As Pryce's dialog ('That BADGE will raise the SPECIAL stats of POKéMON.') implies, Glacier Badge is intended to boost both Special Attack and Special Defense. However, due to BoostStat overwriting a
when boosting Special Attack, the Special Defense boost will not happen if the unboosted Special Attack stat is either 0–205 or 433–660.
Fix: Edit BadgeStatBoosts.CheckBadge
in engine/battle/core.asm:
'Smart' AI encourages Mean Look if its own Pokémon is badly poisoned
(Video)
Fix: Edit AI_Smart_MeanLook
in engine/battle/ai/scoring.asm:
AI makes a false assumption about CheckTypeMatchup
Fix: Edit BattleCheckTypeMatchup
in engine/battle/effect_commands.asm:
AI use of Full Heal or Full Restore does not cure Nightmare status
(Video)
Fix: Edit AI_HealStatus
in engine/battle/ai/items.asm:
AI use of Full Heal does not cure confusion status
Fix: Edit EnemyUsedFullRestore
, EnemyUsedFullHeal
, and AI_HealStatus
in engine/battle/ai/items.asm:
Wild Pokémon can always Teleport regardless of level difference
Fix: Edit BattleCommand_Teleport
in engine/battle/move_effects/teleport.asm:
HELD_CATCH_CHANCE
has no effect
Fix: Edit PokeBallEffect
in engine/items/item_effects.asm:
Credits sequence changes move selection menu behavior
(Video)
To select a move in battle, you have to press and release the Up or Down buttons. However, after playing the credits sequence, holding down either button will continuously scroll through the moves.
Fix: Edit Credits
in engine/movie/credits.asm:
The [hInMenu]
value determines this button behavior. However, the battle moves menu doesn't actually set [hInMenu]
to anything, so either behavior may have been intentional. The default 0 prevents continuous scrolling; a value of 1 allows it. (The Japanese release sets it to 0.)
Pokemon Crystal Slots
Optional fix: To explicitly set a [hInMenu]
for the moves menu, edit BattleTurn
in engine/battle/core.asm:
Overworld engine
LoadMetatiles
wraps around past 128 blocks
This bug prevents you from using blocksets with more than 128 blocks.
Fix: Edit LoadMetatiles
in home/map.asm:
Surfing directly across a map connection does not load the new map
(Video)
Fix:
First, edit UsedSurfScript
in engine/events/overworld.asm:
Then edit SurfStartStep
in engine/overworld/player_object.asm:
This fix will make the player enter the water at a normal walking speed, not with a slow step.
Swimming NPCs aren't limited by their movement radius
This bug is why the Lapras in maps/UnionCaveB2F.asm, which uses SPRITEMOVEDATA_SWIM_WANDER
, is not restricted by its 1, 1
movement radius.
Fix: Edit CanObjectMoveInDirection
in engine/overworld/npc_movement.asm:
Graphics
In-battle “…
” ellipsis is too high
This is a mistake with the “…
” tile in gfx/battle/hp_exp_bar_border.png:
Fix: Lower the ellipsis by two pixels:
Two tiles in the port
tileset are drawn incorrectly
This is a mistake with the left-hand warp carpet corner tiles in gfx/tilesets/port.png:
Fix: Adjust them to match the right-hand corner tiles:
Using a Park Ball in non-Contest battles has a corrupt animation
(Video)
Fix: Edit PokeBallEffect
in engine/items/item_effects.asm:
Battle transitions fail to account for the enemy's level
(Video)
There are three things wrong here:
wEnemyMonLevel
isn't initialized yetwBattleMonLevel
gets overwritten after it's initialized byFindFirstAliveMonAndStartBattle
wBattleMonLevel
isn't initialized until much later when the battle is with a trainer
Fix:
First, edit engine/battle/battle_transition.asm:
Then edit engine/battle/start_battle.asm:
Finally, edit engine/battle/read_trainer_party.asm:
Some trainer NPCs have inconsistent overworld sprites
Some of these may have been intentional behavior; use your own judgment for whether to fix them.
Most trainer classes always use the same sprite and color for their overworld NPCs. There are some exceptions:
- maps/FastShipCabins_SE_SSE_CaptainsCabin.asm:
TrainerPsychicRodney
should useSPRITE_YOUNGSTER
, notSPRITE_SUPER_NERD
- maps/LakeOfRage.asm:
TrainerFisherAndre
andTrainerFisherRaymond
should usePAL_NPC_GREEN
, notPAL_NPC_BLUE
- maps/Route13.asm:
TrainerHikerKenny
should usePAL_NPC_BROWN
, notPAL_NPC_RED
- maps/Route44.asm:
TrainerBirdKeeperVance1
should usePAL_NPC_BLUE
, notPAL_NPC_GREEN
- maps/Route44.asm:
TrainerPokemaniacZach
should usePAL_NPC_BLUE
, notPAL_NPC_GREEN
- maps/UnionCaveB2F.asm:
TrainerCooltrainermNick
should useSPRITE_COOLTRAINER_M
, notSPRITE_ROCKER
- maps/FuchsiaPokecenter1F.asm:
FuchsiaPokecenter1FNurseScript
should usePAL_NPC_RED
, notPAL_NPC_GREEN
Most of the NPCs in maps/NationalParkBugContest.asm and maps/Route36NationalParkGate.asm are also inconsistent with their trainers from other maps:
BugCatchingContestant1AScript
andBugCatchingContestant1BScript
:BUG_CATCHER DON
from maps/Route30.asm should useSPRITE_BUG_CATCHER
andPAL_NPC_BROWN
, notSPRITE_YOUNGSTER
andPAL_NPC_RED
BugCatchingContestant2AScript
andBugCatchingContestant2BScript
:BUG_CATCHER ED
from maps/Route2.asm should useSPRITE_BUG_CATCHER
andPAL_NPC_BROWN
, notSPRITE_YOUNGSTER
andPAL_NPC_GREEN
BugCatchingContestant3AScript
andBugCatchingContestant3BScript
:COOLTRAINERM NICK
from maps/UnionCaveB2F.asm should useSPRITE_COOLTRAINER_M
andPAL_NPC_RED
, notSPRITE_ROCKER
andPAL_NPC_BLUE
BugCatchingContestant4AScript
andBugCatchingContestant4BScript
:POKEFANM WILLIAM
from maps/NationalPark.asm should usePAL_NPC_RED
, notPAL_NPC_BROWN
BugCatchingContestant5AScript
andBugCatchingContestant5BScript
:BUG_CATCHER BENNY
from maps/AzaleaGym.asm should useSPRITE_BUG_CATCHER
andPAL_NPC_BROWN
, notSPRITE_YOUNGSTER
andPAL_NPC_RED
BugCatchingContestant7AScript
andBugCatchingContestant7BScript
:PICNICKER CINDY
from maps/FuchsiaGym.asm should usePAL_NPC_GREEN
, notPAL_NPC_BLUE
BugCatchingContestant8AScript
andBugCatchingContestant8BScript
:BUG_CATCHER JOSH
from maps/AzaleaGym.asm should useSPRITE_BUG_CATCHER
andPAL_NPC_BROWN
, notSPRITE_YOUNGSTER
andPAL_NPC_RED
BugCatchingContestant9AScript
andBugCatchingContestant9BScript
:YOUNGSTER SAMUEL
from maps/Route34.asm should usePAL_NPC_BLUE
, notPAL_NPC_GREEN
(Note that maps/Route8.asm has three BIKER
s, DWAYNE
, HARRIS
, and ZEKE
, that use PAL_NPC_RED
, PAL_NPC_GREEN
, and PAL_NPC_BLUE
instead of PAL_NPC_BROWN
; this is intentional since they're the 'Kanto Pokémon Federation'.)
(The use of SPRITE_ROCKER
instead of SPRITE_COOLTRAINER_M
for COOLTRAINERM NICK
may also be an intentional reference to the player's brother from the Space World '97 beta.)
Audio
Slot machine payout sound effects cut each other off
Pokemon Crystal Broken Slot Machine Machines
(Video)
Fix: Edit SlotsAction_PayoutAnim
in engine/games/slot_machine.asm:
Team Rocket battle music is not used for Executives or Scientists
Fix: Edit PlayBattleMusic
in engine/battle/start_battle.asm:
No bump noise if standing on tile $3E
Fix: Edit DoPlayerMovement.CheckWarp
in engine/overworld/player_movement.asm:
Playing Entei's Pokédex cry can distort Raikou's and Suicune's
(Video)
The exact cause of this bug is unknown.
Workaround: Edit DexEntryScreen_MenuActionJumptable.Cry
in engine/pokedex/pokedex.asm:
Text
Five-digit experience gain is printed incorrectly
(Video)
Fix: Edit _BoostedExpPointsText
and _ExpPointsText
in data/text/common_2.asm:
Only the first three evolution entries can have Stone compatibility reported correctly
Workaround: Edit PlacePartyMonEvoStoneCompatibility.DetermineCompatibility
in engine/pokemon/party_menu.asm:
This supports up to six entries.
EVOLVE_STAT
can break Stone compatibility reporting
Fix: Edit PlacePartyMonEvoStoneCompatibility.DetermineCompatibility
in engine/pokemon/party_menu.asm:
A 'HOF Master!' title for 200-Time Famers is defined but inaccessible
(Video)
Fix: Edit _HallOfFamePC.DisplayMonAndStrings
in engine/events/halloffame.asm:
Scripted events
Clair can give TM24 Dragonbreath twice
(Video)
Fix: Edit DragonsDen1F_MapScripts
in maps/DragonsDen1F.asm:
Daisy's grooming doesn't always increase happiness
This is a bug with HaircutOrGrooming
in engine/events/haircut.asm:
Fix: Edit data/events/happiness_probabilities.asm:
Magikarp in Lake of Rage are shorter, not longer
Fix: Edit LoadEnemyMon.CheckMagikarpArea
in engine/battle/core.asm:
Magikarp length limits have a unit conversion error
Fix: Edit LoadEnemyMon.CheckMagikarpArea
in engine/battle/core.asm:
Better fix: Rewrite the whole system to use millimeters instead of feet and inches, since they have better precision (1 in = 25.4 mm); and only convert from metric to imperial units for display purposes (or don't, of course).
Magikarp lengths can be miscalculated
Fix: Edit CalcMagikarpLength.BCLessThanDE
in engine/events/magikarp.asm:
CheckOwnMon
only checks the first five letters of OT names
(Video)
This bug can allow you to talk to Eusine in Celadon City and encounter Ho-Oh with only traded legendary beasts.
Fix: Edit CheckOwnMon
in engine/pokemon/search.asm:
CheckOwnMonAnywhere
does not check the Day-Care
This may have been intentional behavior; use your own judgment for whether to fix it.
This bug can prevent you from talking to Eusine in Celadon City or encountering Ho-Oh when a caught legendary beast is in the Day-Care.
Fix: Edit CheckOwnMonAnywhere
in engine/pokemon/search.asm:
Internal engine routines
Saves corrupted by mid-save shutoff are not handled
(Video 1, Video 2)
This does not have a simple and accurate fix. It would involve redesigning parts of the save system for Pokémon boxes.
ScriptCall
can overflow wScriptStack
and crash
Fix: Edit ScriptCall
in engine/overworld/scripting.asm:
LoadSpriteGFX
does not limit the capacity of UsedSprites
Fix: Edit LoadSpriteGFX
in engine/overworld/overworld.asm:
ChooseWildEncounter
doesn't really validate the wild Pokémon species
Fix: Edit ChooseWildEncounter
in engine/overworld/wildmons.asm:
TryObjectEvent
arbitrary code execution
Fix: Edit TryObjectEvent
in engine/overworld/events.asm:
ReadObjectEvents
overflows into wObjectMasks
Fix: Edit ReadObjectEvents
in home/map.asm:
ClearWRAM
only clears WRAM bank 1
Pokemon Slot Machine Trick
Fix: Edit ClearWRAM
in home/init.asm:
BattleAnimCmd_ClearObjs
only clears the first 6⅔ objects
Fix: Edit BattleAnimCmd_ClearObjs
in engine/battle_anims/anim_commands.asm: