Brock through walls
|Bulbapedia also has an article about Brock through walls.|
|This article is incomplete. Please feel free to add any missing information about the subject. It is missing: Explanation and review of alternative international Red/Blue method/"no Rattata mini-sprite" detail.|
The glitch is possible in Yellow with some ((possibly only)((slower/later to attain)) requirements but the steps are missing..
Brock through walls (path manipulation walk through walls) is a walk through walls glitch in Pokémon Red, Green, Blue, and Yellow. It is popular in speedruns of Pokémon Red and Blue. It is possible to perform this glitch very early in the games (except in Pokémon Yellow, as the Youngster cannot be skipped in this version).
There are various ways to set up this glitch, but it is ultimately triggered by talking to the Pewter City Youngster from the right instead of the left, which was not intended to be possible.
The developers never programmed an alternate path for the player character to follow when the player is to the right of the Youngster. When talking to him, the game looks for the player's coordinates but usually never finds them, which results in a softlock.
However, the player can manipulate certain values in the RAM to spell out the player's coordinates, (0x10, 0x24). The coordinates need to appear at address xxx2, xxx6, xxxA, or xxxE to "align" with the lookup table. When this happens, the game will use the next two bytes as a path pointer. (Otherwise, the aforementioned softlock occurs.)
Certain paths may overwrite the memory address $CD3B, which allows the player to override the scripted movement by holding down a button, and walk through walls in whatever path he or she chooses, similar to what happens when using the museum guy method.
Getting past the Youngster
The easiest way to be able to talk to the Youngster from the right is to perform a method of the Pewter Gym skip glitch. After performing the glitch, simply walk right to Route 3, then go back to the Pewter City map to reload the Youngster.
The player can also skip Pewter Gym through another means such as a wrong warp by manipulating item 36's quantity (exit destination) in the expanded items pack. It is not easy to get an expanded items pack before defeating Brock, but it is possible. Some possible methods would include:
- Using the Cable Club escape glitch to encounter a MissingNo.
- Trading a Pokémon with "-" as the first move from Red/Blue to Yellow, and use "-" corruption to corrupt the enemy Pokémon into a MissingNo.
- The SRAM glitch
After using MissingNo. item duplication to increase an item's quantity to 255, dry underflow can be performed.
A third possibility is to first defeat Brock, and later use another glitch to set the "defeated Brock" event flag back to 0.
Setting up "0x10 0x24" in RAM
International Pokémon Red and Blue
Have a Pokémon meeting the following requirements:
- It must be level 8.
- It must be the last Pokémon in your party.
- It must know exactly three moves. Additionally:
- The second move's current PP must be exactly 16.
- The third move's current PP must be exactly 36.
Once this is done, viewing the Pokémon party screen (commonly known as "flashing" the Pokémon party) will copy the data "10 24 00 08" to $CFB6 – $CFB9. (Notice that the path pointer is small endian, so this will use $0800 as the path pointer.)
A popular choice for this Pokémon is the starter Bulbasaur, which starts with Tackle (35 PP) and Growl (40 PP), and learns Leech Seed at level 7 to swap into slot 1.
More research is needed for this article.
Reason given: Why the "no Rattata mini-sprite" requirement?
Another setup may be faster, especially if the starter happens to have the required 16 Special:
- The first Pokémon's Special stat should be 16.
- The second Pokémon should be a Pidgey with 15 HP left.
- However, there should be no Rattata mini-sprite in the first two positions, or else the game will softlock.
This setup will write "10 24 00 0F" to $D196 – $D199.
As above, a copy of the player's coordinates before talking to the guide needs to appear at xxx2, xxx6, xxxA, or xxxE to 'align'. However, for the reasons here, all variables in WRAM after $CF1A are shifted up a byte (so as an example, the address of the third item in the bag is $D322 in Red/Blue, but $D321 in Yellow).
The 00 0F path however does not result in walk through walls in English Yellow, so another path must be used, such as the 01 06 or 01 39 path. As in the Pokémon Yellow reverse badge acquisition no underflow route, this works from an odd item slot with [item] x (y-coordinate; typically x16) | HP Up x (x-coordinate; typically x36) | <Max Repel/Bicycle>. For Brock through walls from a wall, the y-coordinate is represented by x15 and the x-coordinate by x35 instead.
Japanese Pokémon Red, Green, and Pokémon Blue (Japanese)
- Have a Rattata (or any Pokémon with the same mini-sprite) in the third party slot.
- Have a Charmander (or any Pokémon with the same mini-sprite) in the fourth party slot.
Once this setup is done, flash the Pokémon menu at least once.
Once the player stands on the tile right from the Youngster and completes the "0x10 0x24" setup:
- Talk to the Youngster, and close his dialog box with B.
- You will walk automatically and the menu should keep popping up. Hold B when the menu is closed to walk around in any direction.
As mentioned above, the glitch works by tricking the game into loading an invalid path (path pointer) for the player to follow. If the coordinates and pointer pair for the path is not found at xxx2, xxx6, xxxA, or xxxE throughout the memory map the game will lock up never finding it. Assuming the path is found, it is meant to be terminated by 0xFF. The path is copied from hl (path pointer) to $CCF9 onwards. If the path is large enough (but not too large as to freeze the game), it will cause a buffer overflow and overwrite $CD3B.
The game never seems to intentionally set $CD3B to any nonzero value, but its effect is to allow certain joypad inputs to override scripted movement. It is very generous: As long as the player is holding down any of the specified buttons, the entire joypad input is accepted. For example, if the B button is able to override, then the player can simple hold down the B button to be able to walk in any direction or to stay put.
Of course, the point of this whole setup is that the player will be able to walk through walls and NPCs, just like in any scripted movement (except for the last step).
In order to execute Brock through walls, the invalid path needs to be long enough to overwrite at least the entire RAM region between $CCD3 and $CD3B. Most addresses in this region are temporary variables anyway; however, this region includes $CD2D (wEngagedTrainerClass) and $CD2E (wEngagedTrainerSet), which determines the species and level of the Pokémon encountered with the trainer escape glitch (normally the Special stat and Attack modifier of the last enemy Pokémon). Therefore, by doing a trainer escape, and performing this glitch before going back to the route, the player can set up a "Special stat encounter" without needing to fight a Pokémon with the appropriate Special stat and Attack modifier. Notably, this allows encountering a Pokémon whose level is not in the 1–13 range (the valid range for the Attack modifier byte).
This variant is named "Brock Fly" because "Trainer Fly" is a more commonly known name for the trainer escape glitch, but of course other escape methods (Teleport, Dig/Escape Rope, death-warp) can also be used.
The bytes in the path pointer that replace $CD2D and $CD2E correspond with (path pointer)+52 (0x34) and (path pointer)+53 (0x35). For example, for the custom path E7DA (DAE7) in Yellow (assuming it has no 0xFF until after $DB36), a 0x15 at $DB1B (PC Pokémon 5 HP (modulo 256)), and 0x14 at $DB1C (PC Pokémon 5 level) would result in 0x15 at $CD2D and 0x14 at $CD2E. Hence, the Pokémon encountered would be a Level 20 Mew. (In Red/Blue the equivalent path would be E8DA).
Brock through walls from a wall
It is possible to trigger this glitch from the top of the Youngster, as long as the player can reach there using another glitch (e.g. Rival's effect). The principle of setup is similar, but instead of "0x10 0x24", the player needs to set up "0x0F 0x23" at an appropriate address, since that is the coordinates of the tile above the Youngster.
Notably, this variant is used in the Pokémon Yellow reverse badge acquisition no underflow route, where an HP Up (ID 0x23) picked up on Route 2 is used as part of the setup.
Obtaining both fossils
After setting up Brock through walls, the player can hold down B and walk through walls to enter Mt. Moon from the Route 4 side. Although the ability to walk through walls is disabled, the player is still able to walk around if the player picks up the Helix Fossil first (right-side from above). Afterwards, the player can pick up the Dome Fossil as well with a down, left, A input.
This does not work for attempting to pick up the Dome Fossil first (left-side from above), nor the Helix Fossil first and a left, down, A input because both of these actions activate the Super Nerd's script.
For a Pokémon Yellow variation of Brock through walls, it works the same way (even after battling Jessie & James after glitching into the cave).
Surf on land
Under the effect of this glitch, it is possible to use the field move Surf normally. This will replace the current scripted movement with a single-step movement to move forward one step (into the water). If the player holds down the B button after choosing to use Surf, then this scripted movement will be overridden as well. Furthermore, as long as there is one step of scripted movement pending, the player's collision checks will remain disabled, which means that the player will be able to Surf on land.
Guide music in a building sub-glitch
If the player walks into Pewter Museum with this glitch active, it is possible for the guide music to remain playing.
Entering the Pokémon League with no badges or wrong warps
Brock through walls can also be used to enter the Pokémon League with no Badges, without the expanded items pack or wrong warps.
1. Perform a death-warp with a medium-slow growth rate Pokémon such as Nidoking at level 1.
2. Use the experience underflow glitch to raise it to level 100.
3. Enter the top-right house in Pewter City (pictured, below):
4. Perform the Pewter Gym skip glitch
5. Perform Brock through walls
6. Follow the directions below as such:
Move left until second picture, below:
Move down until this picture, below:
Move one step left, one step up and continue walking up to reach the Elite Four door, where you can challenge the Pokémon League.
To make the Elite Four challenge less difficult, more than one Brock through walls iteration can be used if an Escape Rope (from Pewter City Poké Mart) or Pokémon with Teleport (i.e. Abra) is prepared and the last location that the player healed at was Viridian City or Pewter City (or Pallet Town?). This can be done to acquire TMs (such as TM26 Earthquake from Silph Co. 10F).
Trainers can be grinded against to afford items such as X Attack and X Accuracy, and the player can set up or heal their Pokémon if a Poison-type Pokémon is sent out against Lance's Dragonair, which can only use Agility against those Pokémon and with infinite PP.
Additionally the Level 100 Pokémon can be cloned, however the linkless save corruption method is risky and can easily lead to destruction of the save file.
If you prefer not to use your own Pokémon, you can also trade one over from another game, but it will not obey you without any Badges. This viability of this approach is unknown.
YouTube video of this technique
Text to speech:
No text to speech:
Video demonstration of core procedure
1. Brock through walls can cause a sleepwalking old man to appear north of Viridian City.
2. The glitch activates Dig Rocket battle skip.
- Walk through walls trick (ledge method).
- Walk through walls trick (museum guy method).
- Walk through walls trick (international Select glitch method)
- Walk through walls trick (Select glitch method).