Est. 2012
Pokemon · Glitch Mechanics

The ZZAZZ Glitch, Or How One Byte Turns Your Save Into Exploding Bulbasaur

Most glitches in Generation 1 are polite. MissingNo. gives you free Master Balls and asks only for your Hall of Fame. The glitch Pokemon in my ranking mostly just want to battle. And then there is ZZAZZ, which renames you, deletes your team, replaces it with an army of Level 153 Bulbasaur that only know Explosion, and often takes your save file on the way out. Today I am going to explain exactly why all of that happens, because the answer is one single byte, and I think about it constantly.

How you trigger it (do not trigger it)

ZZAZZ comes out of the Ditto glitch, the same trick speedrunners use to encounter specific Pokemon by preparing a specific Special stat. Encounter the glitch trainer tied to a Special stat of 248, 251, 252, 254, or 255 in Red or Blue (Yellow adds a few more) and instead of a Pokemon, the game serves you a trainer built entirely out of garbage data. That is where the trouble starts, and it starts somewhere you would never guess: the prize money.

The mechanism, and it is beautiful

Generation 1 stores money in a format called binary-coded decimal, where each digit of your cash is packed into memory in a very particular way. When a trainer battle begins, the game runs a multiplication routine to figure out the payout. A normal trainer has normal money data and the math works fine. A garbage trainer has money data that is not valid binary-coded decimal at all, and when the multiplication routine chews on it, the routine fails in the most productive way imaginable: it starts writing the byte 0x99 into memory. Not once. Over two hundred times, marching through the game's variables like a stamp machine.

And here is the detail that names the whole disaster. In the game's text encoding, 0x99 is the letter Z. The corruption overwrites most of your trainer name with that byte, sparing roughly every third character for technical reasons, so a name like GARDEN comes out looking like ZZAZZ-something. The community named the glitch after its own signature. The vandal signs its work.

Why Bulbasaur, why 153, why Explosion

Your party gets the same treatment. Every Pokemon except the ones in every third slot is overwritten, and the stamped bytes happen to decode as: species Bulbasaur, Level 153, with Explosion in the first, second, and fourth move slots. Nobody chose this. It is just what 0x99 means when the game reads it as a species, as a level, and as moves. The result is that your carefully raised team is replaced by identical disobedient Bulbasaur, each one three times more committed to Explosion than any living thing should be. I have seen a lot of corrupted data in my time, and this is still the funniest possible shape for it to take.

How dangerous is it really?

Nukes tier, the real thing. Opening your party menu or using moves can freeze the game on the spot (unless you happen to be carrying exactly 2 or 5 Pokemon, where the corruption pattern lines up less catastrophically). And the part that matters: saving the game after ZZAZZ hits will often leave the save file unloadable. Not scrambled. Gone. If you want to see ZZAZZ, see it on an emulator with a backup, never on the cartridge you love.

If it happens to you

There is a documented escape route, and it works because of what the corruption does not touch. First, get out of the battle using items only, and nothing that displays your party. Second, walk yourself to a Pokemon Center and heal, which resets the corrupted menu values. And a genuinely strange piece of trivia: players whose names are exactly 2 or 5 characters long can sometimes keep their save intact, because the corruption happens to preserve the end-of-string markers at those lengths. Somewhere out there, someone survived ZZAZZ because they named themselves AL in 1998. I hope they know how lucky they are.

The moral

One failed multiplication. One byte with two meanings. That is the entire distance between a working save file and an army of exploding Bulbasaur wearing your name. Generation 1 did not have guardrails, it had coincidences, and ZZAZZ is what happened when the coincidences ran out. The ZZAZZ Bulbasaur earned its place in my ranking's Nukes section, and the glitch itself now has a specimen card in The Glitchhouse, filed under things we appreciate from a respectful distance.

Sources: mechanism, trigger values, and recovery documented in Bulbapedia's ZZAZZ glitch research. Companion pieces: the glitch Pokemon ranking, MissingNo., and 'M (00).


Go deeper: browse the Glitchhouse · the Gen 1 battle engine.