Mais eeeuhhh, je dois remplacer une attaque ? Je ne peux pas en ajouter ?? Aaaaaaah comment je fais ? Laquelle je remplace ?
Ah c'est bon, j'ai trouvé une attaque à remplacer. Maintenant je vais l'apprendre à un Pokémon.... J'ouvre YAPE.... MAIS QUOI ? Je ne peux pas apprendre d'autres attaques ? Pourquoi ce monde est si cruel ? Snif.....
Ne vous inquiétez pas, Baitot est là pour réglez ces deux problèmes ! Aujourd'hui, on va apprendre à ajouter de nouvelles attaques et a "supprimer" la limite d'attaques MAX.
Allez, on commence !
PRÉPARATIF :
Comme il y a 2 problèmes, il y a 2 tutoriels et donc 2 listes, soyons logique !
La liste pour le Mini Tuto :
- Un Éditeur hexa (comme HxD).
- YAPE.
Et celle pour le Tuto :
- Un Éditeur hexa (toujours HxD pour moi).
- Un cerveau.
- YAPE
- Une calculatrice d'hexadécimal/décimal (celle de Windows pour moi).
- Move Editor (vous pouvez le trouver dans le tuto de Flow')
Comme ces tutos sont dipsonible pour toutes les versions, les offsets sont différents. Je vais nommé les offset par des lettres. Donc, consultez la liste des offsets ci-dessous selon votre version :
Nom de l'Offset : | Rouge Feu : | Vert Feuille : | Rubis : | Saphir : | Émeraude |
Offset "A"* | 257C08 | 257BE8 | 210018 | 20FFA8 | 330EF0 |
Offset "B"** | 2414A0 | 24147C | 200728 | 2006B8 | 3212AC |
Offset "C"*** | 24B054 | 24B030 | 203578 | 203508 | 324408 |
Offset "D"**** | 1C50C0 | 1C509C | 1CF560 | 1CF4F0 | 2D1D40 |
Offset "E"****** | 47E7DC | 47D504 | 3C8434 | 3C7F64 | 620920 |
Note : - Comme à chaque tuto, faites une copie de votre rom ! Je ne serai en aucun cas responsable
si vous faites une mauvaise manipulation et que vous perdez des données.
- Comme dans mon autre tuto, les astérisques mis dans le tutoriel seront expliquées à la fin.
- Dans ce tutoriel, on ne va pas juste s'intéresser aux roms mais aussi au logiciel.
On va toucher à leur fichier ".ini" et vous verrez que c'est très utile.
MINI TUTO :
On va commencer par le plus facile : un Mini Tuto ! J'appelle ça un "Mini Tuto" car c'est hyper simple et que ça prend 1 minute chrono.
Vous ne me croyez pas ? Beh allez, une p'tite vidéo pour vous montrez que Baitot a toujours raison (Dsl de la qualité de m****) : http://www.4shared.com/embed/4292113683/f7a15ae0
Enfin... Non, j'ai eu tort, ça ne prend pas 1 minute mais 54 secondes....
Bon on commence. Je ne mettrai pas de screen dans ce "Mini Tuto" car une vidéo est à votre disposition.
1) Ouvrez votre rom avec votre Editeur hexa puis cherchez un grand espace libre* (une longueur d'environ 8000).
2) Rendez-vous à l'offset "A" puis modifier le premier pointeur (soit les 4 bytes) par le pointeur de votre grand espace libre. Vous pouvez maintenant fermer votre éditeur hexa.
Rappel : Un pointeur s'obtient en inversant les bytes de cette offset + "08". Ex : Si j'aurais pris l'offset A01000, ça donnerai 0010A008 sous forme de pointeur car : A01000 -> A0 10 00 -> 00 10 A0 -> 0010A008.
3) Ouvrez votre rom avec YAPE et remettez lui ses attaques de bases (car là, on vient de modifier l'endroit où se trouve ses attaques). En modifiant/remplaçant une de ses attaques, YAPE va "recharger" la table qui se trouve à l'offset "A" et tous les pointeurs pointeront vers le grand espace libre.
4) Sauvegardez votre rom et ouvrez le fichier .ini de YAPE : YAPE 0.9/data/common/romdata.ini.
Cherchez la version de votre rom est dans la ligne "MaxMovesLearned" remplacez le nombre s'y trouvant par un nombre plus grand.
Ex : Si vous avez choisi un espace libre d'une taille approximative à 8000, vous pouvez mettre environ 12000 attaques.
5) Fermez et rouvrez YAPE, puis votre rom et ajoutez des attaques comme bon vous semble ! .
TUTO :
Bon, maintenant qu'on a fait le plus facile, on va s'attaquer au plus lourd : Créer de nouvelles attaques !
Mais ne vous inquiétez ; ça reste simple. On va presque toujours répétez les mêmes choses.
Ah j'oubliai, comme je suis gentil, je vais vous mettre des screens pour vous aidez.
Attention : Pour l'instant les attaques ajoutées auront les mêmes animations que les anciennes ; la première ajoutée aura l'animation d'Ecras'Face. Je vous apprendrai à faire de nouvelles animations dans un autre tuto mais je ne peux pas le faire de suite car je suis pas opérationnel dessus. (dsl du rouge Yago mais quand même, c'est un "Attention" ^^).
Allez, on commence :
1) Ouvrez votre rom dans HxD, Faites Ctrl + E, dans la case "Start Offset" écrivez l'offset "B" (2414A0 pour moi) et dans la case "Lenght", écrivez 1207 (hex). Copiez ce code est remplacez-le par des "FF" dans un espace libre (je choisis l'offset 800000).
2) Pour l'instant, on a copié le nom des anciennes attaques. On va maintenant s'attaquer aux "données" des attaques.
Pour cela,. Ctrl + E -> "Start Offset'" = Offset "C" (24B054 pour moi) et Lenght = 10A4 (hex) -> Ok -> Copier.
Remplacez un espace libre de 10A4 par ce que vous venez de copiez (pour moi 820000).
3) Maintenant, les animations des attaques. Pour cela, Ctrl + E -> "Start Offset" = Offset "D" et "Lenght" = 58C (hex) -> Ok -> Copiez.
Remplacez un espace libre de 58C par ce que vous venez de copiez (840000 pour moi).
4) Et pour finir, les descriptions des Pokémon. Donc "Start Offset" = Offset "E" (47E7DC pour moi) et "Lenght" = 58C (hex) -> Ok -> Copiez.
Remplacez un espace libre de 58C par ce que vous avez de copiez (860000 pour moi).
Je mets pas de screen ; c'est la même chose.
5) Maintenant, ouvrez Move Editor et modifiez les attaques comme vous le souhaitez mais modifiez-les de haut en bas ! Si vous avez pas compris, il faut que vous modifiez Ecras'Face en premier, ensuite Poing-Karate, Torgnoles, Poing Comète etc...
Ne vous inquiétez ; on ne modifie pas vraiment les attaques mais on va créer les nouvelles alors c'est pas grave si vous modifiez Ecras'Face par Marto-Poing alors que vous voulez garder l'attaque Ecras'Face. Si vous modifiez la description de l'attaque, changez de pointeur, sinon la "vrai" attaque Ecras'Face aura la même description.
6) Maintenant, il faut que vous multipliez le nombre d'attaques que vous avez modifié (en hex) par D (Hex) et que vous ajoutez le nombre obtenu à l'offset "B".
Moi j'en ai modifié 100, et comme 100 est un nombre décimal, je le converti ce nombre en hexadécimal. Ce qui me donne 64. Maintenant, je multiplie par D : 64 x D = 514. Donc je fait Ctrl + E, dans "Start Offset" je mets l'offset "B" (c'est 2414A0 pour moi) et dans "Lenght" je mets 514 (hex).
7) Copiez ça (les 514 premier bytes de 2414A0 pour moi) et allez la somme de votre offset libre choisi dans l'étape "1)" et de 1207 (hex). J'obtiens donc l'Offset 801207. Refaites Ctrl + E, mettez l'offset obtenue dans "Start offset" (801207 pour moi) et dans "Lenght" écrivez le nombre obtenue à la fin de la multiplication de tout à l'heure (514 pour moi). Pour finir cette étape, remplacez ce que vous venez de sélectionnez par ce que vous avez copié tout à l'heure (les 514 premier bytes de 2414A0 pour moi).
8) Multipliez le nombre d'attaques que vous avez modifié (en hex) par C. Moi, ça me fait 64 (qui est 100 en hexadécimal) x C = 4B0 (toujours en hex)
Ctrl + E -> Start Offset = offset "C" (moi 24B054) et Lenght = nombre obtenu (4B0 pour moi).
Copiez ceci et faites l'addition de votre offset "libre" des données des attaques et de 10A4 (ce qui me donne 820000 + 10A4 = 8210A4). Faites Ctrl + E -> "Start Offset" = votre offset obtenue (8210A4 pour moi) et "Lenght" = votre nombre obtenu tout à l'heure (4B0 hex) -> Ok -> Collez ce que vous avez copiez.
9) Multipliez le nombre d'attaques que avez modifié (en hex) par 4. Ça me donne donc 64 x 4 = 190.
Ctrl + E -> Start Offset = offset "D" (moi 1C50C0) et Lenght = nombre obtenu (190 pour moi).
Copiez ça et faites l'addition de votre offset "libre" des animations des attaques et de 58C (ce qui me donne 840000 + 58C = 84058C). Faites Ctrl + E -> "Start Offset" = votre offset obtenue (84058C pour moi) et "Lenght" = nombre obtenu tout à l'heure (pour moi, c'est 190 en hex) -> Ok -> Collez ce que vous avez copiez.
10) Reprenez le nombre obtenu lorsqu'on a multiplié par 4 le nombre d'attaques modifiées (190 pour moi).
Ctrl + E -> Start Offset = offset "E" (moi 47E7DC) et Lenght = nombre obtenu (190 pour moi).
Copiez ça et faites l'addition de votre offset "libre" de la table des descriptions des attaques et de 58C (ce qui me donne 860000 + 58C = 86058C). Faites Ctrl + E -> "Start Offset" = votre offset obtenue (86058C pour moi) et "Lenght" = nombre obtenu tout à l'heure (pour moi, c'est 190 en hex) -> Ok -> Collez ce que vous avez copiez.
Pas de screen, même chose que tout à l'heure.
11) On a presque fini *yes* . Maintenant, faut remplacer tout les pointeurs.
Donc faites Ctrl + R, "Search For" = pointeur de l'Offset "B" (A0142408 pour moi), "Remplace With" = l'offset que vous avez choisi dans l'étape "1" sous forme de pointeur (00008008 pour moi), "Datatype" = Hex-values et cochez dans "Search direction" "All" et cliquez sur "Remplace all".
Maintenant pareil mais avec le pointeur de l'offset "C" (54B02408 pour moi) et l'offset que vous avez choisi dans l'étape "2)" sous forme de pointeur (00008208 pour moi).
On refait la même chose mais cette fois-ci on ajoute "4" (58B02408 pour moi) au pointeur de l'offset "C" et à celui choisi dans l'étape 2 (04008208 pour moi).
Pareil avec l'offset "D" (C0501C08 = moi) et le pointeur de l'offset libre choisi dans l'étape "3)" (00008408 pour moi).
Et pour finir, encore la même chose avec l'offset "E" (DCE74708 pour moi) et le pointeur de l'offset libre de l'étape "4)" (00008608 pour moi).
Sauvegardez tous les changements effectués.
12) Ouvrez le fichier .ini de YAPE, allez dans les données de votre version, à la ligne "AttackNamesOffset" mettez votre offset "libre" de l'étape "1)" (800000 pour moi).
Et allez au début du fichier :
Code: [Sélectionner]
[All]
NumPkmn = 411
NumDexEntries = 386
NumAttacks = 355
NumAbilities = 78
Ajoutez le numéro des attaques que vous avez ajoutez à 355 et remplacez le résultat obtenu à la ligne "NumAttacks" et enregistrer les modifications faites (pour moi 455).
13) Ouvrez YAPE et apprenez les nouvelles attaques aux Pokémon comme bon vous semble.
14) PROFITEZ !
EXPLICATIONS :
J'sais pas si vous avez remarqué mais j'ai pas mis d'astérisques dans le "TUTO" car je vais expliquer la signification de toutes les étapes :
1) Là, on déplace le nom des Pokémon pour pouvoir ensuite avoir la place d'ajouter des noms.
2) On fait pareil mais avec les données des attaques.
3) Encore la même chose mais avec les animations des attaques.
4) Encore pareil mais avec la table des descriptions des attaques.
5) Ici, on modifie les anciennes attaques par des nouvelles, comme ça il nous reste juste à faire un Copier/Coller pour pouvoir créer nos nouvelles attaques.
6) On multiplie par "D" car c'est la taille d'un nom de Pokémon. Ensuite on fait un Copier les attaques que l'on a modifié.
7) On colle les attaques que l'on a modifié à leur nouveaux espaces.
8) Comme pour l'étape "5)" sauf que "C", c'est la taille des données des attaques. Puis comme pour l'étape "6)", on colle ça à leur new espaces.
9) Pareil que l'étape "7)" sauf que "4" c'est la taille d'un pointeur des animations des attaques.
10) Pareil que l'étape "7)" sauf que "4" c'est la taille d'un pointeur des descriptions des attaques.
11) On remplace TOUS les anciens pointeurs pour qu'ils pointent vers les nouveaux espaces créer.
12) On fait en sorte que l'on puisse apprendre ces nouvelles attaques via YAPE en modifiant son fichier .ini.
13) On fait ce qu'on veut x).
Maintenant, les astérisques :
Offset "A"* : : C'est la table des attaques appris aux Pokémon. Le premier pointeur pointe vers Bulbizarre, le second vers Herbizarre etc... Mais en modifiant juste le pointeur de Bulbizarre et en modifiant une attaque avec YAPE, le jeu se "recharge" et tous les pointeurs sont mis à jour.
Offset "B"** : Offset qui amène aux noms des Pokémon.
Offset "C"*** : Offset qui amène aux données des Pokémon (puissance, précision, PP...)
Offset "D"**** : Offset qui amène à la table des animations des attaques.
Offset "E"****** : Offset qui amène à la table des descriptions des attaques.
"cherchez un grand espace libre*****" : La taille de l'espace libre choisit influe sur le nombre d'attaques que vous pourrez apprendre à un Pokémon. Comme je l'ai dit dans mon tuto, une taille de 8000 suffit largement.
"Dsl de la qualité de m****" : Insulte signifiant "nul" .
Voilà, c'est fini !
Crédits: Pokébip pour la description de Feu D'Enfer x).
Baitot.