If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Bugs:Pokémon Gold and Silver

From The Cutting Room Floor
Jump to navigation Jump to search
Other languages:
English • ‎español • ‎français • ‎polski • ‎한국어

This page details bugs of Pokémon Gold and Silver.

Pokémon Gold and Silver has some major bugs, alongside more minor ones.

Overworld bugs

Uninitialized SRAM glitch

The game does not properly initialize the SRAM for the game's boxes until the game is saved at least once. Under normal circumstances, this is not a problem, because the game forces a save whenever you use the PC.

However, if you beat the entire game on a clear SRAM without saving (using Up+Select+B on the title screen to erase an existing game save if there is one), the game autosaves once you reach the Hall of Fame, and that save does not initialize any boxes except for Box 1. As such, if after beating the game you go to the PC and use the "Move PkMn w/o mail" option to move Pokémon to Box 2 (or any box that is not Box 1), you will get glitch Pokémon.

Time Capsule glitch

Generation I Pokémon that evolve through trading (Graveler, Kadabra, Machoke and Haunter) can sidestep the check that prevents Pokémon with Generation II moves to be sent back to Generation I.

To do this, they must be traded at the exact level they would learn a move in Generation II after evolving (for example, a Level 34 Graveler sent to Generation II will evolve to Golem and then immediately learn Rollout). After sending the Pokémon to Generation II, they will evolve and learn the move. From there, they can be immediately sent back to Generation I, and that will not trigger the move check. Any Generation II exclusive moves will become glitch moves in Generation I.

Battle Engine bugs

Perish Song/Spikes bug

If both Perish Song and Spikes are cast on a player, and the Pokémon faints from Perish Song and the next Pokémon has a low enough HP to immediately faint from Spikes if sent in, that Pokémon will end up with 0 HP but not actually faint until the end of the next turn (unless healed before the turn is over). This is because Perish Song is special cased in the code and doesn't run the faint code again after a Pokémon switches in.

Stat wraparound bugs

The first bug was carried over from the Generation I games, while the second and third bug is new to the Generation II games. The first two bugs were fixed for Crystal in single player, but are emulated in link battles to preserve compatibility. The third bug was not fixed in any version.

  • The moves Reflect and Light Screen do not have any boundary checks at all. If Reflect or Light Screen would cause the user's accumulated Defense/Special Defense to rise above 1023, the stat will wrap around to 0.
  • The held items Thick Club and Light Ball also do not have any boundary checks. If Thick Club or Light Ball would cause the user's accumulated Attack/Special Attack to rise above 1023, the stat will wrap around to 0.
  • The held item Metal Powder behaves the same with regards to Defense/Special Defense, but unlike Thick Club and Light Ball, its check is run after the overflow failsafe, so it works even in Crystal.

1/256 Secondary Effect bug

While the original 1/256 miss bug from Generation I was fixed here, secondary effects of moves still have a 1/256 chance of not occurring, even if they're supposed to happen 100% of the time. This affects the moves DynamicPunch, Zap Cannon, Thief, Mud-Slap and Icy Wind.

Belly Drum bug

Belly Drum will boost the user's Attack by two stages even if the move itself fails due to the HP being too low. This is because the Attack stat boost occurs before the check whether the user has enough HP to use the move.

Berserk Gene bug

The Berserk Gene does not initialize the Confusion counter properly. As a result, it lasts either until the counter wraps around after 256 turns, or, if a Pokémon with Berserk Gene switches in for a confused Pokémon, for the remaining duration of that Pokémon's Confusion counter.

Confusion Damage bug

If a Pokémon hurts itself due to confusion, the damage caused is boosted by any held items that boost moves of a specific type. If Explosion or Self-Destruct were selected, the damage output of Confusion damage is doubled.

Acid/Iron Tail/Rock Smash bug

Moves that reduce the target's defense (Acid, Iron Tail, Rock Smash) erroneously run the secondary effect check twice. The result is that they can lower the Defense of a Pokémon that has a Substitute up if the move breaks the Substitute.

Disable/Struggle bug

A move that has had PP Ups applied to it and is Disabled by the opponent's Pokémon is not properly recognized as unusable for the purposes of using Struggle. This can lead to a softlock if all of the other Pokémon's moves are actually unusable (such as due to being out of PP).

Sketch glitch

A transformed Pokémon that uses Sketch will permanently learn the move acquired through Sketch. The move can then be passed down as an egg move if the transformed Pokémon was a Ditto (or a male Pokémon that has used Transform through Metronome). Since no trainers in the game have Smeargle and wild Smeargle don't have any moves other than Sketch, exploiting this bug requires sending a trainer with a specially crafted team through Mystery Gift.

Looking at the code reveals that a check was supposed to be implemented for this case, but it errneously checks for the opponent being transformed and not the user.

Broken Apricorn Balls bug

Quite a few of Kurt's Poké Balls have broken effects that cause them to only partially work, not work at all, or work in an unintended way. All but one of the Poké Balls work the same as a regular Poké Ball if the conditions are not met.

The Fast Ball is supposed to multiply the Pokémon's catch rate by 4 if they're able to flee, but because of an error it only has an effect on Magnemite, Tangela and Grimer. This is because the code that's supposed to loop through the entries of the three tables that define how often a Pokémon will try to flee stops at the third entry in the first table, rather than the last entry in the third table.

The Level Ball's effect, while coded correctly, doesn't take the opposing Pokémon's health and status into account. This results in the catch rate being the same if used at a healthy Pokémon as if used on a sleeping Pokémon with 1 HP. When used on a Pokémon whos level is higher than the player's, the regular catch rate formula is still completely discarded -- including the code that divides the Pokémon's catch rate by 3x if they're at full HP.

The Love Ball increases catch rate only if the opposing Pokémon is of the same gender as the player's, which is the exact opposite of how it's supposed to work in-game. This is due to a simple typo where the game checks if the result of checking the Pokémon's genders was not zero, meaning that the code continues on with multiplying the catch rate if the result was zero.

The Moon Ball is supposed to multiply the opposing Pokémon's catch rate by 4x if they evolve with a Moon Stone. However, this fails because the check for what item the Pokémon evolves with looks for 0A, which was the Moon Stone's index value in Generation I. In Generation II, 0A is instead the Burn Heal.

Teleport bug

Wild Pokémon will always succeed at using Teleport, even if its level is lower than the player Pokémon's level. This is not intentional behavior; the RNG roll that determines whether Teleport should succeed in this situation always steps into the next instruction (which triggers the escape sequence) regardless of the outcome.

Present bug

The damage formula for Present is completely broken; the level, user's Attack, and opponent's Defense are erroneously not pushed to the stack and get overwritten when the game checks the type matchups. As a result, the level will be based on the opponent's type, the Attack will be 10 (or 5 if the opponent resists Normal-type moves, i. e. is a Rock- or Steel-type) and the Defense will be based on the user's type (or secondary type in the case of dual-type Pokémon). This means that a Normal-type Pokémon can deal an impressive amount of damage using Present even at a low level, since the Defense will be 1 in this case (the index number for Normal is 0, but Defense is set to 1 as a failsafe to prevent a division by zero error like in Generation I).

This bug was fixed in Crystal in single player, but is emulated in link battles to preserve compatibility.

Present can also trigger a text overflow bug if the species name of the enemy Pokémon is longer than 7 characters.

Dragon Fang bug

The Dragon Fang has no effect as a held item. Its intended effect, boosting Dragon-type moves by 10%, is instead assigned to the Dragon Scale.

Beat Up bugs

  • In a link battle, if a Pokémon in the party has a status condition that would prevent it from participating in Beat Up, but its current HP modulo 256 is identical to the index number (position in the player's party, from 0 to 5) of the Pokémon that is using Beat Up in battle, on the player's side that Pokémon will participate in Beat Up anyway, while on the opponent's side it won't. This causes the link battle to desync.
  • Beat Up works incorrectly if there is only one Pokémon in the user's party. It prevents the Substitute from being raised if there is one (which is a purely cosmetic bug) but moreover, it also prevents King's Rock from executing its effect.
  • Beat Up will also fail to raise the Substitute if it gets blocked by Protect or Detect.
  • If Beat Up misses due to accuracy, it will trigger the King's Rock effect anyway and thus have a chance to cause the enemy to flinch despite failing.

Pursuit bug

If a Pokémon with a status condition faints from Pursuit while being switched out, its status condition is not cleared, and it will have the status condition again after being revived. This even persists through saving and resetting the game.

Metal Claw/Steel Wing/AncientPower bug

Moves that deal damage and have a secondary effect of raising the user's Attack/Defense (Metal Claw, Steel Wing and AncientPower) will not do so if the hit KOs the opposing Pokémon. This is because the check for the stat boost comes after the check if the target is fained.