TASVideos

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

Game Resources / G Bx / Pokemon

The purpose of this page is to document all the known tricks of the GBx/GBA 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.

Table of contents [expand all] [collapse all]

For Fire Red or Leaf Green, assume RSE mechanics.

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.

In RSE, only the timing of actions can influence random factors. Holding down a button, when there is no visible effect, does nothing. Because many dialogs run at a fixed rate on fast speed, rather than prompting for button presses, it is vital to set the text to mid speed in order to control the rate of text in order to make luck-manipulation better.

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)

(AI)

(Overworld)

(Pokémon personal stats)

(Other)

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 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 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.

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.


See also


[2] Thanks to hanzou for this explanation.

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

[4] primorial#soup’s description.


See also



Combined RSS Feed
GameResources/GBx/Pokemon last edited by FractalFusion on 2011-03-02 09:03:32
Page info and history | Latest diff | List referrers | View Source