Hack'n'Trash : Création de Codes Action Replay (1ère partie)

Apprenez à créer vos codes avec l'équipe Triche. D'abord, les bases...

Vous nous l'avez demandé dans le premier Hack'n'Trash, le sujet qui vous fait le plus envie : la création de codes. Afin de vous offrir un contenu homogène, nous allons nous limiter aux codes Action Replay DS. Et je vais me faire l'honneur de vous initier dans cette première partie.

Si vous n'appréciez pas un minimum les mathématiques, si vous n'avez jamais utilisé de codes ou d'émulateurs, il est très probable que vous ne puissiez pas aller jusqu'au bout de cet article.

L'hexadécimal

L'hexadécimal, c'est le mot qui sort régulièrement, mais qu'est-ce que c'est au juste ? C'est un système de comptage, aujourd'hui principalement dédié à l'électronique.

En tant qu'êtres humains, nous comptons aujourd'hui en base 10, c'est-à-dire en décimal. Parce que nous avons dix doigts. Dans les temps anciens, certaines communautés comptaient de manières différentes. Je vais vous apprendre à compter en hexadécimal avec vos mains (uniquement pour les gens normalement constitués, je m'excuse auprès des autres). Avec votre main fétiche, servez-vous de votre pouce pour compter les extrémités de chaque phalange des autres doigts de votre main. Vous devriez compter 16 extrémités (l'articulation entre deux phalanges ne compte que pour 1). Voilà, vous savez compter en base 16. Compter jusqu'à 16 avec une main, avouez que c'est plutôt cool. Et si on se servait de la deuxième ? Pour optimiser le comptage, si on se sert de la deuxième main pour compter les dizaines, on peut alors compter jusqu'à 256 ! C'est ainsi que compte les appareils électroniques.

Image title

Le seul petit détail à ne pas oublier, c'est qu'en hexadécimal, on compte de 0 à F, avec les chiffres de 0 à 9 et les lettres de A à F, avec A pour 10, B pour 11, et ainsi de suite.

La mémoire vive et les adresses mémoire

Rappelez-vous, l'Action Replay sert à modifier des valeurs de la mémoire vive (RAM). Imaginez que la RAM est une très longue rue, dont les adresses commencent au numéro 0, où habitent des valeurs que l'on peut appeler des familles. Les valeurs sont stockées dans ce qu'on appelle des octets, que l'on représentera par des maisons. Et chacun de ces octets a une adresse. Un octet peut contenir une valeur comprise entre 0 et 255, ce qui donne de 00 à FF en hexadécimal, comme si chaque maison pouvait contenir jusqu'à 255 habitants (ou pas... je vous laisse imaginer la taille de la baraque).

Qu'en est-il des valeurs plus grandes que 255 ? Comme l'argent dans Pokémon ?

Eh bien sa valeur est stockée sur plusieurs octets. Tout comme vous séparez les milliers en décimal, la console sépare la valeur en plusieurs octets.

Voilà un exemple un peu plus parlant (si vous aimez les mathématiques, ça devrait être facile) :

DécimalHexadécimal
2000 0x7D0
002 000 0x07 D0
En décimal, la maison peut être inhabitée, ou contenir jusqu'à 999 habitants. Cela fait donc 1000 valeurs possibles.
La première maison (n°0) contient les unités.
La deuxième maison (n°1) contient les milliers.
En hexadécimal, la maison peut être inhabitée, ou contenir jusqu'à 255 habitants. Cela fait donc 256 valeurs possibles.
La première maison (n°0) contient les hexa-unités.
La deuxième maison (n°1) contient les hexa-centaines.
002×1000^1 + 000×1000^00x07×256^1 + 0xD0×256^0

La notation 0x7D0 indique que c'est une valeur hexadécimal égale à 7D0. La lettre x à ne pas confondre avec le symbole de multiplication ×.
L'accent circonflexe représente ici la notation Exposant (ou Puissance pour les intimes).

Pour résumer ce tableau, dites-vous que pour faire la somme des habitants des maisons, il faut additionner le nombre d'habitants de chaque maison, multiplié par le nombre de possibilités, lui-même multiplié par le nombre de possibilités autant de fois qu'on peut trouver de maisons avant.

Pour votre information, une DS peut compter jusqu'à 4 294 967 295, c'est-à-dire FF FF FF FF.

Je vais finir par vous perdre avant le plus important. Peut-être qu'en passant au concret, vous assimilerez ça plus facilement...

La matériel requis

Pour l'exemple qui va suivre, je vais me servir de DeSmuME, un émulateur DS très puissant, mais légèrement gourmand. Si vous avez un PC qui date d'avant 2012, je ne peux pas vous assurer que ça fonctionnera convenablement. La version de cet émulateur que je vais utiliser est la plus récente, et est disponible dans le paquet WinDS Pro.

Et bien sûr, la ROM du jeu pour lequel vous souhaitez un code. Pour ma part, je vais me servir de Pokémon Link!.

Création de notre premier code

Les types de codes

Première chose, il faut savoir qu'un code a une certaine structure, qui dépend de son type. Dans cette initiation, nous allons créer un code d'affectation. Ce type de code est le plus simple à créer, il permet de remplacer une valeur par une autre dans la RAM, sans contrainte particulière. Il existe trois codes de ce genre que voici :

0XXXXXXX YYYYYYYY
Ce code remplace la valeur des 4 octets à partir de l'adresse mémoire XXXXXXX par YYYYYYYY.
1XXXXXXX YYYYYYYY
Ce code remplace la valeur des 2 octets à partir de l'adresse mémoire XXXXXXX par YYYY.
2XXXXXXX YYYYYYYY
Ce code remplace la valeur de l'octet à l'adresse mémoire XXXXXXX par YY.

Vous pourrez retrouver la totalité des types de codes sur GameHacking.org.

Pour savoir lequel de ces codes vous allez créer, vous devez connaître votre jeu par cœur et connaître la valeur maximale de celle que vous voulez changer. Si la valeur ne dépasse pas les 255, vous utiliserez le code de type 2 ; si votre valeur ne dépasse pas les 65535, vous utiliserez le code de type 1 ; et pour le reste, le code de type 0.

Lancez une partie de votre jeu avec DeSmuME, allez sur l'écran où la valeur est affichée pour la connaître. Ici, je vais regarder mon Score dans le mode Sans Fin. Mettez en pause votre jeu (avec le bouton Play/Pause dans la barre d'outils), et ouvrez l'outil RAM Search depuis le menu Tools.

Image title

Beaucoup d'informations sont affichées là. Le principe de création de code consiste à comparer une ancienne valeur avec la nouvelle pour trouver l'adresse mémoire où se trouve la fameuse valeur. Nous avons donc tout un panel d'options pour nous aider à trouver ce qu'on cherche le plus rapidement possible.

Le Score maximum dans ce jeu est 99 999 999. On a donc une valeur supérieure à 65535, ce qui signifie qu'elle tient sur 4 octets. Je vais cocher 4 bytes dans les options Data Size. Byte qui signifie Octet en français.
Pour faciliter la recherche de la valeur, nous allons afficher et chercher la valeur directement en hexadécimal. Donc je vais cocher Hexadecimal dans les options Data Type / Display.
Nous cherchons une valeur précise que nous connaissons, et qui n'a pas encore changé. Je vais donc cocher l'option Equal To dans les options Comparison Operator. Pour les mêmes raisons, je vais cocher Specific Value dans les options Compare To / By.
Il ne me reste plus qu'à 
entrer mon Score dans la zone de texte à côté de Specific Value, et cliquer sur Search en haut à droite pour rechercher toutes les valeurs à 0 pouvant tenir sur 4 octets.

Image title

Le nombre de possibilities dans le titre de la fenêtre devrait diminuer. Vous avez donc dans le tableau, uniquement les adresses mémoires pour lesquelles la valeur est à 0, et est composée de 4 octets. Maintenant, il faut procéder à une comparaison. Pour cela, vous allez devoir modifier la valeur en jouant un peu. Je vais donc faire Play pour relancer le jeu où je me suis arrêté, et augmenter mon Score, et refaire Pause. Quand c'est fait, j'ai deux possibilités :
- comparer la nouvelle valeur à l'ancienne pour trouver toutes les adresses mémoires auxquelles les valeurs ont augmenté ;
- rechercher directement la nouvelle valeur parce que je la connais.
La deuxième a plus de chances de me donner un résultat intéressant. Je vais donc entrer mon nouveau Score, qui est de 50, dans le champ Specific Value et cliquer sur Search. 
Attention ! Nous recherchons des valeurs hexadécimales ! Il faut donc convertir 50 en hexadécimal avant de continuer. Vous pouvez convertir facilement du décimal en hexadécimal avec le mode Programmeur de la Calculatrice Windows.

Image title

Par chance, le résultat de ma recherche me donne très peu de possibilités. Je suis donc très près du but. Avec 4 possibilités, j'ai meilleur temps d'essayer 4 codes plutôt que de continuer mes recherches. Par sécurité, je vais faire un savestate pour relancer le jeu où je me suis arrêté si ça plante à cause d'un code. S'il vous reste trop de possibilités à tester, continuez de modifier la valeur jusqu'à affiner les possibilités au nombre de 5 ou 6.

Connaissant bien ce jeu, je sais à quoi peuvent correspondre certaines adresses mémoires. L'une d'entre elle est le record du mode Sans Fin, une autre est le Score affiché à l'écran, une autre la valeur en mémoire de mon Score. C'est cette dernière qu'il faut modifier pour être sûr que la partie prenne en compte sa modification. En ne modifiant que l'affichage, mon vrai Score ne sera pas modifié. C'est comme les fleuristes, ils changent les graines pour des roses rouges, ils obtiennent des roses rouges ; ils trempent les roses rouges dans un colorant noir, ce seront toujours des roses rouges.

Bien, j'ai une adresse mémoire dans la colonne Adress des possibilités. J'ai dit qu'il me fallait un code de type 0. Et j'aimerais un Score de 3000, que je vais convertir en hexadécimal (BB8). Je remplace donc XXXXXXX par une adresse de mon choix (dans Adress, la longueur de l'adresse est de 8 caractères, supprimez le premier 0 à gauche et remplacez-le par le type du code), et YYYYYYYY par 00000BB8. Il est impératif de remplir le vide d'une valeur par des 0. La longueur d'un code est invariable. Voilà le résultat :

0220A97C 00000BB8

DeSmuME vous facilite encore plus la tâche. Cliquez sur la ligne d'une possibilité et cliquez sur le bouton Add Cheat. Il générera un code, avec la valeur de votre choix (que vous pouvez inscrire en décimal). N'oubliez pas une petite description pour le retrouver. Cliquez sur Add.

Image title

Le code est activé. Reprenez votre partie. Si le jeu plante ou se bloque, alors vous vous êtes trompés. Dans le menu Tools/Cheats, allez dans List. Supprimez le code que vous venez de créer et chargez le savestate de tout à l'heure et refaites Pause. Recommencez l'opération pour les autres adresses.

Pour ma part, cette adresse ne semble pas la bonne. J'ai donc testé les autres. Et je suis arrivé à la conclusion que la bonne adresse était 022101C4. Mon code final est donc le suivant :

022101C4 00000BB8

Avec ce code, mon Score est de 3000 et le restera tant que le code sera activé. D'ailleurs si je Reset les résultats de RAM Search et cherche à nouveau mon Score, je devrais trouver au minimum deux adresses, mon Score véritable, et celui affiché à l'écran.

Image title

Ajouter des touches d'activation

Un code fixe n'est jamais pratique quand il s'agit de scoring. Parfois même, ce genre de codes bloquent votre jeu parce qu'il n'accepte pas que la valeur soit fixée. Dans ces cas-là, il faut trouver un moyen d'activer le code à un certain moment pour modifier la valeur sans pour autant la bloquer. Et la méthode la plus utilisée est celle des touches d'activation.

Les touches que vous pressez pendant votre partie passent aussi dans la RAM. Leurs valeurs sont déjà connues, ne manque plus qu'un moyen d'utiliser notre code à la pression des touches de notre choix. Et là intervient notre maître à tous, le grand M@T, qui nous a fait une page qui vous permettra d'entourer votre code avec celui des touches.

Image title

Cochez les touches de votre choix, le code sera automatiquement modifié. Puis remplacez (code) par votre code. Voilà, c'est fini. Maintenant, lorsque vous presserez les touches que vous aurez choisies, la valeur sera modifiée, et pourra évoluer à n'importe quel moment. Vous aurez donc la possibilité de la remettre à votre valeur fétiche à tout moment. Attention toutefois à ne pas mettre des valeurs trop proches du maximum, certains jeux ne gèrent pas le dépassement du maximum et planteront ou afficheront des valeurs corrompues.

Conclusion

Vous savez maintenant créer un code tout à fait banal, mais suffisant dans la plupart des jeux. Dans les grandes lignes, il faut chercher une première fois la valeur, la modifier, la rechercher en la comparant à l'ancienne (à plusieurs reprises pour trouver un minimum de correspondance) et tester les codes.

J'espère que vous êtes satisfaits de ce tutoriel. Et maintenant, quel serait le prochain sujet du Hack'n'Trash ? À vous de me le dire dans les commentaires !

Le petit MegaRobert

Adresse mémoire : c'est un emplacement de la RAM dans lequel est stocké une valeur. Pour la DS, sa taille varie entre 1, 2 et 4 octets.

ROM : copie conforme d'un jeu original disponible sur cartouche. En parallèle, nous appelons les copies de jeux sur disque des ISOs.

Savestate : c'est une sauvegarde de l'état de votre jeu à un moment précis. À la différence des sauvegardes que vous faites dans le jeu manuellement, et seulement quand vous y êtes autorisé dans le jeu. Le but est de pouvoir revenir en arrière. Pratique pour les tests de codes, ou encore le Tool Assisted Speedrun.

Scoring : on utilise ce terme lorsque la progression dans le jeu se fait au travers du score du joueur.

Par


  • YotA22/12/14 à 22:40
    Asia81 a dit :
    Perso, ca sera la création de pokémon, mon vote pour le prochain. Je peut même aider si tu veux aborder une partie sur PKHeX
    De même, je vote pour la création de Pokémon.
  • Megadrifter22/12/14 à 20:32
    Et si les surprises ne te plaisent pas, je te propose de compter les votes dans les commentaires pour deviner ;)
  • Megadrifter22/12/14 à 20:30
    LalalaKirby a dit :
    Un bon gros bug sans matériel,c'est possible?
    Oui, c'est possible. Mais ça n'est pas toujours profitable, surtout si tu joues sur cartouche.

    pikachu a dit :
    quand est-ce qu'on sait c'est quand que vous choisissez le sujet du prochain machin ?
    Machin, il a un nom. Et pour te répondre, nous arrêtons les votes le dernier jour du mois. Mais nous n'annoncerons pas le sujet. Vous faire une surprise est un peu plus sympatoche, non ?
  • pikachu22/12/14 à 17:02
    quand est-ce qu'on sait c'est quand que vous choisissez le sujet du prochain machin ?
  • Asia8121/12/14 à 23:12
    Perso, ca sera la création de pokémon, mon vote pour le prochain. Je peut même aider si tu veux aborder une partie sur PKHeX
  • NYMPHALIOKTAMER21/12/14 à 21:06
    Je suis d'accord pour le sujet sur la création de Pokémon.
  • LalalaKirby21/12/14 à 20:36
    Un bon gros bug sans matériel,c'est possible?
  • Bluesaphir21/12/14 à 20:33
    Laissez tomber,j'suis que au CM2,j'ai même pas tout lu...^^
  • Mga-Mew21/12/14 à 18:26
    Beau Boulot ! (c'est moins chaud à faire avec la dstwo) :)
  • frigiel 21/12/14 à 14:08
    Par Siphano le 20/12/14 à 19:08
    Il faudrait que je fasse une vidéo sur les hack avec toi megadrifte

    Je peux te faire du plagiat ?
  • Brybry20/12/14 à 19:13
    Sujet sur la création de pokémon mais qui passe legit
  • Siphano20/12/14 à 19:08
    Il faudrait que je fasse une vidéo sur les hack avec toi megadrifter
  • Un passant ordinaire20/12/14 à 18:14
    J'aime bien ta façon d'expliquer, c'est assez clair er compréhensible, joli travail !

    Prochain sujet: Le hack sans matériel (les glitchs), ce serait assez bien de les expliquer et aussi peut être savoir comment les trouver
  • Kami20/12/14 à 18:09
    Merci
  • Hremeraude20/12/14 à 17:58
    Facile en fait, je testerais un code de rebattle un jour
  • Mangacharles, Empereur des Balignons20/12/14 à 17:56
    PokémonTrash, ou comment réviser ses cours.

    @Marouloued, Megadrifter a raison, et de toutes façons, cela reviendrait à modifier le jeu dans une grande partie, pour un seul utilisateur de surcroît.

    @Zelpling42, si tu te sens de taille à hacker le système de défense de la PkéBank, bon courage à toi ^^ Sinon, ton Canarticho ne passera jamais les frontières de ses boîtes.
  • Megadrifter20/12/14 à 17:38
    Marouloued a dit :
    vous arrivé bien a décortiqué des cartouche pour en extraire des donné comme avoir un méga lati@s alors qu'on peu meme pas échangé les ajouts entre ROSA et XY, sa doi pas être hor de porté
    C'est hors-sujet, mais je vais te répondre une dernière fois en répétant ce que je t'ai déjà dit : ce n'est pas prévu, que ce soit hors de portée ou non.
  • zelpling4220/12/14 à 17:34
    sujet pour le prochain article ...je sais comment créer un pokemon avec 652123 points dans chaque stats et qu'il puisse passer à la pokébanque (je propose canartichaud car il pèse trop)^^
  • Marouloued20/12/14 à 17:05
    vous arrivé bien a décortiqué des cartouche pour en extraire des donné comme avoir un méga lati@s alors qu'on peu meme pas échangé les ajouts entre ROSA et XY, sa doi pas être hor de porté
  • Lumenis20/12/14 à 17:03
    Magnifique, super article. C'est cool de ENFIN voir des gens qui parlent de triche et de hack en toute liberté, et surtout D'EXPLIQUER tout bien comme il faut. Mon moi de 12 ans te remercie infiniment.
  • Megadrifter20/12/14 à 16:54
    @Yoann : Je te laisse lire ce tweet dans ce cas, si tu as déjà perdu espoir.
    https://twitter.com/Bond697/status/545795426251968512
  • Sonnyp20/12/14 à 16:41
    bon bah go la 2ème partie o/ ah oui elle est pas encore là :x
  • Yoann20/12/14 à 16:22
    Pokécheck est fermé suite à une mise en demeure de Nintendo... Il ne réouvrira donc pas.
    De plus, il est impossible d'utiliser un fake GTS avec la 6G puisque le protocole de communication entre la 3DS et le serveur de Nintendo est du HTTP/SSL (ou HTTPS), crypté et sécurisé, et non plus du simple HTTP comme avec la 5G ou la 6G 1.0. Alors à moins d'avoir le certificat et la clé SSL privée du serveur de Nintendo, vous pouvez aller vous gratter.
  • Megadrifter20/12/14 à 16:12
    Ici-même, dans les commentaires, comme la dernière fois.
  • Marouloued20/12/14 à 15:48
    ou sa svp ?
  • Megadrifter20/12/14 à 15:45
    N'oubliez pas de choisir un sujet pour le prochain article ! Merci, ça fait plaisir
  • Japan event20/12/14 à 15:14
    GG Pokemontrash c utile pour instruire les autres
  • FreezePost20/12/14 à 14:44
    Ah, ça m'aide beaucoup pour l'action replay :D
  • Megadrifter20/12/14 à 14:23
    Il n'est pas prévu que nous fassions notre propre PokéCheck non plus.
  • Megadrifter20/12/14 à 14:15
    Bond697 a tweeté récemment qu'il avait envoyé plusieurs emails au créateur de PokéCheck, Xfr, mais il ne répond pas. On sait seulement qu'ils ont tout ce qu'il faut pour le faire fonctionner sur les jeux 3DS, mais nous n'avons aucune idée de quand il sera remis en service.
  • Marouloued20/12/14 à 14:09
    oh éh vous monté pas sur tes gran chevau hein
    es-ce que vous conté faire un system comme pokechek ou pas ? paske ces bien de parlé de triche etc mais si ces pas légit et qu'on peu pas les utilisé sans qu'ils se retrouv a pollué la GTS, je taccuse pas d'etre la cause d'accord, je te ve pas de mal et tout.
    bon, j'ai pas vu le truc de vote paske je li pas forcemen tout lé article de vos journaliste.
  • mio mio20/12/14 à 13:19
    ah enfin un cours un peu plus clair sur l'hexadécimal même si j'ai encore du mal à comprendre XD

    ce serait bien de reprendre aussi les articles sur le rom-hacking avec advance map, il était sympa celui-là... mais avec des versions plus récentes, genre heart gold :/
  • Megadrifter20/12/14 à 13:17
    Au passage, je parle bien de créer des codes. Si vraiment tu voulais rager à propos des Pokémon hackés, tu aurais pu attendre l'article sur la création de Pokémon avec des éditeurs de sauvegardes. Là, tes commentaires auraient été dans le bon contexte. De plus, le jeu en ligne sur DS n'est officiellement plus possible.
  • Megadrifter20/12/14 à 13:15
    C'est écrit dans l'introduction, les gens ont voté dans les commentaires du précédent numéro de Hack'n'Trash, et la majorité a voté pour la création de codes. Oui, Pokécheck, c'est plus facile, je suis d'accord, mais c'est fermé pour l'instant. Si la GTS est infestée de merde, et si les gens ne sont pas assez intelligents pour se retenir d'utiliser les codes en ligne, je n'y suis pour rien.
    Si tu ne veux plus voir d'articles de ce genre, pose ton vote sur un autre sujet, avec un peu de chance, d'autres voteront comme toi.
  • Marouloued20/12/14 à 13:06
    vive l'épok de pokechek eu au moin il fournissé quelque chose de correct, la tu doi tout faire toi meme, ces abusé
  • Marouloued20/12/14 à 13:05
    nou on veu juste cliker pour avoir le pokemon k'on veu, pourquoi tu nous esplique tout sa, ou alor tu veu que la gts soi infester de merde ?
  • Megadrifter20/12/14 à 12:46
    Tu ne peux pas faire ça avec des codes. Il faut directement s'attaquer au ROM-Hacking pour ajouter n'importe quel élément de gameplay à Pokémon.
  • Fan de Riri20/12/14 à 12:44
    Si je veut créé un nouveaux code qui permettrait de créé une nouvelle nature la nature égoïste qui mettrais un boost de 10 % dans toutes les stars comment je ferais ?
  • Aire Ayquaza20/12/14 à 12:33
    Merci sa va m'être utile les gars ;)
  • ne me lit surtout pas20/12/14 à 12:10
    Oh my gosh
Yo, peux-tu désactiver AdBlock pour Pokémon Trash ? Promis, on est cool, reglo et on abuse pas.
Merci, tu gères !
Achetez la Nintendo Switch + Zelda 359.99E
Achetez Pokémon Soleil sur 3DS 34.99E
Achetez Pokémon Lune sur 3DS 34,99E
Achetez la Nintendo 3DS New collector, puissance maximale ! 199,99E
Modifier vos jeux 3DS en toute sécurité avec la Power Save 16,99E