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
|