8F Code Execution

Version : R/B/J

C'est le plus puissant glitch de la 1G, qui vous permet d’exécuter du code. Vous pouvez ainsi simuler des codes action replay, d'autres glitches ou même programmer des logiciels, sans avoir besoin d'un quelconque appareil de triche !
Rédacteur : Krys3000
Tuteur : Haxel
Remerciements à Glitch City Labs et particulièrement à Torchickens (également pour l'adaptation à la version française) et TheZZAZZGlitch mais aussi à Tagada67 du forum PRAMA
This glitch is also available in English language at our partner Glitch City Labs: click here

Sur cette page vous allez apprendre à exécuter du code dans votre jeu Pokémon Rouge, Bleu ou Jaune. C'est plus ou moins ce que vous faites en utilisant l'Action Replay, mais ici, vous n'avez besoin d'absolument rien. Vous allez pouvoir ordonner au jeu d'agir selon votre bon vouloir, c'est vous qui aurez la main. Avec ce glitch, vous n'avez aucune limite. Argent, Pokémon, objets, badges, se téléporter d'endroits en endroits, jouer à Pong (si si), rien n'est impossible pour qui maîtrise l'art du 8F Code Execution !

Si vous avez déjà lu la liste de correspondance dans nos pages, vous savez qu'il existe un certain nombre d'objets glitchés ou portant des noms correspondant à l'association de ceux-ci avec d'autres sections de la mémoire du jeu. Ils peuvent d'ailleurs être visualisés et obtenus à l'aide de l'Item Underflow Glitch. Pour ce glitch, nous allons avoir besoin d'un de ces objets, celui qui s'appelle 7EME ETAGE et dont l'IDH est de 5D. Si vous voulez juste tester le glitch, vous pouvez bien sûr vous servir du code Action Replay pour l'obtenir.

Attention, dans la version jaune, on ne peut pas utiliser 7EME ETAGE. Avant, on utilisait l'objet qui porte un nom du type ws*l’||lm||, le * représente un symbole glitché dépendant de votre localisation dans Kanto, dont l'IDH est 63, mais la découverte de l'objet 3EME ETAGE (IDH 59) par Tagada67 du forum de PRAMA, qui est globalement plus pratique, facilite le glitch dans cette version. Nous allons vous en apprendre toutes les variantes !

Etape I : Obtenir 7EME ETAGE, 3EME ETAGE ou ws*l’||lm|| avec l'item underflow

Pour 7EME ETAGE, le mieux est d'utiliser la version bouclée de Céladopole décrite dans la page de l'Item Underflow Glitch. Il faut alors suivre les indications de celui-ci en se plaçant en un point précis, et inverser la Pépite avec un Spécial +. Vous pouvez donc avoir fait l'underflow avec le Spécial +, mais ça n'est pas obligatoire : il suffit d'en avoir un dans l'inventaire au moment où vous effectuez le glitch.
Après l'inversion, faites 5 pas vers la droite pour vous trouver au niveau de l'escalier du rebord, puis 5 pas vers le bas pour arriver juste en-dessous de celui-ci. Enfin, 20 pas vers la droite vous amèneront à l'endroit précis où, en ouvrant votre inventaire, vous trouverez l'objet tant voulu.

Pour obtenir 3EME ETAGE, faites de même mais avec 5 pas à droite, 5 pas en bas, et seulement 16 pas à droite. Enfin, pour ws*l’||lm||, c'est 5 pas à droite, 5 pas en bas, 26 pas vers la droite qu'il faudra faire. Comme d'habitude, mettez cet objet dans la partie sûre de votre inventaire glitché (les 20 premières places) puis dans votre PC avant de réparer votre inventaire en achetant des objets.


L'objet ws*l’||lm|| obtenu via l'item underflow.

Etape II : Préparer l'équipe/boite permettant d’exécuter du code

Il va maintenant falloir organiser les Pokémon dans votre équipe (R/B) ou dans votre boite (Jaune) d'une certaine manière. Techniquement, l'objet glitché obtenu à l'étape I permet d'interpréter des Pokémon comme des instructions de code, mais c'est très laborieux et très long de devoir les changer à chaque fois que vous voulez exécuter autre chose, nous n'allons donc nous en servir que pour demander au jeu de lire l'inventaire et d’exécuter du code à partir de celui-ci, car il est bien plus malléable !

Pour ne pas rendre cet article trop difficile à comprendre aux néophytes qui ne s'intéressent pas DU TOUT à la technique, les explications quant à la façon dont le jeu interprète ces Pokémon grâce à l'objet glitché sont indiquées dans une partie réservée en fin de glitch, comme souvent dans nos pages. Vous pouvez aller les voir, ou suivre bêtement les instructions suivantes !

Rouge/Bleu avec 7EME ETAGE

Ayez dans votre équipe :

  1. Roucool avec 233 PVs actuellement (pas forcément au maximum)
  2. Parasect
  3. Gravalanch
  4. Tentacool
  5. Kangourex
  6. aucun Pokémon

Jaune avec 3EME ETAGE

Ayez dans votre boite 1 du PC (et elle doit être ACTIVE) :

  1. Un Pokémon au choix avec actuellement 33 PP sur sa première attaque, 38 PP sur sa deuxième attaque, 19 PP sur sa troisième attaque (cette attaque doit avoir reçu 3 PP Plus) et pas de quatrième attaque ou pas de PP sur cette attaque.
  2. Melofée, Nidoran Mâle ou Piafabec avec 233 PV actuellement (pas forcément au maximum)

Il vous faut aussi placer et récupérer immédiatement à la Pension un Pokémon de niveau 80 avec actuellement 24 PV.

Jaune avec ws*l’||lm||

Ayez dans votre boite 1 du PC (et elle doit être ACTIVE) :

  1. Saquedeneu avec 233 PVs actuellement (pas forcément au maximum)
  2. Nidoking
  3. Chrysacier
  4. Spectrum
  5. Pyroli
  6. Parasect
  7. Kadabra
  8. Tentacool
  9. Tadmorv
  10. Un Pokémon au choix
ET RIEN DE PLUS (sinon ça ne marchera pas)

Pour obtenir ces Pokémon, vous pouvez recourir à d'autres glitches si vous n'avez pas envie de chasser, comme l'Old Man Trick, le Ditto Trick, le Cooltrainer Trick (ou sa variante, le LOL Glitch) ou bien encore le Fossil Conversion Glitch.

Etape III : Préparer et lancer le code voulu

Les sous-sections qui suivent vous permettront de comprendre comment utiliser ce glitch pour vos besoins personnels.

Simuler un code A.R. / Changer la valeur d'une adresse mémoire donnée

Si vous êtes habitués de nos pages et avez lu notre introduction à la glitchologie Pokémon (et il vaudrait mieux que ce soit le cas avant de continuer) vous êtes déjà familiers du concept d'adresse mémoire et de la façon dont les codes action replay fonctionnent. Pour rappel, ils sont composés d'une série de 8 chiffres hexadécimaux, 4 groupes de deux que l'on peut écrire de cette façon : AABBCCDD. Vous avez sans doute l'habitude du BB (ou xx), qui représente l'IDH vous permettant de sélectionner la nature de ce que vous essayez d'obtenir avec un code (par exemple un Pokémon). Quant à CC et DD, il s'agit de l'adresse mémoire que le code va modifier (à l'envers, l'adresse est donc $DDCC). N'hésitez pas à lire nos explications techniques si vous voulez approfondir.

Un code action replay n'est donc rien d'autre qu'une instruction simple demandant de placer une valeur dans une adresse mémoire. Avec le 8F Code Execution, vous pouvez changer la valeur de l'adresse de votre choix, ce qui revient à simuler tous les codes action replay ! Il suffira de configurer l'inventaire pour indiquer les valeurs BB, CC et DD du code à déclencher.

Voici l'inventaire à préparer :

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Limonade xBB (la quantité de Limonade représente donc l'IDH du code, mais en décimal. Vous pouvez utiliser la calculatrice Windows pour la conversion. Pour un IDH de 12, comptez donc 18 limonades)
  4. Précision + xCC (la quantité de Précision + représente donc la valeur CC du code, mais en décimal)
  5. Carbone xDD (la quantité de Carbone représente donc la valeur DD du code, mais en décimal)
  6. Poké Ball x119
  7. Eau Fraîche x201

De manière générale, cet inventaire générique permet de modifier n'importe quelle adresse mémoire $DDCC de votre choix. Il suffit juste de mettre les bonnes valeurs aux bons endroits !

Pour plus de compréhension, voici un exemple. Je souhaite avoir tous les badges, et pour cela le code action replay est 01FF5BD3 sur Rouge/Bleu, et 01FF5AD3 sur Jaune. Ce code affecte la valeur FF à l'adresse mémoire $D35B. En décimal, FF = 255, 5B = 91 et D3 = 211. Sur Rouge/Bleu, mon inventaire ressemblera à ça :

  1. N'importe quel objet
  2. 7EME ETAGE
  3. Limonade x255
  4. Précision + x91
  5. Carbone x211
  6. Poké Ball x119
  7. Eau Fraîche x201

Et en dehors du remplacement de 7EME ETAGE par 3EME ETAGE ou ws*l’||lm||, la seule différence dans jaune est que vous n'aurez que 90 Précision + !

Une fois l'inventaire prêt, vous n'avez qu'à utiliser le 7EME ETAGE / 3EME ETAGE / ws*l’||lm|| pour activer le code A.R. C'est aussi simple que ça !

Obtenir ces objets dans de si grandes quantité peut être un problème. Vous pouvez bien sûr le résoudre en simulant par 8F les codes action replay qui modifient votre premier objet. Vous pouvez aussi choisir de rencontrer MissingNo. Il est aussi possible d'obtenir un paquet d'objets en faisant l'Item Underflow Glitch et en utilisant les axes x et y pour influencer la nature mais aussi la quantité des objets.

Notez bien que la simulation du code 01xx69D1 qui transforme votre premier Pokémon est une bonne façon de capturer des MissingNo. pixels en version R/B française puisque simuler le code de capture pose le problème de banque de son.

Executer d'autres types de codes

Vous venez d'apprendre à modifier la valeur d'UNE adresse mémoire à la façon d'un code action replay. Mais avec le 8F vous n'êtes pas du tout limité à ça. Vous pouvez exécuter n'importe quel code, que ce soit pour modifier une adresse ou plusieurs en même temps, voire même créer une procédure, pour peu que vous vous y connaissiez suffisamment pour comprendre la façon dont vous influencez la RAM. Nous vous conseillons de lire notre section en fin de glitch pour cela, mais si ça ne vous intéresse pas plus que ça, nous vous donnons ici quelques exemples de codes, dont la plupart viennent du forum de Glitch City Labs.

Changer le second objet :
Ce code permet d'ajouter 1 a l'IDH du second objet de l'inventaire donc si c'est une Poké Ball (IDH 04), activez le 7EME ETAGE / 3EME ETAGE / ws*l’||lm|| 4 fois une fois le code en place, et vous aurez une Safari Ball. Ce code n'utilise que des objets achetables, et est très utile notamment pour récupérer des objets pour d'autres codes 8F, surtout qu'il n'en change pas la quantité. Si vous prenez n'importe quel objet x255 avec l'underflow, vous pouvez utiliser celui-ci pour le transformer en l'objet de votre choix x255, et jeter autant d'exemplaires que vous voulez pour mettre en place vos codes.

  1. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  2. L'objet qui doit changer
  3. Anti-brule x43
  4. Antigel x43
  5. Total soin x201

Vider une boite PC
Ce code permet de vider une boite du PC (ce qui peut être utile si elle est remplie de Pokémon glitchés). Le seul problème de ce code c'est qu'il ne marche que pour la boite actuelle et qu'avec 3EME ETAGE ou ws*l’||lm|| il faut justement que la boite actuelle contienne les Pokémon du code. L'utiliser sur Jaune vous forcerait donc à refaire l'étape 2 du glitch la prochaine fois que vous voudrez exécuter un code.

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Limonade x1
  4. Soda cool x64
  5. CT34 x133 (132 sur jaune)
  6. CT18 x201

Changer son nom
Changer son nom peut se faire avec une série de codes action replay disponibles sur notre site. Vous pourriez donc changer chaque adresse, mais il existe un autre moyen. Ce code change le nom de votre joueur en le surnom du premier Pokémon de votre équipe, sans avoir besoin de changer le code entre deux lettres. Ca peut être très utile pour le Old Man Trick, mais aussi si vous voulez changer de nom ou si le nom de dresseur est buggué suite à l'utilisation, par exemple, de la corruption Super Glitch.
Faites cependant attention en exécutant ce code car si vous changez votre nom de dresseur sans posséder tous les badges il est possible que certains Pokémon ne vous obéissent plus.

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. CT50 x186 (185 sur jaune)
  4. CT10 x64
  5. CT34 x93 (92 sur jaune)
  6. CT09 x46
  7. ????? (objet d'IDH 2C) x52. Utilisez le code de changement d'objet plus haut avec un objet en 52 exemplaires. Sur Jaune, remplacez-le par Clé Secrète.
  8. Précision + x40 (39 dans jaune)
  9. Total soin x201

Ce code fonctionne lettre par lettre (vous devez donc activer 6 fois le code si le surnom contient 6 lettres) et vous devez ensuite activer une dernière fois le code pour inscrire un marqueur de fin à votre nouveau nom.

Chromatiser un Pokémon :
Merci à thelinekioubeur pour ce code
Dans la première génération, il n'y a pas de Pokémon chromatiques (shiny, en anglais). Mais il est possible de les modifier par 8F pour qu'ils le deviennent à coup sûr, une fois transféré sur Or, Argent ou Cristal ! Ce code "chromatise" le premier Pokémon de la boite active du PC.

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. PierreFoudre x182 (x181 sur Jaune)
  4. CT18 x62
  5. CT34 x119
  6. CT14 x64
  7. PV Plus x79
  8. Poké Ball x113
  9. CT01 x(quantité quelconque)

On ne peut pas non plus vous lister tous les codes du monde. Toutefois, un topic consacré à l'échanges de codes 8F existe sur notre forum alors n'hésitez pas à y faire un tour ! Sinon, vous pouvez toujours apprendre à en faire et vous n'aurez alors plus de limites !

Forcer l'activation de glitches par 8F

En modifiant les valeurs des adresses par 8F, il est possible de déclencher "artificiellement" la plupart des glitches qui se trouvent sur PRAMA. Voici quelques moyens détournés d'effectuer certains glitches, qui pourraient vous servir ou juste vous amuser !

Ditto Trick instantané
Il est possible de simuler la fuite devant un dresseur du Ditto Trick grâce au 8F. Le code pour cela est différent sur chaque Route. Ensuite, il vous suffira de finir le glitch en allant affronter un Métamorph. Mais il y a encore plus simple. Rendez-vous à Céladopole, activez le code suivant et sortez par l'Ouest, sur la Route 16. Sortez alors et fermez le menu Start qui s'ouvre pour rencontrer instantanément le Pokémon de votre choix !

  1. PierreFoudre x45
  2. CT05 x4
  3. Rappel Max x(IDD du Pokémon voulu)
  4. Réveil x8
  5. Huile Max x4
  6. Repousse x254 (253 sur Jaune)
  7. Poké Ball x25
  8. Limonade x1
  9. Antidote x119
  10. CT01 x(quantité quelconque)

Obtenir l'Attaque Cooltrainer
Nécessaire pour le Cooltrainer Trick, cette attaque ne peut pas être obtenue par des moyens conventionnels sur Jaune. Vous pouvez aussi choisir d'appliquer ce code, qui transforme la première attaque du premier Pokémon en attaque Cooltrainer, même dans les versions Rouges et Bleues.

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Limonade x0
  4. Précision + x120 (119 dans Jaune)
  5. Carbone x209
  6. Poké Ball x119
  7. Eau Fraîche x201

Forcer la corruption Cooltrainer
Vous savez peut-être que la corruption Cooltrainer ne marche pas sur toutes les sauvegardes et qu'un bon moyen de la faire fonctionner est de renommer tous ses Pokémon avec des surnoms de 10 lettres et d'ouvrir une boite de stockage du PC de Léo qui n'a jamais été utilisée. Seulement, tout le monde n'en a pas. Voici un code 8F qui permet de remettre une boite vidée active à zero, comme si elle n'avait jamais été ouverte !

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Pierrefoudre x128
  4. CT18 x4
  5. Limonade x1
  6. Potion x61
  7. Anti-brûle x34
  8. Soda Cool x1
  9. Master Ball x70
  10. CT05 x253
  11. Rappel Max x201

Item Underflow Glitch
Il est possible d'activer l'Item Underflow Glitch par 8F au cas où vous souhaiteriez obtenir un objet, par exemple. C'est tout simple, car il n'y a qu'une seule adresse à modifier, celle qui gère le nombre d'objets de l'inventaire !

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Limonade x255
  4. Précision + x34 (33 dans Jaune)
  5. Carbone x211
  6. Poké Ball x119
  7. Eau Fraîche x201

Avoir plus de 6 Pokémon (Fossil Conversion sans Save Abuse ni Super Glitch)
On peut également augmenter son nombre de Pokémon, ce qui s'avère utile pour certains glitches qui, autrement, nécessiteraient une corruption. C'est le cas notamment du Fossil Conversion Glitch !

  1. N'importe quel objet
  2. 7EME ETAGE / 3EME ETAGE / ws*l’||lm||
  3. Limonade x(nombre de Pokémon voulu, 33 minimum pour le Fossil Conversion Glitch)
  4. Précision + x104 (103 dans Jaune)
  5. Carbone x209
  6. Poké Ball x119
  7. Eau Fraîche x201

Programmer des logiciels

Il est également possible d'utiliser les fonctionnalités du 8F pour programmer des choses plus complexes (comme des jeux par exemple), dans la limite de 249 octets. Pour comprendre cette sous-section réservée aux habitués du 8F, vous devez avoir lu nos explications techniques ! La découverte de cette procédure pour Rouge ou Bleu est imputable à TheZZAZZGlitch et son adaptation à la version française à un membre de notre forum, Darkbrioche, que nous remercions vivement !

Commencez par obtenir l'inventaire suivant :

  1. N'importe quel objet
  2. 7EME ETAGE
  3. Précision + x102
  4. Anti-brûle x126
  5. Anti-para x15
  6. PV Plus x15
  7. Antigel x15
  8. Potion x134
  9. CT34 x25
  10. CT15 x46
  11. Total soin x52
  12. Super Ball x201
  13. CT10 x6
  14. CT20 x46

Rendez-vous sur la Route 1, activez 7EME ETAGE, et sautez une barrière. Jetez 19 CT34 de façon à ce qu'il n'en reste plus que 6, puis inversez CT15 et CT20 pour rentrer dans le mode écriture.

Déplacez-vous à présent sur la Route et placez-vous à l'endroit correspondant au nombre hexadécimal de l'instruction à ajouter sur la carte suivante créée par Torchickens, et activez 7EME ETAGE. Poursuivez ainsi pour toutes les instructions suivantes en activant à la chaque fois, jusqu'à la fin de votre programme.

Quand vous avez fini, inversez CT34 et CT10 et activez de nouveau 7EME ETAGE pour exécuter le programme ! A titre d'exemple, voici un Pong programmé sur Pokémon Bleu par TheZZAZZGlitch :

Et, aussi incroyable que ça puisse paraître, Torchickens a utilisé un programme 8F (à l'aide d'une procédure un peu différente que vous pourrez retrouver sur la vidéo ci-dessous) pour transformer Bourg-Palette en une version rétro de Bonaugure, la ville de départ de Pokémon Diamant/Perle et Platine !

Alors, vous attendez quoi pour faire vos propres programmes ? Amusez-vous bien !

Explications techniques : Comment fabriquer son code

Tout d'abord, je pense que vous devez connaître la raison pour laquelle il est possible d’exécuter du code avec ces objets glitch. 7EME ETAGE permet en effet d'interpréter les Pokémon de votre équipe comme du code à lire (adresse $D168 sur la carte de la RAM car il faut ajouter 5 pour la version française, comme toujours). Mais dans la version Jaune, cet objet ne lit qu'à partir de l'adresse $04FE ce qui a comme conséquence de vous envoyer dans une version glitchée d'un centre Pokémon. C'est la raison pour laquelle on utilise 3EME ETAGE (qui exécute à $DA64, les PV du dernier Pokémon stocké à la pension) ou le ws*l’||lm|| qui, lui, permet la lecture de code à partir de la boite Pokémon ($DA84). Dans R/B, ces deux objets ne permettent pas d'exécuter du code.

Seulement, comme je l'ai évoqué dans l'article, créer du code à partir de Pokémon, c'est pas super évident. C'est pour ça qu'on vous fait faire cette configuration particulière dans l'équipe ou dans le PC (on appelle cela un "setup") : c'est en fait une instruction qui "redirige" la lecture du code... vers l'inventaire ! Lorsque vous activez via l'inventaire le 7EME ETAGE, 3EME ETAGE ou le ws*l’||lm||, le jeu interprète donc ces Pokémon comme une instruction pour se rendre dans l'inventaire et y lire les objets qui s'y trouvent comme du code. Bien sûr, il existe toujours plusieurs façon de faire les choses, et il est possible d'utiliser d'autres setups ; certains sont plus courts, mais plus complexes, d'autres plus longs mais plus faciles à obtenir, certains sont optimisés pour être disponibles le plus tôt possible dans le jeu... Si cela vous intéresse, notre topic sur le 8F propose plusieurs autres setups !

Si vous souhaitez approfondir ce glitch, non seulement pour comprendre mais aussi pour créer des codes à exécuter à votre convenance, vous devez comprendre comment les nombres hexadécimaux des Pokémon, des objets et de leur quantité sont traduits en instructions appelées opcodes. Sur ce tableau, vous trouverez la liste des opcodes pour chaque nombre hexadécimal. Par exemple, 41 correspond à la case à l'intersection entre la 5ème ligne et la deuxième colonne, c'est à dire à l'instruction ld B,C

Vous trouverez surement des tutos sur le net pour apprendre tout ça de façon avancée, mais on va essayer de vous donner ici les bases qui vous permettront de coder. L'opérateur ld signifie load (charger, dans le sens de "devient") ; inc veut dire incrémenter (donc augmenter la valeur) et dec décrémenter (diminuer). jp et jr vous permettent de sauter à un autre endroit de la mémoire. sub implique une soustraction, alors que ret marque la fin de la fonction. Une liste plus complète et explicative est disponible à ce lien.

Examinons ensemble le code appelé à partir de l'équipe dans Rouge/Bleu. L'activation du 7EME ETAGE commande un jp hl initial, où h et l sont des variables de valeur (actuellement) D1 et 68. La lecture sautera donc à l'adresse D168 de la carte de la RAM ce qui correspond au nombre de Pokémon dans l'équipe (rappelez-vous qu'il faut toujours ajouter 5 !). Pour éviter de confondre les adresses de mémoire avec les nombres hexadécimaux, j'écrirais un $ lorsqu'il s'agit d'une adresse comme nous le faisons d'habitude sur le site. La lecture du code démarre donc dans l'équipe.

Dans votre équipe, il y a 5 Pokémon ; la valeur de $D168 est 05. Ensuite, il y a Roucool (IDH 24), Parasect (2E), Gravalanch (27), Tentacool (18) et Kangourex (02). Il n'y a pas de sixième Pokémon (00). L'adresse suivante est le marqueur de fin d'équipe, dont la valeur est toujours FF. On va s'arrêter la pour le moment. Le jeu lit donc le code 05 24 2E 27 18 02 00 FF. Traduit en opcodes, ça donne ça :

$D168 (nombre de Pokémon)	05	dec b		La variable b est décrémentée.

Nous n'avons pas affecté de valeur à cette variable, qui ne sera pas utilisée pour notre code.

$D169 (premier Pokémon)		24	inc h		La variable h est incrémentée.

Souvenez-vous, elle était de D1. Elle devient donc D2.

$D16A (deuxième Pokémon)	2E	ld l,d8

Ça devient subtil. Vous voyez le 2 qui apparaît sous l'opcode dans le tableau ? Il signifie que cette instruction prend 2 octets. Le d8 dans l'opcode doit être remplacé par la valeur de l'adresse suivante ($D16B, le troisième Pokémon, soit 27). Il faut donc lire ld l,27 c'est-à-dire que l (qui était de 68) devient désormais 27.

$D61B n'est pas lue individuellement, car elle est comprise dans l'instruction précédente. On enchaîne.

$D16C (quatrième Pokémon)	18	jr r8

Cette instruction prend également deux octets. r8 est une donnée un peu particulière, qui doit être remplacée par l'adresse suivante ($D16D) auquel on ajoute autant d'unités que l'exige la valeur de celle-ci. Ici, la valeur de cette adresse est 02. Mais comme il faut compter le 0 comme une valeur, il faut donc ajouter 3 unités à D16D, ce qui donne D170. L'instruction commande donc de sauter à l'adresse $D170. Le prochain hexadécimal de notre équipe qui sera lu est celui affecté à cette adresse : le 00 et le FF affectés à $D16E et $D16F sont sautés.

Intéressons-nous maintenant à la suite. Dans la carte de la mémoire, on peut voir qu'à partir de $D170 vient le détail du premier Pokémon. Son espèce en premier (ici Roucool, donc 24) puis son nombre de PV, dans les adresses $D171 et $D172. Au maximum, un Pokémon peut donc avoir FF FF PV, soit 65535 (les utilisateurs du Pomeg Glitch en savent quelque chose). Dans notre cas, 233 PV correspondent, en hexadécimal, à E9, donc 00 E9.

$D170 (doublon de $D169)	24	inc h		h devient D3.
$D171 (nombre de PV 1)		00	nop		Cela signifie que le jeu ne fait rien.
$D172 (nombre de PV 2)		E9	jp (hl)		Sauter à l'adresse indiquée par la valeur des variables h et l.

Ici, h = D3 et l = 27. Nous sautons à $D327. Vous l'avez compris, c'est l'adresse du troisième objet de l'inventaire. De là, avec le 7EME ETAGE à la deuxième position, activer celui-ci conduira le programme à lire du code à partir de l'objet qui se trouve en dessous de lui !

Pour comprendre pourquoi il est facile de simuler un code A.R. avec ce glitch, il faut savoir qu'entrer un code de type AABBCCDD revient à demander au jeu de changer la valeur de l'adresse $DDCC (oui, c'est à l'envers) en BB. Examinons le code appelé par l'inventaire "générique" utilisé pour la simulation de code action replay. L'IDH de la limonade est 3E, et celui de la CT34 est EA. N'oubliez pas, nous démarrons au troisième objet de l'inventaire mais l'adresse suivante correspond à sa quantité, et le quatrième objet ne vient qu'après :

$D327	3E	ld a,d8 (2 octets)	Remplacer d8 par la valeur de l'adresse suivante.

$D328	"BB"	→ ld a,BB		La variable a prend la valeur BB

$D329	EA	ld (a16),a (3 octets)	L'instruction prend 3 octets, il va falloir considérer les deux adresses suivantes.

$D32A	"CC"	→			Comprise dans l'instruction suivante

$D32B	"DD"	→ ld (DDCC),a		Les parenthèses signalent que ce n'est pas l'adresse $DDCC qui change, mais la valeur affectée à cette adresse. Ici, la valeur affectée à $DDCC devient a, c'est à dire BB. Mission accomplie, le code est actif !
  
$D32C	C9	ret			Fin de la lecture du code.

Le C9 final correspond à 201 en hexadécimal (la quantité de Total Soin) puisque l'adresse $D32C correspond à la quantité du cinquième objet. Super simple, n'est-ce pas ? Du coup on va faire un truc un peu plus dur ; intéressons-nous aux codes faits maisons et particulièrement celui qui permet de transformer son second objet.

$D327		0C	inc  c		Incrémenter la valeur c. Nous ne l'avons pas affectée.

$D328 		2B	dec  hl		Décrémenter la valeur hl.  N'oubliez pas, ce code suit le code lu dans l'équipe ! hl était donc D327 et devient D326.

$D329		0D	dec  c		Décrémenter la valeur c. On revient ici à la normale. En fait, ces deux opérations sont des "placeholders". Elles ne servent qu'à passer à l'opération suivante sans rien faire, car il ne faut pas oublier qu'on est en train de coder avec des objets de l'inventaire, et on ne peut pas faire ce qu'on veut. Il faut parfois recourir à ces "fausses instructions" pour passer outre certains problèmes.

$D32A		2B	dec  hl		Décrémenter la valeur de hl qui devient D325... soit l'adresse du deuxième objet de l'inventaire !

$D32B		34	inc  (hl)	Incrémenter la valeur affectée à hl. Vous pouvez bien voir ici la différence entre hl, qui est de D325 et réfère à l'adresse du deuxième objet de l'inventaire, et (hl) qui est la VALEUR affectée à cette adresse. Ici, c'est l'IDH de l'objet qui se trouve actuellement en deuxième position, qui gagne 1. Bingo !

$D32C		C9	ret		Fin de la lecture du code.

Bah alors, c'était facile ça aussi en fait. Attaquons-nous à quelque chose de plus indigeste, comme le code du changement de nom !

$D327		FA		ld a,(a16) (3 octets)
$D328		BA		→
$D329		D2		→ ld a,(D2BA)		a devient la valeur à l'adresse $D2BA (première lettre du surnom du premier Pokémon)
$D32A		40		ld   b,b		b devient b (placeholder)
$D32B		EA		ld (a16),a (3 octets)
$D32C		5D		→
$D32D		D1		→ ld (D15D),a		La valeur à l'adresse $D15D (première lettre de votre nom) devient a (première lettre du surnom du premier Pokémon)
$D32E		2E 		ld l,d8 (2 octets)
$D32F		2C		→ ld l,2C		l devient 2C
$D330 		34		inc (hl)		Incrémenter la valeur à l'adresse hl. Souvenez-vous, h est D3, donc hl réfère à $D32C. Il s'agit de la quantité du quatrième objet, mais c'est surtout cette valeur qui sert à changer la première lettre de votre nom.
$D331 		2E		ld l,d8 (2 octets)
$D332		28		→ ld l,28		l devient 28
$D333		34		inc  (hl)		Incrémenter la valeur à l'adresse hl (qui est désormais $D328, c'est à dire la quantité de votre troisième objet... et la valeur servant à affecter à la variable a la première lettre du surnom du premier Pokémon !)
$D334		C9		ret			Fin de la lecture du code.

La première partie de ce code permet de changer la première lettre du nom du joueur en première lettre du surnom d'un Pokémon. La deuxième partie décale d'une unité les deux hexadécimaux qui sont utilisés pour sélectionner la lettre (par exemple, 5D devient 5E, donnant l'adresse $D15E, qui correspond à la deuxième lettre). La prochaine fois que vous activerez le 7EME ETAGE, ce sont désormais les adresses $D2BB et $D15E qui seront utilisées, remplaçant la deuxième lettre du nom du joueur par la deuxième lettre du surnom du premier Pokémon. Etc., etc. :)

On va s'arrêter la parce que je pense que vous avez compris la technique. A vous de composer avec les opcodes (partez de ceux-ci, traduisez en hexadécimal et voyez si c'est réalisable ou si vous devez ajouter des placeholders !) pour faire vos propres programmes ! Et comme on vous aime beaucoup, notre testeur-programmeur ISSOtm a développé un outil qui convertit vos opcodes en objets de l'inventaire, donc vous n'avez quasiment même plus à vous prendre la tête ! Pour retrouver cet outil magique baptisé GBZ80 to items, cliquez ici pour la v2 (destinée aux néophytes car propose des catégories explicites de tous les opcodes) ou sur le site personnel d'ISSOtm, ici pour la v3 (un peu plus pro car il faut avoir déjà crée son code à la main) !

Pour vous tester avant de vous lancer, vous pouvez essayer de traduire en opcode les autres codes présentés sur cette page, et notamment de refaire ce travail sur Jaune. En ce qui concerne le setup avec 3EME ETAGE, vous devez savoir qu'utiliser un PP Plus sur une attaque rajoute hex:40 à la valeur de son nombre de PP (par exemple, 1 PP sur une attaque où 2 PP Plus ont été utilisés donne une valeur de 81). Pour ce qui est du setup avec ws*l’||lm||, si ce code est aussi long, c'est pour éviter d'avoir recours à des Pokémon glitchés. Vous ne devriez pas avoir de problèmes à le comprendre ceci étant, simplement n'oubliez pas que l'instruction sub e commande de retrancher e à la variable a !


Page Précédente : LOL Glitch
Page suivante : Experience Underflow Glitch