Pokémon Red and Blue/Miscellaneous Data
This is a sub-page of Pokémon Red and Blue.
Contents
Game Boy Color Detection
At the very beginning of the program (ROM address 0150), the game checks if it's running on a Game Boy Color, and stores the result of this check at RAM address CF1A. However, the check stores zero in both cases:
cp a,$11 ;GBC can be detected by value of A register at boot jr z, .gbc xor a, a ;If not GBC, A = 0 jr .ok .gbc: ld a, 0 ;If GBC, A = 0 .ok: ld [$CF1A], a
The use of two different methods to set A=0 (single-byte xor a,a
instruction vs the two-byte ld a,0
) suggest that this check may have been quickly patched out. In any case, a few instructions later the init process clears all memory, so this flag gets reset either way.
If this flag is set, the game loads a set of monochrome palettes and skips loading Super Game Boy features, so it looks the same as it would on a regular Game Boy.
This check is absent in the Japanese releases, as they were finalised in 1995, and the Game Boy Color was only revealed in circa 1998.
PokéMart Data
PokéMart data is listed between the Fuchsia City and Cinnabar Island PokéMarts, but doesn't seem to be used. It lists Great Ball, Hyper Potion, Super Potion, Full Heal, and Revive as available purchasable items. According to the leaked source code, this shop lineup is identified as "item_town_8K" in ITEMMENU.DAT, suggesting it was linked to Fuchsia City.
Pokémon Center Triggers
Pokémon Center data including triggers for PCs can be found in maps that are not used as Pokémon Centers in Red and Blue. As there is no PC sprite, the PCs are invisible. All of these hidden PC triggers were removed in Yellow.
Celadon Hotel
The hotel in Celadon City features an invisible, intangible yet still fully working PC located at the right-most side of the lobby. The fact that this PC is in the same position as in a Pokémon Center is due to the fact that the hotel map was built off the Pokémon Center one, as such the invisible PC is just a leftover whose sprite and collision were removed but whose behavior still remains intact.
Rest Houses
Unused code suggests that three of the rest houses in the Safari Zone (specifically maps DF, E0, and E1) were intended to function as Pokémon Centers. Each map has a trigger for an invisible PC in the same position as a Pokémon Center. Additionally, when healing at a Pokémon Center, the game saves your current location as the place to return to when using e.g. Teleport. The code checks if you're in one of the rest houses, and if so will not save your location.
Unused Warp Data
Route 1 and 2
Route 1 | Route 2 |
---|---|
Found on both Route 1 and Route 2 are a set of unused warps. The former has one, and the latter four, all sitting at coordinates X:7 - Y:2. They are fairly odd, in that while they are all set to warp you to the target map's fourth warp, there is no actual target map programmed.
Route 2 Gates
For some reason, the gate houses on Route 2 all feature two sets of warps in their upper half, suggesting that this map type originally sported a set of double doors instead of a single door. There is even a corresponding block at ID 5D in the gate tileset, but it too never gets used.
Overworld Gates
Route 6 | Route 7 | Route 16 |
---|---|---|
The following gate houses all have one of their warps made inaccessible by decorative fencing.
Rock Tunnel
North Entrance | South Entrance |
---|---|
Rock Tunnel is interesting in that it's the only cave whose entrance is a ladder, and not a standard entrance mat. However, there exists unused warp data for both northern and southern sides, suggesting that Rock Tunnel may have once had standard entrances, only for them to eventually be changed to ladders.
Silph Co. 1F
There exists an orphaned warp in the lobby, which is linked to the seventh warp of Silph Co. 3F (the one closest to the stairs). However, in the final games that warp pad sends the player to the fourth warp of Silph Co. 2F (the one leading to the female worker who hands you TM36), and vice-versa. As such, it's likely that earlier on, the 3F pad was a one-way trip to the lobby.
Silph Co. 11F
A lone warp found right beside the President's couch, which is set to take you to the tenth warp of the last map visited (here, Saffron City). As is, taking it would send the player to an invalid map, as Saffron City only features eight warps. This is a leftover from earlier in development, where Saffron did have ten warps, the last one being a second entrance to the Silph Co. building. The aforementioned meeting room warp was then likely a shortcut leading directly outside the building.
Seafoam Islands 1F
Both of the holes on the first floor have warps assigned to them, which are set to warp player to Seafoam Islands B1F. This is odd, in that this is not how holes are handled in Generation 1, with the target map handled in a separate file than the map's main script. This then makes these two warps completely rendundant.
Trade Data
This unused in-game trade debuted in the original Japanese versions, Red and Green, and was again left unused in Japanese Blue. It would have allowed the player to trade a Butterfree for a Beedrill nicknamed ピピん ("Pipin") in the first two games and チクチク ("Chikuchiku") in the third. Meanwhile, the international Red and Blue contains unused text for a Beedrill nicknamed "CHIKUCHIKU".
The trade itself is fully functional and can be accessed by inputting the GameShark code found below and using the first glitch item in your bag. Please note that this code also has some side effects: in all versions, the player's item data will be changed, as well as the data from DA47 to DA49. In the English version of Red, this data represents the variables wNumSafariBalls, wDayCareInUse, and wDayCareMonName. In the Japanese versions of Blue and Green, it represents wild Pokémon data.
Red & Blue (U) | Blue (J) | Green (J) 1.0 |
---|---|---|
01C347DA 012248DA 01D349DA 016A1ED3 013E22D3 010223D3 01EA24D3 013D25D3 01CD26D3 013E27D3 015428D3 01CD29D3 016D2AD3 013E2BD3 01C32CD3 01D72DD3 01242ED3 01C92FD3 |
01C306D8 01A607D8 01D208D8 017BA2D2 0150B4C3 013EA6D2 0102A7D2 01EAA8D2 013DA9D2 01CDAAD2 013EABD2 0154ACD2 01CDADD2 01B1AED2 013EAFD2 01C3B0D2 01B7B1D2 0124B2D2 01C9B3D2 |
01C306D8 01A607D8 01D208D8 017BA2D2 013EA6D2 0102A7D2 01EAA8D2 013DA9D2 01CDAAD2 013EABD2 0154ACD2 01CDADD2 019DAED2 013EAFD2 01C3B0D2 016AB1D2 010FB2D2 01C9B3D2 |
Internal NPC Data
While the Pokémon internal index is what usually steals the spotlight, the overworld sprite ID list does contain its own set of (admittedly less interesting) finds which call back to an earlier time in the game's development:
- Index spot 31 is an unused duplicate of the Scientist's sprites. Leaked internal material tell us this spot was once occupied by what was very likely sprites of the player's father.
- Index spot 50 is an unused duplicate of the Guard's sprites. Leaked internal material tell us this spot was once occupied by a "hermit" character/character type.
- Index spot 54 is an unused duplicate of the Game Boy Kid's sprites. Leaked internal material tell us this spot was once occupied by a female version of this character type.
- Index spot 68 is an unused duplicate of the Amber's sprites. Leaked internal material tell us this spot was once occupied by a "door", with no further detail given.
- Index spot 70 is an unused duplicate of the Drunk Old Man's sprites. Leaked internal material reveal that this spot was originally for this exact same character, but for some reason the final games instead use a copy of this sprite, which is found at ID spot 72.
- Index spot 71 is an unused duplicate of the Drunk Old Man's sprites. Leaked internal material tell us this spot was once occupied by a "dead tree", with no further detail given.
Level Check Bit
In Red and Blue, Pokémon that can evolve can do so in one of three ways: by reaching a certain level, by using a given stone, or through trade. The way the evolution data is laid out is just as straightforward, consisting of the "evo type", the minimum level requirement, and the Pokémon that will be evolved into. Interestingly, the level requirement bit also exists for Pokémon that evolve via stone/trade, though it is always set to Level 1. This suggests that early on, the devs may have wanted to prevent the player from obtaining some final-stage Pokémon until they were of a certain level. This was definitely scrapped due to not being intuitive, on top of the execution being lacking. For example, if we set Clefairy's check to, let's say, level 25, then trying to use a Moon Stone on a Clefairy that's level 24 or lower won't show anything, on top of still consuming the stone. That, or the devs decided to make it easier for themselves and just put a temporary value that won't be read, since you can't obtain level 1 Pokémon anyway.
Furthermore, this curiosity also applies to Level 0 stone Pokémon and trade evolutions obtained using glitches, without having to modify the game.
The redundant level check was originally carried over during the development of Gold and Silver, but the final games got rid of it entirely.
Trainer AI Data
There is data for unused battle AI routines which are normally never executed by any Trainer class, including "use X Accuracy", "use Dire Hit", and "use X Special".