Des explications sur le contenu de la rom

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
NooB
Messages : 8
Inscription : 07 août 2003, 19:17

Des explications sur le contenu de la rom

Message non lu par NooB »

Salut, je suis nouveau dans le monde de la traduction, mais j'ai déjà des problèmes. J'ai suivi vos faq mais je ne comprend toujours pas comment ça marche, quelle est l'utilité de la banque de 10 000 octets ? Je ne comprend pas non plus les pointeurs, j'ai pourtant réussi à appliquer l'aide sur le premier FF mais ça ne m'a pas beaucoup aidé. J'ai entendu parler de pointeurs et de tables de pointeurs, kezaco ? De plus je ne sais pas ce qui se passe avec Thingy mais souvent je ne peux pas utiliser les chiffres du clavier numérique alors que la touche Verr Num est activée. Je n'arrive pas non plus à faire une recherche dans le code hexadecimal avec la touche S (Search), je peux seulement faire une recherche dans ma table. Je sais que je vous en demande beaucoup mais j'ai vraiment envie de comprendre. Merci d'avance.

Avatar de l’utilisateur
Hroþgar SCRB
Mera Hunter
Messages : 1511
Inscription : 24 févr. 2002, 14:44
Localisation : Dans ma tête
Contact :

Message non lu par Hroþgar SCRB »

Boh, pour ce qui est des pointeurs, je travaille en ce moment sur une petite faq dont le but est d'éclaircir certaines choses pour les novices ^^
alors patience ^^
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
Jonath lé là
Il est là !
Messages : 2006
Inscription : 01 mars 2002, 16:53
Localisation : Nancy
Contact :

Message non lu par Jonath lé là »

Si tu as réussi à trouver des textes, tu as remarqué qu'ils sont tous empilés les un sur les autres. Il faut que la machine puisse trouver dans ce foutoir le bon texte à aficher. Pour cela, il mémorise l'endroit où sont placés chaque début de dialogue. Pour chaque dialogue, il mémorise donc une adresse, comme ça, lorsqu'il doit l'afficher il a l'adresse :D

Maintenant, l'adresse est appellé pointeur .

Les faqs t'expliquent comment à partir d'une adresse classique, tu peux avoir une adresse snes (c'est pas compliqué ;))

Par mesure de praticité, toutes les adresses (d'une bank, voir du jeu) sont stockés dans un tableau. Si on trouve ce tableau, on a donc l'emplacement de tous les dialogues, et avec encore un peu de magouille on peut donc tout extraire :D

J'espère être clair (c'est pas ma spécialité), tu peux toujours posé des questions sinon :p
Promouvoir et soutenir le logiciel libre

NooB
Messages : 8
Inscription : 07 août 2003, 19:17

Message non lu par NooB »

Je voulais aussi savoir s'il y avait une infinité de pointeurs, pour ainsi pouvoir pointer n'importe quoi, comme le milieu d'un dialogue. Et qu'est-ce qu'une "table de pointeurs" ?

Avatar de l’utilisateur
Jonath lé là
Il est là !
Messages : 2006
Inscription : 01 mars 2002, 16:53
Localisation : Nancy
Contact :

Message non lu par Jonath lé là »

Il ne peut pas y avoir une infinité de pointeur, mais on peut pointé sur n'importe quoi, il suffit que tu changes le pointeur pour qu'il pointe vers le milieu du texte. Une table de pointeur, c'est un tableau qui regroupe tous les pointeurs (d'une bank ou du jeu). En général, le premier pointeur pointe vers le premier dialogue, le second vers le second etc...
Promouvoir et soutenir le logiciel libre

NooB
Messages : 8
Inscription : 07 août 2003, 19:17

Message non lu par NooB »

Et tous les dialogues d'un jeu sont pointés ? Car par exemple je suis en train de faire des tests avec le jeu NES Adventure Island dont quelqu'un a fait une traduction et l'a mise sur le forum. Et à l'offset 32F5 on peut voir les mots du début du jeu alignés. Alors moi je me dis qu'ils doivent être pointés, donc je soustrais 10 : 32E5, et j'inverse : E532. Mais ça ne me donne aucun résultat, si tu pouvais m'expliquer à quel endroit je me goure ça m'aiderait beaucoup.

Et je voudrais savoir si je pouvais rajouter des morceaux de dialogue n'importe où dans la rom ? Parce que dans certaines tables de pointeurs la place est bien maigre.

Et enfin comment la rom sait-elle qu'il faut lire le code 16 bits comme un pointeur et pas comme 2 caractères de la font ?

Avatar de l’utilisateur
Jonath lé là
Il est là !
Messages : 2006
Inscription : 01 mars 2002, 16:53
Localisation : Nancy
Contact :

Message non lu par Jonath lé là »

Généralement, tous les dialogues sont pointés (il arrive que nan, ex: Aqutallion où il n'y a pas de pointeurs).

Je ne connais pas la rom de AI, mais c'est surement pointé. Es-tu sûr que c'est bien l'adresse du début du dialogue, des fois il y a des balises pour ouvrir des fenêtres ou mettre un nom de perso ou bien d'autre chose (le dialogue ne commence pas forcément par du texte), et dans ce cas c'est l'adresse de cet octet qu'il faut prendre en compte.

Sinon, il se peut qu'il ne faille pas enlever l'header (c'est rare).

Sinon, trouve le dialogue juste d'après, calcule le pointeur et cherche le, si ça ne trouve pas, fais une recherche relative de tes deux adresses à la suite.

Y'a sûrement quelmqu'un qui a touché la rom de AI qui pourra sûrement plus t'aider que moi :P


Pour ta deuxième question : oui et non, les textes sont dans des banks, si t'as de la place dans tes banks tu peux en rajouter derrière. Si t'es tu touches bien l'asm, tu peux étendre ta rom pour ajouter de la place. Mais là c'est du NES, et sur du NES on gagne pas beaucoup de place.

Généralement, on étend jamais la table des pointeurs. En effet, on ne rajoute jamais de dialogues, on ne fait que les traduire, c'est surtout dans les textes qu'il faut chasser de la place.


Pour ta dernière question, bah c'est plus technique, mais quand le jeu fais appel au processus d'affichage de dialogues, on va barbariser en gros barbare et dire qu'il se met en mode Texte, et qu'à ce moment tout ce qu'il li est du texte et il arrêtes tant qu'on lui dit pas d'arrêter.
Promouvoir et soutenir le logiciel libre

NooB
Messages : 8
Inscription : 07 août 2003, 19:17

Message non lu par NooB »

Excuse-moi mais je n'ai pas très bien compris ta dernière explication. Sinon en ce qui concerne IA, après avoir lancé le jeu, on voit plusieurs mots comme TOP ou PUSH START.
<img src="http://marduk007.free.fr/1.JPG">
J'ouvre donc Gold Finger et je recherche TOP, et je le trouve à l'offset 32F5 suivi directement par PUSH START.
<img src="http://marduk007.free.fr/2.JPG">
Puis je modifie le script en "VOILA LE RESULTAT LORSQUE JE MARQUE TOUT A LA SUITE ! FIN" et puis je sauvegarde.
<img src="http://marduk007.free.fr/3.JPG">
Puis je recharge ma rom avec mon émulateur NES préféré et je vois que les mots sont divisés par le même nombre de lettres qu'avant et donc il m'est impossible de traduire TOP par un mot qui ne posséderait pas 3 lettres.
<img src="http://marduk007.free.fr/4.JPG">
Et il n'y a absolument aucun octet spécial entre deux parties. Tu saurais m'expliquer ?

Et enfin je voudrais savoir comment on fait pour modifier un octet compressé, comme Final Fantasy sur NES par exemple, Final Translation a modifié l'octet 32 qui se traduisait par la combinaison du "v" et du "e" en une combinaison du "e" et du "n".

Avatar de l’utilisateur
Jes
Pom pom pom
Messages : 5822
Inscription : 24 févr. 2002, 14:05
Localisation : Siège social de BessaB
Contact :

Message non lu par Jes »

Mwais, je vois. Y a beaucoup beaucoup de chance pour que ce soit assez léger à modifier. M'enfin ca demande un minimum de connaissance en assembleur. Autrement dit, pas encore accessible pour quelqu'un qui vient de débuter comme toi ;)

Avatar de l’utilisateur
Jonath lé là
Il est là !
Messages : 2006
Inscription : 01 mars 2002, 16:53
Localisation : Nancy
Contact :

Message non lu par Jonath lé là »

Moi ca me paraît satisfaisant comme résultat :D

Tout l'écran titre n'est qu'un texte, le jeu préformate sûrement l'affichage. Il va falloir que tu traduises avec trois lettres.

Sinon, je pense qu'avec quelques connaissances plus poussées en ASM on peut changer ça, mais je ne pense pas que tu doives t'y intéresser maintenant.


Pour Final Fantasy NES, c'est un peu plus compliqué, je en saurais honnêtement pas te répondre exactement. Ce n'est pas vraiment une compression mais un gain de place :lol: Je crois avoir déjà vue une faq la dessus fut un temps :wink:
Promouvoir et soutenir le logiciel libre

Avatar de l’utilisateur
Skeud
Oook ?
Messages : 3804
Inscription : 25 févr. 2002, 22:01
Localisation : Loompaland
Contact :

Message non lu par Skeud »

La taille des mots se trouve dans une table dans la rom. Tu as deux solutions pour la trouver :
-tracer le code du jeu pour trouver la routine qui charge cette table
ou
-chercher 'intuitivement' cette table, par exemple en cherchant les tailles des mots qui se suivent.

Pour FF1, FT a changé les DTE existants. Là aussi, ils sont dans une table dans la rom, il suffit de les changer.
Si tu ressens l'envie de travailler, assieds-toi, et attends qu'elle te passe....
A mon niveau, on ne croit pas, on sait. (Docteur Helmut Perchut)

Avatar de l’utilisateur
Jes
Pom pom pom
Messages : 5822
Inscription : 24 févr. 2002, 14:05
Localisation : Siège social de BessaB
Contact :

Message non lu par Jes »

Malheureusement, c'est pas forcément dans une table et le format de celle ci peut la rendre difficile à localiser manuellement ;)

Avatar de l’utilisateur
Hroþgar SCRB
Mera Hunter
Messages : 1511
Inscription : 24 févr. 2002, 14:44
Localisation : Dans ma tête
Contact :

Message non lu par Hroþgar SCRB »

Skeud a écrit :Pour FF1, FT a changé les DTE existants. Là aussi, ils sont dans une table dans la rom, il suffit de les changer.
*fier* 8) (en oui, quoi, j'ai tout fait tout seul comme un grand :D)
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
Skeud
Oook ?
Messages : 3804
Inscription : 25 févr. 2002, 22:01
Localisation : Loompaland
Contact :

Message non lu par Skeud »

Jes a écrit :Malheureusement, c'est pas forcément dans une table et le format de celle ci peut la rendre difficile à localiser manuellement ;)
A moins que ca charge 'en dur ' (LDA #$03 par exemple), c'est dans une table. Et ce chargement en dur est assez rare dans un jeu NES, car vraiment peu manipulable. D'après mon experience, j'ai vu des tables contenant aussi les coordonnées à l'écran, en plus de la taille de la phrase.
Si tu ressens l'envie de travailler, assieds-toi, et attends qu'elle te passe....
A mon niveau, on ne croit pas, on sait. (Docteur Helmut Perchut)

Avatar de l’utilisateur
Jes
Pom pom pom
Messages : 5822
Inscription : 24 févr. 2002, 14:05
Localisation : Siège social de BessaB
Contact :

Message non lu par Jes »

Je pensais aussi qu'un chargement via un adressage immédiat devait être très rare, car la routine n'est soit plus réutilisable, soit bêtement désoptimisée (ca se dit ça ? ;)). Pourtant sur SNES, ça fait deux trois fois que je tombe sur ce genre de truc. Gulliver Boy en est un bon exemple. Enfin, c'est vrai que les tableaux sont très très utilisés pour stocker toute sorte d'infos ;)

NooB
Messages : 8
Inscription : 07 août 2003, 19:17

Message non lu par NooB »

Excusez-moi mais qu'est-ce qu'une routine ?
Et pour changer la taille des mots de l'écran titre je dois trouver l'endroit où c'est précisé dans le code c'est ça ? Mais c'est vachement galère !

Aussi dans FF sur NES, on peut voir que plusieurs octets peuvent se traduire par 2 caractères alors que d'habitude ils ne se traduisent que par un seul, la DTE si j'ai bien compris. Mais lorsque j'ouvre mon éditeur graphique et que je scanne la rom, arrivé à la table de la font du jeu, je vois qu'à l'octet 1F qui se traduit par "in" dans le jeu à une représentation graphique.

<img src="http://marduk007.free.fr/fftable.JPG">

Ainsi comment l'émulateur fait pour afficher "in" et non le sprite ? l'ASM ? si c'est ça ça me rassure bien que je ne connaisse rien à ce dernier, mais j'ai tout le temps pour apprendre.

Je voudrais encore savoir une chose, dans la table de font qui commence à l'offset 24010 je crois, en me rendant à ce même offset dans la rom avec THINGY, ne devrais-je pas retrouver à la suite les même caractères ? ce qui n'est pas le cas...

Oh et puis comme personne ne se décide à répondre, je pose ma candidature pour bêta-tester vos traductions, maintenant si vous pensez que je n'ai pas les capacités nécessaires... tant pis je n'en mourrai pas !

Répondre