Voici donc un tutorial fort intéressant pour les passionnés de jeux vidéos qui en ont marre de voir leurs jeux en anglais par exemple, et qui voudrait se lancer dans la traduction des jeux GameBoy/GameBoy Color/Playstation/Playstation II. Il n'y a pas à s'inquiéter, aucune connaissance n'est requise. Cependant, rassurez-vous, la traduction SNES/NES reprend exactement les mêmes principes que la traduction GB, mis à part la façon dont est structuré un jeu.

I] Introduction et principe

Première chose, je vous conseille de suivre ce tutorial dans l'ordre, car on vas aborder les bases (traduction GameBoy), puis ensuite, viendra la traduction PSX. Je n'aborderais pas les points compliqués, ici c'est un tutorial crée exclusivement pour les débutants, donc entre autres, il n'y aura pas de "pointeurs" ou de choses comme çà dans ce tutorial. Si vous voulez vous renseigner pour en apprendre plus, je connais un excellent site pour cela : http://traf.romhack.org.

Vous allez vous demander "Mais je suis sur un PC, donc où est le rapport avec la GameBoy ou la Playstation ??".

Un peu d'émulation pour commencer... L'émulation est en fait l'action de faire marcher des jeux de consoles sur ordinateur. Intéressant, oui, sauf qu'à aujourd'hui, la console la plus puissante actuellement émulée correctement, est la Nintendo 64. En gros, il vous faut un programme appelé émulateur, vous permettant de faire marcher vos jeux, puis les jeux sont nommés roms. Donc en gros, Émulateur = Console; Rom = Jeu.

"Super" vous allez me dire, mais "Ehhh, et pour la Playstation II" ? Humm, justement parlons-en... La Playstation II est bien évidemment trop récente pour être émulée correctement sur PC, actuellement, seul des démos sont émulables. Donc le seul recours est la gravure... ou encore, le transfert sur un disque dur compatible PS2...

Voici les émulateurs que vous pouvez vous procurer par exemple :

- Gameboy/Gameboy Color/Gameboy Advance : Visual Boy Advance
- Nintendo 64 : Project 64
- Playstation : ePSXe

Bien sûr, il existe un bien grand nombre d'émulateurs marchant très bien, ici j'ai juste répertorié ceux que j'utilisent personnellement.

Au niveau des formats de fichiers des roms :

- Pour une rom Gameboy, il s'agit du format .gb
- Pour une rom Gameboy Color, il s'agit du format .gbc
- Pour une rom Nintendo 64, il s'agit du format .v64 (mais il y en a d'autres)
- Pour une rom Playstation ou Playstation 2, il s'agit du format .iso (mais il y en a d'autres)

Voilà pour l'émulation, mais il faut savoir bien paramétrer l'émulateur pour la Playstation ou la Nintendo 64, car étant complexes, il demandent un bios et des plugins (obligatoires), et bien sûr leur configuration.

Maintenant, passons au principe de la traduction : traduire les textes, et les graphismes (pour rom Gameboy, Nintendo, Super Nintendo, etc.).

Donc, en résumé, nous allons explorer la rom grâce à un éditeur hexadécimal, de façon à éditer le texte une fois trouvé. Puis grâce à d'autres programmes, nous allons pouvoir éditer les graphismes des roms Gameboy, Super Nintendo, etc.

Donc, ce qu'il vous faut :

- Un émulateur (fortement conseillé, pour le test du jeu)
- La rom (bien sûr, on ne fait pas de fumée sans feu)
- Un éditeur hexadécimal (indispensable au début pour éditer le texte d'une rom, mais facultatif par la suite)
- Un éditeur de texte, type Thingy32 (facultatif)
- Un éditeur de tiles (graphismes), type Tile Layer Pro
- Un logiciel de recherche (fortement conseillé), type SearchR X (PSX, PS2...) ou SearchR 3 (GB,GBC,SNES...)
- Un logiciel pour créer une table, type Table Manager (facultatif, mais utile)

Note très importante : Surtout, mettez-vous cela dans la tête, car c'est très important. Nous allons aborder l'hexadécimal afin de traduire une rom, et bien sûr, on utilisera une table, dans laquelle il y aura toutes les coordonnées hexadécimales de chaque lettre du jeu (vous comprendrez plus tard). Il ne faut en aucun cas rajouter de l'espace dans une rom. Pourquoi ? Parce qu'une rom est composée de différentes parties : l'header (pour les jeux SNES par exemple), puis les graphismes, le texte, etc... (mais cela dépend du jeu, mais cette règle est valable partout). Si vous rajoutez de l'espace sur un mot par exemple, cela va déplacer le code du jeu, donc le texte va se retrouver dans la partie graphismes par exemple, puis ainsi de suite, ce qui est très mauvais. Pourquoi ? Parce qu'une rom a du code crée de manière à appeler un autre code dans un autre endroit de la rom par exemple, donc si le code ne trouve pas ce qu'il veut, il affiche n'importe quoi, ou pire il plante. Prenons un exemple simple : Le mot "Exit", vous voudriez le traduire par le mot "Quitter" ? Eh ben non, erreur, il faut absolument trouver un mot à 4 lettres maximum, si vous ne voulez pas gâcher votre travail. Donc ce qui est essentiel, c'est de jamais rajouter de l'espace. Bien sûr il existe la techniques des pointeurs, qui consiste à déplacer du texte dans un espace libre, mais ceci est un peu complexe pour le début, donc je n'aborderais pas ce sujet dans ce tutorial. La meilleure façon de rajouter de l'espace dans une ROM correctement, c'est d'apprendre l'ASM (donc connaître un minimum l'assembleur).

Voilà, je pense avoir tout dit, et je pense maintenant que vous voulez passer à la pratique, bon ben c'est parti. Pour vous donner des exemples, je vais utiliser la rom Warioland 3 sur Gameboy Color.

II] L'hexadécimal

Première chose très importante avant de traduire quoi que ce soit en matière de romhacking, c'est d'aborder un peu l'hexadécimal. Il s'agit d'une base : la base 16. Le décimal, tel que nous comptons d'habitude, est la base 10 : en effet, on compte 0,1,2,3,4,5,6,7,8,9 puis ensuite 10,11,12... En hexadécimal, on compte de 0 à F, comme ceci : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F puis 10,11,12,13,14,15,16,17,18,19,1A,1B... Voici un petit récapitulatif :

Décimal

Héxadécimal

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
...
FE
FF

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14
15
16
17
...
254
255

Voilà pour l'hexadécimal, ceci est la base pour comprendre un peu la traduction. Sachez que tout fichier est composé de code hexadécimal (il suffit d'ouvrir n'importe quel fichier avec un éditeur hexadécimal), les fichiers en général (sauf roms, mais ça dépend lesquelles en fait, car sur PSX et PS2 ceci est rarement valable) sont codés avec une table ASCII, c'est-à-dire le codage de base (sauf Unicode). Nous allons voir maintenant ce que c'est qu'une table.

III] Les tables

Une table est un fichier comportant les coordonnées hexadécimales de chaque lettre d'un jeu. Dans l'exemple que j'ai cité précédemment, au niveau de l'ASCII (American Standard Code for Information Interchange), il s'agit en fait du codage de base (mais il y a l'Unicode aussi) pour un fichier. Vous pouvez consulter la table des caractères ASCII ici : http://www.commentcamarche.net/base/ascii.php3.

Chaque jeu comporte un codage différent, d'où l'utilité du logiciel SearchR 3 pour les jeux Gameboy, SNES, etc... et SearchR X pour les jeux PSX, PS2... , permettant de trouver une table assez facilement à partir d'une rom.

Ouvrez SearchR 3 puis ouvrez la rom (ici, Warioland 3) en cliquant sur File puis Open, puis sélectionnez la rom. Une fois le fichier ouvert, cliquez sur Relative en haut, puis sur New Search.

Prenons une phrase dans le jeu, ou un groupe de mot. Ici, on va prendre "English?" (que nous allons traduire par "Francais", car les 2 groupes font 8 lettres).

Donc, tapez "English" dans la case, puis cliquez sur OK. Voici le résultat :

Donc décortiquons tout ça... Le champ Address correspond à l'adresse hexadécimale ou se situe le mot, ce qui vas beaucoup servir pour pouvoir le traduire. Le champ a donne le code hexadécimal de la lettre a dans le jeu, notez-le : a=62. Même chose pour A et 1, donc notez ces codes, car on va les réutiliser afin de créer la table du jeu. Relative affiche le texte recherché. Maintenant un peu de logique, puisque vous savez normalement compter en hexadécimal. Si a=62, b=63, c=64... De même pour A=42, B=43, C=44... Puis 1=32, 2=33, 3=34... Maintenant que vous avez noté tout çà, ouvrons le programme Table Manager.

Il ne reste plus qu'à remplir ce tableau, la table du jeu. Sachant que a=62, remplissez le reste, de même pour les majuscules et pour les chiffres. Vous devriez avoir cela au final :

Parfait, enregistrez votre fichier, on va maintenant passer à la suite.

IV] La traduction d'un texte

On arrive à la phase la plus intéressante. Vous vous souvenez tout à l'heure ? On a dit qu'on allait traduire "English?" par "Francais", ben c'est parti. Ouvrez votre éditeur héxadécimal (j'utilise Hex Workshop). Voici ce que ca donne avec Hex Workshop :

Nous allons rechercher le texte, donc prenez la table de tout à l'heure, puis regardez le code du mot "English?". Etant donné que nous ne connaissons pas le code hexadécimal du "?", nous n'allons pas le rechercher, mais nous allons le connaître suite à la recherche. Cliquez sur Edit puis Find..., sélectionnez Hex Values, et tapez ceci :

466F686D6A7469

Il s'agit du code hexadécimal du mot "English", il suffit de lire la table. Ne vous préoccupez pas du texte qui apparaît dans la partie Text, car il s'agit de la conversion hexadécimal > ASCII. Cliquez sur OK.
Problème : texte non-trouvé. Alors réfléchissons un peu ? Retournons voir les résultats de SearchR 3, et regardons l'adresse inscrite : 001F3655. Il s'agit de l'adresse où se situe le texte, donc la solution est d'aller à cette adresse dans l'éditeur hexadécimal. Donc cliquez sur Edit, Goto.... Dans Offset, recopiez l'adresse 001F3655, et prenez soin de sélectionner Hex, pour bien qu'il la considère comme une adresse hexadécimale. Cliquez sur Go, et voici le résultat :

Voici un résultat plus intéressant, mais pourquoi n'a-t-on pas trouvé le texte tout à l'heure ? Car en fait, SearchR 3 calcule la table, et plusieurs solutions peuvent intervenir, donc des erreurs sont probables, donc méfiez vous. Nous voici donc avec une nouvelle table, car on peut lire que : E=44, n=6D, g=66, l=6B, i=68, s=72, h=67. Modifiez la table comme ceci :

Bon maintenant, on veut traduire "English?" par "Francais". Notez maintenant que ?=3E. Donc lisons la table, et regardons ce que ça donne "Francais" en hexadécimal :

4571606D62606872

Donc nous allons remplacer 446D666B6872673E par 4571606D62606872. Voici ce que ça nous donne :

Sauvegardez (Cliquez sur File, puis Save), et lancez votre jeu avec l'émulateur :

Bravo, vous venez d'accomplir votre première traduction !

Donc, de façon classique, la traduction s'effectue de cette manière. Mais il existe un programme fort intéressant, qui permet d'éditer du texte dans une rom, en chargeant une table dans le programme. Il s'agit de Thingy32. Ouvrez-le, puis sélectionnez en premier votre rom (ici, c'est "Warioland3b.gbc"). Ensuite, sélectionnez votre fichier de table (ici, c'est "Warioland3.tbl"). Enfin pour "Open Table File #2", c'est facultatif, donc cliquez sur Annuler. Voici ce que ça donne :

Votre fichier est ouvert, mais l'avantage dans ce programme, c'est que les lettres s'affichent en fonction de votre table. Un exemple : 4571606D62606872 en hexadécimal donne "Francais". Ici, vous verrez directement le mot Francais affiché, et vous pourrez le modifier directement. Pour chercher un texte, appuyez sur S, puis tapez "Japanese", qui se situe juste en dessous de "Francais" dans le jeu. Le programme trouve le texte directement. Maintenant, vous pouvez l'éditer, on va remplacer "Japanese" par "Japonais". Donc, dirigez le curseur juste à gauche de la lettre J de "Japanese", appuyez sur Espace, dirigez le curseur à droite de la lettre e (la dernière) du mot "Japanese", et appuyez encore une fois sur Espace. Un menu apparaît donc. Tapez "Japonais" puis appuyez sur Entrée. Vous remarquerez que le texte ne se met pas à jour, allez savoir pourquoi, le texte est physiquement modifié dans la rom, mais le changement est invisible dans le programme... Bref, quittez, puis lancez le jeu :

Mission accomplie, vous avez bel et bien modifié le texte dans la rom. Vous maîtrisez à merveille l'édition d'un texte dans une rom (sans parler des pointeurs). Maintenant, passons à l'édition des graphismes.

V] L'édition des graphismes

Voici une partie fort intéressante, forcément vous voudriez passer par là un jour ou l'autre. Pour éditer les graphismes, la solution la plus répandue, est l'édition de graphismes par un logiciel tel que Tile Layer Pro. Ouvrez-le, puis sélectionnez File, Open.... Choisissez votre rom, et voici ce que ça donne :

Tout ce bordel sont tous les graphismes de la rom. Il ne reste plus qu'à chercher ce qui vous intéresse. Attention, il y a plusieurs modes dans le logiciel selon la rom, allez jeter un coup d'oeil dans Palette (en haut) puis Format. Toutefois, si vous ne trouvez pas exactement le graphisme que vous recherchez, le changement de format s'avère très utile. Donc, pour éditer un tile (pixel), cliquez simplement dessus, puis modifiez-le comme un éditeur bitmap, à l'aide des outils à droite.

Toutefois, Visual Boy Advance possède une fonction fort intéressante. En effet, ouvrez votre rom avec l'émulateur, puis lancez-le. Attendez d'arriver à l'écran du menu :

Cliquez maintenant sur Tools (en haut), puis Tile Viewer.

Vous apercevez les graphismes affichés au moment où vous avez cliqué sur Tools. "VRAM Bank" ainsi que "Char Base" permet de sélectionner la partie qui vous intéresse. "Palette" permet de visualiser les graphismes sous un mode différent. Cliquez sur un tile, vous avez un zoom en bas à gauche de l'écran. Le bouton "Save..." permet d'enregistrer les graphismes présents sous un fichier image. Enfin, l'information la plus intéressante ici, est "Address", qui vous donne l'emplacement exact du tile dans la rom (code hexadécimal), ce qui s'avère très pratique si vous recherchez un graphisme très précis, vous avez l'adresse hexadécimale directement. Rassurez-vous, Tile Layer Pro possède une fonction "Goto...".

Note : Pour la traduction du groupe de mot "NEW GAME" au début du jeu, vous remarquerez qu'en cherchant cette expression comme un texte basique, il est introuvable. Donc l'hypothèse est qu'il s'agit en fait d'un groupe de mot "dessiné", et que la solution se situe dans la recherche graphique avec Tile Layer Pro. Ceci dit, je ne garantis rien, la recherche d'un graphisme étant longue et fastidieuse. Si l'hypothèse est fausse, l'autre hypothèse possible est que ce texte serait un bout de graphisme codé, beaucoup plus complexe à modifier donc...

VI] La Playstation, et autres informations supplémentaires

Ici, je vais vous dire les principales différence entre la traduction Playstation et la traduction Gameboy, comme on a vu précédemment. Pour une rom PSX, le fichier sur lequel on va s'attaquer est le fichier .iso du jeu. Mais pour les fichier .img il n'y a pas de problème.

Tout d'abord, comme je vous l'ai déjà dit, les jeux SNES, GB, GBC, etc... ont un "header" au début du script de la rom, qui constitue les principales informations de la rom. Sachez que les jeux Playstation n'en ont pas. Je ne parlerais pas des pointeurs dans ce tutorial car il s'agit d'une notion assez compliquée (vous pouvez consulter des tutoriaux sur le site de la TRAF, dont l'adresse est donnée au début du tutorial), mais comme la taille de l'header est fonction du calcul de pointeurs dans les rom SNES, cela pose un sérieux soucis pour les rom PSX. En fait, chaque jeu PSX contient se propre système de pointeurs, donc si vous avez réussi à déchiffrer un système de pointeurs dans un jeu PSX, cela ne veut pas dire que vous pourrez le faire dans un autre jeu.

Vous ne pourrez pas, ou rarement, modifier des graphismes avec Tile Layer Pro sur un jeu PSX, car bien sur, les jeux PSX contiennent des graphismes 2D et 3D. Toutefois, il y a deux programmes qui peuvent vous permettre de modifier quelque graphismes. PSicture, permet d'exporter et d'importer des fichiers TIM, qui est un format image pour la PSX. RAWUtil est un logiciel qui permet de modifier graphiquement et directement un fichier de votre ISO PSX, en l'exportant en un fichier .bmp, pour le modifier et l'importer ensuite. Mais j'insiste lourdement là-dessus, vous ne trouverez pas grand chose dans une ISO PSX...

Enfin, la partie la plus intéressante, la traduction du texte. La recherche se fait cette fois-ci avec SearchR X, et l'utilisation est presque la même que pour SearchR 3 (en encore plus simple). Au niveau des résultats de la recherche, elle s'avère beaucoup plus convaincante, car personnellement, je n'ai pas trouvé d'erreurs au niveau de la table, pour l'instant, pas comme tout à l'heure avec Warioland 3... Pour le reste, l'édition est la même. N'oubliez pas que pour les pointeurs, c'est encore trop complexe, donc oubliez-les pour le moment. Voici ce que donne l'édition des textes du jeu Tekken 2 sous Hex Workshop :

Puis voici le résultat :

La traduction PSX est encore très peu répandue, car le monde n'ose pas encore s'attaquer à des consoles récentes.

Si vous voulez copier un jeu PSX sur CD vers des fichiers .img .ccd .sub, c'est possible avec le logiciel CloneCD, qui marche très bien. Pour un fichier .iso, il y a WinISO, mais il y a peut de chances que vous réussissiez, en vue de mon expérience...

Sinon, vous pouvez utiliser Thingy sans problème avec des jeux PSX. Voila pour les jeux PSX.

Pour la PSP et la PS2, le principe est le même, sauf que je n'ai pas testé l'édition des graphismes dessus (qui, je m'en doute, doit être plus difficile que la PSX). Donc utilisez principalement SearchR X et Hex Workshop pour les jeux PSP et PS2.

Dernière chose, quand vous avez du texte, type 0035323600 en hexadécimal (mot de 3 lettres), vous pouvez le traduire en 4 lettres, type 0036343941, cela ne pose apparemment aucun problème dans le jeu. Pour les jeux PSX, il se peut qu'il y a de l'espace libre. Donc, si vous avez 0035343236000000003435393800, pour le 1er mot, vous pouvez le traduire en un mot beaucoup plus long, afin d'avoir 0035343240393337303435393800 : vous passez de 4 lettres et 4 lettres (pour les 2 mots) en 8 lettres et 4 lettres, car il y a 00000000 qui est en fait un espace libre.

Pour tester vos jeux, je vous conseille ePSXe pour la PSX, qui est un excellent émulateur (j'ai d'ailleurs publié un tutorial à son sujet sur mon site, à aller voir). Pour la PSP, je ne connais pas d'émulateur, bien qu'il en existe, je pense, à confirmer. Pour la PS2, les deux seuls moyens de tester un jeu est soit la gravure sur un CD (qui necessite une Playstation 2 qui lit les disques gravés), ou le transfert du jeu sur un disque dur compatible. Il n'existe actuellement pas d'émulateur PS2 marchant correctement à l'heure actuelle.

Enfin, le bon conseil que je peux vous donner, c'est de ne pas trop romhacker les jeux PS2, PSP, ou tout jeu encore récent, car ils sont protégés, et ceci peut être dangereux. Ce tutorial a un but purement informatif. Par contre, la traduction de vieux jeux sur d'anciennes consoles est passable.

VII] Fin

Ce sera tout pour la traduction d'un jeu vidéo, j'espère que vous avez appris beaucoup de choses à travers ce tutorial. Je rappelle que le site de la TRAF (http://traf.romhack.org) est un excellent site sur la traduction, et si vous voulez approfondir vos connaissances, ce site est fait pour vous. Bonne chance pour la suite.


Revenir dans la section Tutoriaux