Item Underflow Glitch

Version : R/B/J

Ce glitch vous donne accès à un inventaire ou un PC glitché, qui vous permet d'obtenir n'importe quel objet et de manipuler les octets du jeu, pour par exemple vous téléporter où vous le souhaitez.
Rédacteurs : Krys3000 et Guerdina
Remerciements à Glitch City Labs et particulièrement à Torchickens et TheZZAZZGlitch
This glitch is also available in English at our partner Glitch City Labs: click here

Ce glitch permet de lire et modifier les données de la RAM, la mémoire du jeu, de manière bien plus puissante que par le Glitch City RAM Manipulation que vous avez peut-être déjà lu si vous lisez les pages du site dans l'ordre. Si ce n'est pas le cas, je vous recommande très fortement de le lire, y compris la partie explications techniques, ainsi que notre introduction, car vous arrivez désormais dans les glitches pour lesquels vous devez comprendre concrètement comment ils fonctionnent pour en tirer le meilleur. Fini le bac à sable, bienvenue dans l'arène !

Il consiste à changer le nombre d'objet détenu ou stocké pour lui faire prendre la valeur 255 ($FF, en hexadécimal). Comme il n'est normalement pas possible d'avoir plus de 20 objets sur soi (50 dans le PC), le jeu se met à lire les données qui suivent dans la RAM (argent, ID, nom du joueur et du rival, position sur la map, etc.) et tente d'interpréter celle-ci comme des objets (existants ou glitchés) et leur quantité !

Etape I : Obtenir un objet x255

Obtenir cet inventaire glitché nécessite d'abord d'avoir un objet en 255 exemplaires. Cela est possible de deux façons :

  • Soit, en utilisant la très célèbre propriété de MissingNo.. Le rencontrer une fois permet effectivement d'augmenter la quantité de son 6ème objet par 128, et si vous réduisez le nombre total à 127, le capturer (ou le rencontrer une seconde fois) permet de la passer à 255. MissingNo. est rencontrable via de nombreux glitches, dont une liste est établie sur la page du Duplicate Items Trick.
  • Soit, à l'aide du Glitch City RAM Manipulation en suivant les instructions ci-dessous. Cette méthode, découverte par notre équipe, a le mérite de ne nécessiter absolument AUCUN pré-requis.
  • Il est également possible d'utiliser la corruption Super Glitch pour ça, mais très honnêtement, c'est se compliquer la vie...

Si vous passez donc par la méthode du Glitch City, ayez 50 objets différents dans votre PC et placez-vous au point d'entrée habituel, à Parmanie, faites 50 pas vers la gauche (52 dans Jaune) et 95 vers le haut pour rejoindre le bloc du Glitch City qui reflète le nombre d'objet stockés. Il contient un arbre coupable (c'est le bloc de tuile d'Identifiant $32). Coupez-le pour passer le nombre d'objet du PC à 109, puis volez dans une ville et allez dans un Centre Pokémon. Dans le PC, retirez un Objet dont la quantité est 0 (ce n'est pas difficile à trouver) et jetez-en un exemplaire pour amener sa quantité à 255 !

Voici une vidéo qui montre toute la procédure

Etape II : Déclencher l'underflow

Une fois en possession de l'objet en 255 exemplaires, à l'aide du bouton SELECT, placez-le en troisième position d'un inventaire d'au moins 5 objets, sachant qu'ils doivent tous être des objets inutiles (car ils seront supprimés).

3 objets

Vous allez maintenant effectuer la technique du Duplicate Items Trick dans ces conditions, c'est-à-dire jeter les deux premiers objets : ils seront alors transformés en packs de 255.

3 Special +

Allez ensuite au premier objet et jetez en 255 à répétition, et ce jusqu'à ce que vous ne puissiez plus descendre sur le troisième objet (le deuxième étant en fait le bouton RETOUR). Jetez alors 253 exemplaires du premier pack de 255, puis inversez-le (avec SELECT) avec l'objet 2. Inversez ces objets une deuxième fois pour les remettre à leur place. Désormais, le premier pack dispose d'une quantité de x0.

Special + à 0

Vous pouvez constater qu'il est désormais possible d'aller en-dessous du bouton retour. Vous aurez désormais dans votre sac tout un ensemble d'items, allant d'objets existants à des objets glitchés ou à des textes ne correspondant pas à des objets : c'est le résultat de l'association des valeurs de RAM suivant celles de l'inventaire avec les objets ayant ces Identifiants. C'est la raison pour laquelle certaines actions, comme le fait de simplement vous déplacer sur la carte, modifie la quantité ou la nature de certains des objets de cet inventaire !

L'underflow une fois actif. Pensez à descendre lentement, car il y a des zones de l'inventaire qui buguent et le curseur met longtemps à descendre. Si vous bloquez, spammez B et Bas pour passer outre les zones difficiles.

Pour déclencher un underflow dans le PC, le fonctionnement est absolument le même ; simplement, les objets doivent être dans celui-ci, et placés dans cet ordre avant d'être retirés. Si vous êtes passés par le Glitch City RAM Manipulation, vous pouvez déjà accéder jusqu'au 109ème objet ; vous verrez qu'il n'est donc pas nécessaire d'y faire un underflow supplémentaire la plupart du temps.

Etape III : Utiliser l'underflow pour modifier les adresses mémoires

Voici un tableau expliquant tout ce qu'il est possible de faire avec ce glitch à l'aide d'un underflow dans l'inventaire, et le fonctionnement pratique dans les sous-pages dont vous trouverez les liens juste en-dessous. Il est à noter qu'en manipulant les données de la map, nous pouvons aller encore plus loin dans l'édition de la mémoire que ce que l'underflow permet normalement d'atteindre.

Données manipulables par l'underflow dans l'inventaire
Objet Adresse contrôlée (-1 dans Jaune) Description de l'adresse
1-21 $D323 à $D34B Objets détenus au moment du glitch. S'il n'y en avait pas, ne contrôle rien.
Quantité du 21 $D34C Argent (deux premiers chiffres)
22 $D34D Argent (chiffres 3 et 4)
Quantité du 22 $D34E Argent (deux derniers chiffres)
23 $D34F Première lettre du nom du Rival
Quantité du 23 $D350 Seconde lettre du nom du Rival
24 $D351 Troisième lettre du nom du Rival
Quantité du 24 $D352 Quatrième lettre du nom du Rival
25 $D353 Cinquième lettre du nom du Rival
Quantité du 25 $D354 Sixième lettre du nom du Rival
26 $D355 Septième lettre du nom du Rival
Quantité du 26 $D356 Huitième lettre du nom du Rival
27 $D357 Neuvième lettre du nom du Rival
Quantité du 27 $D358 Dixième lettre du nom du Rival
28 $D359 Marqueur de fin du nom du Rival
Quantité du 28 $D35A Options de jeu
29 $D35B Badges possédés
Quantité du 29 $D35C N/A
30 $D35D Options de délai d'affichage du texte
Quantité du 30 $D35E N° ID (premier octet)
31 $D35F N° ID (second octet)
Quantité du 31 $D360 Piste audio
32 $D361 Banque audio
Quantité du 32 $D362 Palette de couleur (00 = normal, 06 = Flash requis)
33 $D363 Map actuelle
Quantité du 33 $D364 Event displacement (pointe vers une sauvegarde de l'Identifiant du premier bloc visible à l'écran, 1er octet)
34 $D365 Event displacement (pointe vers une sauvegarde de l'Identifiant du premier bloc visible à l'écran, 2ème octet)
Quantité du 34 $D366 Coordonnée Y de la position du joueur sur la map
35 $D367 Coordonnée X de la position du joueur sur la map (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)
Quantité du 35 $D368 Coordonnée Y de la position du joueur par bloc de tuile
36 $D369 Coordonnée X de la position du joueur par bloc de tuile
Quantité du 36 $D36A Map atteinte en passant une porte (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)
37 $D36B N/A
Quantité du 37 $D36C Set de tuile utilisé par la map actuelle
38 $D36D Hauteur de la map actuelle
Quantité du 38 $D36E Largeur de la map actuelle (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)
39 $D36F Pointeur vers les données de la map (premier octet)
Quantité du 39 $D370 Pointeur vers les données de la map (deuxième octet)
40 $D371 Script des PNJ de la map (premier octet) (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)
Quantité du 40 $D372 Script des PNJ de la map (deuxième octet) (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)
41 - Quantité du 255 $D373 à $D521 Autres données de la map, son contenu et ses connexions

Chaque objet à partir du 21ème lit deux octets : un pour la nature de l'objet et l'autre pour sa quantité. Chaque objet permet donc de modifier deux adresses mémoires. Ainsi, le 22ème objet de l'inventaire lit deux octets liés à l'argent possédé par le joueur (un autre est lu par la quantité de l'objet 21). Jeter quelques exemplaires de ces objets, ou l'intervertir avec une autre ayant une quantité différente, me permet de changer la quantité d'argent que j'ai sur moi. Ainsi, si je dispose de 3 exemplaires de l'objet 21 et en objet 22 j'ai 10 exemplaires d'Hyper Balls, mon argent sera de $03 | $02 (c'est l'Identifiant associé à l'hyper ball dans la correspondance) | $10. Normalement, par conversion de ces valeurs en décimal, ça devrait donner 197136 pokédollars - mais l'Argent est géré de façon particulière dans ce jeu, et il faut traiter directement les hexadécimaux comme s'il s'agissait de décimal : vous aurez 30210 pokédollars.

Pour réparer votre inventaire et le rendre de nouveau normal, il vous suffit d'acheter un exemplaire d'un ou plusieurs objets jusqu'à ce qu'il ne soit plus possible d'aller en dessous du bouton retour, et que tout soit revenu à la normale. Les objets qui étaient contenus dans votre inventaire avant le glitch seront supprimés définitivement.

Note importante : Il est préférable de modifier les octets dans un Centre Pokémon, ou dans votre maison, pour éviter que l'inventaire ne plante autour du 25ème objet. D'autant que TheZZAZZGlitch a réalisé l'image suivante permettant de repérer (mais valable uniquement dans un centre) le symbole glitché correspondant à la quantité qui vous intéresse :


Voici un tableau expliquant tout ce qu'il est possible de faire avec ce glitch à l'aide d'un underflow dans le PC, et le fonctionnement pratique juste en-dessous.

Données manipulables par l'underflow dans le PC
Objet Adresse contrôlée (-1 dans Jaune) Description de l'adresse
1-51 $D540 à $D5A4 Objets stockés au moment du glitch. S'il n'y en avait pas, ne contrôle rien.
Quantité du 51 $D5A5 Boite Pokémon active (premier octet)
52 $D5A6 Boite Pokémon active (deuxième octet)
Quantité du 52 $D5A7 Nombre d'équipes au Panthéon
53 $D5A8 N/A
Quantité du 53 $D5A9 Nombre de jetons de casino (deux premiers chiffres)
54 $D5AA Nombre de jetons de casino (deux derniers chiffres)
Quantité du 54 - 91 $D5AB à $D5F4 Statut des objets à récupérer (ramassé ou pas)
Quantité du 91 - Quantité du 255 $D5F5 à $D6F8 Flags d'avancement du jeu (voir sous-page dédiée ci-dessous pour apprendre à utiliser cette donnée)

Le fonctionnement de la manipulation de ces données est exactement le même pour pour l'inventaire, si ce n'est que pour réparer le PC, on stocke des objets, bien sûr. Ainsi, changer la quantité du 53ème objet à 50, par exemple, permet d'obtenir au moins 3200 jetons de casino, le nombre exact sera déterminé par l'Identifiant du 54ème objet qui contrôle les deux derniers chiffres !

Voici les différents effets que vous pourrez obtenir en manipulant la mémoire de cette façon.

Explications techniques

Vous l'avez compris, le but de l'item underflow glitch est de faire croire au jeu que vous possédez 255 objets dans l'inventaire ou dans le PC. Pour faire ça, on se sert du fait que 00 et 256 sont en fait la même valeur dans la programmation d'un jeu Game Boy. Logiquement, donc, si vous n'avez aucun objet et que vous en perdez un, vous devriez en avoir... 255 !

Dans les explications du Duplicate Items Trick, nous avons expliqué que lorsque vous jetez ou stockez un objet, le jeu décale les objets restants en remplaçant le 1er objet par celui qui était le 2ème, avant de remplacer le 2ème par celui qui était le 3ème, etc., jusqu'à rencontrer une valeur $FF. Le Duplicate Items Trick est donc un moyen de faire descendre le nombre d'objet, stocké à l'adresse $D322, sans faire disparaître les objets en question. Lorsque vous jetez les premiers objets, vous vous retrouvez avec 3 packs de 255. Jeter le premier pack n'a globalement aucun effet sur les objets puisque sa quantité a comme valeur $FF. Par contre, le nombre d'objets détenu (ou stocké) descend d'une unité.

Lorsque vous jetez suffisamment de fois le premier pack de 255, vous arrivez à n'avoir - théoriquement - plus qu'un objet. Le bouton RETOUR est représenté par le deuxième pack de 255 (alors inutilisable) et le troisième est encore visible en-dessous, même si vous n'y avez plus accès. Parce que le deuxième objet est encore présent dans l'inventaire, il est possible d'intervertir ce "faux bouton RETOUR" avec le premier objet.

Il faut maintenant savoir qu'intervertir deux packs d'objets les réorganise en mettant à l'un des deux packs la valeur maximale de 256 et le reste des objets dans l'autre pack si le total est supérieur à 256 (sinon, l'un des packs prendra la valeur 99 et l'autre pack prendra le reste). Si vous jetez 253 exemplaires du premier pack, pour n'en garder que 2, avant de l'intervertir avec le second pack, le jeu rééquilibre les packs. L'un prend comme quantité 0 et l'autre 1 (car 255 + 2 = 257 et ce nombre est réparti en un pack de 256 et un pack de 1). Seulement, une quantité de 0, c'est un pack vide, donc un objet que l'on ne possède pas ! Ainsi, lorsque le jeu déplace le pack de 0, celui-ci est supprimé et le nombre d'objet descend à 0...

...mais tant que vous ne sortez pas du menu, vous avez encore accès au "faux bouton RETOUR" en deuxième position qui est maintenant le troisième pack de 255. Intervertissez-le de nouveau pour fusionner 255 et 1, ce qui donne un nouveau pack vide. Le nombre d'objet descend donc de nouveau... revenant donc à $FF ! Le glitch est désormais actif.

En ayant 255 objets, vous pouvez accéder, et donc modifier, les 235 (x2, car il y a l'objet et sa quantité) valeurs de la mémoire qui suivent celles des objets, et il en va de même pour le PC qui permet d'accéder aux 205 (x2) adresses situées sous les objets stockés. Mais l'astuce avec la taille de la map, qui fait sortir le curseur hors des limites du menu Pokémon, va encore plus loin. Les données du Pokémon 6 se terminent à $D272, c'est-à-dire bien avant les données des objets. Si vous n'avez pas encore lu les explications techniques du Save Abuse Glich, vous y verrez que chaque Pokémon est contrôlé par pas moins de 44 adresses mémoires ; la possibilité de placer un Pokémon "valide" au-delà du 6ème emplacement permet donc de déplacer un bloc entier de 44 valeurs ailleurs dans la mémoire (pour le 100ème emplacement, compter (100 - 6) * 44 = 4136 ce qui fait $1028 en hexadécimal, soit un début des données à $D273 + $1130 = $E29B, beaucoup plus loin que ce que peut atteindre l'underflow du PC !). Il ne faut pas oublier qu'en terme de mémoire, $EXXX constitue le début de l'Echo RAM qui est une copie de la WRAM, donc $EXXX = $CXXX et $DXXX = $FXXX. Voila qui permet donc en réalité de modifier des adresses qui se trouvent AVANT même les données des Pokémon... telles que le nombre de Pokémon lui-même. La boucle est bouclée !


Page Précédente : Trade Evolution Glitch
Page suivante : Yami Shop Glitch