Game Glitch Analysis: MISSINGNO.

MISSINGNO.

MISSINGNO.

One reason (among many) I wanted to get into game development was because when I was younger, playing my SNES and Gameboy, I would run into various glitches in the games. Some would let you walk through walls, some would totally crash the game. I wanted to figure out why that happens; what in the game would make something so bizarre happen this way.  Now that I understand programming and game design, I’m going out to hunt down the cause of these glitches.

For my first Glitch Analysis, I thought I might do a very famous and familiar glitch: MISSINGNO. In this Glitch Analysis, I’ll go over why MISSINGNO. is created, how it glitches your game, and go over a few of its relatives, too.

Beware the OLD MAN

Everyone should still remember the method to finding MISSINGNO.:

  1. Go to Viridian City and talk to the OLD MAN.
  2. Wait for him to finish his tutorial.
  3. Fly to Cinnabar Island.
  4. Surf the cost by the Gym, making sure you never leave the coast.

It was a simple trick. So how could something so simple break the game so bad?

Well, in truth, its’ partially your fault and the OLD MAN’s fault.

Back in the day of the big GameBoy cartridges, memory was very limited. programmers had to squeeze every bit they could get out of those games, and with a game like PokéMon, every bit counted.

PokéMon used tables for storing which PokéMon were in the area based on walking, surfing, and fishing, storing a “key” variable for looking up the PokéMon in a hash table. When you would enter a new route, the data would be updated with new keys. However, cities in the Red and Blue versions of PokéMon didn’t have grass in them, so the data wouldn’t be updated when entered. If you flew from one city to another, that data didn’t update either, so whatever was in the area of the last route you were in would remain in memory for whatever city you entered. Normally this wouldn’t be a problem, however, the tiles used to repesent the shore of an island are treated as grass. So when you’re surfing the coast, you’re actually walking the coast.

So where do you and the OLD MAN step in? It’s all in the tutorial the OLD MAN did, where he caught a Weedle. When the OLD MAN comes onto the screen, it displays the OLD MANs’ name. In order to do this, the game needs to temporarily change your name to OLD MAN. Instead of placing your name in a temporary variable, which would have consumed precious memory, the game stores your name in the PokéMon walk encounter table. That’s where the fun begins.

The data is laid out as such: The player name is composed of 6 hexadecimal values, all one byte in length. The game uses 3 WORDS (or shorts (2 bytes)) for the PokéMon species key and level. PokéMon encountered along the coast are determined by the third, fifth, and seventh characters in the players name, while the levels are stored in the second, fourth and fifth characters. With this knowlage, someone could use a calculator (like this one at Glitch City Laboratories) to calculate almost any glitched PokéMon they wanted.

What’s In a Name?

Depending on what characters you have in your name will result in a different – but essentaially equal MISSINGNO. These Glitch PokéMon are called “Hybrids” by Glitch City Laboratories, as they hold similarities to the PokéMon they’re based off of (such as sprite).

Clockwise from left.

  • MISSINGNO. Normal – Also commonly refered to as “‘M,” MISSINGNO.s’ common form appears for people with a “G,” “H,” “J,” “M,” “S,” “T,” “:,” ” ],” “a,” “b,” “c,” “m,” “o,” “p,” “v” or NULL Terminator  as the third, fifth, or seventh character.
  • MISSINGNO. Ghost – Appears for people with a “y” as the third, fifth, or seventh character.
  • MISSINGNO. Aerodactyl – Appears for people with a “x” as the third, fifth, or seventh character.
  • MISSINGNO. Kabutops – Appears for people with a “w” as the third, fifth, or seventh character.
  • MISSINGNO. Yellow – Doesn’t appear in the Red or Blue versions of the game. Only appears in PokéMon Yellow when performing the Mew Glitch, and comes with its own unique glitches.

 

Based on any other letters occupying those positions in the players names can result in a magnitude of other PokéMon to appear.

Effects

MISSINGNO. is the easiest way to duplicate items, creating 128 of the item in the 6th item spot, and also glitches the Elite Four Hall Of Fame. Why does MISSINGNO. do this? In order to understand, think of MISSINGNO. as an unhandled array overflow. MISSINGNO.s’ data is owned by other parts of the game (if you notice ‘M’s random blocks in it’s name change based on your position in the world). The encounter flag for MISSINGNO. is the high bit of the 6th items’ quanitity. By encountering MISSINGNO. you’re reading and writing to not only player data, but graphical data as well.

Gotta Glitch ’em All

In total, between PokéMon Red, Blue and Yellow, there are 36 total glitch PokéMon. Some have some pretty devistating effects to player save data, while others may just freeze the game. Most of the glitch PokéMon were ment as placeholders or padding between PokéMon for when the game was in development. Now they’re nothing but bad pointers.

Thus concludes the how, what and why of MISSINGNO.; one of the most infamous glitches of videogame history, and one of the top glitches in PokéMon RBY alone, aside from Glitch City and the more-recently discovered Mew Glitch, which unveiled a pleathora of new glitch PokéMon and the ability to catch a non-glitched level 7 Mew.

So I hope you enjoyed this Glitch Analysis, uncovering the secrets behind some  game glitches. See you next time!

MISSINGNO. Appeared

Oh God! Kill it with fire!

References:

http://bulbapedia.bulbagarden.net/wiki/Main_Page

http://glitchcity.info/

Advertisements