today, in things you probably didn’t know about pokemon rby:
rby have glitch moves that have no real name, but are informally known as super glitch. the effects are seemingly unpredictable and random, but highly destructive; the player's name can be overwritten to be much longer than it ever should be (corrupting the save file in the process, because it can't read that and its probably taken other data with it in the process), the inventory can be overwritten with junk, the map you're on can descend into a glitchy mess, and then the game crashes, etc.
but as with many things with pokemon rby, what was once considered unpredictable now has an explanation
rby works by looking up data in tables. you look at entry 1 on the pokemon table and it gives you all the data you want on rhydon (it would only be later generations that made the internal table ordering match the pokédex order). the pokemon table has a lot of entries that were dummied out with just 00s, and when the game looks up those entries, it ends up finding the "standard" missingno. however, the pokemon table ends after victreebel (entry 190), so it starts reading unrelated data as if it were pokemon.
it's a similar story with the moves table - it ends after entry 165 (struggle). in later generations, if you ask the game for a move that doesn't exist, the game might either crash or force it to be splash or struggle instead (depending on the game), but rby has no such error correction. when you ask rby to read an entry between 166 and 190, it reads from whatever's stored immediately after the moves table... which happens to be some temporary storage showing the game's state before a full screen menu was opened. in other words, it normally contains the current layout of the overworld before you last went into a full screen menu
when a move is displayed on screen, the game copies its name from the moves table to a different section of memory - and a special character (a terminator) lets it know when to stop copying. but of course, we're no longer in the nice structured moves table (where everything is properly terminated), but in that copy of overworld data - which may or may not have the terminator character on screen. so the game keeps copying more and more data to that temporary move name storage area (which of course wasn't meant to store more than 10 characters), which results in other parts of RAM quickly being overwritten as well
anyway all this is setup for above which shows to maximize the corruption you get, how much you can do without the game crashing, and how to make the game get into an infinite loop by reading the copy of the copy of overworld data, then reading the copy of the copy of the copy of overworld data
(and also because it's all based on RAM there are still sometimes some unpredictable effects)















