Dossier : Méthodes de Corruption

AVERTISSEMENT : Ce dossier concerne les moyens de corrompre la mémoire dans la première génération, et est beaucoup plus avancée que ce dont vous aurez besoin pour réaliser les glitches les plus simples de celle-ci. Si vous le souhaitez, vous pouvez choisir de ne le lire que lorsque vous commencerez une page dans laquelle est recommandée la lecture de celui-ci.

Il existe plusieurs façons de corrompre gravement la mémoire du jeu. Nous pourrions traiter, dans nos pages, chacune de ces méthodes comme des glitches à part entière. Mais la corruption de mémoire est un processus qui, bien qu'utile (car avec un peu de maîtrise, on peut la contrôler) est très dangereuse et souvent bourrée d'effets secondaires. De plus, si elle constitue un point d'entrée facile pour activer certains glitches complexes (et parfois de manière stable), rien de ce que la corruption de mémoire fait ne peut être accompli plus proprement à l'aide d'autres glitches que vous devez de toute façon maîtriser en partie pour corrompre. Pour cette raison, nous avons décider de parler de ce sujet dans cette introduction, et d'y faire référence dès que c'est nécessaire dans nos pages, avec tous les avertissements qui s'imposent à propos des risques encourus !

La corruption Super Glitch

Brièvement abordé dans la partie précédente de cette introduction, Super Glitch est la méthode de corruption la plus permissive, mais également une des plus sales. Elle se produit lorsque vous tentez d'utiliser (ou simplement visualiser, par les stats), une attaque glitchée d'Identifiant compris entre $AC et $C3.

Les attaques Super Glitch n'ont pas de nom, et quand le jeu tente de l'afficher, il prend pour nom des données de la mémoire du jeu (la "RAM"). Pour obtenir ce genre d'attaque, vous pouvez recourir à un code Action Replay, mais il est également possible d'utiliser un des nombreux glitch permettant d'obtenir n'importe quel Pokémon, comme le Ditto Trick (que vous trouverez dans notre section 1G), car certains Pokémon glitch de la liste des Identifiants apprennent naturellement certaines de ces attaques Super Glitch !

Fonctionnement de la corruption Super Glitch

Parce que la taille maximale du nom d'une attaque est de 12 caractères, il y a toujours un marqueur de fin, un caractère spécial d'Identifiant 50, en treizième position ou avant. Lorsque Super Glitch prend un nom dans la RAM, il est possible que dans celui-ci, ce marqueur de fin n'existe pas et le nom continue jusqu'à en trouver un, écrasant des informations importantes situées après le nom de l'attaque dans la RAM. Une corruption se produit alors.

Malgré ce côté complètement aléatoire, la corruption obéit à certaines règles et, par conséquent, peut être maîtrisée. Elle commence normalement à l'adresse mémoire $D0E6, mais le nombre de caractères des attaques avant Super Glitch dans la liste des attaques du Pokémon influe sur ce point de départ, que l'on peut trouver avec la formule suivante :

Point de Départ = $D0E6 + Nombre d'attaques avant Super Glitch + Nombre de caractères combiné des attaques
Ce qui signifie que si vous avez 3 attaques, d'une longueur totale de 20 caractères, le point de départ sera $D0E6 + $03 + $14 = $D0FD.

De plus, l'endroit ou vous ouvrez le menu pour visualiser l'attaque Super Glitch dans les stats de votre Pokémon est d'une importance capitale car Super Glitch corrompt la mémoire avec les données d'une zone de tampon écran qui contient les Identifiants des tuiles du jeu (et qui est située juste après la zone de tampon de texte qui contient le nom de l'attaque). En visualisant Super Glitch à un certain endroit et avec des attaques d'une certaine longueur avant celle-ci, il est donc possible de contrôler à la fois où commence la corruption et les valeurs qui seront écrites (partiellement). Un moindre mal, donc, qui permet d'obtenir des effets très utiles en glitchologie tout en limitant les dégâts sur la partie.

Par exemple, lorsqu'un Pokémon glitch apprend un Super Glitch, vous visualisez cette attaque et cela suffit à provoquer la corruption de la mémoire. Mais en faisant cela dans un endroit qui dispose de certaines tuiles (principalement, comme vous le verrez sur nos pages, un certain étage du Manoir Céladon), on empêche la corruption d'avoir lieu jusqu'à ce qu'on veuille volontairement la lancer (en visualisant les stats du Pokémon) ! Pour aller plus loin, une corruption contrôlée à l'aide d'autres attaques et de bonnes tuiles permet à l'utilisateur averti de faire sauter le marqueur de fin d'équipe, et d'avoir plus de 6 Pokémon ce qui s'avère utile pour certains glitches.

Notez qu'il existe également la possibilité de provoquer la corruption Super Glitch en utilisant certains des objets glitch qui se trouvent entre les objets normaux et les CT dans la liste des Identifiants. Nous n'allons pas vraiment en parler ici, mais vous verrez que cela peut s'avérer utile pour un certain glitch...

Les effets de la corruption Super Glitch

Super Glitch a d'abord été connu pour ses effets dans le jeu plutôt que pour la corruption qu'il provoque. Il existe deux effets qui sont connus pour arriver lorsqu'on lance une corruption Super Glitch non-maîtrisée, les deux pouvant arriver, ou pas, selon le Super Glitch utilisé (et ce qu'il prend comme nom dans la RAM).

Ce que les glitchologues anglophones appellent "effet TMTRAINER" est un effet fréquent du Super Glitch lorsqu'il est activé en combat. Le nom est issu d'une phrase qui peut s'afficher lorsque cet effet a lieu (en français, la phrase est DRES.CT). L'effet consiste en une baisse progressive et rapide du volume sonore, jusqu'à arrêt complet et remplacement de la musique par des sons aléatoires (comme celui d'ouverture du menu START) qui se répète à intervalles réguliers. Le Pokémon adverse se voit alors affublé d'un statut, le plus souvent le Gel, puis on nous indique qu'il souffre de sa brûlure ! A moins de vous trouver dans une grotte, lorsque le combat se termine, le jeu plante.

Il existe aussi un effet nommé "PokéPC" qui efface complètement le nom du joueur et le remplace par un nom glitché (parfois contenant, en version anglaise, la mention PokéPC). Dans la plupart des cas, celui-ci est très gros et lorsque vous essayez de sauvegarder, cela provoque l'effacement pur et simple de la sauvegarde ! Contrairement à l'effet TMTRAINER, cette corruption ne peut pas être évitée même par un expert mais heureusement il est possible avec un peu de maîtrise de remettre son nom à zéro, ce qui permet d'utiliser Super Glitch pour les besoin d'un glitch, sans se condamner à ne plus pouvoir sauvegarder. Théoriquement, avec suffisamment de chance, il est possible que le nom du joueur sélectionné par la corruption contienne un marqueur de fin qui l’empêche de déborder. Dans ce cas, il suffit de parler à une infirmière dans un centre Pokémon et de refuser le soin, pour prévenir tout risque de plantage pendant la sauvegarde.

Prédire le nom obtenu par Super Glitch

Nous remercions TheZZAZZGlitch pour son explication sur la façon dont se comporte le curseur.

Comme vous allez le voir plus bas dans la section consacrée à la corruption Cooltrainer et sur la page qui traite son utilité, la position du curseur à laquelle le jeu prélèvera le nom de l'attaque Super Glitch dépend du nombre d'adresses de valeur $50 dans la RAM. Bien qu'il soit possible, au sein du jeu, d'influencer ce nombre et donc, d'orienter le curseur, il est toujours difficile de prévoir le nom obtenu par Super Glitch, et pour être franc, ça n'a pas grand intérêt, sauf si vous voulez vous assurer que la corruption aura lieu. Justement, il y a une de ces attaques, celle d'Identifiant $A6, dont la position du curseur est fixe et qui provoque toujours la corruption.

Cela a lieu parce que cette attaque est immédiatement après la dernière attaque réelle du jeu, Lutte (Identifiant $A5) qui se termine par un marqueur de fin. A partir du Super Glitch d'Identifiant $A7, le curseur, à la recherche d'un nouveau marqueur de fin de nom d'attaque, glisse hors de la première section de la mémoire (la "ROM") qui ne contient, après la liste des attaques, que des $00, et atteint la deuxième section, la VRAM, où il va chercher à s'accrocher à une adresse de valeur $50 pour lire ce qui se trouve avant, comme il le fait avec une attaque normale. C'est là que les choses deviennent imprévisibles. Très probablement, sur cartouche réelle, le curseur ne s'arrêtera pas dans la VRAM car elle n'est sollicitée que pendant de très court moments et ne contient que des $FF la plupart du temps. Il a donc toutes les chances de sélectionner le nom dans la troisième section de la mémoire, la SRAM.

Notez qu'à cause de la façon dont les anciennes versions de l'émulateur Visual Boy Advance émulent la VRAM, la présence d'une séquence $B0 $B0 $50 dans la VRAM donnera au Super Glitch d'Identifiant A7 le nom "qq" (q étant la lettre dont l'Identifiant est $B0) et ne provoquera pas du tout de corruption. Cette valeur de $50 n'est pas lue sur console, ni sur l'émulateur BGB ou les versions récentes de VBA.

Cooltrainer, ou le Super Glitch pour tous

On dit parfois de la corruption Cooltrainer qu'elle est un "demi-Super Glitch". L'expression n'est pas inexacte car le principe est exactement le même : une attaque (d'Identifiant $00, cette fois) qui n'a pas de nom et en sélectionne un dans la RAM, provoquant la corruption de la mémoire à cause de sa longueur. La grosse différence est que cette corruption est limitée et localisée, et donc pratiquement inoffensive car elle ne cause pas l'effet PokéPC, donc ne pose aucun problème de sauvegarde, et vous pouvez donc la maîtriser avec les bonnes tuiles pour capturer les Pokémon de votre choix sans avoir à prendre de risques. En quelque sorte, la corruption Cooltrainer est une version moins permissive mais très stable du Super Glitch.

De plus, comme si le Dieu des glitchologues voulait nous aider, il est possible d'apprendre cette attaque d'Identifiant $00 à Metamorph très simplement, sans recours à un autre glitch. Comme vous connaissez déjà les bases du Super Glitch et que ceci n'est qu'une introduction, nous n'allons pas plus aborder ce sujet, que vous retrouverez dans la page consacrée à l'utilisation de cette corruption pour obtenir des Pokémon !

La corruption ZZAZZ Glitch

Cette corruption est très différente du Super Glitch, mais pour la déclencher vous devrez également passer par un glitch permettant de rencontrer n'importe quel Pokémon afin de rencontrer un des dresseurs glitchés de la liste des Identifiant ($FB à $FF, ce qui correspond en décimal à 251 à 255 lorsque vous utilisez un glitch qui génère à partir du Spécial comme le Ditto Trick qui se trouve sur notre site). Si vous effectuez cette rencontre dans les bonnes conditions, le dresseur enverra au combat le Pokémon glitch d'Identifiant $FF, dont le nom est 'M mais que l'on surnomme "Charizard 'M" car il dispose du sprite de Dracaufeu (Charizard, en anglais) et pour ne pas confondre avec le 'M d'Identifiant 00. Celui-ci sera à très haut niveau.

Le problème est que lorsque vous battez un dresseur, l'argent gagné est obtenu en multipliant une somme de base (dépendante du dresseur) par le niveau de son dernier Pokémon, par le biais d'une série d'additions successives (si la somme de base est 4 et le niveau du dernier Pokémon est 5, le jeu fera 4 + 4 + 4 + 4 + 4 = 20) puis stocké dans un triplet d'adresses mémoire commençant à $D07E. Ce montant est plafonné à la valeur $00 $99 $99, mais lorsque vous rencontrez un dresseur glitch dont la somme de base est déjà très élevée, et que celle-ci est multipliée par le niveau très élevé de son Pokémon, vous dépassez très largement cette somme. Et c'est là que le problème se produit.

À cause d'un souci de programmation, lorsque ce plafond est dépassé (ce qui ne peut pas arriver en temps normal) le jeu déplace le curseur sur les adresses suivantes et poursuit son calcul ! On se retrouve donc à écrire $99 en valeur de deux adresses sur trois (la première adresse d'un groupe de 3 est toujours épargnée car le plafond de $00 $99 $99 l'empêche d'être écrite) jusqu'à ce que le calcul soit terminé... c'est à dire pendant très longtemps ! En conséquence :

  • Si vous jetez une ball, le combat contre le dresseur glitch prend fin. C'est parce que l'adresse mémoire $D121 prend la valeur $99, or c'est elle qui gère l'arrêt de la démonstration du vieil homme de Jadielle lorsqu'elle n'a pas pour valeur $00.
  • Votre nom de joueur ne conserve plus qu'une lettre sur trois qui soit correcte, toutes les autres sont changées en Z (lettre d'Identifiant $99). C'est de là que le nom ZZAZZ Glitch vient. Comme pour le Super Glitch, la non-présence d'un marqueur de fin vous empèche de sauvegarder sans détruire la sauvegarde. Si vous avez un nom d'exactement 2, 5 ou 8 caractères, le marqueur ne sera pas affecté car sa position est un multiple de trois. Vous pourrez alors sauvegarder, mais il faudra avant parler à l'infirmière d'un Centre Pokémon et refuser ses soins, comme pour le Super Glitch.
  • Certains de vos Pokémon sont changés en Bulbizarre (Identifiant $99) au niveau 153 ($99, traduit en décimal). Encore une fois, un Pokémon sur trois est épargné. Si vous avez un, trois, quatre ou six Pokémon, le marqueur de fin d'équipe prendra la valeur $99, et donc deviendra lui-aussi un Bulbizarre.
  • Les attaques de vos Pokémon sont toutes changées en Explosion (Identifiant $99), sauf la troisième, bien sûr.
  • Certains de vos objets peuvent devenir l'objet glitché d'Identifiant $99 ou avoir une quantité de 153. Si l'adresse gérant le nombre d'objets dans votre sac, $D322, prend comme valeur $99, cela vous donnera 153 objets.
  • Si vous affrontez un nouveau dresseur, vous vous trouvez face à vous-même. C'est parce que l'adresse $D130, qui gère le fait que le combat soit un combat link ou pas, est passée à $99. Cet adversaire particulier vous envoie alors le plus souvent un Charizard 'M avec énormément de PV.

Vu comme ça, cette corruption a l'air tellement sale que vous devez la trouver particulièrement inutile. Il y a des bons côtés : le fait d'avoir plus de 20 objets permet d'influencer la valeur de certaines adresses mémoires, comme vous le verrez dans certains de nos glitches qui utilisent des méthodes plus douces pour parvenir à ce résultat, et le fait d'avoir plus de 6 Pokémon en faisant sauter le marqueur de fin constitue également un point d'entrée pour plusieurs glitches et est donc la caractéristique la plus intéressante de cette corruption. Malgré ça, la corruption ZZAZZ reste essentiellement un amusement pour glitchologue et n'est jamais utilisée ; on y préfèrera systématiquement le Super Glitch ou l'utilisation d'un autre glitch !


Page Précédente : Dossier : Les formats de code GBA
Page suivante : Glitchdex : Pokémon Glitch