great posts above
Sorry Monzae for the following quotations ;) While they're not nested it makes my post large!
Jax Malcolm certainly knows her stuff!
Because the mess of pixels is a placeholder as well. Occasionally, you get actual sprites (e.g. Ghost Missingno), but more commonly, you'll get the garbage that's left in the slots that were never meant to be called up in a Pokemon encounter.
However, I have to disagree with those pixels being the placeholder itself!
It's been said; MissingNO. is placeholder data. There is a question that's been nagging me, though. Why the mess of pixels rather than some sort of proper sprite?
The reason why you get the missingo sprite is because you're using data that
isn't supposed to be an image as an image, hence you get an unintended sprite. This is unintentional. I think only the name 'missingno' is the placeholder. Everything else is read because it's there every time.
I haven't checked but if you looked in the memory for Pokemon ID 0 there should be no information there, hopefully only 0s/nulls. The only thing set should be its name: Missingno.
The reason why the graphics are so mucked up is that you have to remember that:
- data stored in the RAM is just one continuous list of binary numbers.
- Images are just numbers, ingame text is just (an indexed list of) font letter pictures.
- If you read data as a letter you will get a letter. If you read data as a sound you'll get an awful sound*.
- Gameshark (and its type of cheat system) works by modifying memory addresses to reproduce the results you want. The number you input is actually the offset from the beggining of the memory.
I think the reason why you get
consistent Missingno sprites is that the overwritten data from the Old Man is the same every time. What Jax says makes sense: your name is put somewhere else for safe keeping while the game uses OLD MAN. When you force the game to read something that it isn't supposed to be reading, you'll get strange results. Explains why you get images in the hall of fame. Name data and the wild pokemon
overlap at certain name character positions.
* I'm ignoring headers and the like, you
cannot name a .PNG file a .WAV and expect it to play for example. On gameboys you don't have strict or the requirement of file headers.
Because the strip of land/water was never programmed for Pokemon data, although it was programmed to allow players to encounter wild Pokemon. Because the game doesn't know what to put there, it instead borrows data from the last area you've been in.
I didn't realise this previously,
thanks Jax! The bug that causes this to work is that the
tile on shores. The bug isn't the old man! The game shouldn't be reading that information to begin with.
Those shores give a memory offset that points to the
bogusdata the old man sets and previous battles set.
This enables people to manipulate them! Yellow probably fixes the bug by simply making shores give wild Pokemon, since this will fix the bug.
What a thought stimulating post!