Si vous êtes là c'est que vous voulez insérer plus de Pokémon dans votre Hack-ROM, et la solution que vous avez trouvée pour faire ça c'est d'utiliser les 25 slots "??", et c'est une bonne solution, mais sachez que je ne suis pas là pour vous expliquer comment modifier leur sprite/stats/etc, pour ça il y a d'autres tutos.
Le souci avec ces 25 slots c'est qu'ils ont un cri de Zarbi et qu'en plus de ça on ne peut pas les insérer dans le Pokédex sans devoir retirer un Pokémon déjà existant, ce que je vous propose ici c'est donc de leur donner leur propre cri, et plus tard j'ajouterais une partie pour que vous puissiez ajouter des entrées dans le Pokédex, et donc ajouter les Pokémon "??".
Remarque : les offsets donnés dans ce tuto sont valables uniquement pour Rouge Feu, je n'ai pas cherché les offsets pour les autres versions, à vous de les chercher.
Remarque : les nombres précédés d'un '0x' sont en hexadécimal, sinon ils sont en décimal.
Une bonne maîtrise de l'hexadécimal est requise pour ce tuto. Et soyez bien vigilant, on a vite fait de se tromper lors d'un calcul ou d'oublier de repointer.
Les outils nécessaires
Votre
éditeur Hexadécimal qui sera notre seul outil.
Les cris
Remarque : Attention je ne vais pas vous apprendre comment ajouter des cris, mais seulement comment ajouter les Pokémon "??" dans la table des cris, c'est différent. Je ne crois pas qu'il y ait de tuto pour insérer des cris mais avec
PokeCry c'est très simple, faites surtout attention à seulement insérer le cri, il ne faut pas que le logiciel touche à la table.
Les cris des Pokémon sont tous recensés dans une table, c'est à partir de cette table que le jeu sait où aller chercher le cri du Pokémon. À partir de là on pourrait se dire que le problème est simple, qu'il suffit de modifier les pointeurs correspondant au Pokémon "??" pour ne plus qu'ils pointent sur le cri des Zarbi mais sur un cri que vous avez inséré vous même, si seulement ça avait été aussi simple, mais la table ne contient même pas les Pokémon "??" car le jeu fait une vérification, et si le Pokémon est 1 des 25 slots "??" il le fait passer pour un Zarbi lors du chargement du cri.
Il y a plusieurs façons de résoudre ce problème, j'en ai choisi une modulable et pas trop compliquée à mettre en place pour vous faciliter la tâche mais aussi parce que ce sera plus simple pour moi quand j'essaierai d’insérer de nouveaux Pokémon :D (Au début j'avais écrit un tuto où il fallait insérer deux tables de 3500 octets chacune puis je me suis dit que c'était un peu contraignant, je suis gentille non ?)
Mais fini les bavardages, commençons.
Crée une nouvelle table
Comme je vous l'ai dit j'ai choisi une solution très modulable ce qui nous permet d'utiliser une table uniquement pour les 25 slots "??", donc pas besoin de modifier la table d'origine.
Je vous donne la table à insérer, elle fait 0x12C donc prévoyez la place nécessaire et notez l'offset où vous l'insérez :
```
20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00 20 3C 00 00 8C 5C 50 08 FF 00 FF 00
```
Cette table contient 25 entrées qui seront celle de nos 25 slots "??", pour le moment elle est vierge, enfin presque vierge puisque pour le moment tous les pointeurs pointent sur le cri de Bulbizarre. Je précise pour ceux à qui ça ne semble pas évident mais les éléments sont dans le même ordre que les Pokémon, ainsi le premier élément de la table correspond au cri du premier Pokémon "??".
On remarque facilement un schéma récurrent qui est le suivant :
```
20 3C 00 00 8C 5C 50 08 FF 00 FF 00
```
Vous ne devez pas toucher au 20 3C 00 00 ni au FF 00 FF 00, le seul élément que vous devez modifier est le 8C 5C 50 08 qui est le pointeur du cri, là il pointe sur le cri de Bulbizarre c'est donc à vous de le changer pour qu'il pointe vers votre nouveau cri.
Insérer la routine ASM
Vous commencez à en avoir l'habitude avec moi, la plupart des changements dans les mécanismes du jeu impliquent de passer par l'ASM, et encore une fois je vous fournis la routine que j'ai faite pour pouvoir utiliser notre nouvelle table avec les Pokémon "??". Vous pouvez l'insérer où vous voulez, notez juste l'offset on va en avoir besoin :
```
02 BC 03 49 40 18 0C 21 48 43 02 49 02 4B 18 47
05 FF FF FF
XX XX XX 08 A1 21 07 08
```
Cette routine a pour rôle de calculer l'offset du cri pour notre nouvelle table.
Vous devez remplacer
XX XX XX 08 par un pointeur sur votre table.
Quelques petites modifications supplémentaires
Maintenant il ne reste plus qu'à indiquer au jeu que, quand il s'agit d'un des Pokémon "??" il doit se rendre à la 1ere routine que l'on vient d'insérer et non le considérer comme un Zarbi.
Pour ça je vous demande de vous rendre à l'offset 0x431DC et d'y coller ceci :
```
00 B5 00 04 00 0C FA 28 0A D9 FF 21 14 31 88 42
04 D9 04 49 40 00 40 18 00 88 01 E0 02 49 08 47
02 BC 08 47 FC DB 24 08
XX XX XX 08 FF FF FF FF
FF FF FF FF
```
Ce que j'ai mis en rouge est un pointeur sur la routine ASM que nous avons insérée, pour rappel un pointeur sur une routine ASM doit être "offset"+0x1 (puis inverser bien sûr).
Et voilà, vous pouvez utiliser un autre cri que celui de Zarbi pour les 25 slots "??".
Par
Unifag