top of page

Black/Matrix Cross - Outils



Bonjour à toutes et tous !


Ces trois dernières semaines, j'ai fait une énorme infidélité à Heroes of Mana. J'ai passé ce temps à créer les outils de traduction de Black/Matrix Cross. Si certains ou certaines se souviennent, j'avais commencé ce projet sur SATURN puis, finalement, je l'ai recommencé sur PS1.


Durant cette période d'infidélité, j'ai enfin pu terminer les outils "BMC Suite". ^^ Il s'agit donc du Lecteur de Header, de l'Extracteur de Fichiers, de la Conversion - Check, de l'Inserteur et du Cadreur - DTE. Je ne suis pas un expert en codage. J'ai donc créé ces outils que j'utilise les uns après les autres pour modifier les données du jeu. Mais c'est un gigantesque pas pour moi ! ^^


J'ai décidé de présenter mes avancées dans le projet, étape par étape, au cas où cela intéresserait un futur traducteur - romhackeur. De plus, maintenant que les outils sont prêts, je peux même aider à une traduction en espagnol, en anglais, etc. Ca ne me demandera que de créer les caractères des langues étrangères. Tiens, ça me fait penser que je n'ai pas fait de post sur une police dans un jeu. En plus, j'en ai créé une très belle (à mon avis, bien sûr! ^^). Je ferai un autre post sur ce sujet (avec quelques captures d'écrans in-game, DTE, modification graphique simple, etc). Place à la présentation des outils pour les futurs traducteurs-romhackeurs.


Langage : lua.

Interface : LOVE2D (sans SUIT).


1. BMC Lecteur de Header.

Le Lecteur de Header me permet d'analyser et de lire les en-têtes des fichiers de données .DAT. Cette étape sert à identifier les structures, les formats et les métadonnées des fichiers entrants. Cela permet une lecture rapide des fichiers, de trier les données et, plus tard, d'extraire chaque fichier contenu dans le .DAT (image, texte, etc.). C'est Kipy, sur le forum de la TRAF, qui m'a appris à lire un .DAT avec sectorisation de *2048 ! ^^ C'est un fichier d'Elfe Noire de la TRAF qui m'a appris les pointeurs et le Little Endian. Ce programme exporte un fichier classant les données que je vais réutiliser dans tous les outils qui suivent. Il permet de lire les archives BATTLE.DAT, EVENT.DAT, SCENARIO.DAT et SYSTEM.DAT. Voici ce à quoi ressemble les données créées :


"Fichier 14

{16}{00}{02}{00} - Little Endian 0016 0002

Pointeur (en hex) : xB000

Taille : 4096 octets


Fichier 15

{18}{00}{03}{00} - Little Endian 0018 0003

Pointeur (en hex) : xC000

Taille : 6144 octets


Fichier 16

{1B}{00}{04}{00} - Little Endian 001B 0004

Pointeur (en hex) : xD800

Taille : 8192 octets"


2. BMC Extracteur de Fichiers



Une fois les headers analysés, l'Extracteur de Fichiers intervient pour extraire tous les fichiers de chaque fichier *.DAT.


Il me reste encore à comprendre la lecture des fichiers graphiques ! Oui, je dois continuer à apprendre. Les graphiques m'ont toujours posé problème dans chacune de mes traductions. Ce sont toujours des membres de la TRAF qui m'étaient venus en aide (ex. Le trésor secret des Rudras, Samuraï Shodown RPG, Star Ocean Blue Sphere, etc). Cette fois, j'espère m'en sortir seul ! ^^


3. BMC Conversion - Check




J'aime à être très prudent avant d'insérer la traduction des textes dans le jeu. Cet outil permet de modifier tous les fichiers textes traduits (ou un seul fichier) dans une version traduisant l'ensemble en valeurs hexadécimales. Ensuite, la fonction CheckOctets me permet de vérifier que la version traduite des fichiers ne dépasse pas d'un seul octet avant la réinsertion. J'ai été obligé de le faire car Black/Matrix Cross comprend des dizaines de codes entre les textes et le programme doit les lire pour les fonctions graphiques, SOUND, MUTE, vitesse de lecture du texte. En effet, le jeu est entièrement doublé. Si la taille du fichier n'est pas respectée, le fichier ne pourra être réinséré. Ainsi, j'éviterai de très nombreux bugs in-game. Il vaut mieux prévenir que guérir ! ^^ Je vous montre un extrait d'un texte traduit et sa version convertie :


Texte traduit :

"[CLICK]<1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2507><0000><0000>[SOUND]<0900>Quel soulagement! [CLICK]<1700><1A00><0100><2607><0000><0000>[SOUND]<1600>J'ai cru que tu ne te réveilleraisjamais! [CLICK]<1700><1A00><0100><0000><2707><0000><0000>[SOUND][OBJET]Car*[JUMP]Ca fait plus de dix mois que tu esalité avec une forte fièvre* [CLICK]<1700><0A00><1100><0100><0000><0000><0000><0000>[MUTE]<0400>* * * * [CLICK]<1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2807><0000><0000>[SOUND]<1600>Eh* [JUMP]Ca ne va pas? [JUMP]Tu as encore mal? [CLICK]<1700><0A00><1100><0100><0000><0000><0000>[MUTE]<0600>* * * * * * [CLICK]<1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2907><0000><0000>[SOUND]<1A00>"


Version convertie avant insertion :

"<1800><1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2507><0000><0000><1500><0900><E08B><EA8B><A88A><4A8A><5289><A28D><B989><DF89><8E8E><1800><1700><1A00><0100><2607><0000><0000><1500><1600><598C><BD89><E689><5A8C><798B><7D8B><5E8C><6F8C><708C><5E8C><C388><6D8A><768C><B58A><EF8B><788C><888A><798C><828C><888A><8E8E><4081><1800><1700><1A00><0100><0000><2707><0000><0000><1500><2300><838C><888C><1000><838C><BA89><BD89><4A89><EC89><728A><8C8C><C388><8E8C><8F8C><928C><888A><798B><7D8B><5E8C><6F8C><4889><B588><C38A><958C><998C><A08C><C18B><708C><BA89><4D8B><9C89><BA89><B38C><A98C><AF89><4081><1800><1700><0A00><1100><0100><0000><0000><0000><0000><1400><0400><D48A><D48A><D48A><D48A><1800><1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2807><0000><0000><1500><1600><EA8F><D48A><1000><838C><9F89><C388><ED8F><D388><4B8D><EE8F><1000><588D><C48C><CE89><F389><CC8C><718C><AB88><B588><EE8F><4081><4081><1800><1700><0A00><1100><0100><0000><0000><0000><1400><0600><D48A><D48A><D48A><D48A><D48A><D48A><1800><1700><0A00><1100><0100><0C00><0000><0000><1A00><0100><0000><2907><0000><0000><1500><1A00>"


4. BMC Inserteur



Après la conversion, l’Inserteur prend en charge la réinsertion des données de tous les fichiers dans les *.DAT. Je peux réinsérer la totalité de la traduction ou seulement une partie pour pouvoir faire des tests sans faire bugger le reste du jeu. En somme, je peux faire bugger une seule partie de l'histoire au lieu de tout le jeu ! :P


5. BMC Cadreur - DTE

Celle et ceux qui me connaissent savent que j'adore les DTE pour gagner énormément d'espace lors de la réinsertion des traductions. Bien qu'Heroes of Mana n'en aura pas, Black/Matrix en aura une. Ce genre de programme est le premier type que j'ai appris à coder. C'est peut-être même la seule que je savais faire il y a encore quelques années. ^^ Mon inspiration me vint de celui que me coda Neomithrandil lors de la traduction du Trésor Secret des Rudras : c'était un cadreur de textes. Dans mes autres traductions, j'y ai ajouté un créateur de DTE. Depuis, j'en créé un à chaque traduction :)


Le Cadreur - DTE de BMC est simple à utiliser. Lorsque je traduis la version japonaise, j'ai mon texte sur le côté gauche de l'écran et ce programme à droite. J'écris directement ma traduction dans le programme. Je copie ma traduction dans le fichier en version française. Par exemple, sur la capture d'écran, vous pouvez voir quelques lettres en orange (elles fonctionnent par paires car DTE), ça signifie qu'avant de poursuivre ma traduction, je dois créer ces nouvelles paires dans la table de réinsertion puis les créer plus tard dans la font utilisée dans le jeu.


J'espère que ce post vous a intéressé au monde de la traduction et du romhaking ! :) A bientôt pour la suite ! ^^ En tout cas, le projet a grandement avancé et je n'ai plus qu'à me concentrer sur la traduction.

Comentarios


Le Noble Bahamut - Depuis 1999.

Je ne suis affilié à aucune entreprise ou éditeur.

Mes traductions sont un travail personnel partagé gratuitement. Aucune d'entre elles n'a vocation à être vendue.

bottom of page