Table des matières
1. Prologue
2. Trouver la table de caractères
3. Comprendre la compression
4. Repérer la font et les accents
5. Modifier le texte du script
6. Modifier les autres textes
7. Modifier la compression
8. Réinsérer les textes
9. Modifier les images
10. Epilogue
1.
Prologue
Dabord merci davoir commencé à lire cette
FAQ. Si vous ne savez pas de quoi on va parler, cest
de ce que lon appelle le rom-hacking. De la
modification de la compression à lajout des
accents en passant par la modification des textes, toutes
les étapes du rom-hacking dun jeu SNES sont passées
en revue. En comme lon apprend bien que ce quon
aime, ce jeu sera Chrono Trigger (si vous préférez FF6
demandez à Meradrin de faire sa propre FAQ ;-). Ce
nest pas le jeu le plus simple pour commencer, loin
de là, mais en utilisant judicieusement sa tête, on
peut arriver à complètement modifier le jeu. En fait,
si vous réussissez à lire cette FAQ jusquau bout,
et que vous avez tout compris, vous aurez assez dexpérience
pour vous lancer vous-même dans le rom-hacking dun
grand jeu. Par contre, la limite de quelque chose se
trouve là où commence autre chose : si vous espérez
apprendre lASM, en particulier celui de Super
Nintendo, cest raté
Je vais pas vous embêter
plus longtemps avec mes beaux mais néanmoins longs
discours, alors on va tout de suite rentrer dans le vif
du sujet : la table de caractères!
2.
Trouver la table de caractères
Sans vouloir faire de traduction de Zophar (www.zophar.net), où se trouvent la plupart des tables
des grands jeux. Mais cette méthode barbare ne nous intéresse
pas vraiment, alors je vais vous donner deux méthodes très
connues, la première étant graphique donc à moitié
fiable, la seconde étant hexadécimale donc sûre à 100%
mais soumise à quelques contraintes.
2.1. La technique graphique
Cest une technique assez simple qui nest pas
à 100% fiable, et qui dépend en fait beaucoup de la
position des caractères dans la rom. Pour cela, vous
aurez besoin de Naga, un éditeur de graphiques SNES très
utiles pour les tables de caractères. Ouvrez Naga,
choisissez votre rom de Chrono Trigger, et vous arrivez
devant une bouillie verte, bleue et noire sur lécran.
Descendez jusquen bas, vers loffset 4150000.
Vous remarquerez sans doute deux fonts, une découpée et
lautre visible. Cest la deuxième qui nous
intéresse pour la table. Regardez la position de lespace
dans le jeu. Normalement, dans la plupart des jeux, loctet
de lespace est FF. Il suffit donc de déduire les
autres caractères en partant de lespace (celui
juste avant est FE, puis FD, etc
). Et justement,
quand on parle de fiabilité pour cette méthode, Chrono
en est un parfait contre-exemple puisque lespace
est codé par EF dans ce jeu. Cette technique sert pour
la plupart des jeux, mais pour les RPG il existe une méthode
beaucoup plus efficace : la technique du RPG.
2.2. La technique du RPG
Cette méthode sapplique en particulier aux RPG,
mais elle marche en fait dans tous les jeux où lon
demande au joueur dentrer son nom (dans les high
scores par exemple), et que ce nom est sauvegardé dans
le fichier SRM du jeu. Pour utiliser cette méthode,
commencez tout dabord une partie de Chrono. Au
moment dentrer le nom, renommez ce bon vieux Crono
par AAAAA. Faites de même avec Lucca que vous renommerez
AAAAA. Sauvegardez en dehors de la maison, et quittez le
jeu. Renommez le fichier SRM de manière à ce quil
sen crée un nouveau lors de la prochaine partie,
et recommencez le jeu en nommant cette fois-ci vos
personnages aaaaa. Comparez les deux fichiers SRM avec
Hex Workshop et vous devriez voir les différences entre
les deux sauvegardes : lhexa du premier
correspondra à A (A0), le second à a (BA). Il suffit
ensuite de compléter la table normalement en remplissant
les majuscules, les minuscules, et vous pouvez même
utiliser Naga cette fois-ci puisque vous avez une
position sûre, et même deux (A0 et BA). Ce nest
que le début mais la première étape du rom-hacking est
faite, puisque vous avez la table.
3.
Comprendre la compression
A priori, rien nindique que le jeu est compressé
ou non. De même, rien nindique le type de
compression utilisée. Pour cela, il faut chercher méthodiquement
et tenter de reconnaître à lil cette
compression si elle existe. Si on ne soccupe que dextraire
le texte, on peut chercher la table chez Zophar également,
mais cette fois-ci, chercher la compression soi-même a
des avantages importants.
3.1. Compression ou pas ?
Ca, cest très facile à voir. Bien évidemment, il
ny a pratiquement aucun doute quun énorme
jeu comme Chrono Trigger ait son texte compressé, cest
pratiquement acquis. On va en avoir le cur net
dans quelques secondes. Reprenez une partie, nimporte
laquelle, et parlez à un personnage. Notez le début de
sa phrase, sans compter le nom. Ouvrez Thingy avec votre
table, et cherchez ce début de phrase. Vous naurez
aucun résultat à moins que vous nayez pris quune
ou deux lettres bien sûr. Cest une preuve que le
texte ne se trouve pas directement dans la rom, il est
compressé pour cela.
3.2. Quelle compression ?
Ce nest pas très difficile de découvrir le type
de compression utilisé. La compression la plus utilisée
est la DTE, qui code deux lettres en un octet pour réduire
le texte. Il y a aussi les mots pré-écrits, moins
courants, et dautres compressions rares comme LZSS,
LZW et Huffmann. Partez toujours du principe quun
jeu est codé en DTE, cest la plus utilisée, et
neuf fois sur dix ce sera bon. Pour vérifier cela,
prenez une phrase du jeu, et ne cherchez quune ou
deux lettres au début, avec une majuscule parmi les deux
(cest très important !). Le résultat avec
Thingy vous donnera lemplacement de cette portion
de texte avec Chrono Trigger, car cest bel et bien
une DTE. Vous le remarquerez car il y aura un ou deux
octets visibles séparés par un ou deux octets compressé,
on peut distinguer de rares mots non-compressés, mais cest
très haché. Dautres compressions existent, mais
pour les trouver je ne peux que vous conseiller dautres
FAQ, car celle-là ne va parler que de DTE.
3.3. Quelle DTE ?
Une DTE est constituée de combinaisons doctets qui
sont réduits à un seul octet grâce à une table. Avant
de commencer, faites une copie de votre table de caractères,
ce sera très utile pour la suite, et continuez votre
table originale en ajoutant les combinaisons de DTE. Pour
trouver ces combinaisons, la meilleure méthode, même si
elle est très longue, cest le test. Prenez une
phrase (celle de tout à lheure par exemple), en la
notant entière. Pour mieux comprendre, je vais vous
proposer moi-même une phrase : « Lucca:
Yeoouch
! ». Cherchez « Yeo » dans
la rom avec Thingy, vous allez tomber à loffset $3754B3.
Cest là que se trouve la phrase. Vous voyez dans
cette phrase la combinaison suivante:
B8 BE C8 24 6C F1 DE
Y__e__o__?_?__?__!
Les ? correspondent à des octets inconnus. En
comparant cette série à la phrase, on sait que les
trois octets inconnus correspondent à « ouch
».
Les trois points prennent toujours un octet, ici donc F1.
Il reste deux octets pour « ouch ». Comme la
taille dune combinaison est toujours au moins de 2,
on a 24=ou et 6C=ch. Ce qui donne:
B8 BE C8 24 6C F1 DE
Y__e__o_ou
ch
__!
Il suffit dajouter ces combinaisons à la table, de
relancer Thingy, et le texte va petit à petit apparaître
sous vos yeux ébahis, chaque nouvelle combinaison décodant
encore plus le texte. A la fin, il deviendra facile de
tout trouver. Il restera sûrement quelques octets
inconnus : 00, 05, 06, etc
Comme vous vous en
doutez, ce sont des octets spéciaux, nous verrons leur
signification exacte dans la modification du texte.
Maintenant vous avez votre table complète avec les
caractères et la compression, il est possible dextraire
le texte avec Script-E, en cherchant méthodiquement
chacun des 14 blocs de texte différents dans la rom. Après
avoir trouvé cette table, passons maintenant à la font
et aux accents.
4. Repérer
la font et les accents
avons déjà commencé à aborder le sujet en cherchant
la table graphiquement, mais il est temps maintenant de
rentrer en détails dans cette font, ou plutôt ces
fonts, qui sont toutes les deux différentes, et par la même
occasion ajouter les accents pour plus tard.
4.1. Les deux fonts
Dabord, pourquoi deux fonts ? Tout simplement
parce quil y a deux grandes catégories de texte :
le texte dans le jeu et le texte hors du jeu. Dans le
jeu, vous avez le script, les messages de combat par
exemple. Hors du jeu se trouvent tous les menus, les
objets, le statut des personnages. La deuxième font,
celle hors du jeu, est la moins belle mais la plus simple
donc je vais commencer par elle. Cest une font tout
ce quil y a de plus classique, chaque caractère se
trouve dans un carré de 8*8 en bas de la rom, et toutes
les lettres ont la même largeur. Il est tout à fait
possible de la modifier avec Naga sans aucun problème.
Pour la première font, par contre, celle du texte, cest
un peu plus compliqué. Dabord, chaque lettre
standard a une taille de 8*12, ce qui les rend difficiles
à voir, mais en plus certaines lettres débordent et ont
un ajout qui se trouve un peu plus bas. Et par dessus le
marché, la font est dite pointée, cest-à-dire
que chaque lettre à une largeur différente, et ce même
si ça ne se voit pas dans léditeur Naga. Par
exemple, le i est très serré avec 3 pixels de largeur,
pendant que le m nen prend pas moins de 10. Le gros
problème, cest quen plus il ny a pas
la place dajouter des accents à cause de ces
pointeurs, il faut donc biaiser
4.2. Les accents, quand on ny connaît rien et
quon veut faire tout seul
La deuxième font, même si elle est plus simple à
modifier, ne sera faite quen dernier, car justement
elle est dépendante de la première. Le but du jeu va être
de modifier toute la font afin de faire rentrer les
accents. Dabord, toute lombre des lettres
représentée de couleur différente autour des caractères
blancs doit être supprimée, afin de pouvoir abaisser la
font. Ensuite, il suffira dajouter les accents au-dessus,
sans avoir besoin de rajouter de lombre ou de faire
des accents aigus semblables aux accents graves. Le problème
majeur vient du fait quil ny a pas despace
libre pour les accents, en revanche de nombreux caractères
comme % ou # peuvent être supprimés sans problèmes,
car ils ne sont presque jamais utilisés. En comparant la
taille des caractères originaux à celle de mes nouveaux
caractères accentués, jai donc remplacé les
caractères inutiles par des lettres comme é, è ou ù.
Evidemment, cela limite quand même linsertion à 5
accents, ici é, è, ê, à, ù et ç, les plus utilisés.
Mon seul gros regret est de ne pas avoir pu ajouter le â,
souvent présent également, mais il faut savoir faire
des compromis. Un deuxième problème apparaît : la
longueur des gros caractères est de 8 pixels, or celle
du e standard, base du é nest que de 6 pixels. Il
a donc fallu inverser quelques lettres agrandissables (comme
le U ou le O) avec ces lettres accentuées. Normalement,
vous vous retrouvez avec une nouvelle font, complètement
changée, sans ombre, et vous devez modifier la table de
caractères en conséquence. Deuxième opération, plus
simple cette fois, faire correspondre la deuxième font
avec la première, il suffit là de remplacer les lettres
de la même manière que précédemment, en ne souciant
pas de la largeur ici puisque la font nest pas
pointée. Dernière chose à corriger, lécran
où lon rentre le nom du personnage qui se trouve
à loffset $3FCBAC. Il suffit de remettre les
nouvelles lettres à la place des anciennes, afin que les
accents apparaissent en bas et non en plein milieu des
lettres. Voilà pour la font et les accents, ça a dû
vous paraître très long et très lourd, ce qui est
vrai, mais cest la meilleure méthode pour ajouter
les accents dans une font pointée alors quon ne
sait pas modifier ses pointeurs. Mais comme on est des
boss, on va utiliser la tactique spéciale !
4.3. Les accents, quand on sy connaît plus
Quand on est un pro, ce quon fait, cest
modifier les pointeurs de la font, qui se trouvent offset
$262E5. En fait, vous allez vite comprendre que ce sont
pas des pointeurs à proprement parler, mais simplement
des octets, chacun représentant la largeur dun
caractère. Vous pouvez constater que loctet 07
revient très souvent, donc la plupart des lettres font 7
pixels de large. Le premier octet correspond à la première
lettre (A si vous regardez la liste), et ainsi de suite.
Vous devriez arriver à une petite série de 00 si vous
avez la rom originale sous les yeux. Là, on peut
rapidement conclure quil ny a pas de caractères,
puisque leur « longueur » est de 0 pixel. On
peut donc en ajouter. Là, on ressort Naga, et on va après
les caractères. On dessine avec courage les nouveaux
caractères (autant quil y a de place dans la rom),
et on remplace les 00 correspondant avec les 07 par
exemple, de manière à avoir une belle font ! Cest
pas le plus difficile, mais cest assez déroutant
si on connaît pas la méthode. Maintenant, retour à nos
textes, on va les modifier un peu.
5. Modifier
le texte du script
Le texte du script représente près de 250 ko répartis
dans 14 fichiers TXT issus chacun dun des 14 blocs.
Il est constitué de texte normal et doctets
particuliers, qui doivent être compris pour conserver la
cohérence du texte.
5.1. Les octets à connaître
Il y a une série doctets particuliers à connaître
pour ce jeu, que lon découvre en déduisant par
rapport à laffichage, et qui sont régis par deux
règles. Première règle, le texte se trouve à gauche
de la fenêtre (logique !), mais quand le nom du
personnage est indiqué dans la première phrase (comme
Marle:
), alors il y a un retrait de 3 espaces
avant chaque ligne du message qui suit. Deuxième règle,
il ne peut pas y avoir plus de 4 lignes de texte par fenêtre,
ou alors ça déborde complètement et ça devient
illisible (sans faire planter le jeu cependant). Pour
faciliter lapplication de ces deux règles, il
existe quatre octets, ou plutôt deux groupes de deux. La
première paire applique un saut de ligne simple. Il faut
essayer dajuster ce saut à la main, car il ny
a pas de limite fixe de caractères pour une ligne (pointage
de la font), mais il faut en plus penser à mettre le bon
octet, car si 05 saute la ligne normalement, 06 applique
à la phrase suivante un retrait, pour respecter la première
règle. Dans le même ordre didée, la deuxième
paire permet deffacer la fenêtre après lappui
sur un bouton de la manette, afin de mettre plus de
quatre lignes par message. Pour respecter la deuxième règle,
on utilise loctet 0B simple ou loctet 0C qui
applique un retrait de 3 espaces à la première phrase
de la fenêtre, toujours pour respecter la première règle.
Enfin, il existe un cinquième octet, loctet suprême
devrait-on dire, cest le 00 ou message-break,
qui stoppe le message net et ferme définitivement la fenêtre
après lappui sur une touche de la manette. Ce sont
les principales choses à retenir pour modifier le texte,
mais il reste encore quelques conseils pour ne pas avoir
de difficultés.
5.2. Conseils pratiques et spécifiques
Certains messages sont centrés. Il nexiste pas
contrairement à dautres jeux de système qui
centre automatiquement le texte, donc il faut ajouter des
espaces devant le message de manière à avancer le texte
dans la fenêtre. Certaines fois, notamment au début du
jeu, au réveil de Crono, il y a des octets isolés
inconnus, comme 03. Ny touchez pas, ce sont des
instructions qui lancent des actions dans le jeu, ils ne
gênent pas la modification du texte et sont vitaux pour
le jeu. Il existe des octets particuliers assez amusants,
comme le EE, qui fait apparaître dans le texte une note
de musique (combat contre Gato et danse préhistorique).
Enfin, si vous avez été consciencieux depuis le début,
lors de lajout de la DTE, vous avez dû ajouter à
la table les noms des personnages, codés chacun sur un
octet (par exemple, 13=Crono). Certains octets sont assez
particuliers dans le même ordre didée, comme 1A
qui représente le leader du groupe (Crono au tout début
et le premier personnage de la liste après sa résurrection).
Vous pouvez attribuer à 1A le mot Perso1 par exemple,
puisque de toute façon ce sera bien 1A et non Perso1 qui
sera réinséré, mais veillez à ne pas modifier les
noms des personnages dans les textes, sinon le changement
du nom dun personnage ne serait pas appliqué mais
en plus vous perdriez quelques précieux octets
Voilà en gros ce quil faut savoir pour modifier le
texte, nous verrons plus tard comment appliquer ces
changements à la rom, mais avant intéressons-nous aux
autres types de texte.
6. Modifier
les autres textes
En plus du script, il existe de nombreux autres textes,
chacun étant régi par ses propres règles. Dans Chrono
Trigger, ce nest pas un modèle particulier, avec
de nombreux exemples qui se retrouvent dans dautres
jeux, comme les magies, les objets, et tous les autres
textes qui ne font pas partie du script.
6.1. Les objets et magies
Ici, on oublie complètement la DTE et on ressort la
bonne vieille table sans compression (avez-vous bien
suivi mon conseil de copier la table avant ?), afin
dobserver ces mots. De nombreuses catégories sont
regroupées au même endroit, ici à loffset $C0D69.
La règle dor : tous les mots ont la même
taille, et il faut rajouter des espaces à la fin des
mots courts. En effet, vous pouvez remarquer rapidement
que tous les mots font 11 caractères, octets
particuliers compris. Justement, ces octets particuliers,
quels sont-ils ? Dabord, celui qui revient le
plus, le FF, qui correspond à lespace entre deux
mots, EF pouvant être utiliser pour combler les trous à
la fin des mots courts. Ensuite, des octets plus spécifiques,
qui ne représentent pas une lettre mais une image, et
qui comptent comme un octet parmi les onze du mot :
20 représente lépée (Crono), 21 représente larc
(Marle), et ainsi de suite, chaque personnage ayant un
type darme différent et donc une icone associée.
On retrouve ensuite les icones des armures, 28 représentant
larmure proprement dite par exemple. Enfin, dans
les objets « équipables », 29 représentent
les accessoires ou reliques (à vous de choisir la dénomination
que vous préférez). Ensuite, après les armes, armures
et reliques, se trouvent les objets courants, comme les
remèdes et les éthers. Le nom de chacun de ces objets
est précédé dun espace FF, qui réduit donc la
taille de lobjet à 10. Ce nest pas si
saugrenu que cela, car ça permet de conserver lalignement
des noms des objets dans la liste, puisque le premier
caractère des armes nest en fait quune image.
Enfin, on retrouve les magies. Le cas ici est assez
particulier, car il faut distinguer les magies et les
techniques. Le Cyclone de Crono par exemple est une
technique, alors que son Illumina est une magie. Or, les
magies sont toutes précédées dune étoile, représentée
par 2F. Voilà, toute cette catégorie est passée en
revue, passons maintenant à la suite.
6.2. Les monstres
Les vilains se trouvent à loffset $C6700, chacun
ayant comme précédemment 11 lettres pour étendre son
nom. Lénorme avantage des monstres par rapport aux
objets et magies, cest quils sont écrits
sans AUCUN octet supplémentaire. Les espaces sont les EF
normaux, il ny a pas de codes spécial avec une
icone, véritablement rien du tout qui puisse gêner. A
se demander pourquoi jen parle
Allez, au
suivant!
6.3. Les messages
Ils peuvent être regroupés en trois types (et ils le
sont dailleurs dans la rom) : les descriptions
des objets ($C3295), les descriptions des magies ($C3D0E)
et les messages de combat ($CCF90). Les trois
fonctionnent selon le même système : ressortez
votre table avec DTE car vous en aurez besoin ici, et
ensuite modifiez les messages en faisant bien attention
de respecter la limite : une ligne par message puis
00, donc pas de 05 ou autres 0C pour vous accompagner.
Sinon, pas de spécificité particulière, ce sont des
messages classiques, on va donc passer aux noms des lieux.
6.4. Les noms des lieux
Les noms des lieux se trouvent à $6F200 est sont
compressés également en DTE. La situation est ici
particulière mais en même temps très confortable :
ces noms de lieux doivent être centrés au-dessus de lentrée
du lieu dans le jeu, mais ceci est fait automatiquement (cest
la seule fois du jeu dailleurs). La seule chose à
respecter, cest la longueur des lieux, pour ne pas
dépasser, mais sinon ce ne sont que des noms séparés
chacun par un octet 00.
6.5. Les autres textes
Ils sont dispersés en toute fin de la rom, et on y
retrouve pratiquement tout ce qui na pas été vu
avant : les mots des menus, les noms des
sauvegardes, et quelques trucs variés, mais ce nest
pas le plus dur à modifier, en sachant quil est préférable
de garder les mêmes longueurs, même si cest
possible de faire mieux en jouant ensuite avec les
pointeurs. Une fois tous les textes traduits, il est
possible de modifier la compression utilisée.
7. Modifier
la compression
Afin déviter de déplacer le texte dans la rom et
de changer quelques routines ASM, il est préférable de
modifier les combinaisons utilisées pour la DTE. Une
compression optimale peut même vous permettre de gagner
beaucoup de place (largement plus de 1000 octets sur
certains textes).
7.1. Trouver les meilleures combinaisons
Pour trouver les meilleures combinaisons, jai
fabriqué un petit programme appelé DTESEEK et que vous
pouvez télécharger sur les principaux sites de
traduction. En entrant les noms de chaque fichier TXT et
le nombre doccurrences minimales, il est facile dobtenir
une nouvelle table optimisée pour les nouveaux fichiers.
Vous ne pourrez malheureusement pas bénéficier des
triplets ou combinaisons supérieures avec ce programme,
car il ne donne que les meilleurs doublets, cependant, cest
déjà suffisant pour bien compresser le texte et le
faire rentrer à la place du texte anglais. Une fois que
vous avez votre nouvelle table, il faut maintenant
modifier la rom.
7.2. Modifier la DTE
La DTE se trouve à loffset $1EFD00, et elle est
constituée de manière assez singulière. Dabord,
contrairement aux autres DTE, celle-ci comprend des
combinaisons à plus de deux lettres, ce qui oblige non
seulement à indiquer la longueur de la combinaison mais
aussi de pointer ces combinaisons. Pour cela, chaque
combinaison est précédée par un octet indiquant son
nombre de lettres : 02 si cest un doublet, 03
si cest un triplet, etc
En appliquant cette règle,
il suffit de modifier la DTE pour obtenir une nouvelle
compression, cest à dire faire comme si lon
voulait modifier un texte normal : remplacer les
anciennes lettres par les nouvelles. Mais il reste encore
à la pointer. Les pointeurs de cette compression
pointent vers loctet indiquant le nombre de
lettres, et ils sont standard:
Adresse de la combinaison : 1EFD31 - on enlève le début
- FD31 - on enlève $200 - FB31 - on retourne les deux
octects - 31FB
Cest aussi simple que cela, le premier pointeur
pointe vers la combinaison de 21, le deuxième vers la
combinaison de 22, etc
Il suffit maintenant de
copier la table originale en changeant toutes les
combinaisons de la DTE pour pouvoir réinsérer.
8. Réinsérer
les textes
Létape la plus importante, même si ce nest
pas la plus difficile : la réinsertion. Pour cela,
utilisez Script-I puisque vous avez pris Script-E au début,
ça se fera automatiquement. A lintérieur de la réinsertion
se trouve malheureusement aussi un véritable calvaire
pour les rom-hackeurs : les pointeurs
8.1. Les pointeurs de script
Parmi les pointeurs on retrouve les pointeurs du script,
ce sont les plus simples, avec notamment quelques
exceptions en plein milieu des tables, donc méfiance !
Les pointeurs sont déroutants au début, mais il ne sagit
ni plus ni moins que ladresse du texte, lendroit
où il se trouve dans la rom, un peu arrangée il est
vrai. Paradoxalement même, la difficulté provient
parfois de la rom elle-même et de son header. Dabord,
la règle des pointeurs : ils pointent vers la première
lettre de la phrase, juste après un message-break 00
normalement. Donc, ladresse de base sera ladresse
du premier caractère de la phrase. Prenons une phrase au
hasard, offset $1EE705, « Marle: Looks like
».
La formation du pointeur se fait très simplement, en
trois étapes :
1) On enlève le premier octet - $E705
2) On enlève $200 au résultat pour tenir compte de lheader
- $E505
3) On inverse les deux octets pour notre pointeur final -
$05E5
Ainsi, dans la table des pointeurs, vous pourrez voir $05E5,
et vous comprendrez désormais quil sagit dun
pointeur. Cette table est juste avant le bloc de texte
dans Chrono, vous pouvez dailleurs le vérifier à
loffset $1EE50C.
8.2. Les pointeurs du reste
Le principal problème ici consiste en fait à savoir sil
y a des pointeurs ou pas. Cest assez simple :
sil y a des message-breaks, alors il y a des
pointeurs, sinon il ny en a pas. Ca peut paraître
stéréotypé, mais cest, dans le cas de Chrono
Trigger en tout cas, toute la vérité. Ainsi, les
objets, magies et autres reliques nont pas besoin
de pointeurs, car tout ce beau monde fait onze octets par
mot, il suffit donc de faire le compte par groupe de onze
pour trouver le bon mot. Par contre, pour ce qui est des
lieux et des messages, il en faut bien. La méthode et la
formule sont les mêmes, donc pas de problèmes, on va
revoir rapidement ça avec un autre exemple complètement
aléatoire, offset $6F2DC : « Truce Canyon ».
1) On enlève le premier octet - $F2DC (6 est sous-entendu
06)
2) On enlève $200 au résultat pour tenir compte de lheader
- $F0DC
3) On inverse les deux octets pour notre pointeur final -
$DCF0
Là aussi cest tout à fait vérifiable, MAIS
attention, car la table des pointeurs se trouve dans ce
cas, et cest une exception, après les lieux (offset
$6F630 pour notre pointeur précédent).
9. Modifier
les images
Si vous avez souffert pour arriver jusque là, alors vous
navez encore rien vu ! On arrive maintenant à
la mission la plus délicate : votre rom marche, très
bien même, avec un texte compressé, optimisé, pointé,
MAIS
MAIS
. MAIS, quelques images subsistent,
quelques images en anglais, bien sûr, ce serait trop
facile sinon. Alors préparez-vous, cest la dernière
ligne droite, et cest parti!
9.1. Repérer les images et la palette
Pour cela, et afin déviter un dépistage systématique
à la main, jutilise un petit programme artisanal
appelé Getpal. Vous lui donnez le nom du snapshot ZST de
Chrono Trigger où vous voyez votre image, et le numéro
de la palette, et il vous donne de quoi se servir tout de
suite après du « maître », Tlayer
La
seule difficulté consiste à trouver le numéro de la
palette, et pour cela il faut tester. Regardez la palette
0, testez-la avec Tlayer, si cest pas bon continuez
avec la palette 1, et ainsi de suite. La syntaxe de
Getpal est:
Getpal fichier.zst palette - Getpal chrono.zst 6 par
exemple
Le choix de la palette 6 nest pas innocent, car cest
en effet la palette qui code les noms des magies dans le
menu. Pour le vérifier, rentrez dans le jeu, faites un
snapshot ZST avec F2 quand vous êtes dans le menu des
stats avec le logo « Lightning » au-dessus,
et tapez la commande ci-dessus. Dans quelques secondes,
vous pourrez même le vérifier avec Tlayer
9.2. Modifier les images
Getpal a créé un fichier tlayer.pal, qui est la palette
utilisée par Tlayer pour afficher les images. Et ainsi,
ce qui était invisible avec Naga devient parfaitement
limpide avec Tlayer, avec les couleurs réelles, et tout !
Le système utilisé par les roms SNES oblige à beaucoup
dattention pour la manipulation des images. Comme
vous pourrez le remarquer, les images SNES sont divisés
en carrés de 8*8. Même si ce nest pas vrai dans labsolu,
cest toujours mieux de le représenter ainsi.
Ouvrez Tlayer avec :
Tlayer chrono.smc
Descendez tout en bas de la rom, et vous retrouverez
votre image « Lightning », mais probablement
coupée. Appuyez sur la touche Gauche ou Droite du
clavier pour déplacer les carrés et ainsi aligner limage,
qui est formée de 6 carrés de longueur par 2 seulement
de hauteur. Ensuite, cliquez avec le bouton gauche sur un
carré et reportez-le avec le bouton droit en haut à
droite, dans le presse-papiers. Faites de même pour tous
les carrés, le presse-papiers est lendroit où
transitent les carrés en attente, qui forment ainsi une
image. En cliquant sur un carré, un zoom apparaît en
bas à droite avec une distinction visible entre les 8*8
pixels. Cliquez sur une couleur à droite, puis sur un
pixel, et MAGIE ! Ca marche comme sur des roulettes,
vous avez modifié votre premier carré ! Faites de
même de façon à obtenir une image ressemblante mais
modifiée quand même, et remettez les carrés dans la
rom à gauche comme vous avez fait avant : bouton
gauche pour le sélectionner dans le presse-papiers,
bouton droit pour le coller dans la rom. Cliquez sur Save
en bas, et vous navez plus quà aller
constater le résultat!
10.
Epilogue
Voilà, cest fini, vous pouvez éteindre votre
ordinateur et reprendre une activité normale,
Mais quest-ce que je raconte, NON, néteignez
rien, je nai pas fini !!! Et puis vous devez
encore apprendre et tester tout ce que vous savez
maintenant ! Sans oublier mon traditionnel « beau
mais néanmoins long © » discours,
surtout que jai des choses à dire ! Dabord,
je vais flatter votre ego, bla-bla, en vous rappelant que
vous êtes les meilleurs, baratin, et que si vous avez
tout compris ici, alors vous pouvez hacker les trois
quarts des roms sans aucune difficulté, foutaises !
Trêve de plaisanterie, nhésitez pas à signaler
dans vos traductions qui vous a appris le rom-hacking, ça
fait toujours plaisir quand on sy attend pas (même
si cest pas moi qui vous lai appris ;-).
Je tiens aussi à remercier Bahamut, Rysley, Sliven, The
Ordos, Kilvan et The Falatity pour tout le travail de
traduction quils ont effectué, et parce quils
mont permis de réaliser mon rêve, surtout sur un
jeu comme Chrono Trigger ! Je vais également
remercier tous les autres membres du groupe dont Card
Master qui ma toujours soutenu sauf dans les
moments difficiles
euh, non, sors par le bâton
Card, je plaisante, pitié ! Enfin, bref, toute léquipe
de Terminus Traduction, et même toutes les personnes qui
ont joué avec notre traduction, et celles qui nous ont
soutenus, et même celles qui ont lu cette FAQ avec
passion. Je vous donne rendez-vous dores et déjà
pour une nouvelle traduction et une prochaine FAQ, et même
sur le Net avant, alors dici là, AMUSEZ-VOUS BIEN !!!!!
Tous les utilitaires seront un
beau jour trouvables sur le site de Terminus, ceux qui ny
sont pas peuvent mêtre demandés presque
gratuitement par e-mail à copernic@ifrance.com, il en sera de même pour les
questions qui seront elles facturées séparément.
« beau mais néanmoins long » est une marque
déposée par Copernic himself 2000, mais cest
comme « Chrono Trigger » qui est une marque
de SquareSoft, société à laquelle je nappartiens pas
: les marques, ça suse que si on sen sert
pas!
|