Item Shifting Glitch

Versions : O/A/C

Ce glitch permet d'obtenir n'importe quel objet, et possède également quelques autres possibilités telles que d'avoir accès à distance, depuis le sac, aux objets stockés dans le PC en quantité illimitée, ainsi que celle de renommer un Pokémon, même échangé, et voir le contenu d'un œuf.
Tuteur : Krys3000
Merci à luckytyphlosion et Háčky du forum de Glitch City Labs, et à gifvex, qui ont découvert ce glitch

Ce glitch va vous permettre deux choses : la première, c'est d'obtenir l'objet de votre choix dans le poche Balls du sac. Il peut bien sûr s'agir de Balls, mais vous pouvez aussi obtenir et utiliser d'autres objets qui seront alors utilisables à l'infini. La deuxième chose c'est de pouvoir accéder au objets du PC depuis n'importe où, au travers de la poche des Balls (on parle alors d'Expanded Balls Pocket) et ces objets seront également infinis (sauf les Balls), car pas consommés lorsque utilisés.

En revanche, les CT et CS obtenues avec ce glitch, utilisées dans la poche Balls, auront des effets qui n'ont rien avoir avec leur utilisation normale : la plupart du temps, ça plante... sauf quelques unes dont on va également vous parler dans cet article.

Etape I : Obtenir deux (ou trois) Oeuf Mystère

Vous allez commencer par obtenir deux fois l'item Oeuf Mystère (pour obtenir un objet) ou trois fois cet item (pour accéder aux objets du PC). Pour cela, il va falloir avoir recours au Bad Clone Trick en suivant les instructions pour obtenir n'importe quel objet, et en utilisant un Pokémon avec Frappe Atlas (Machoc, par exemple). Le Pokémon tiendra alors l'Oeuf, et vous pourrez le cloner pour ensuite récupérer deux/trois Oeuf Mystère. Toutefois, comme toujours avec le Bad Clone, cette méthode ne marche pas avec un ID supérieur à 65280, ou égal à 255 modulo 256 (c'est-à-dire 511, 767, 1023, etc.), donc voici une méthode un peu différente pour exécuter le glitch.

  • Capturez un Chétiflor et clonez-le 5 fois, pour en avoir 6.
  • Obtenez un Bad Clone de Chétiflor et donnez-le à la dame de la Pension pour le transformer en Pokémon glitch 000, comme habituellement
  • Placez le Pokémon glitch EN DERNIER de l'équipe contenant également 5 Chétiflor.
  • Avec "DEPLACER PKMN SNS LETTRE", déplacez le Chétiflor qui était resté dans le PC en deuxième position de l'équipe (vous aurez alors 7 Pokémon)
  • Déplacez le premier Chétiflor de l'équipe en troisième position
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Déplacez le quatrième Chétiflor de l'équipe en première position
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Déplacez le premier Chétiflor de l'équipe en quatrième position
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Déplacez le deuxième Chétiflor de l'équipe en troisième position
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Déplacez le premier Chétiflor de l'équipe à sa position actuelle (appuyez sur A sans bouger lorsque le curseur de déplacement apparaît)
  • Quittez le menu "DEPLACER PKMN SNS LETTRE" et relachez le premier Pokémon de l'équipe
  • Quittez le PC. Les deux premiers Chétiflor devraient avoir un Oeuf Mystère.
  • Allez donner le Pokémon glitch 000 à la dame de la pension
  • Clonez un Chétiflor si vous souhaitez avoir un troisième Oeuf Mystère, puis prenez les tous.

Notez quelque chose qui peut avoir son importance : si vous disposez d'un jeu de première génération avec le 8F Code Execution, vous pouvez l'utiliser pour simuler le code action replay 0145A3DA (ou 0145A2DA sur Jaune). Cela modifiera le premier Pokémon de la boîte actuelle pour que, s'il est envoyé sur un jeu de deuxième génération, il tiendra un Oeuf Mystère.

Etape II : Obtenir l'objet de votre choix ou l'Expanded Balls Pocket

Méthode pour obtenir un objet

Commencez par choisir l'objet que vous voulez en regardant notre liste de correspondance et en notant son IDD. Puis, déposez le contenu de votre Poche Balls dans le PC, pour ne garder qu'une Hyper Ball x1 suivie de Poké Ball x2 (achetez-les, si besoin).

Maintenant, faites en sorte que votre poche d'objets rares soit pleine (incluant les deux œufs, qui doivent être placés dans les deux dernières positions). Si vous n'avez pas assez d'objets rares, vous pouvez cloner les Pokémon qui tiennent l'Oeuf avant de le prendre pour remplir votre poche d’œufs Intervertissez le premier avec le deuxième Oeuf Mystère (l'ordre est important) et un Passe Bateau va apparaître.

Dans votre poche Balls, vous constaterez qu'il y a désormais Master Ball x5 suivi de Hyper Ball x255 (indiqué par un nombre glitché). Vous allez devoir maintenant jeter autant d'Hyper Ball que nécessaire pour arriver au nombre correspondant à l'IDD de l'objet voulu (faîtes 255-IDD pour savoir combien vous devez en jeter). Enfin, intervertissez les Master Ball avec les Hyper Ball puis déposez et reprenez l'Oeuf Mystère resté dans le sac. Le premier objet de votre poche Balls sera l'objet désiré x1, et le second sera un pack de 255 Pokéball dont vous pouvez disposer à votre guise... mais jetez ou utilisez-en au moins une pour éviter des bugs.

Méthode pour obtenir l'Expanded Balls Pocket

Tout d'abord, déposez le contenu de votre Poche Balls dans le PC, pour ne garder qu'une Hyper Ball x1 suivie de Poké Ball x2 (achetez-les, si besoin).

Maintenant, faites en sorte que votre poche d'objets rares soit pleine (incluant les trois œufs, qui doivent être placés dans les trois dernières positions). Si vous n'avez pas assez d'objets rares, vous pouvez cloner les Pokémon qui tiennent l'Oeuf avant de le prendre pour remplir votre poche d’œufs Intervertissez l'avant-dernier Oeuf Mystère avec le dernier Oeuf Mystère (l'ordre est important) et un Passe Bateau va apparaître.

Dans votre poche Balls, vous constaterez qu'il y a désormais Master Ball x5 suivi de Hyper Ball x255 (indiqué par un nombre glitché). Intervertissez les Master Ball avec les Hyper Ball. Dans Cristal, vous devrez alors remplir votre Poche des Balls par quelque moyen que ce soit (ce n'est pas nécessaire dans Or ou Argent). Ensuite, déposez et reprenez le dernier Oeuf Mystère.

Si ce n'est pas le cas, placez les deux Oeuf Mystère restants dans votre sac aux deux dernières positions de la Poche des Objets Rares, à nouveau et intervertissez-les. Enfin, encore une fois, déposez et reprenez le dernier Oeuf Mystère.

Vous avez désormais accès à 255 objets dans la Poche des Balls en descendant en-dessous du Bouton RETOUR : au-delà de vos Balls se trouvent les objets stockés (parfois, vous n'en verrez que la description) mais dans Cristal, si vous dépassez le dernier objet stocké avec le curseur, ça plantera (sauf si vous avez appuyé sur le bouton SELECT sur un objet précédent).

Etape III : Exploiter les objets obtenus par ce glitch

Bien sûr, vous pouvez vous donner des Balls et les utiliser grâce à ce glitch. Si vous clonez les Oeuf Mystère, vous pourrez même le faire plusieurs fois sans repasser par le Bad Clone Trick. Mais il y a également plusieurs choses à savoir...

  • Comme on le disait en introduction, tout objet autre qu'une Ball généré par ce glitch, ou stocké dans le PC et utilisé grâce à ce glitch, est utilisable à l'infini.
  • De la même façon, stocker dans le PC un objet qui s'y trouve déjà par l'intermédiaire de l'Expanded Balls Pocket revient à... dupliquer l'objet !
  • Dans O/A, utiliser la CS01 depuis la poche Balls vous autorise à renommer un Pokémon, et cela même s'il est échangé ou si c'est un Oeuf. Dans le cas d'un oeuf, vous verrez le Pokémon à l'intérieur.
  • Les autres CT et CS exécutent du code si elles sont utilisées depuis la poche Balls. Pour certaines, ça n'aura pas d'effet particulier, pour d'autres ça plantera ou redémarrera le jeu. Avec les CT17 ou CT25 (dans O/A) ou CT33 (dans Cristal) on peut exécuter le code de son choix : c'est le TM Code Execution dont vous entendrez parler plus loin dans nos pages...

Si vous utilisez la variante de l'Expanded Balls Pocket, il y a un contre-coup : vous ne pouvez plus ramasser de Balls, ni en acheter, car le jeu pense que votre boîte Balls est pleine. Mieux vaut donc en avoir quelques-unes de coté.

Explications techniques

La raison pour laquelle ce glitch fonctionne est similaire à l'explication du Item Underflow Glitch qui est un peu la version 1G de ce glitch-ci, même si dans ce cas-là, on ne l'utilise pas pour provoquer un underflow (en revanche, la version qui donne accès aux objets stockés est bien un overflow). En effet, comme vous le savez si vous avez lu les explications de cet autre glitch, lorsque vous intervertissez deux packs du même objet dont la somme des quantités est supérieure à 99, le jeu rééquilibre les packs pour affecter une quantité de 99 à un pack et du reste à l'autre ; de la même façon si le total est supérieur à 256, il créera un pack x0 (car 255 étant la valeur maximale d'une adresse mémoire de jeu Game Boy, rajouter 1 à cette valeur la fait retourner à 0) puis un pack contenant le total - 256. Dans ces mêmes explications, on vous dit qu'un pack de 0 équivaut, pour le jeu, à l'absence d'objet, et qu'il supprime alors ce pack lorsque vous l'intervertissez avec un pack du même objet.

Ce fonctionnement n'est bien sûr par prévu DU TOUT pour les objets clés, qui n'ont pas de quantité ! Les objets "classiques", ainsi que les balls et les CT/CS, sont stockés dans la RAM du jeu (à partir de l'adresse $D57E dans O/A, et $D859 dans Cristal) à l'aide d'une liste constituée d'une adresse mémoire pour l'IDH de l'objet, suivie d'une adresse mémoire pour sa quantité, suivie du même couple d'adresses pour l'objet suivant, etc. Or, il n'y a qu'une adresse mémoire pour chaque objet rare (dont la liste commence à $D5E1 dans O/A et $D8BC dans Cristal), puisque selon Game Freak, vous ne pouvez avoir qu'un seul exemplaire de chaque.

Comme vous êtes plus malins qu'eux, vous réussissez à avoir deux exemplaires d'un objet rare (l'Oeuf Mystère) et vous les intervertissez. Le jeu essaye alors d'appliquer la fonction d'équilibrage des packs dans la poche d'objets rares et lit donc la RAM comme s'il s'agissait d'objets "classiques" ou de Balls : il estime que vous intervertissez un Oeuf Mystère (IDH 45) en quantité 69 (car il lit l'IDH 45 du deuxième œuf comme une quantité, et que 45, en décimal, ça fait 69) avec un autre Oeuf Mystère en quantité 255 (c'est en fait la traduction, en décimal, de l'IDH du bouton RETOUR, FF). Le total de tout ça fait 324, mais comme tout le reste, le registre des additions accepte comme valeur maximale 255, puis retourne à 0 si on continue d'ajouter : le total fait donc seulement 68. Du coup, en voulant combiner ça en "un pack de 68 Oeuf Mystère", le jeu affiche l'Oeuf Mystère suivi d'un Passe Bateau (dont l'IDD est 68 !).

Comme nous l'expliquons dans la partie technique du Duplicate Items Trick le fonctionnement du jeu lorsqu'un objet est supprimé (ce qui est le cas quand deux packs d'un même objet sont combinés - ce que le jeu croit être le cas actuellement) est de copier l'IDH de l'objet d'après dans l'adresse mémoire précédente, décalant ainsi toute la liste, jusqu'à ce qu'il rencontre la valeur FF, synonyme de bouton RETOUR, donc de fin de l'inventaire. Problème : ici, il n'y a plus de bouton RETOUR, car celui-ci a été utilisé comme quantité d'un Oeuf Mystère, donc le décalage va affecter la section suivante de la mémoire : la poche Balls !

Comme nous avions Hyper Ball x1 en tant que premier objet de la poche Balls et que tout s'est décalé vers le haut, c'est désormais le x1 qui s'est placé comme valeur de $D5FD (O/A) qui contient l'IDH de la première ball : elle devient donc une Master Ball, d'IDH (et IDD) 01. La Poké Ball (IDH 05), qui était en deuxième position de l'inventaire, se retrouve poussée vers $D5FE (quantité de la première Ball) qui devient donc x5. La deuxième Ball n'est alors plus une Poké Ball mais bien une Hyper Ball (car son IDH est de 02 - comme la quantité de la Poké Ball avant le glitch) et bien sûr, c'est le bouton RETOUR qui se retrouve en quantité de l'Hyper Ball... qui est donc de 255 !

Nous jetons ensuite des Hyper Ball jusqu'à conserver exactement l'IDD de l'objet voulu. En intervertissant les deux packs de Balls après, on obtient ceci : Hyper Ball xIDD suivi de Master Ball x5. Vous serez d'accord avec moi, si nous redécalions les valeurs de nouveau vers le haut, IDD rentrerait dans $D5FD et deviendrait le premier objet, sa quantité serait x1 à cause de la Master Ball et le deuxième objet serait une Poké Ball x255... C'est ce que nous allons faire en stockant l'Oeuf Mystère, car il n'y a toujours pas de bouton RETOUR dans la poche des objets rares ! Le glitch est fini à ce niveau-là, mais nous retirons l'Oeuf de nouveau afin de restaurer le bouton RETOUR de la poche des objets rares et de rendre tout ça un peu plus propre :)

La variante avec les trois Oeuf Mystère consiste en fait a exécuter le glitch une deuxième fois (on parle de "Double Item Shifting Glitch") après l'avoir fait avec un IDD de 255. Nous exécutons un troisième décalage, qui cette fois va placer l'IDD (255 donc) en tant que NOMBRE de Balls dans la poche, puis la copie va bien sûr s'arrêter. En clair, vous venez de faire croire au jeu qu'il y a 255 balls dans la poche balls. Il va donc vous permettre de descendre dans cette poche non pas de 13 crans, comme ça devrait être le cas normalement, mais de 128 (puisqu'il y a, dans cette poche, deux adresses par objet à cause des quantités)... et donc d'accéder aux 230 adresses mémoires se trouvant après les balls dans la RAM.

Il se trouve que les objets du PC sont stockés de l'adresse $D616 à $D67B dans O/A et $D8F1 à $D956 dans Cristal. Notre petite manip avec le PC vous permet de descendre jusqu'à $D5FC + 2*FF = $D7DC dans O/A et $DAD5 dans Cristal, ce qui est largement suffisant !


Page Précédente : Pokegod Glitches
Page suivante : Arbitrary Code Execution