View Page Source

Revision (current)
Last Updated by Fortranm on 1/12/2022 3:35 AM
Back to Page

The purpose of this page is to document all known tricks of the Pokemon generation 1 games on Game Boy, which include Red, Green, Blue, and Yellow.

%%TOC%%

* R/G = Red(JPN)/Green
* R/B = Blue(JPN)/Red(International)/Blue(International)
* Y = Yellow

!! List of categories
Due to the number of categories that exist for Gen 1 Pokemon games, it is helpful to list them here to avoid confusion.
* R/G/B:
** "Coop Diploma": [3134M]
* Y:
** branchless (practically "glitchless"): [3664M]
* R/G/B/Y:
** "save glitch" (practically "any%"): [2687M]
** "game end glitch" (practically "no save corruption"): [3901M]
** "Gotta Catch 'Em All!" (works as full-completion): [3687M]
** "arbitrary code execution": [3358M]

!! Luck Manipulation

In RBGY/GSC (assuming fast text speed), 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.

In RBGY/GSC, 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)
* When both Pokémon have the same speed, all things being equal, the one going first is decided when the attack is selected in the menu.
* When using Quick Claw (1/4 chance to go first if slower, all other things being equal), in GSC, the chance is determined when the attack is selected, but in RSE, it is determined before the menu appears.
* Paralyze effect (unable to move) is determined just before the attack is attempted, and confusion effect (self-damage) is determined after "(Pokémon) is confused!"
* In RBGY and RSE, added effects of attacks (flinch, stat boost, confusion, paralyze, etc.) are determined after the hit, after critical hit and super effective messages if any. In GSC, added effects are determined when calculating damage.

(AI)
* Enemy Pokémon moves are determined when the attack is selected.
* Trainer moves are determined before the menu appears.
** Smart trainers will always use stronger attacking moves over weaker ones.
** Smart trainers will always try to use moves that knock out your Pokémon if it is possible.
** Smart trainers may also do things like use potions or switch to a Pokémon that resists your last attack.
* In GSC, it may be possible to manipulate the trainer Pokémon order. The choice of Pokémon is determined after experience dialogs from knocking out the previous Pokémon.
** The first Pokémon is always fixed.
** Smart trainers will always bring in a Pokémon that can knock out your Pokémon if it is possible, and will always avoid bringing in a Pokémon that is weak to yours.
** In RBGY, Pokémon order cannot be manipulated.
** In RSE, Pokémon order can only be manipulated from what your current Pokémon is, not from luck-manipulation.

(Overworld)
* Some things like the direction that a randomly looking trainer looks, as well as people movement, can be manipulated.
** In RSE, trainers that change the direction in which they look are influenced by running near them. It is required to walk or bike by them to avoid triggering a battle.
* Wild Pokémon encounters are determined when you step into a patch of grass.

(Pokémon personal stats)
* Personal stats (DVs/IVs, nature, ability, shiny, Pokérus, etc) for the starter Pokémon are determined when you obtain the Pokémon.
* Personal stats for wild Pokémon are determined on encounter.

(Other)
* (RSE) Zigzagoon's Pickup ability is determined on the fadeout after each battle.

! Random Number Generator (RBGY)

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.

!! Tricks and glitches

! Pokédoll glitch (RBGY)

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 obtained from the Celadon Dept. Store.

! Non-100%-accuracy glitch (RBGY)

In RBY, any attack has at least a 1/256 chance of missing, including those
attacks which are supposed to have 100% accuracy. This is due to a
programming oversight.

! Missingno. Pokémon and relatives (RBGY)

Not much is known about Missingno. (name is derived from “missing number”)
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.

Missingno. is related to the ZZAZZ glitch.

! Cinnabar Island glitch (RBG)

Also known as the Missingno. glitch. The east coast of Cinnabar Island (and Seafoam Islands) is a defined grassy encounter spot (which must be surfed), but has no defined encounter list. Instead, Pokémon from the previous grassy encounter list are used. This includes, for example, Safari Zone Pokémon if it was the last grassy area you traveled in. However, if you talked to the guy in Viridian who teaches how to catch a Weedle, and saw him catch a Weedle, your name is placed in the encounter list, which, when doing the glitch, may cause glitch Pokémon (or normal Pokémon with absurd levels) to appear:

     _''''_ _''''_ _''''_ _''''_ _''''_ _''''_ _''''_  __<-- 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 [GameResources/GB/PokemonGen1/Values|Table of Pokémon ID numbers].

This glitch does not work in Yellow version.

! Trainer-Fly glitch (RBGY)

This glitch is also known as the Mew glitch.
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 [GameResources/GB/PokemonGen1/Values|Table of Pokémon ID numbers].

! Skipping Snorlax (RBGY)

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 (RBGY)

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 Caterpie and Weedle lines.

! Masking Pokémon cries with the low health sound (RBGY)

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 Pokémon battle cries.  The sounds either will not be played or will be ignored saving time everytime a Pokémon comes out.  Abuse of this trick is generally discouraged because the warning sound is considered annoying.

! Glitch City glitch and walk through walls glitch (RBGY)

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 (RBG)

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.

This glitch does not work in Yellow version.

! Useful memory addresses (RBGY)[#3]

Addresses listed are exact for Red/Blue US versions. 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.
----

!! See also
* [GameResources/GB/PokemonGen1/Values|Pokémon value table]

----

[2] Thanks to hanzou for this explanation.

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

[4] primorial#soup’s description.