Émulation, Hacking, Linkers, Triche et Édition de sauvegarde > Codes de triche et Action Replay

Nouveaux codes inédits pour Pokémon Platine FR !

<< < (5/52) > >>

Trashy:
J'ai delete les messages useless.

Merci d'arrêter. Ca devient relou.

M@T:
Bon, voilà le tuto sur l'utilisation d'EmuCheat :

Je préviens tout de suite, les gens qui ne connaissent pas l'hexadécimal ou qui ne savent pas comment fonctionne l'Action Replay (principe d'adresse mémoire/valeur) ne risquent pas de comprendre !

PrérequisPetite précision : en hexadécimal, pour faire la différence avec le système décimal classique, on note les nombres sous la forme 0xXXXXXXXX.
Ainsi, 0x0001E240 = 123456.

Vous devez aussi connaître la différence entre la taille des différentes variables.
Il en existe trois : l'"octet" (byte en anglais), le "demi-mot" (halfword) et le "mot" (word).
L'octet fait 8 bits, le demi-mot en fait 16 et le mot 32.
Avec l'Action Replay, il y a une façon précise pour différencier ces types de variables :

0XXXXXXX YYYYYYYY pour écrire le "mot" YYYYYYYY à l'adresse 0XXXXXXX,
1XXXXXXX 0000YYYY pour écrire le "demi-mot" YYYY à l'adresse 0XXXXXXX,
2XXXXXXX 000000YY pour écrire l'"octet" YY à l'adresse 0XXXXXXX.

Cela dépend des valeurs que la variable peut prendre.
Les grandes valeurs, comme l'argent ou le score, sont stockées sur 32 bits (cela va de 0 à 0xFFFFFFFF, soit 4294967295 au maximum).
Les valeurs plus petites mais qui peuvent être supérieures à 255, comme les coordonnées sur la carte ou les objets dans le sac, sont stockées sur 16 bits (de 0 à 0xFFFF, soit 65535).
Les valeurs qui ne peuvent dépasser 255, comme le nombre de pas de repousse restants ou encore le genre du héros (0 pour garçon ou 1 pour fille) sont stockées sur 8 bits (de 0 à 0xFF, soit 255).

Il est important de faire la différence, car si vous écrivez une valeur de 32 bits (4 octets) à une adresse qui est prévue pour 8 bits (un octet), le code modifiera aussi les 3 octets qui sont à côté, ce qui peut être fâcheux si ces octets sont importants pour le jeu.

Dans la première partie du tuto, on ne fonctionnera qu'avec des adresses de type 32 bits.

(Il y a un bon récapitulatif des différents types de codes à cette adresse : http://doc.kodewerx.org/hacking_nds.html#arcodetypes, en anglais comme toujours.)

I - Tout d'abord, un petit rappel (ou pas) sur le fonctionnement de l'offset de l'Action Replay.

Première partieIl faut déjà savoir que les adresses mémoire changent à chaque démarrage du jeu.
Donc il y a peu de codes qui marcheraient si ils étaient simplement sous la forme XXXXXXXX YYYYYYYY (avec XXXXXXXX : adresse mémoire et YYYYYYYY : valeur).

Le jeu contient cependant certaines variables qui lui indiquent où sont situées les adresses mémoire.
On appelle cela un "offset", c'est une valeur que l'on rajoute à chaque adresse.

Ainsi, si l'offset vaut AAAAAAAA, le code XXXXXXXX YYYYYYY devient (XXXXXXXX+AAAAAAAA) YYYYYYYY, c'est-à-dire que l'Action Replay ajoute la valeur AAAAAAAA à toutes les adresses mémoire (cela n'affecte pas la valeur).

Au début du code, l'offset vaut 0.

La ligne B2101F20 00000000, qui est présente dans beaucoup de codes pour Pokémon Platine FR, indique à l'AR de modifier l'offset.
Il lui ajoute la valeur située à l'adresse mémoire 0x02101F20.
Comme normalement l'offset vaut 0 avant cette ligne, sa valeur sera exactement celle de l'adresse 0x02101F20.

Si par exemple, à l'adresse mémoire 0x02101F20, on a la valeur 0x0227E480, cela veut dire que l'offset vaudra 0x00000000 + 0x0227E480 = 0x0227E480 (c'est un exemple, ça peut être n'importe quelle valeur qui commence par 0x0227E4XX).

Prenons comme exemple le code pour avoir 999 999 p$ :
94000130 FCFF0000
B2101F20 00000000
00000090 000F423F
D2000000 00000000

La première ligne (en noir) indique qu'il faudra appuyer sur L+R pour activer le code.
La dernière (en vert) s'appelle "full terminator", elle permet de terminer totalement le code (on remet l'offset à 0, c'est très important pour ne pas gêner les autres codes).

Les lignes qui nous intéressent sont les deux du milieu.

La rouge, dont j'ai déjà parlé, indique à l'AR de définir l'offset à la valeur située à l'adresse mémoire 0x02101F20.
Disons que cette valeur est 0x0227E480, comme précédemment.
On a donc offset = 0x0227E480.

Maintenant, intéressons-nous à la ligne bleue.

Toute seule, elle voudrait dire "mettre la valeur 0x000F423F (999 999 en décimal) dans l'adresse 0x00000090".
Seulement, vu que l'on a défini un offset, l'Action Replay ajoute automatiquement la valeur 0x0227E480 à toutes les adresses mémoire que l'on modifie.

Ainsi, les lignes suivantes :

B2101F20 00000000
00000090 000F423F
D2000000 00000000 (1)

sont équivalentes à ça :

0227E510 000F423F (2)

si l'adresse mémoire 0x02101F20 contient la valeur 0x0227E480.

En effet, 0x00000090 + 0x0227E480 (offset) = 0x0227E510.

Le code (2) ne fonctionnerait que le temps où on a la valeur 0x0227E480 à l'adresse 0x02101F20.

Si l'on redémarre le jeu, les adresses seront décalées et ce code ne fonctionnera plus.
Cependant, vu que le jeu a en mémoire l'offset, il suffit de faire un code "relatif" à cet offset pour qu'il marche à chaque fois.

C'est pour cela que le code (1) marchera à chaque fois.


Voilà, fin de la première partie.

II - Comment utiliser l'offset pour transformer les adresses mémoire trouvées avec EmuCheat en codes Action Replay.

Deuxième partieSi vous avez bien compris la première partie, nous pouvons passer à la deuxième.

Vous savez maintenant comment fonctionnent les codes Action Replay basiques pour Pokémon Platine FR.

Cependant, si vous voulez créer vos propres codes avec EmuCheat, il y a une méthode à appliquer.

Tout d'abord, vous vous en doutez, il va falloir démarrer EmuCheat et No$GBA.
Chargez la ROM de Platine dans l'émulateur, et associez EmuCheat à No$GBA comme dans le tuto de GBATemp :


Démarrez la partie en choisissant "Continuer".

Ensuite, il faut connaître l'offset actuel du jeu.
Rien de plus facile, rendez-vous dans l'onglet "Search" puis le sous-onglet "Memory Edit".
Entrez 101F20 dans le champ "Address" et cliquez sur "Show Address" (ou appuyez sur la touche "Entrée").
Vous devriez obtenir quelque chose comme ça :


Dans la RAM du jeu, les valeurs sont stockées par octets, en commençant par le dernier octet.
Par exemple, la valeur 0x12345678 sera stockée comme ça : 78 56 34 12.
Sur la copie d'écran, l'offset (encadré en rouge) vaut 34 E4 27 02.
C'est une valeur 32 bits, qui vaut donc, si vous avez bien suivi, 0x0227E434.
On a donc offset = 0x0227E434.

Maintenant, on peut commencer à chercher l'adresse de la variable que l'on veut modifier avec un code AR.

Je vais prendre l'exemple des Points Castel.
En suivant le tuto de GBATemp, vous ne devriez pas avoir de problèmes, mais je vais quand même donner la démarche pour les anglophobes.

Allez dans le sous-onglet "Lookup", et entrez votre nombre actuel de PCa dans le champ "Target:" (moi, j'en ai 10).
Validez avec ensuite la touche "Entrée".
Maintenant, modifiez ce nombre en regardant par exemple l'identité d'un Pokémon de l'équipe adverse.
Le nombre de PCa a diminué, entrez la nouvelle valeur dans "Target:" et validez (j'en ai maintenant 9).
Le nombre d'adresses possibles a normalement dû diminuer.

Recommencez l'opération jusqu'à n'en avoir plus qu'une dans la liste :

Note : j'ai laissé "Search Type" à 8 bits par défaut, mais il vaut mieux le mettre à 16 bits (ça a marché parce que les valeurs sont inférieures à 255, mais si c'est supérieur ça ne marchera pas avec 8 bits).

Ici, l'adresse mémoire que l'on recherche est 0x02284DB8 (EmuCheat donne les adresses sans le "02" au début, mais il est implicite).

Essayons maintenant de modifier le nombre de PCa (disons que l'on en veut 1234, soit 0x04D2 en hexadécimal).
Vous pouvez créer le premier code AR qui ne fonctionnera que sur votre partie actuelle et qui cessera de marcher si vous resetez.
Commencez classiquement avec la ligne 94000130 FCFF0000 pour activer avec L+R.
La valeur étant en 16 bits pour les PCa, commencez la ligne suivante avec un "1".
Écrivez à la suite l'adresse que vous avez obtenue, en enlevant le zéro à gauche (ici, ça donne 12284DB8).
Maintenant, faites un espace et entrez la nouvelle valeur en hexadécimal, en ajoutant des zéros à gauche afin qu'il y ait 8 chiffres en tout.
Ici, on obtient la ligne 12284DB8 000004D2.
Enfin, terminez par D2000000 00000000.

J'obtiens le code suivant :
94000130 FCFF0000
12284DB8 000004D2
D2000000 00000000
La partie verte du vôtre sera normalement différente.

Entrez ensuite ce code dans No$GBA (touche "F2"), cochez sa case, validez et activez-le avec L+R pendant le jeu.
Entrez ensuite dans un menu, "PROPRE EQUIPE" par exemple, et admirez les PCa.
Victoire ! Il y en a 1234 !  :D


À partir de maintenant, ça va devenir un peu plus technique...
Nous voulons un code de cette forme :
94000130 FCFF0000
B2101F20 00000000
1XXXXXXX 0000YYYY
D2000000 00000000

Nous avons l'offset et l'adresse mémoire des PCa (que l'on va noter 0AAAAAAA).
Or, cette adresse mémoire est formée comme ça :
0AAAAAAA = 0XXXXXXX + offset.

Un peu de maths, et on obtient :
0XXXXXXX = 0AAAAAAA - offset.

Dans mon cas, ça donne :
0XXXXXXX = 0x02284DB8 - 0x0227E434.

On écrit  02284DB8 - 0227E434 dans la calculatrice Windows en mode Scientifique et hexadécimal (appuyez sur "F5") et on obtient... Tadaaa !
02284DB8 - 0227E434 = 6984.
Donc 0XXXXXXX = 0x00006984.

On a notre code :
94000130 FCFF0000
B2101F20 00000000
100006984 0000YYYY
D2000000 00000000

Mettez la valeur hexadécimale que vous voulez dans YYYY, et ce sera bon !

Si vous n'avez pas compris certaines choses (ce qui va sûrement arriver  ;D), prévenez-moi (évitez les MP si ce n'est pas nécessaire) et j'essayerai de vous aider.

Dites-moi aussi si vous voyez des imprécisions, des fautes au autre, que je l'améliore.

ShinyPalkia, je compte sur toi pour me signaler les erreurs que j'ai pu faire dans ce tuto !  ;)

Black Angel:
Arf,je connais rien à l'hexadécimale...

Yotu:
Argh....... :-\.

Black Angel:
M@t,pourquoi tu ferais pas un tuto sur l'hexadécimale?
Excuse moi si j'en demande trop.

Navigation

[0] Index des messages

[#] Page suivante

[*] Page précédente

Utiliser la version classique