Tool-assisted game movies
When human skills are just not enough

Game Resources / G Bx / Pokemon Gen 2

The purpose of this page is to document all known tricks of the Pokemon generation 2 games on Game Boy Color, which include Gold, Silver, and Crystal.

Table of contents [expand all] [collapse all]

Luck Manipulation

The timing of a button press has a high influence on random factor. The duration of a button press (how long it is held down) has a mild influence on random factor. For example, holding a button down for different durations usually (but not always) preserves a critical hit while randomizing damage. Mashing the A button during dialog slows down the text a little, so it can be used to luck-manipulate.

When catching Pokémon, timing of entering squares has a high influence on random factor. Walking around in the grass without stopping has a mild influence; the desired type of Pokémonis not likely to change, but its DVs are likely to change. Duration of a button press also has a mild influence.

Most actions are determined when they are needed; for example, critical hits are determined when the damage is calculated, and attack misses are determined at the end of the attack message. However, there are a few things to watch out for:

(Game Mechanics)



(Pokémon personal stats)

Useful memory addresses (GSC)[1]

D0F5-D0F6: DVs of current opponent. This is used to determine the DVs of wild Pokémon that you want to catch.

D0FF-D10C: Stats of current opponent. Each value is two-byte big-endian in the following order: current HP, total HP, attack, defense, speed, special attack, special defense. The current HP is the most important.
(Note: Focus on D100, D102, ... instead of D0FF, D101, ...)

D141-D142: Amount of damage (big-endian) that an attack is about to do. How this address works is rather convoluted. Calculations begin after the dialog “X used attack”.

  1. The base damage is calculated (if critical hit, it is considered) and placed in D142.
  2. If attack is super-effective or not-very-effective or such, multiply D142 appropriately.
  3. If a multiplying factor such as Rage is involved, multiply D142 appropriately.
  4. If any other factors, multiply D142 appropriately.
  5. Random reduction factor, multiply D142 by a random number between 217 and 255, and integer divide by 255.
    1. The number before this step is the max damage possible and is only achieved rarely (if the random number is 255).
  6. If miss, set D142 to 0.
  7. The value in D142 now is the damage inflicted.
  8. If it would knock out Pokémon, set to current HP of that Pokémon (after HP bar begins to decrease).

Note that not all these values appear, but the base damage, max damage, and damage inflicted will usually appear on a frame-by-frame basis.
(Note: Focus on D142 instead of D141)

D151: If using Magnitude, the Magnitude number appears here right after “X used attack” appears.

In-game time:
D1EC: Hours
D1ED: Minutes, one byte
D1EE: Seconds, one byte
D1EF: Frames, one byte

D9BC/D9EC: One-byte values for the overworld step count (mod 256). Useful for going through dark tunnels without having to mash the arrow buttons.

DA02-DA03: X-Y coordinates of character on overworld map. Going right increases X and going down increases Y.

DA3F-DA40: DVs of first Pokémon in party. This is for your starting Pokémon.

[1] Credit goes to primorial#soup who found the memory addresses.

Combined RSS Feed
GameResources/GBx/PokemonGen2 last edited by Fortranm on 2019-02-03 20:52:36
Page info and history | Latest diff | List referrers | View Source