Pokemon Tricks

The purpose of this page is to document all the known tricks of the GB/SGB/GBC Pokémon RPG games so far.

Although the majority of tricks on this page can be done in real-time play, there are some tricks that require luck manipulation, and thus tool-assistance. For luck-manipulation, a frame advance feature in an emulator is a definite must-have.

TODO: Bombard page with new glitches.

Important notes:

Luck Manipulation

Briefly:

  • 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. After an attack is selected, it is likely to preserve a critical hit (but not always) while randomizing damage.
  • Opposing trainer Pokémon attacks are determined when the battle menu appears. It can be luck-manipulated before then, when it says “Trainer sent out ...”. Wild Pokémon attacks are determined when you select the attack.
    • Note that in GSC, some Pokémon will only use set moves against you, especially if your Pokémon is weak to the attack.
  • (Only in GSC) The order that a trainer uses Pokémon is determined after “X gained EXP points”. The first Pokémon is always set, but the others may be luck-manipulated (but not always). Again, trainers will play weaknesses and as a priority will send out a Pokémon that yours is weak against.
  • 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émon is not likely to change, but its DVs are likely to change. Duration of a button press also has a mild influence.

Elaborated below:

How to luck-manipulate

- The general idea is that at the point where you can press A to clear a dialog or select an attack, you can instead wait an arbitrary number frames as you want before pressing A, to try and get the critical hit, enemy miss, or first strike (if you have Quick Claw or equal speed). This is one degree of luck-manipulation freedom.

- You can even mash or hold A after clearing the dialog or selecting the attack, during when it says (“X used attack”) and it may manipulate for critical hit or enemy miss. For example, to get a first strike critical hit, first select attack to manipulate for a first strike, then mash A for a (hopeful) critical hit. The luck-manipulation window is limited here, but it makes a big difference. Mashing slows down the text, so use it carefully.

- The above strategy cannot manipulate the enemy Pokémon’s attack. To attempt to manipulate the enemy attack, wait on the previous dialog (e.g. before the trainer sends out the Pokémon), and press and/or hold A at different times. Note that this fails in many cases where an attack will KO your Pokémon if it hits (e.g. weakness); the enemy attack will always be that attack.

- Combining these two strategies (excluding mashing/holding A) gives two degrees of luck-manipulation freedom. If selecting attack at different times fails to yield the desired result in reasonable time, go back to the previous dialog and clear it at different times and see if it can be achieved (faster). In fact, there are virtually unlimited degrees of freedom for as far back as you wish to go.

- In GSC, to attempt to manipulate the order that trainers send out apart from the first Pokémon, wait on the dialog or level-up stat box before the “Trainer sent out...” dialog appears. Then mash/hold A and the trainer may send out different Pokémon each trial. Again, this fails in cases where a trainer’s Pokémon has an attack that will KO your Pokémon; the Pokémon sent out will always be that Pokémon. The first Pokémon in a trainer’s lineup is always fixed.

Random Number Generator (RBY)

Memory addresses FFD3 and FFD4 are the two RNG bytes. The I/O address FF04 (which may be anything) influences theses addresses in the following way:

  • New FFD3 is FFD3+FF04 or FFD3+FF04+1
  • New FFD4 is FFD4-FF04 or FFD4-FF04-1

Note that FFD3+FFD4 (the D-sum) either increases by 1 (in battles), decreases by 1 (in overworld), or remains constant. These changes occur many times per frame.

Random encounters are determined by the value of FFD3 and FFD4 as follows:

  • Encounters occur if FFD4 < D887 (which is usually $0F).
  • Which Pokémon encountered is determined by FFD3.

Pokémon Index by Area FFD3 range
0 (common) 0-50
1 51-101
2 102-140
3 141-165
4 166-190
5 191-215
6 216-228
7 229-241
8 242-252
9 (rare) 253-255

It may be necessary to change the D-sum to be able to catch different Pokémon. This can be done by waiting one or two frames to clear a dialog in battle. Pressing A in the field can have an effect, but slows you down two frames.

During battle, FFD3 controls damage (not in an obvious way) and FFD4 controls critical hits. Both may be responsible for controlling accuracy. Delaying button presses produces large changes, and holding A in a dialog usually has a mild effect (which is why critical hits sometimes remain), but may occasionally produce a large change.

Pokédoll glitch (RBY)

In the Lavender Town Ghost Tower, it was intended that the ghost Marowak could only be bypassed using the Silph Scope. However, it can be bypassed using a Pokédoll, which is much faster to get.

Non-100%-accuracy glitch (RBY)

In RBY, any attack has at least a 1/256 chance of missing, even those attacks which are designed never to miss under unmodified accuracy/evade stats. This is due to a programming oversight.

Missingno. glitch (RB)

Missingno.(pronounced “missing number”) is a species of Pokémon that often appear as the result of a glitch (also known as "Cinnabar Island glitch") involving talking to the guy in Viridian who teaches how to catch a Weedle, then going to an area where land Pokémon encounters are not defined, but not forbidden either. After talking to this guy, your name is dumped into the Pokémon encounter list to make room for the name “Old Man”. The justification is that the encounter list is refreshed whenever you enter a new area with land Pokémon random encounters, and the east (right) coast of both Seafoam and Cinnabar Islands somehow have ramdom encounters, but do not have their own encounter list. Thus, in those areas, the game draws Pokémon from any old Pokémon encounter list (which happens to have your name, in this case). See also Missingno. Pokémon and relatives and The name thing.

Missingno. Pokémon and relatives (RBY)

Not much is known about Missingno. other than that it glitches the game badly. Encountering a Missingno. automatically gives you 128 more of the item in the sixth slot of your pack (if it isn’t already above 127). In addition, Missingno. writes garbage to the savefile on encounter, messes up graphics, possesses abnormal stats and moves, has strange evolution lines, and does unpredictable things to the game.

Missingno. relatives: ‘M, Missingno., other glitch Pokémon of a high ID number, glitch trainers.

The name thing

Your name affects the Pokémon you can run into by using the “Missingno.” glitch.

      __ __ __ __ __ __ __  <-- these are the 7 characters of your chosen name
         L1 P1 L2 P2 L3 P3
  • characters #3, #5 and #7 (marked with P) will define the Pokémon;
  • characters #2, #4 and #6 (marked with L) will define the experience level;
  • the first character has no effect at all;

See Table of Pokémon ID numbers.

Notes:

  1. At the end of your desired name, the game inserts an “end-string” 0x50 value(what may result in a Lv 80 Missingno.). Everything after that is null (00 -- generating a Lv 0 Missingno.).
  2. When using a default name, all the eleven characters are used(what doesn’t make a big difference anyway, because there are only 4 possible Pokémon in that area). The additional characters are not visible because of the “end-string” value.
The full names are: (the underscores represent the “end-string” value)

    Blue Version:         Red Version:
     BLUE_GARY_J           RED_ASH_JAC
     GARY_JOHN_N           ASH_JACK_NE
     JOHN_NEW_NA           JACK_NEW_NA
The (full) name is stored in memory from offset 0xD158 to offset 0xD162.

Trainer-Fly glitch (RBY)

The basics of this glitch is that some of the trainers that battle you have a line of sight that is up, left, or right and sees you if you start one square past the line of sight (with the trainer offscreen) and walk one square toward the trainer. During this one-square-walk, the game defaults the trainer to facing downward before rendering the trainer in the proper direction, allowing you to open the menu and escape rope/dig/fly/teleport away as the trainer sees you. This will suspend the pre-battle trigger.

After you perform this, you cannot control your character except with the directional keys. To regain control, let a trainer see you but let the trainer walk up to you, so that control is regained after the battle. Fight other trainers and even wild Pokémon if you desire. Now walking back to the area where the pre-battle trigger occurred will trigger a magic wild Pokémon encounter (after you close the menu that pops up). This Pokémon's level is the Attack stat modifier (from -6 to +6) plus 7 (so for normal Attack stat modifier 0, level is 7). Which Pokémon this is depends on the special of the last Pokémon that you battled.

See Table of Pokémon ID numbers.

Skipping Snorlax (RBY)

By performing the Trainer Fly glitch following certain rules both Snorlax blockades in the game may be skipped.

The rules for how this glitch works are as follows: [2]

  • The object that ends up disappearing is the last vanishable object encountered before the menu pops up at the end of the trainer-fly glitch. This can be a legendary pokemon (e.g. Snorlax), a character (e.g. guard in Saffron), or an item (e.g. antidote on Route 1). It may be encountered before trainer-fly is initiated, during the time the start button is disabled, or even after the start-button is reactivated.
  • A room has at most one vanishable object, and that object is "encountered" just by entering the room even if the object does not appear on-screen. If this one object has already been removed, in the end the glitch has no effect. On route 1, this one object is the antidote. In Saffron City, this is the guard blocking the way to Copycat. Thus, it does not seem possible to remove either of the other two guards in Saffron.
  • Many places such as Vermillion City have no vanishable objects. This is a good thing.

Experience underflow on fading-experience Pokemon (RBY)

Depending on the level-experience relationship a Pokemon has, each level corresponds to a certain amount of experience. For fading-experience Pokemon E = 1.2L³ - 15L² + 100L - 140, where E is the experience corresponding to level L. However, for L=1, E=-54. So if a fading-experience level 1 Pokemon is glitched by using Trainer-Fly (lowering the Attack stat modifier of the previous Pokemon as far as possible), it will have -54 experience, which the game interprets as 16777162 experience. Gaining 53 or less experience will cause its level to reset to L100.

Pokemon with fading-experience are Mew and all 3-stage-evolution Pokemon except the bugs.

Masking pokemon cries with the low health sound (RBY)

If you are low on HP the game has a warning sound in effect the entire time. This sound, while annoying, will save time by masking the sound of enemy pokemon battle cries. The sounds simply will not be played saving time everytime a pokemon comes out. Abuse of this trick is generally discouraged because the warning sound is considered annoying.

Glitch City glitch and walk through walls glitch (RBY)

First, enter the Safari Zone. Exit and when asked to leave say "no". Save the game and reset. Then leave and when asked to enter say "yes". Leave through the bottom exit. Walk or bike 500 steps and you will be returned to the Safari Zone building. Exit and you will be in Glitch City.

If, however, you are halfway over a ledge jump before you are warped back, you can walk through walls at the Safari Zone building until you exit. Even more, if your last non-fainted Pokemon faints from poison while in the Safari Zone building, you are warped outside, where you can walk or bike over anything, even water, until you enter a building. This has many applications, such as:

  • Getting to Cinnabar without Surf.
  • Getting to Saffron Gym with a guard in the way.
  • Bypassing Victory Road (go west of Viridian, then north).
  • Skipping the first and last badge checks, thus not being required to do those gyms.

Skip Pewter City gym (RB)

Approach the Youngster that forces you to Pewter gym (but don't walk in front yet). Open the menu and select "Save", but don't save. Now walk in front of him and as soon as you close the last dialog with B (A doesn't work), immediately press Start and save the game (the cursor is frozen). Reset the game. Then the conversation will happen again; let him take you. After that, go back to where the Youngster should be and he should no longer be in the correct position. Walk through where he should have been and you have skipped the Pewter City gym.

You must do any item buying beforehand, since entering a building resets the Youngster's position.

Because of the walk-through-walls glitch above, you don't need the first badge, because you can skip the first badge check.

Useful memory addresses (RBY)[3]

Addresses listed are exact for Red/Blue. Yellow is the same memory address minus 1.

CFE7: Current HP of current opponent.

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

CFF4: Stats of current opponent (except current HP). First is the total HP, followed by attack, defense, speed, and special. Each value is two bytes.

D0D8: Amount of damage current attack is about to do. Damage is rolled directly after the entire “- used such-and-such” dialog is displayed. A very nice thing about this is, one frame before the actual damage is calculated, the maximum damage possible is also stored in this memory location, which can help you to plan attacks and to know what exactly is possible or not.[4]

D186: DVs of the first Pokémon in your party. This is for your starting Pokémon.

In-game time:
DA40: Hours, two bytes.
DA42: Minutes, two bytes.
DA44: Seconds, one byte.
DA45: Frames, one byte.

FF04: I/O address used by the RNG for entropy. FFD3: RNG byte. Controls type of Pokémon in an encounter, and damage during battle. FFD4: RNG byte. Controls Pokémon encounter events, and critical hits.

Useful memory addresses (GSC)[3]

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] To get a shiny Pokémon, the E in EAAA can be replaced with any 4-bit number (hex digit) where the second bit is 1.
i.e. 2, 3, 6, 7, A, B, E, F

[2] Thanks to hanzou for this explaination.

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

[4] primorial#soup’s description.


Get Firefox!PokemonTricks last edited by FractalFusion on 2008-03-17 02:03:21
Page info and history | Latest diff | List referrers