Rendre viable les 25 Pokémon "??"

Si vous êtes la c'est que vous voulez insérer plus de Pokémon dans votre Hack-ROM, et la solution que vous avez trouvé pour faire ça c'est d'utilisé les 25 slots "??", et c'est une bonne solution, mais sachez que je ne suis pas la pour vous expliquer comment modifier leur sprite/stats/etc, pour ça il y à 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é dans ce tuto sont valable 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é d'un '0x' sont en hexadécimal, sinon il sont en décimal.
Une bonne maitrise de l'hexadécimal est requises pour ce tuto. Et soyez bien vigilent, on à vite fais de se tromper lors d'un calcul ou d'oublier de repointer.

Les outils nécessaire

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 crois pas qu'il y est de tuto pour insérer des cris mais avec PokeCry c'est très simple, faite 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é dans une table, c'est à partir de cette table que le jeu sais où aller chercher le cri du Pokémon. A partir de la on pourrais se dire que le problème est simple, qu'il suffit de modifié les pointeurs correspondant au Pokémon "??" pour ne plus qu'il pointe sur le cri des Zarbi mais sur un cris que vous avez inséré vous même, si seulement ça avait était aussi simple, mais la table ne contient même pas les Pokémon "??" car le jeu fais une vérification, et si le Pokémon est 1 des 25 slot "??" il le fais passer pour un Zarbi lors du chargement du cri.
Il y à plusieurs façon de résoudre ce problème, j'en est choisis une modulable et pas trop compliqué a mettre en place pour vous faciliter la tache mais aussi parce-que ce sera plus simple pour moi quand j'essayerais d’insérer de nouveaux Pokémon :D (Au début j'avais écrit un tuto où il fallait insérer deux table de 3500 octets chacune puis je me suis dit que c'était un peu contraignant, je suis gentille non?)
Mais fini les bavardage, commençons.

Crée une nouvelle table

Comme je vous l'ai dit j'ai choisis 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érer :

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 vierges, enfin presque vierge puisque pour le moment tous les pointeurs pointe 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écurant qui est le suivant :

20 3C 00 00 8C 5C 50 08 FF 00 FF 00

Vous ne devez pas touché au 20 3C 00 00 ni au FF 00 FF 00, le seul élément que vous devez modifiez est le 8C 5C 50 08 qui est le pointeur du cri, la il pointe sur le cri de Bulbizarre c'est donc à vous de le changez pour qu'il pointe vers votre nouveau cri.

Insérer la routine ASM

Vous commencez à en avoir l'habitude avec moi, la plupart des changement dans les mécanisme du jeu implique de passé par l'ASM, et encore une fois je vous fourni la routine que j'ai faite pour pouvoir utilisez notre nouvelle table avec les Pokémon "??". Vous pouvez l'inséré 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 à pour rôle de calculer l'offset du cris pour notre nouvelle table.
Vous devez remplacez XX XX XX 08 par un pointeur sur votre table.

Quelques petites modifications supplémentaires

Maintenant il ne reste plus qu'a indiqué 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 sur).
Et voila, vous pouvez utilisez un autre cri que celui de Zarbi pour les 25 slots "??".

Par Unifag

Achetez Mario Odyssey 44.00E
Achetez la Nintendo Switch + Mario Odyssey 349,99E
Achetez Pokémon Ultra Soleil sur 3DS 33.99E
Achetez Pokémon Ultra Lune sur 3DS 33,99E
Modifier vos jeux 3DS en toute sécurité avec la Power Save 16,99E