Ce tutoriel s'adresse avant tout aux personnes désireuses de modder ou de fabriquer des e-cards pour les jeux pokémons. Si vous souhaitez faire vos propres cartes, vous trouverez des informations pour les fabriquer manuellement en modifiant des séquences de bytes à l'intérieur même des fichiers de e-cards dans ce tutoriel. Pour un tutoriel tirant profit d'un programme d'auto fabrication de cartes, veuillez vous tourner vers [R/S/E] Customiser ses e-cards, e-card-Hacking et vers [R/S/E] Faire ses propres DLC à l'aide des e-cards.
[R/S/E]Anatomie d'une e-Card vous permettra néanmoins et même si vous utilisez la méthode automatisée de mieux comprendre ce que vous faites réellement en utilisant la méthode automatique. Il est important de comprendre la structure de ce que l'on cherche à fabriquer avant de le fabriquer.
Ici je vais essayer de vous livrer mes trouvailles de la manière la plus précise et exhaustive possible sur le fonctionnement et la structure des e-cards.
1 PREREQUIS :
1.1 Pour les modifications de la partie injectée dans la cartouche de pokémon :
-Windows Powershell
-Un outil d’édition Hexadécimal (j'utilise HxD Hex Editor V2.5.0.0 disponible ici)
-Nintendo E-Reader Development kit by CaitSith2 disponible ici
-WC3Tool by Sabresite disponible ici
-Poké-Reader by Team Fail disponible ici
-Headerfix.exe by Bl4ckSh4rk
-Un ou des fichiers e-cards (.raw) à examiner et/ou modifier, par exemple ceux se trouvant sur mon Github ici
1.2 Pour les tests virtuels :
-mGBA version 0.10.5 ou supérieure
-Une ROM de Pokémon Rubis/Saphir
-Une ROM de e-Reader USA
-Une save de Pokémon Rubis/Saphir
1.3 Pour les tests sur matériel physique :
-Deux Game Boy Advances
-Un jeu Pokémon Rubis ou Saphir FRENCH
-Un e-Reader USA (le processus n’est pas compatible actuellement avec les e-Reader JAP)
-Une imprimante photos jets d’encre (ne fonctionne pas avec les imprimantes lasers) avec qualité d’impression 600dpi minimum + papier photo Glacé Extra II de Canon PP-201
-Pour investiguer les erreurs d’impressions, je recommande très vivement l’usage d’une loupe de bijoutier grossissement x30 ou plus.
-Ou une méthode d’injection de sauvegarde dans cartouche d’e-Reader pour bypasser l’impression des cartes qui est de loin la partie la plus difficile et coûteuse.
Pour les impressions physiques, je recommande de lire les excellents tuto suivants : ici et là
2 UN PEU DE LEXIQUE :
Dotecode : code barre de la e-card à scanner par le e-Reader, de part sa nature physique et imprimable, les données sont arrangées de manière redondantes à l'intérieur afin d'éviter qu'une carte ne fonctionne plus après qu'un seul point soit gratté ou abimé.
Fichier .raw : fichier de données d’une e-card permettant d’imprimer un Dotecode, là encore ce fichier comporte un nombre important de redondances pour permettre la lecture d'un code barre abîmé.
Fichier .bin : version hexadécimale exploitable du fichier .raw : il s'agit du fichier décodé à partir du .raw dans le e-Reader. Ici il n'y a plus de redondance.
Fichier .vpk : partie décodée et interprétée par le e-Reader pour générer le programme lu dans le e-Reader. C'est un peu une sorte de ROM qui tournerait sur e-Reader
Fichier Decompressed.vpk : version héxadécimale décompressée et exploitable du fichier .vpk
Fichier .ecb : (pour E-Card Berry) fichier contenu dans le vpk qui sera injecté dans la sauvegarde du jeu cible (Pokémon).
Fichier .ect : (pour E-Card Trainer) fichier contenu dans le vpk qui sera injecté dans la sauvegarde du jeu cible (Pokémon)
3 COMMENÇONS !
3.1 Tout détricoter !
3.1.1 De raw à bin
Afin de pouvoir travailler sur la carte, il faut commencer par en extraire toutes les parties.
Commencez par extraire du Nintendo E-Reader Development kit nedcenc.exe et nevpk.exe.
Cela fait, ouvrez Windows PowerShell et tapez sur l’invite de commande :
Code : Tout sélectionner
& "C:\MonCheminPerso\nedcenc.exe" -i "C:\MonCheminPerso\NomFichierECard.raw" -d -o "C:\MonCheminPerso\ NomFichierECard.bin"Vous venez de récupérer votre premier fichier exploitable !
Inspectons un peu les entrailles de la bête : -En vert nous retrouvons la première brique de localisation E0 51 pour les e-Reader USA, E0 82 pour les e-Reader plus JAP, E0 81 pour les e-Reader JAP
-En orange nous retrouvons diverses Checksums (0x13 : DataChecksum, 0x2E : HeaderChecksum, 0x2F : GlobalChecksum
-En bleu un contrôle de redondance de la taille du vpk
-En rouge la taille de notre prochaine cible : le fichier .vpk ici le fichier fait 47 07 soit une longueur de 747 Byte.
-En noir notre fameux fichier .vpk
-Le reste du .bin est rempli afin d’atteindre exactement une longueur de 83F
3.1.2 De bin à vpk
Maintenant que nous sommes en possession d’un fichier .bin, il est temps d’en extraire notre fichier .vpk.
Pour ce faire, créons un fichier .txt et renommons le NomFichierECard.vpk. Un message d’erreur nous alertant sur les risques du changement d’extension apparait, pas de panique, c’est normal, on accepte.
Ouvrons à présent notre fichier .vpk vide et copions/collons notre depuis notre fichier .bin le code correspondant au .vpk (dans notre exemple, il s’agit de l’encadré noir).
On sauvegarde…
Félicitation ! Vous avez votre premier fichier .vpk.
3.1.3 Décompresser le fichier vpk pour pouvoir l’exploiter.
Votre fichier .vpk est certes bien joli mais… En l’état il est illisible !
Remédions à cela à l’aide de notre fidèle Windows PowerShell :
Code : Tout sélectionner
& "C:\MonCheminPerso\nevpk.exe" -i "C:\MonCheminPerso\NomFichierECard.vpk" -d -o "D:\MonCheminPerso\NomFichierECard_decompressed.vpk"La taille et la structure des fichiers Decompressed.vpk sont très changeantes suivant la nature de ce qu’ils font. Ici nous nous concentrerons sur deux cas simples : les injections de dresseurs et les injections de baies. Dans les deux, nous allons commencer par trouver notre zone de prologue facilement identifiable par la présence des deux « GameFreak Inc. » repris dans le fichier :
Pour les dresseurs : -En vert : la compatibilité avec les cartouches (01 01 01 pour les cartouches JAP, 02 02 02 pour les cartouches US, 03 FF FF pour les cartouches FR, 04 04 04 pour les cartouches GER, 05 FF FF pour les cartouches ITA, 07 FF FF pour les cartouches SPA.
-En rouge le jeu de destination : RS=01, E=03
-En bleu le type de données transmises 03=Message(?), 04=Chargement de statut(?), 05=Pré-script, 06=script, 07=baie, 08=rubans, 09=Pokédex national, 0A=Mot rare, 0B=Objet record mixing, 0C=Pokémon offert, 0D=Dresseur, 0E=réglage d'horloge, 11=Dresseur Dôme(?)
-En noir l’ect qui fait toujours une taille de BC Byte
Pour les baies : -En vert : la compatibilité avec les cartouches (01 01 01 pour les cartouches JAP, 02 02 02 pour les cartouches US, 03 FF FF pour les cartouches FR, 04 04 04 pour les cartouches GER, 05 FF FF pour les cartouches ITA, 07 FF FF pour les cartouches SPA.
-En rouge le jeu de destination : RS=01, E=03
-En bleu le type de données transmises 03=Message(?), 04=Chargement de statut(?), 05=Pré-script, 06=script, 07=baie, 08=rubans, 09=Pokédex national, 0A=Mot rare, 0B=Objet record mixing, 0C=Pokémon offert, 0D=Dresseur, 0E=réglage d'horloge, 11=Dresseur Dôme(?)
-En noir l’ecb qui fait toujours une taille de 530 Byte
3.1.4 Un dernier tiroir : ecb et ect !
De la même manière que nous avons extrait plus tôt le vpk du fichier bin, il est temps de copier/coller notre précieux ecb ou ect dans un fichier tout neuf pour pouvoir le manipuler.
Je ne vous ai pas perdu ?
Super ! Commençons à modifier nos éléments !
3.2 Modifier les données des ecb et ect
Ici, nous allons enfin pouvoir commencer à souffler : un logiciel va nous permettre de modifier sans trop de soucis nos ecb et ect : WC3Tool.
Ouvrons le :
Les options qui vont nous intéresser sont à droite, en rouge. Il ne reste plus qu’à modifier et sauvegarder ! 3.2.1 Oui mais je veux des détails moi
3.2.1.1 Effeuillge d’un ect -en rose : le niveau d’apparition à la tour de combat
-en gris la classe du dresseur
-en bleu clair : l’étage de la tour de combat
-en orange : le nom du dresseur
-en rouge : le TID du dresseur
-en bleu foncé : les 18 mots Smart Tchat System utilisés par le dresseur pendant le combat (3 phrases de 6 mots, phrase de lancement de combat, phrase de défaite du joueur, phrase de victoire du joueur)
-En violet les trois pokémons utilisés
-En vert : la checksum
Pour chaque pokémon : -en noir : l’espèce
-en violet l’objet tenu
-en bleu clair : les attaques
-en orange : le niveau
-en rose : les pp-up (selon la même formule que pour la pokemon data substructure)
-en bleu foncé : les EVs
-en vert pomme : l’OT ID
-en marron : la section IV/Œuf/Talent de la pokemon data substructure (section miscellaneous)
-en vert foncé : le PID
-en gris le nom
-en bordeaux : l’amitié
Note importante :
WC3Tool plante pour les dresseurs ayant des phrases où tous les mots ne sont pas renseignés (FF FF pour un mot blanc non reconnu par le programme).
WC3Tool ne prend pas en compte la checksum à l’ouverture d’un ect. Il est donc possible de modifier les .ect manuellement en éditant l’hexadécimal sauf la checksum puis d’ouvrir et sauvegarder le fichier via WC3Tool pour que cette dernière soit corrigée.
3.2.1.2 Effeuillage d’un .ecb -en noir : le nom de la baie
-en bordeaux : la firmness
-en gris : la taille
-en rouge : max yield
-en orange : min yield
-en jaune : RAM offset pour les descriptions de la baie
-en vert : growth time per stage
-en bleu : goûts
-en bleu foncé : smoothness
-en violet : sprite de la baie
-en marron : palette de la baie
-en rose : la description de la baie (2 lignes)
-en or : effet depuis le sac.
-en vert pomme : effet si tenue en combat.
-en bleu ciel : checksum
3.3 Tout réassembler
Vos nouveaux .ect et/ou .ecb tout brillants réalisés, il est temps de réassembler son e-card !
3.3.1 Ré-insérer l’ect/ecb dans le _decompressed.vpk
Rien de bien compliqué ici, il suffit de coller nos nouveaux chefs d’œuvre dans le _decompressed.vpk d’origine (ou une copie renommée pour les soigneux, au cas-où une vilaine erreur se soit glissée quelque part). Les ect et ecb étant de braves fichiers à la taille invariable, il suffira de sélectionner BC Byte à partir de 0xD50 pour un ect, 530 Byte à partir de 0x4EA.
Si vous voulez effectuer un changement de région, il est temps de corriger les valeurs en vert du §3.1.3.
3.3.2 Nous recompressons le .vpk
A l’aide de notre fidèle Windows PowerShell en tapant :
Code : Tout sélectionner
& "C:\MonCheminPerso\nevpk.exe" -i "C:\MonCheminPerso\MonVPKModifié_decompressed.vpk" -c -o "C:\MonCheminPerso\MonVPKModifié.vpk"Je conseille ici encore de réaliser cette opération en faisant une copie du .bin d’origine, les bêtises sont vites réalisées et on est bien content de pouvoir retrouver nos fichiers d’origines quand elles finissent par immanquablement arriver.
Nous allons conserver uniquement le header de notre .bin (jusque 0xD52 inclus), tout le reste est à supprimer.
Sous le header nous collons notre nouveau .vpk.
Nous corrigeons ensuite la taille de notre vpk reprise en rouge dans le §3.1.1.
Il est ensuite temps de sortir un papier, un crayon et la calculatrice Windows en mode programmeur (je recommande un petit fichier Excel pour ceux qui comptent faire un certain nombre de carte) : il est temps de corriger la zone bleue du §3.1.1.
Pour cela, nous prennons notre taille de vpk et nous lui ajoutons 2 en base hexadécimale :
747 + 2 = 749
Nous convertissons ensuite en binaire
749 = 0000 0111 0100 1001
Nous insérons notre nombre au milieu de la chaine suivante :
0000 0010 0000 1110 1001 0010 0010 0010
Nous repassons enfin cette chaine en hexadécimal :
0000 0010 0000 1110 1001 0010 0010 0010 = 22 92 0E 02
Et pour finir on met le résultat en miroir : 22 92 0E 02 devient 02 0E 92 22
Bravo ! il ne reste plus qu’à insérer votre résultat en lieu et place de la zone bleue initiale du §3.1.1 !
Encore une fois, si vous souhaitez adapter votre région, il est temps de corriger l’encadré vert du §3.1.1.
Encore une dernière sueur pour reprendre les Checksum en orange ? Non ! Sauvegardez votre .bin, lancez Headerfix.exe puis glissez et relâcher votre fichier sur fraichement modifié sur Headerfix.exe dans votre explorateur de fichier : une invite de commande va apparaitre et disparaitre plus vite que l’éclair et paf ! Vos checksums sont sauvées !
3.3.4 C’est terminé ?
Presque, c’est promis ! Une dernière commande Windows PowerShell pour reconstituer un .raw et vous y serez :
Code : Tout sélectionner
& "C:\MonCheminPerso\nedcenc.exe" -i "C:\MonCheminPerso\MinBINModifié.bin" -e -o "C:\MonCheminPerso\MonRAWModifié.raw"3.3.5 Le bonus : e-card virtualisée et sauvegardée dans le e-Reader
Pas d’imprimante pour donner vie à ta carte de e-Reader ? Pas de panique, il existe un moyen de créer une sauvegarde de e-Reader à partir de ton fichier .vpk. Une fois chargée dans ce dernier, cette sauvegarde sera accessible depuis le menu principale de ton e-Reader.
Munissons-nous de notre .vpk et créons un fichier MonECard_Save.bin dans notre explorateur de fichier. Remplissons notre fichier comme suit :
-en noir une checksum (nous pouvons laisser des 00)
-en bleu un titre qui s’affichera à l’écran titre de l’e-Reader (pas de caractères spéciaux ni accentuations)
-en vert un 04
-en rouge la taille de notre .vpk +2
-en orange la taille de notre vpk.
A la suite de tout cela, il ne reste plus qu’à copier notre .vpk puis sauvegarder le fichier.
Pour finir, à l’aide Poké-Reader, générer un .sav en laissant le logiciel corriger votre checksum noire manquante.