Voilà enfin ma ptite doc sur la traduction de BB (plus
rapide à ecrire que Bubble Bobble !). Dans cette doc,
vous trouverez des infos sur differentes sortes de
pointeurs. C partit !
Part 1 : Première approche... On commence par le début,
c'est à dire, la recherche de la table de caractères.
Pour un jeu nes, rien de plus simple : vive Nesticle ! On
zieute dans le menu de nesticle pour voir les differents
graphismes (view/pattern table) ert on clique sur les
lettres. Des chiffres apparaissent, et voilà votre
correspondance. Après, on charge la rom sous thingy avec
la table toute neuve. On cherche le texte... hum... Ah
trouvé !(1CB82). Merde, pas assez de place... pas grave,
on va chercher le pointeur de cette phrase.
Pour les jeux NES, il existe une formule de base, mais
qui peut varier selon les différentes rom (celle là
aussi d'ailleurs :)).
Addresse_du_texte. On la met en 16 bits (XXXX). Ici, on a
donc CB82 (j'ai retiré le 1). On soustrait 10 (mais
pourquoi 10, c'est le header de la rom, c a d des infos
utilisées UNIQUEMENT par les emulateurs, comme le mapper
utilisé, etc...) On a donc CB82-10=CB72. On inverse (
c'est normal, comme la plupart des processeurs, les
adresses sont notées "à l'envers" dans le
code). On a donc 72CB. Vallaaaaaa, not' pointeur.
Ensuite, armé de ce chiffre-sésame, vl'a ke je fait une
recherche dans la rom... Là, j'ai une technique de
barbare... chacun sa technique, mais ici elle était
adaptée (rom pas trop grosse etc..) donc, je fait un
remplacement de 72CB, par 7100 par exemple. Je lance
l'emu, et avec de la chance, le jeu se lance :) [comme
j'ai fait remplacer tout, beaucoup d'octets ont étés
modifiés, et si je modifie la routine d'initialisation (par
exemple) bah chuis dans la merde!]
Enfin, ici, le texte est tout merdike (style des bubulles
qui font les lettres). Et bah C PARFAIT!! Ca veut dire
que 72CB est BIEN le pointeur... Mais kekchose m'a
interloqué, le texte de la ligne du dessous est bien, et
dans thingy, des mots sont collés... j'en déduis donc
qu'il y a un pointeur par ligne (chouette encore plus de
boulot. Nan nan nan, chuis pas maso :) ). Alors, pour
trouver l'adresse exacte du pointeur (à quel endroit de
la rom se situe le 72CB qui sert de pointeur), j'ai fait
une technique dont_je_me_souviens_plus_le_nom. Je
m'explique, je divise à chaque fois par 2 l'espace de
recherche, pour limiter les solutions.
---------------------------------------------------------------
PAUSE! Explication d'une technique assez utile parfois.
---------------------------------------------------------------
Donc, imaginez, dans la rom de 256 ko, il y a 112
solutions. Je part à la moitié de la rom, et je fais
" remplacer " juste sur la fin de la rom. J'ai
moins de solutions (logike !) et je relance le jeu, voir
si c'est la bonne " zone ". Si oui, je fais
pareil. Je divise cette zone par 2, et je recherche dans
la zone de fin (si vous suivez, on devrait cherche sur 64
ko 256/2/2, vous zietes pas ? tant pis, c pas grave). Si
après avoir modifié et lancé le jeu le texte ne change
pas bah faut rechercher dans l'autre partie) N'oubliez
pas de refaire les modifs avec une nouvelle rom a chaque
fois : sauvegardez l'ancienne rom !
---------------------------------------------------------------
Finitoooooo
---------------------------------------------------------------
Donc, maintenant, on a le pointeur, et son adresse (pour
ici le pointeur se situe à 1CC09). Mais ca ne nous sert
à rien si on n'a pas de place !
Part 2 : A la recherche de l'espace perdu... Faut d'la
place. Avec de la chance, dans cette rom, y'en a beaucoup.
Là, j'vais à l'adresse 1BD82. Avec thingy, on commence
à écrire le texte en français...tip tap tap tip...
Valaaa c bon ! maintenant on calcul l'adresse de cet
endroit (comme pour le pointeur). Utilisant la même
formule, on trouve 6EBD (enfin là, j'menfuit avec une
pirouette, passke g pas soustrait 10 mais 20 ! C a kause
du jeu, j'vous l'avez dit, faut adapter !). On retourne
à l'adresse où se situe le pointeur (1CC09 vous suivez
?) et je remplace 72CB par 6EBD. On lance le jeu, mais
Ouaaaaa, la phrase est coupée ! J'en conclue que la rom
limite la taille des phrases, chouette, encore une autre
merde à fixer !
Part 3 : Encore un truc à modifier, Y fait chier ce jeu
! Pour trouver l'adresse où se situe la taille, je prend
d'abord la taille maximum (ici rien de plus simple : on
compte les mots ! Mais parfoit, la phrase peut avoir 6
cacatères, et finir par un espace, donc en fait 7 ! Ici,
une solution TRES rapide : toujours avec nesticle, on
etite chaque espace de la table, et on la remplace par
n'importe quoi, un trait etc.
Pour trouver cette adresse, j'ai galéré comme pour les
pointeurs, mais finalement, j'ai trouvé que la taille était
6 octets après le pointeur ! ! (ah ouais, j'ai oublié
de dire que la plupart des pointeurs dont le texte est
regroupé (le texte d'intro par exemple) sont regroupés,
voir même séparés par seulement quelques octets).
Donc, je remplace l'ancienne taille par la nouvelle, et là,
le texte n'est pas coupé. Mais c pas Bo ! la phrase
n'est pas cadrée.
Part 4 : Et maintenant, on fait mu-muse avec une autre
sorte de pointeur ! J'avait déjà vu ca dans une doc en
anglais (balzy tables). Donc, j'me suis dit qu'il existe
un moyen de déplacer les phrases. C logike, car les
phrases étaient toutes alignées. J'ai commencé à
debugger avec nesticle, mais je trouvais un truc
franchement naze. Genre, pour " appuyer sur start
"
07/FDC4: A9 FF
07/FDC6: A9 22
07/FDC8: A2 73
07/FDCA: A0 05 |
LDA #$FF
//Pointeur
LDA #$22
LDX #$73 //CHANGEMENT DE PLACE DU PASSWORD
LDY #$05 //LONGUEUR DU PASSWORD |
Ca peut etre bien, mais non. Ca
les pointeurs sont sur 2 octet. Donc ici, 19FF est un
pointeur. Mais regardez avant la taille, y'a un 73, ni
une, ni deux, j'le change en un magnifiqe 85 ! Sauve,
lance le jeu, et là, là, là, y'a plus d'phrase !
enfin, après differents essais, je trouve la bonne
valeur (73) pour centrer le texte. Je fais donc pareil
pour toutes les autres phrases...
Part 5 : La fin est proche mes frères... Après avoir
fait toutes les modifs nécessaires (c'était TRES chiant
et long ! ! j'aurait pu faire un prog ki automatiserait
tout ça, mais bon.. j'aurait passé autant de temps à
tracer les bugs ! :) ) J'me suis dit " tiennnnn la
fonte ressemble à toutes les autres fontes sur nes, et
si on la modifiait ? ". sur mon HD, y'a un logiciel
ki permet de voir les fontes 8*8 sous windoze (recupéré
sur le site de dejap, il y a des siècles ! l'adresse de
wild était à squareplanet, et les moggles étaient en
train de faire FF6 ! Si ca interesse kelkun, mailme).
Donc, y'avait des fontes livrées avec ce prog. Après en
avoir trouvée une, j'edite BB sous naga... Ouaaaarghhhh,
y'a pleiiin de fontes differentes ! Chier Chier chier !
y'en a marre, que des emmerdes ce jeu, chouette ! Donc,
après une intense recherche, et BEACOUP d'ALT+TAB, je
trouve la fonte du début. Copier coller dans la rom, et
ca marche. Mais pour la fin du jeu, c'est une autre fonte...
on la recherche, et on trouve. Enfin, on rajoute l'accent
mis à FF ou FE (je l'avais dans un espace libre après
les lettres, mais le jeu l'utilisait pour les graphismes).
Je relance le jeu, et C bon !
Ca y est, enfin... C finit.
Greets :
Lag, t kool komme gars !
Mera, merci pour tout
Wild, merci d'être là !
Card Master, tu es loin du ptit mec qui débutait y'a
quelques temps !
Copernic et terminus translation, pour la première -grande-
traduction : chrono trigger
Yazoo, pour ton aide et ta patience pour FF6
Alload, pour ta traduction de FF6
Et pour tous les autres traducteurs que cette doc a pu/pourra
aider.
Si ça vous a interessé, des remarques, d'autres infos,
des corrections (et je sais qu'il y en a!) etc... une
seule adresse skeud@caramail.com
|