ZZAZZ glitch: Difference between revisions

added an exception for the freeze when you attempt to view party.
(+Overview heading)
(added an exception for the freeze when you attempt to view party.)
Line 8: Line 8:
The glitch is directly caused by a multiplication routine used to calculate the amount of [[money]] awarded at the end of the battle. As money in Generation I is stored as {{wp|binary-coded decimal}}, the game must perform several arithmetic functions in order to load the proper value into memory; as part of this loading, the game attempts to ensure that the money value is capped at {{PDollar}}9999. However, since the glitch Trainers encountered have an invalid money value unlike normal {{pkmn|Trainer}}s, the arithmetic functions fail to behave as expected, corrupting a pointer<ref>http://forums.glitchcity.info/index.php/topic,36.msg194415.html#msg194415</ref> and causing the byte 0x99 to be written to the first two out of every three bytes for each time the calculated award would exceed {{PDollar}}9999 after the first. For the Trainers that trigger the ZZAZZ glitch, this happens over two hundred times, destroying many important game variables.
The glitch is directly caused by a multiplication routine used to calculate the amount of [[money]] awarded at the end of the battle. As money in Generation I is stored as {{wp|binary-coded decimal}}, the game must perform several arithmetic functions in order to load the proper value into memory; as part of this loading, the game attempts to ensure that the money value is capped at {{PDollar}}9999. However, since the glitch Trainers encountered have an invalid money value unlike normal {{pkmn|Trainer}}s, the arithmetic functions fail to behave as expected, corrupting a pointer<ref>http://forums.glitchcity.info/index.php/topic,36.msg194415.html#msg194415</ref> and causing the byte 0x99 to be written to the first two out of every three bytes for each time the calculated award would exceed {{PDollar}}9999 after the first. For the Trainers that trigger the ZZAZZ glitch, this happens over two hundred times, destroying many important game variables.


The glitch Trainer is usually seen sending out a [[level]] 153 [['M (FF)]]{{sup/1|RB}} or a [[Q ◣]]{{sup/1|Y}} with an extremely long {{stat|Hit Points|HP}} bar; attempting to use a [[move]] or even just view the [[party]] will cause the game to freeze due to the corruption. However, the Trainer can be easily escaped by using any [[item]] (as long as it does not display the party, such as any type of [[Poké Ball]]); doing so automatically causes the battle to end (also due to the corruption). During and after the battle, the player can see that every Pokémon in their party except each third one has been changed to a level 153 {{p|Bulbasaur}} whose first, second, and fourth moves are all {{m|Explosion}}; the player's name except for every third letter has also been overwritten with capital Z's (hence the name of the glitch). All of these correspond to index number 0x99.
The glitch Trainer is usually seen sending out a [[level]] 153 [['M (FF)]]{{sup/1|RB}} or a [[Q ◣]]{{sup/1|Y}} with an extremely long {{stat|Hit Points|HP}} bar; attempting to use a [[move]] or even just view the [[party]] will cause the game to freeze (unless you have two or five Pokémon) due to the corruption. However, the Trainer can be easily escaped by using any [[item]] (as long as it does not display the party, such as any type of [[Poké Ball]]); doing so automatically causes the battle to end (also due to the corruption). During and after the battle, the player can see that every Pokémon in their party except each third one has been changed to a level 153 {{p|Bulbasaur}} whose first, second, and fourth moves are all {{m|Explosion}}; the player's name except for every third letter has also been overwritten with capital Z's (hence the name of the glitch). All of these correspond to index number 0x99.


Although the player's name has been corrupted, the [[Original Trainer|OT]] values of the party Pokémon have not, causing them to be treated as [[outsider Pokémon]]. Combined with the fact that most of them are level 153, they will always disobey the player (as not even the {{badge|Earth}} is programmed to make Pokémon over level 100 obey), unless the player's name stays the same after the glitch (with a name of ZZ or ZZ<any character>ZZ).
Although the player's name has been corrupted, the [[Original Trainer|OT]] values of the party Pokémon have not, causing them to be treated as [[outsider Pokémon]]. Combined with the fact that most of them are level 153, they will always disobey the player (as not even the {{badge|Earth}} is programmed to make Pokémon over level 100 obey), unless the player's name stays the same after the glitch (with a name of ZZ or ZZ<any character>ZZ).