We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!

Pokémon Red and Blue/MissingNo.

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Pokémon Red and Blue.

One of the most popular oddities in Pokémon and gaming history in general is the presence of a mysterious, glitchy non-Pokémon called "MissingNo."

Technical Explanations

Known in Japanese as けつばん ("Ketsuban", literally "Missing Number"), this placeholder is used to fill the empty entries in the Pokémon ID list. In the localized versions Red and Blue, there are 39 instances of the string "MissingNo.", each used by an empty entry in the internal index table. However, in the Japanese games 38 of the entries use the name Ketsuban, with the final blank entry instead using the name ゴースト (Ghost) and the Pokémon Tower ghost sprite. As mentioned in the Sprites section below, the graphic is used during the encounter with the ghost in the Pokémon Tower. Despite its graphic being used, this name text isn't normally visible, even during the battle. It's also the only instance of ゴースト (Ghost) in the ROM, as Spirits are always referred to in-game as ゆうれい (Yuurei).

Sprites

Out of all of the instances of MissingNo., 36 of them use interpret garbage data when displaying a sprite, and due to the abnormally large size of this garbled graphic, viewing it causes the player's Hall of Fame data to become corrupted. However, the final three MissingNo. have legitimate sprite data:

Hex Dec. Sprite Purpose
B6 182 Pokemon RGB-Kabutops Fossil.png Used to display the sprite of the Kabutops fossil in Pewter City's Museum.
B7 183 Pokemon RGB-Aerodactyl Fossil.png Used to display the sprite of the Aerodactyl fossil in Pewter City's Museum.
B8 184 Pokemon RGB-Ghost.png Used to display wild Pokémon in the Pokémon Tower before obtaining the Silph Scope.

Cries

Of all of the MissingNo, 30 have cries whose base, pitch, and length are set to 0:

Hex Dec. Cry Base Type Base Pitch Length
- -
Nidoran♂ 0 0 0


Two entries, meanwhile, share their cries with existing Pokémon, respectively Zubat and Dragonair:

Hex Dec. Cry Base Type Base Pitch Length
45 69
Squirtle 29 224 64
89 137
Bulbasaur 15 64 128


The remaining seven entries have unique cries which are not used by any other Pokémon:

Hex Dec. Cry Base Type Base Pitch Length
43 67
Nidoran♂ 0 128 16
4F 79
Rattata 34 255 64
51 81
Pidgey 14 224 96
5E 94
Bulbasaur 15 64 192
5F 95
Bulbasaur 15 32 192
7F 127
Rhydon 17 32 16
B5 181
Squirtle 29 0 128

For more information on Pokémon cries, see the respective Notes pages for Pokémon Red & Blue and Pokémon Gold & Silver.

(Source: IIMarckus - Pokémon Cry Data)

Base Stats

Each MissingNo. is numbered #000 in the Pokédex, and since a Pokémon's base stats are ordered by Pokédex number rather than internal index number this results in all 39 MissingNo. sharing the same basic information, including types, stats, moves, and Pokédex data. However, none of this data is actually valid, as the game is actually reading data far beyond the boundaries of the base stats table, misinterpreting data used to define the parties of trainers as base stats.

Pokédex Entry

Pokemon Blue Japan Ketsuban-zukan.png

The Pokédex entry for MissingNo. defines it as a "??? Pokémon" with a height of "1m" (3.3 ft), a weight of "10kg" (22.1 lb), and a placeholder Pokédex entry reading 「コメント さくせいちゅう」 ("Comment under construction"). However, this information was not translated or localized in the English versions of the games and became garbled, resulting in the Pokédex entry displaying an erroneous height of "10ft" (3.1 m) and a weight of "3507.2lb" (1590.8 kg).

MissingNo. List

As mentioned previously, only the last three MissingNo. have actual sprite data, though, interestingly, a 2020 Pokémon Blue source code leak revealed the back sprite that was once assigned to most of the entries. More information here.

Hex Dec. Front Sprite Cry Back Sprite
1F 031 Pokemon RGB-MissingNo.png
PokemonRGBY-Gyaon.png
20 032 Pokemon RGB-MissingNo.png
PokemonRGBY-Gyaon2.png
32 050 Pokemon RGB-MissingNo.png
PokemonRGBY-Balloonda.png
34 052 Pokemon RGB-MissingNo.png
PokemonRGBY-Buu.png
38 056 Pokemon RGB-MissingNo.png
PokemonRGBY-Deer.png
3D 061 Pokemon RGB-MissingNo.png
PokemonRGBY-Elephant.png
3E 062 Pokemon RGB-MissingNo.png
PokemonRGBY-Crocky.png
3F 063 Pokemon RGB-MissingNo.png
PokemonRGBY-Squid1.png
43 067 Pokemon RGB-MissingNo.png
PokemonRGBY-Cactus.png
44 068 Pokemon RGB-MissingNo.png
PokemonRGBY-Jagg.png
45 069 Pokemon RGB-MissingNo.png
PokemonRGBY-ZubatPrevo.png
4F 079 Pokemon RGB-MissingNo.png
PokemonRGBY-Fish1.png
50 080 Pokemon RGB-MissingNo.png
PokemonRGBY-Fish2.png
51 081 Pokemon RGB-MissingNo.png
PokemonRGBY-Mikon.png
56 086 Pokemon RGB-MissingNo.png
PokemonRGBY-Topknot1.png
57 087 Pokemon RGB-MissingNo.png
PokemonRGBY-Topknot2.png
5E 094 Pokemon RGB-MissingNo.png
PokemonRGBY-Lizard2.png
5F 095 Pokemon RGB-MissingNo.png
PokemonRGBY-Lizard3.png
73 115 Pokemon RGB-MissingNo.png
/
79 121 Pokemon RGB-MissingNo.png
/
7A 122 Pokemon RGB-MissingNo.png
PokemonRGBY-Squid2.png
7F 127 Pokemon RGB-MissingNo.png
PokemonRGBY-Psyduck2.png
86 134 Pokemon RGB-MissingNo.png
PokemonRGBY-Konya.png
87 135 Pokemon RGB-MissingNo.png
/
89 137 Pokemon RGB-MissingNo.png
PokemonRGBY-Substitute.png
8C 140 Pokemon RGB-MissingNo.png
PokemonRGBY-Magnethicc.png
92 146 Pokemon RGB-MissingNo.png
PokemonRGBY-Marowak2.png
9C 156 Pokemon RGB-MissingNo.png
PokemonRGBY-Gyopin.png
9F 159 Pokemon RGB-MissingNo.png
PokemonRGBY-Kotora.png
A0 160 Pokemon RGB-MissingNo.png
PokemonRGBY-KotoraEvo1.png
A1 161 Pokemon RGB-MissingNo.png
PokemonRGBY-KotoraEvo2.png
A2 162 Pokemon RGB-MissingNo.png
PokemonRGBY-Puchicorn.png
AC 172 Pokemon RGB-MissingNo.png
PokemonRGBY-BabyBlastoise.png
AE 174 Pokemon RGB-MissingNo.png
PokemonRGBY-Lizard1.png
AF 175 Pokemon RGB-MissingNo.png
PokemonRGBY-Gorochu.png
B5 181 Pokemon RGB-MissingNo.png
PokemonRGBY-OrigKamex.png
B6 182 Pokemon RGB-Kabutops Fossil.png
/
B7 183 Pokemon RGB-Aerodactyl Fossil.png
/
B8 184 Pokemon RGB-Ghost.png
/

Encountering MissingNo.

Method

Pokemon-missingno.png

In the English Red and Blue versions, the best-known way to find yourself face-to-face with a MissingNo. is to follow these steps:

  • Traveling to Viridian City, then talking to the old man who shows you how to catch Pokémon and accepting to watch his demonstration.
  • Once the tutorial is over, immediately use Fly to travel to Cinnabar Island or surf to Seafoam Islands (water route encounters will not overwrite land encounter data if there is no tall grass on the same route).
  • Once there, surf up and down the east coast of the island on the tiles where the water borders the land. Depending on the name you chose for your player character, an assortment of Pokémon and trainers at varying levels will appear.
  • If you used one of the game's preset names, or input a custom name that included the characters G, H, J, M, S, :, ], a, b, c, m, o, p, v, w, x, or y, you may find yourself battling a MissingNo.

Explanation

The reasons for this curiosity are twofold:

First off, land/water border tiles are normally programmed to function like water tiles, and thus generate encounters with wild water Pokémon. However, the land/water border tiles on Cinnabar Island are unusual in that they behave like grass tiles. This means they attempt to generate encounters from the wild Pokémon encounter table, a list of Pokémon defined for each map. This table is normally repopulated each time a player enters an area containing wild Pokémon. However, because Cinnabar Island has no Pokémon encounter data, entering the map doesn't cause the table to update. As such, encounter data from the player's previous location remains in memory without being overwritten.

Secondly, during the Pokémon-catching demonstration in Viridian City, the player's name is changed to "OLD MAN". In order to preserve the player's moniker, their original name is stored into the wild Pokémon encounter table for the duration of the battle, then copied back over once the demo ends. As soon as the player enters an area with wild Pokémon encounters, this table will be repopulated, so this little programming sleight-of-hand normally has no effect on the game.


The combination of these two quirks is where things start to fall apart. Because Cinnabar lacks encounter data, entering the map does not cause the encounter table to repopulate. As a result, flying directly from Viridian to Cinnabar after watching the old man's demonstration results in the player's name remaining in the encounter table. The characters that make up the player's name are thus treated as encounter data, but these don't always correspond to valid Pokémon IDs. As the battles triggered by surfing up and down the coast of Cinnabar Island are drawn from this table, the player can, accordingly, expect to encounter anything from rare or legendary Pokémon to MissingNo., 'M, and glitched Trainers at impossibly high levels.

For a full list of which characters generate which encounters, refer to this chart on Bulbapedia.

Side-Effects

Hall of Fame Corruption
A well-known consequence of encountering MissingNo. in battle is the corruption of the Hall of Fame data in the player's PC. The reason for this corruption is that the games use SRAM as temporary storage when decompressing sprites. MissingNo.'s garbage data is interpreted as a compressed picture, resulting in an extraordinarily large sprite that extends beyond the bounds of the sprite decompression buffer, overflowing into the Hall of Fame data that follows it, and overwriting some of the data there (the size of MissingNo.'s sprite is also the reason for wild MissingNo. encounter taking an abnormally long time to load.)

On a side note, what follows the Hall of Fame data is the sound engine data. In Red and Blue, MissingNo.'s sprite data isn't large enough to extend into it. In Yellow, however, it is, resulting in the sound engine data being interpreted as a Pokémon cry, and thus causing an unholy shriek as the battle begins.

(Source: YamaArashi & Sanqui)

Item Duplication
One of the contributors to MissingNo.'s fame is the item duplication glitch: Any time the player encounters MissingNo., 'M, or another glitch Pokémon with Pokédex number 000, the game attempts to set the "Pokémon has been seen" flag for that number in the Pokédex. Due to an integer underflow when calculating the address of this flag, the game instead sets the highest bit of the quantity of the sixth item in the player's bag, which results in a 128 unit increase.

If you catch the 'mon, the sixth item duplicates again (assuming it's been reduced to less than 128).

Other Versions

This glitch is not present in Japanese Red, Green, and Blue, as no Pokémon encounters occur on the land/water border tiles. Meanwhile, this glitch was also fixed in the Spanish and Italian versions of Red and Blue by programming the border tiles to behave as water tiles. However, it still remains in the German and French versions of these games, though in the French version encountering either MissingNo. or 'M causes the game to freeze.

The glitch was removed in all versions of Yellow by blanking the encounter table before overwriting it, and programming the border tiles to avoid triggering Pokémon encounters, as was already the case in the Japanese games.

'M

The glitch Pokémon 'M (whose name consists of corrupted graphics with "'M" in the middle) is often confused with MissingNo., as both can be encountered using the Old Man glitch, and both share the Pokédex number 000. However, unlike MissingNo., 'M is not pulled from unused internal index entries, but from unrelated data that follows the internal index. Its similarities to MissingNo. are coincidental.