Talk:ZZAZZ glitch

From Bulbapedia, the community-driven Pokémon encyclopedia.
Jump to: navigation, search


I read this on "BTW, there's a pattern to this glitch: Bulbasaur is HEX 153, Explosion is HEX 153, the letter Z is HEX 153, and the Bulbasaurs are Level 153. The glitch just sets all of the game's variables to HEX 153. Also for some reason the Pokemon, the third letter in your name, and the third move in you Pokemon's move set are spared. three is the magic number." This should be mentioned.Kiryu 00:19, 2 February 2009 (UTC)

It's interesting that 153 = 0x99, as the game does use Binary-Coded Decimal for some values; for example your money ($999,999 = 99 99 99 rather than 0x0F423F). However I think this is a coincidence. From a technical standpoint, this glitch overwrites several areas of memory with two different patterns. Your Pokémon's stats all become 153, which (being 16-bit values) indicate the entire status block is overwritten with the byte pattern 0099. However your name becomes ZZxZZxZZxZZx (where x is unchanged), which indicates that block is overwritten with a different pattern: write two bytes of 99, then skip one.
Having played with the game code a fair bit, this seems familiar to me: I suspect it's actually the graphic decompression routine gone out of control due to the Pokémon having garbage graphic data. The graphic compression routines include commands such as "fill with 2-byte pattern" (0099 in this case) and "fill with byte, skipping every third." These exactly match the symptoms. Another hint is that it corrupts the player's trainer and Pokémon graphics - the first place an out-of-control graphic decompression routine is going to trash is the other graphics right nearby. HyperHacker 03:45, 16 December 2009 (UTC)
HyperHacker, it seems that your first guess is more correct... With the help of an emulator, I just pinpointed the instruction directly doing the damage, and it was at f82d (3:782d), in the BCDAdd routine. It was the loop used to set the result to 999999 in the event of an overflow (like how your money wouldn't increase beyond 999999). BCDAdd is designed to handle BCDs with different sizes, which, I guess, is why it can rewrite things in different patterns. The calls to BCDAdd are coming from 39d18 (e:5d18). I'm currently trying to understand what that call is intended to do... Edit: probably that portion of code (around 39d18) just deserves to lose. It uses the value of register de immediately after calling BCDAdd, which is not smart: the meaning of that value depends on whether an overflow happened... Bbbbbbbbba (talk) 18:50, 3 May 2014 (UTC)


What exactly are the Yellow variations of this glitch? This can be answered by putting the Yellow variations on the page.--DRAGONBEASTX 07:05, 23 February 2009 (UTC)

I mean "Yellow version abnormalities" that are different from the RB, as so it mentions on the page. So, what are they? This could work for the article...--DRAGONBEASTX 00:53, 24 February 2009 (UTC)

The yellow abnomalities are very similar, except the trainer will send out a Q instead of a Charizard 'M - --Chickasaurus 18:55, 23 November 2009 (UTC) 18:55, 23 November 2009 (GMT)


"It can be encountered by using the Ditto glitch with a Special stat that has a decimal number of any multiple of 251, 252, 254 or 255." Is this correct? If so, then a Pokémon with a Special stat of 507 should behave like 251 (506 mod 256 = 251) but ignore the ZZAZZ glitch (506 is not a multiple of those numbers). Likewise, 507, 508, 511, 763, 764, 766, and 767 should work for the same reason. Also, is 253 supposed to be excluded? --SnorlaxMonster 14:23, 21 September 2011 (UTC)

This glitch does not replace the back sprite with bulbasar it changes the Pokémon to bulbasar exept for any Pokémon with an index number that is a multiple of three, also every attack is changed to explosion exept for any multiples of three.Kingsisle (talk) 16:59, 5 June 2013 (UTC)