4

In Pokémon Red and Blue, MissingNo. is a well-documented phenomenon. As stated in the question "Does MISSINGNO. actually destroy saved game files?", one of the areas MissingNo can corrupt is the hall of fame records.


The accepted answer confirms that

No, it just messes with your save files, permanently messing them up, but not actually deleting them.

and includes the recommendation that

[to fix the problems] try releasing the MissingNo Pokémon. If the problem persists, the only solution is to re-start your game. This means erasing your current game and starting a brand new one.

This suggests that the act of saving after catching MissingNo is in part responsible for the corruption. To clarify, I saved the game before encountering MissingNo, performed the MissingNo glitch, and reloaded my old save. I confirmed that the hall of fame data was initially uncorrupted, and that catching MissingNo has corrupted it. However, not having saved my game post-MissingNo, I reloaded my old save to find that my hall of fame data was still corrupted.


What I am wanting to know is why MissingNo corrupts the hall of fame data, or more specifically,

Why does the MissingNo glitch permanently corrupt the hall of fame data.

12
  • 1
    You glitched the game. Memory address exploits make bad things happen.
    – Frank
    Oct 6 '15 at 22:54
  • 1
    Retracting my close vote. As @Robotnik points out, the questions are similar. The other question only acts as a confirmation that what OP states is fact. It provides us with "this happens, and then this happens, and if this happens, you want to reset your entire game", but at no point addresses the why, which appears to be the focus of this question. OP, I am going to make an edit to clarify this. If you think I have overstepped your intent, feel free to roll it back.
    – user106385
    Oct 6 '15 at 23:15
  • VTC because asking why a bug works the way it does seems like it'd require extensive knowledge of the code or assembly, which seems off-topic to me.
    – Schism
    Oct 7 '15 at 0:16
  • Thanks for the answer, sorry I potentially posted a duplicate question. If you really are curious, I have as of now discovered why missingno corrupts hall of fame data. Oct 7 '15 at 1:14
  • 1
    @Timelord64 You're misunderstanding the expertise here. We can objectively explain what happens with Missingno; that's easily something a gamer can do and figure out. What we can't do is explain why it does that. That would take reading the code or incidental coding knowledge. Which some of our members have, but not something we can expect, nor require.
    – Frank
    Oct 7 '15 at 3:09
10

TL;DR

Missingno is not a real Pokémon, but is treated as such by the game. This makes the game execute code it shouldn't execute, which in turn causes all sorts of undefined behavior, including tampering with save files.


To understand why Missingno alters already existing savegames, one must first understand how Gameboy games work.

On the Gameboy, savegames are saved on the cartridge's RAM (Random Access Memory), which requires a battery to keep its data. The game itself is stored on ROM (Read Only Memory).

Back then, games had complete control over both the console's hardware and the cartridge. There was no OS (Operating System) running on the console which the game had to communicate with. If the game said "jump", the console would (if it could), even if the order made no sense at all. This allowed games to include additional hardware in the cartridge to allow the console to do what it couldn't normally do, like add 3D capabilities. It's a feature that was hardly ever used, since it would've made cartridge costs skyrocket.

So how does Missingno corrupt savegames in the first place? The answer is simple: Missingno is not part of the game. Let me explain in a bit more detail.

Whenever you reach an area in Pokémon, the game would load a list of Pokémon you could encounter in that area. Not all areas have tall grass or water where you could catch Pokémon, so not all areas would have that list.

Cinnabar Island and Viridian City are two such areas; with no tall grass or water, there is no need for a Pokémon list, right? Well, that's not true for Cinnabar island. There is this one column of water at the Eastern end of the island that still belongs to the island itself. Since the devs overlooked that patch, they didn't bother giving Cinnabar island its own Pokémon list. This is why you could encounter Safari Zone Pokémon at Cinnabar island. Since Fuchsia City also doesn't have a list, leaving the Safari Zone doesn't reset it, making Safari Pokémon encounterable at Cinnabar island.

So what's the deal with the old man of Viridian City and Missingno? Remember what the old man does? He teaches you how to catch Pokémon, but you can't actually encounter any Pokémon in Viridian City. Because of that, the devs had to load some special data into that list to ensure the old man could have a scripted battle in which he'd quickly catch his target. That data is later interpreted as a real Pokémon at Cinnabar island, and rendered as Missingno.

This is where it gets technical: Since the data that had been loaded in the Pokémon list by the old man isn't actually a Pokémon, the engine would try to execute part of the code it's not supposed to execute. This is quite similar to how malware works, only it's not a malware but a glitch. At this point, there is no telling what the game could do. The game could theoretically overwrite your savegame with all zeroes (deleting your save in the process), or corrupt it beyond recognition, or sit down and drink tea, or ignite all the nukes worldwide (slight exaggeration).

Since RAM is very easy to access, savegame corruption isn't very unlikely. And luckily, since the game itself is stored on ROM, all you need to do is start a new game and avoid Missingno this time around.

5
  • Very good explanation. One suggestion, I find if the content is "too long", users will often simply stop scrolling. For that reason, I favor putting TL;DR sections right at the top. The main point is first up, and obvious from the get go.
    – user106385
    Oct 6 '15 at 23:32
  • 1
    @Timelord64. Good point. I've edited it, thanks.
    – Nolonar
    Oct 6 '15 at 23:42
  • A number of my answers have been downvoted without a comment lately. It feels like I'm being targeted, which is kind of exciting. Please continue to do so ;)
    – Nolonar
    Oct 6 '15 at 23:47
  • 1
    Solid explanation. This must have taken a while to write out so thank you for that. I have also located the specific rom and sram addresses responsible for hall of fame corruption. Oct 7 '15 at 1:20
  • More specifically the game has to change your name to "OLD MAN" and sprite to the old man sprite for the battle. The thing is, to do this it needs to temporarily store your name/sprite somewhere otherwise it'd be lost, and with memory being so limited, the devs chose to store it in the "grass tile Pokemon" list. This is why setting your name to different values can affect the level/type/moves etc of MissingNo.
    – Robotnik
    Mar 27 '16 at 16:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.