SNES - FF6 - ASM et internationalisation

Des soucis pour hacker votre jeu ? C'est ici qu'il faut exposer votre problème.
Avatar de l’utilisateur
Hroþgar SCRB
Mera Hunter
Messages : 1503
Inscription : 24 févr. 2002, 14:44
Localisation : Dans ma tête
Contact :

SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 09 avr. 2016, 10:20

Bonjour à tous,
Je suis depuis quelques mois en train de reprendre ma traduction de FF6 à partir du travail de Meradrin et des scripts japonais. Dans l'ensemble, cela fonctionne bien (hormis le petit souci avec x816 qui ne marche qu'avec Dosbox), mais je me disais que ça serait chouette de faire profiter aux autres des ces scripts, car ils permettent de partir depuis zéro et de faire une traduction presque complète sans aide extérieure et surtout sans compétences de malade. Pour la version française, c'est suffisant, car les scripts ont été réalisés avec celle-ci en vue, mais si on veut porter ça à d'autres langues, il y aura peut-être des limitations qui n'ont pas été prises en compte par le caribou. Comme je ne pense pas pouvoir le réveiller de sa léthargie (je lui ai demandé de jeter un coup d'œil pour déplacer un curseur et un texte, je ne sais pas s'il le fera vraiment, lol), j'aurais besoin d'un courageux qui veuille bien jeter un coup d'œil pour procéder à quelques modifications supplémentaires. En majorité, cela n'impactera pas la version française, mais cela consisterait à rendre accessibles en modification certains paramètres de positionnement et de taille grâce à du code ASM à ajouter à ce qu'a déjà fait Meradrin.

Outre cela, il y a une grande question à envisager, c'est la modification de la gestion de la police de caractères. Je m'explique : la police des dialogues a une table de caractères, et la police des menus/inventaires en a une autre. En fait, elles ne sont pas totalement différentes, au contraire : elles sont presque identiques, mais décalées (dans les dialogues A=20 et dans les menus A=60, et tout le reste à l'avenant) D'une manière ou d'une autre, quand on utilise un objet en combat, par exemple, le nom codé dans la table des menus s'affiche avec la police des dialogues, qui correspond à l'autre table. ce qui veut dire que le jeu fait une conversion entre les deux. En soi, ce n'est pas gênant, sauf que si dans chaque table indépendamment, il y a pas mal de place pour ajouter de nouveaux caractères (accents, notamment), ce décalage limite énormément cette possibilité. Par conséquent, il n'est pas possible d'ajouter tous les caractères qui pourraient être utiles, notamment pour les langues avec beaucoup de diacritiques). L'idée serait donc, vous l'avez compris, de jeter un coup d'œil pour voir s'il ne serait pas possible de remettre les deux tables en concordance, sachant que la version japonaise ne présente pas cette particularité douteuse. J'en déduis que ça a été implémenté pour la version US, éventuellement pour placer les DTE ou que sais-je. Au niveau du français, j''ai réussi à caler tous mes caractères indispensables, mais pour des mots plus exotiques, j'aurais besoin de quelques lettres en plus à usage unique, mais pour le vietnamien, par exemple, ça n'ira jamais, lol

Voili voilou, qu'en pensez-vous ?
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
rid
Dieu Suprême du flood
Messages : 2013
Inscription : 04 janv. 2005, 22:17
Contact :

Re: SNES - FF6 - ASM et internationalisation

Message non lu par rid » 09 avr. 2016, 11:41

Sacré boulot en perspective, mais je trouve l'objectif de super cool :)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 09 avr. 2016, 15:25

Tiens ! Marrant ton post.

J'ai justement sortie mon patch sur Chrono Trigger récemment et je travail actuellement sur la retraduction de FF6 sur Super Nintendo.

Je possède aussi les outils de Meradrin, mais vue que je suis partie de la rom Japonaise, j'en ai pas eu l'utilité.

Du coup, j'ai refais entièrement le hack avec un peu d'asm.

J'avais posté mon avancement ici:
http://www.ultimate-consoles.fr/topic/1 ... -progress/

Ca m’évitera de tout ré-écrire lol

En gros, je suis partie de la rom japonaise pour éviter les censures graphiques et aussi pour conserver les noms d'origines.

Niveau technique, j'ai 2 font vwf distincte (une pour les dialogues et une pour les descriptions et quelques textes divers comme l'intro). On devais me faire une font 8x8 vwf pour les menus, mais ca ne c'est pas fait.

Mes outils sont assez simple, fonctionne sous windows 7 x64 avec un simple clic pour tout ré-inséré (bien plus simple que les outils de mera), et tout est modifiable sans problème (que des systèmes de script éditable sous bloc note)

Il me reste encore un peu de travail sur le hack et je dois revoir la traduction car trop longue pour certaines parties mais si tu veux, ont peux bosser ensemble.

L'idée de départ était juste de mettre les scripts de la version FF6 GBA dans la rom snes, du coup j'ai dumpé la totalité des script de la version GBA et a ce stade j'ai tout ré-inseré dans la rom snes, seul les texte des menu/objet n'on pas encore été inséré car je manque de place niveau cadre, je dois revoir l'emplacement des cadre et cela prend du temps.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
pinktagada
Mauvaise ROMhackeuse débutarte
Messages : 2298
Inscription : 10 mars 2010, 10:39
Localisation : Midgard
Contact :

Re: SNES - FF6 - ASM et internationalisation

Message non lu par pinktagada » 09 avr. 2016, 16:00

Moi :
Si t'as du temps tu pourrais me finir les outils pour Lodis ?

Mera :
Non, tous mon amour va Aurellien maintenant!

Moi :
Tu lui fais quoi

Mera :
Un petit fix tous con
pour FF6

Moi :
Tu pourrais quand même me finir mes outils après

Mera :
Je suis plus tellement dans le trad marjo
J'aime plus Minecraft :d
Bon ben pour Lodes c'est mort, il a crashé son HDD avec le code source de l'outil, mais pour toi, harunichoutoudou, ça a l'air bien parti :)

(extrait d'une conversation que j'ai eu y'a qques jours, brute, sans correction)
MAIS Y A PLUS DE PLACE A L'ÉCRAN! NON DE MERDE MÊME SI JE TE DONNE TOUS LA PLACE DU MONDE DANS LA ROM!! TU POURRAIS PAS EN FAIRE AFFICHÉ PLUS A L'ÉCRAN!!!
Un grand philosophe...

Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 09 avr. 2016, 17:49

Pinky : ah, ben dis, j'aurais pas cru, lol. Je lui ai demandé le doigt, peut-être que je pourrai lui demander le bras. ;)

Rid : oui, c'est du travail en perspective, mais en fait pas tant que ça, car le plus gros a déjà été fait, et que les modifs que je souhaiterais faire, c'est surtout pour internationaliser, la version fr étant en l'état suffisante, beaucoup d'asm ayant déjà été fait.

Kogami : ton lien ne marche pas. ^^

Au départ, j'avais également envisagé d'extraire les textes gba pour les remettre dans la snes, mais il y avait plusieurs soucis. Déjà, la version fr est basée sur la version us, et souffre donc nécessairement des mêmes défauts en plus des siens propres. J'ai notamment vu l'intro qui parle de guerre des Magi, ça m'a tout de suite calmé et m'a fait reconsidérer la chose. Ensuite, la version gba bénéficie d'une vwf partout, ce qui permet des noms plus longs pour les monstres, notamment (lesquels sont de plus souvent mal traduits). Je me suis donc dit que j'allais mitonner ma propre version en partant de toutes les ressources disponibles, au plus proche de la source. J'ai ainsi extrait tous les textes japonais et je les ai réordonnés, et mis en vis-à-vis avec la version us pour référence (gros fichier excel en perspective, lol). Ensuite, j'ai traduit, lol. Pour la rom, je ne perçois pas l'intérêt de partir de la rom jap, car la rom us avait été optimisée pour l'anglais, et les quelques modifs négatives (censure en particulier) bénéficient de patchs correctifs qui permettent à moindre coût d'y remédier. En revanche, je ne vois pas ce que tu veux dire quand tu parles de conserver les noms d'origine grâce à la rom jap : on les change sans problème dans les scripts, et je ne m'en suis d'ailleurs pas privé, en mettant ma propre interprétation des noms japonais à la place des noms us. Travailler ensemble, je veux bien, mais vu l'avancée du travail, je ne vois pas trop comment. :/ Dans l'état actuel des choses, ce qui me limite, c'est le côté très peu convivial des scripts asm à modifier si on veut ajuster un menu et aussi l'absence de vwf dans les menus.
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 09 avr. 2016, 18:26

Faut être inscrit pour lire la page, je te colle quelques messages.

kogami:
Ça remonte à l'été dernier, j'ai eu une forte envie de re-jouer à ce mythique RPG qu'est Final Fantasy VI sur Super Nintendo.

L'ayant en cartmod Fr (mais aussi en cartouche original), j'ai choisi de refaire le jeu depuis ma cartouche Japonaise.

C'est à ce moment là que l'envie de le traduire m'est venue, bien que la version de Terminus Traduction soit de très bonne qualité, le jeu a été traduit depuis le script américain. Nous savons tous désormais comment la traduction de l'époque s'est déroulée (1/3 de script supprimé par manque de place, censure au niveau des textes, abréviation dans les menus, censure graphique etc...).

Avec la sortie du remake sur Game Boy Advance (qui au passage n'est vraiment pas terrible), Squaresoft/Nintendo ont eu la bonne idée de le traduire en français, mais le gros plus de cette traduction c'est qu'ils sont partie des scripts japonais (et non du script anglais) pour la localisation française.

Par curiosité, j'ai commencé à dumper la totalité des scripts Fr de la version GBA.
http://kogami.free.fr/Photo/FF6/Script_Dialogue_GBA.txt

À partir de là, j'ai voulu allez plus loin en me demandant s'il ne serait pas possible d’insérer ces textes dans la Rom Super Nintendo.

J'avais le choix de partir de la rom américaine (plus simple niveau hack), ou alors de la rom japonaise (beaucoup moins simple !!!)

Comme j'aime bien les défis, je suis partie de la rom Japonaise (ce qui m'évite surtout par la suite de devoir retoucher les graphismes censurés)

Quelques exemples:
Image
Image
Image

Comme on le sait, l'affichage des caractères japonais ne comporte pas de font à longueur variable (VWF). On a généralement une font fixe (habituellement de 12x12 pixels) et là, par surprise, une vwf était codée et fonctionnelle sur une rom japonaise !!!!

Pas besoin de ce faire chier à coder quoi que ce soit en asm pour modifier la routine d'affichage.

Je commence à faire des quelques test avec les dialogues.
Image

Jusqu'à la tout va bien, j'en profite pour modifier les pointeurs des dialogues pour les passer de 16 bit à 24 bit (ce qui me permettra d'avoir au temps de place que je souhaite pour écrire mes textes), je continue mes investigations et je tombe sur les textes pour les descriptions des objets et autres qui se trouvent dans les menus, je me rend compte que la vwf n'est pas activé... (il va falloir faire un peu d'asm)

Je cherche sur le net et je tombe sur la seul Rom ou un hack/traduction a été réalisé à partir de la rom japonaise de FF6 (l'équipe derrière ce projet n'est autre que RPGOne translation).

Je me sert du débogueur "snes9x v1.51 ep10r2" et je trace le code. Je trouve le bout de code qui me permet de l'activer.

Code : Tout sélectionner

auto:0]org $C3B2B5
JMP $F7002D
RTS

org $F7002D
TDC
PLA
CLC
ADC #$20
TAX
LDA $8D
CLC
ADC $C48FC0,x ; Adresse font description sur 16 bit $C493A0
STA $8D
JMP $C3B2B9
J'insère ce code dans ma rom via un script ASM pour xkas.
Bingo !!! La routine est désormais fonctionnelle !

Image

Partant de la rom japonaise, j'ai la chance d'avoir une font assez conséquente en place pour pouvoir y placer 2 styles de font (une épaisse pour les dialogues, et une plus fine pour les descriptions).

Le projet semble réalisable et je commence à ré-inséré tout les textes de la version GBA sur la Rom snes Jap.

J'augmente la taille de la rom de 3 à 4mo pour y déplacer mes textes en fin de Rom et je joue du débogueur pour modifier toutes les routines pour qu'elle aille lire les informations au delà des 3mo (là ou j'ai placé les nouveau textes).

Puis viennent les textes qui apparaissent lors des combats.

Image

Une fois de plus la vwf n'est pas active, je ressors mon débogueur et je trace la rom de RPGOne et je tombe sur ceci

Code : Tout sélectionner

auto:0]org $C1621A
JSL $F70000

org $F70000
CLC
LDA #$0000
LDA $004216
STA $004204
SEP #$20
LDA #$20
STA $004206
NOP
NOP
NOP
NOP
NOP
REP #$20
LDA $004214
CLC
ADC #$0016
TAX
SEP #$20
LDA $C48FDA,x; Adresse de la VWF
CLC
ADC $7A
STA $7A
RTL

org $C1621E
NOP
NOP
NOP
NOP
NOP
LDA $627C
BNE $03
JSR $5DE6
Malheureusement le bout de code asm n'est pas adapté et ne me donne pas les résultat attendu...
Gros bug :(

Image
Image

Les caractères se chevauchent les un aux autres.

J'essaye de comprendre le code, je fais plusieurs essais, mais rien n'a faire... Cela ne fonctionne pas. Le projet est arrêté (on est fin août).

Je tombe sur le projet d'Earthbound et j'entends parlé d'un certain Akira76 qui se serait occupé du hack de ce jeu, connaissant le niveau qu'il faut avoir pour entreprendre la traduction de ce jeu, je le contact et lui expose mon problème.

Il accepte volontiers de me donner un coup de main, il lui aura fallu qu'une petite soirée pour m'écrire le fix que voici avec au passage des notes sur le code !!!

Code : Tout sélectionner

auto:0]org $C1621A
JSL $F70000

org $F70000
LDA $004216      ; chargement de l offset
STA $004204      ; stockage en divident
LDA #$0016       ; chargement de 0x16
STA $004206      ; stockage en diviseur
NOP              ; division, en principe 16 cycles
NOP              ; mais sur emu ça a l air de passer
NOP              ; avec seulement 8
NOP              ; si ça ne marche pas sur hardware
NOP              ; il faudra ajouter 8 nop de plus
NOP              ; comme ça, ça a été testé sur
NOP              ; snes9x geiger et zsnes
NOP              ; que de texte pour meubler 8 nop...
LDA $004214      ; chargement du résultat
SEC              ; on sette la retenue pour la soustraction
SBC #$0000       ; on soustrait 0x33 (le chiffre "0", premier index)
TAX              ; transfer en X
SEP #$20         ; on passe A en 8 bits
LDA $C48FE0,x    ; on charge la largeur du caractère
CLC              ; on vide la retenue
ADC $7A          ; on ajoute la valeur en $7A à A
STA $7A          ; on stocke A en $7A
RTL              ; et on retourne d'où on vient

org $C1621E
NOP
NOP
NOP
NOP
NOP
LDA $627C
BNE $03
JSR $5DE6
Image

Cela me remotive et j'entreprends de terminer le projet !!!

Actuellement, il me reste a insérer tous les textes des menus, cependant je dois réaliser pour la 1er fois dans un projet la réorganisation des menus (chose que je n'ai jamais faite jusqu'à présent).

Cela prends énormément de temps (plus que de ré-inserrer la totalité des textes hors menu).

J'ai eu quelques souci car les pointeur des textes sont dispersés un peu partout dans la bank C3, du coup j'ai du chercher une solution que voici.

viewtopic.php?f=1&t=3963

Un petit aperçus de ce que j'ai fait.

Image

Maintenant la grosse bonne nouvelle c'est qu'Akira76 a la possibilité de m'ajouter une vwf pour la font menu (ce qui sera une 1ère dans une traduction de FF6), j'aurais la possibilité de mettre plus de texte sans devoir abréger les mots.

Du coup en attendant qu'Akira76 me l'implante, je commence a faire la mise en page des dialogues (plus de 3000) grâce à l'outil "TheCheat" que j'ai configuré.

Bien pratique ce petit outil :)

Image

Je compte par la suite une fois ce projet terminé faire la même chose avec Final Fantasy IV, j'ai déjà dumpé les textes français de la version GBA. Je partirai de la rom Japonaise pour éviter les censures graphique et surtout pour avoir l'écran titre "Final Fantasy IV"
kogami:
Oui c'est bien Darkshock en effet, il corrige sont hack sur Chrono Trigger actuellement. J'attends qu'il mette les vidéo de la version PSX sur la rom snes, le jeu risque de faire plus de 4 Go au final !!!!

Façon sa sera jouable que sur carte SD ou emulateur, donc la taille ne sera pas trop importante.

Sinon je viens de régler un problème qui me chagriner depuis le début du projet, en effet les textes des noms des villages apparaisse dans un cadre et sont centré automatiquement par le jeu.

Image

Cependant avec les textes traduis en français, le centrage des textes ne ce fais pas correctement...
Image

J'avais regardé il y a quelques semaines comment aligné les textes, mais sans succès. J'allais demander de l'aide pour cette tache, puis ce matin j'ai quand même décider de jeter un nouveau coup d'oeil.

Je suis partie quand le texte + code est charger

Code : Tout sélectionner

$C0/7FE5 9C 67 05    STZ $0567  [$00:0567]   A:0000 X:00F8 Y:0171 P:envMxdIZc
$C0/7FE8 AD B9 1E    LDA $1EB9  [$00:1EB9]   A:0000 X:00F8 Y:0171 P:envMxdIZc
$C0/7FEB 29 40       AND #$40                A:0000 X:00F8 Y:0171 P:envMxdIZc
$C0/7FED D0 05       BNE $05    [$7FF4]      A:0000 X:00F8 Y:0171 P:envMxdIZc
$C0/7FEF AD 45 07    LDA $0745  [$00:0745]   A:0000 X:00F8 Y:0171 P:envMxdIZc
$C0/7FF2 D0 04       BNE $04    [$7FF8]      A:0008 X:00F8 Y:0171 P:envMxdIzc
$C0/7FF8 A9 64       LDA #$64                A:0008 X:00F8 Y:0171 P:envMxdIzc
$C0/7FFA 8D 67 05    STA $0567  [$00:0567]   A:0064 X:00F8 Y:0171 P:envMxdIzc
$C0/7FFD A9 E6       LDA #$E6                A:0064 X:00F8 Y:0171 P:envMxdIzc
$C0/7FFF 85 CB       STA $CB    [$00:00CB]   A:00E6 X:00F8 Y:0171 P:eNvMxdIzc
$C0/8001 AD 20 05    LDA $0520  [$00:0520]   A:00E6 X:00F8 Y:0171 P:eNvMxdIzc
$C0/8004 0A          ASL A                   A:0024 X:00F8 Y:0171 P:envMxdIzc
$C0/8005 AA          TAX                     A:0048 X:00F8 Y:0171 P:envMxdIzc
$C0/8006 C2 21       REP #$21                A:0048 X:0048 Y:0171 P:envMxdIzc
$C0/8008 BF 00 84 E6 LDA $E68400,x[$E6:8448] A:0048 X:0048 Y:0171 P:envmxdIzc
$C0/800C 69 C0 84    ADC #$84C0              A:00F8 X:0048 Y:0171 P:envmxdIzc
$C0/800F 85 C9       STA $C9    [$00:00C9]   A:85B8 X:0048 Y:0171 P:eNvmxdIzc
$C0/8011 7B          TDC                     A:85B8 X:0048 Y:0171 P:eNvmxdIzc
$C0/8012 E2 20       SEP #$20                A:0000 X:0048 Y:0171 P:envmxdIZc
$C0/8014 A4 00       LDY $00    [$00:0000]   A:0000 X:0048 Y:0171 P:envMxdIZc
$C0/8016 BB          TYX                     A:0000 X:0048 Y:0000 P:envMxdIZc
$C0/8017 B7 C9       LDA [$C9],y[$E6:85B8]   A:0000 X:0000 Y:0000 P:envMxdIZc
$C0/8019 F0 09       BEQ $09    [$8024]      A:00A4 X:0000 Y:0000 P:eNvMxdIzc
$C0/801B C9 20       CMP #$20                A:00A4 X:0000 Y:0000 P:eNvMxdIzc
$C0/801D B0 01       BCS $01    [$8020]      A:00A4 X:0000 Y:0000 P:eNvMxdIzC
$C0/8020 E8          INX                     A:00A4 X:0000 Y:0000 P:eNvMxdIzC
$C0/8021 C8          INY                     A:00A4 X:0001 Y:0000 P:envMxdIzC
$C0/8022 80 F3       BRA $F3    [$8017]      A:00A4 X:0001 Y:0001 P:envMxdIzC
$C0/8024 8A          TXA                     A:0000 X:0006 Y:0007 P:envMxdIZc
$C0/8025 8D 02 42    STA $4202  [$00:4202]   A:0006 X:0006 Y:0007 P:envMxdIzc
$C0/8028 A9 0C       LDA #$0C                A:0006 X:0006 Y:0007 P:envMxdIzc
$C0/802A 8D 03 42    STA $4203  [$00:4203]   A:000C X:0006 Y:0007 P:envMxdIzc
$C0/802D A9 E0       LDA #$E0                A:000C X:0006 Y:0007 P:envMxdIzc
$C0/802F 38          SEC                     A:00E0 X:0006 Y:0007 P:eNvMxdIzc
$C0/8030 ED 16 42    SBC $4216  [$00:4216]   A:00E0 X:0006 Y:0007 P:eNvMxdIzC
$C0/8033 4A          LSR A                   A:0098 X:0006 Y:0007 P:eNvMxdIzC
$C0/8034 85 BF       STA $BF    [$00:00BF]   A:004C X:0006 Y:0007 P:envMxdIzc
$C0/8036 A8          TAY                     A:004C X:0006 Y:0007 P:envMxdIzc
$C0/8037 8C 04 42    STY $4204  [$00:4204]   A:004C X:0006 Y:004C P:envMxdIzc
$C0/803A A9 10       LDA #$10                A:004C X:0006 Y:004C P:envMxdIzc
$C0/803C 8D 06 42    STA $4206  [$00:4206]   A:0010 X:0006 Y:004C P:envMxdIzc
$C0/803F EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8040 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8041 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8042 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8043 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8044 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8045 EA          NOP                     A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8046 AD 14 42    LDA $4214  [$00:4214]   A:0010 X:0006 Y:004C P:envMxdIzc
$C0/8049 8D 02 42    STA $4202  [$00:4202]   A:0004 X:0006 Y:004C P:envMxdIzc
$C0/804C A9 20       LDA #$20                A:0004 X:0006 Y:004C P:envMxdIzc
$C0/804E 8D 03 42    STA $4203  [$00:4203]   A:0020 X:0006 Y:004C P:envMxdIzc
$C0/8051 EA          NOP                     A:0020 X:0006 Y:004C P:envMxdIzc
$C0/8052 EA          NOP                     A:0020 X:0006 Y:004C P:envMxdIzc
$C0/8053 EA          NOP                     A:0020 X:0006 Y:004C P:envMxdIzc
$C0/8054 AC 16 42    LDY $4216  [$00:4216]   A:0020 X:0006 Y:004C P:envMxdIzc
$C0/8057 84 C1       STY $C1    [$00:00C1]   A:0020 X:0006 Y:0080 P:envMxdIzc
$C0/8059 20 6D 81    JSR $816D  [$C0:816D]   A:0020 X:0006 Y:0080 P:envMxdIzc
Pour information, si vous souhaitez déplacer vos textes ailleur dans la rom, ces cette ligne qui faut modifier

$C0/7FFD A9 E6 LDA #$E6 (Adresse pointeur Bank)

$C0/8008 BF 00 84 E6 LDA $E68400,x[$E6:8448] (Adresse pointeur 24 bit)

E68400 est l'adresse de vos pointeur, ici c'est adresser en mode Hirom.

Donc je commence la lecture du code asm et cette ligne m'intrigue

Code : Tout sélectionner

$C0/8028 A9 0C LDA #$0C
Je modifie 0C par 00 et une fois que je lance le jeu, je m'apercois que les textes on été décalé.

Je teste plusieurs valeur pour finalement tombé sur 05
Image

Je suis happy :D
Un problème de moins !!!!
kogami:
Je crois qu'il sont traduit mais je dois vérifier.

C'est assez simple en faite, il faut tracer le code à partir de l'adresse ou le code est exécuté.
Ici le code est détourné à l'adresse $D1F030 et chez Terminus Traduction $F78000, d'origine il est a l'adresse $C2FF6D.

Moi je suis partie du code de la version Terminus Traduction qui ce trouve être à l'adresse $F78000.

Donc une fois que tu a tracé le code de la rom, tu ouvre trace.log et tu cherche l'adresse $F7/8000
Tu fais un copié/collé de tout le code jusqu'à l'opcode RTL ou RTS (ca signifie la fin du code, comme un [End] pour du texte).

Des fois le code ne se suit pas donc tu va sauter des adresses, il faut que tu suives bien les adresses.

Voilà un petit tutorial rapide:

La 1er ligne que tu trouvera sur le trace.log de la version de Terminus Traduction avec $F7/8000

Code : Tout sélectionner

$F7/8000 22 6D FF C2 JSL $C2FF6D[$C2:FF6D]   A:007E X:0000 Y:5000 P:enVMxdIzC
Je l'ai traduis comme ceci dans mon script asm

Code : Tout sélectionner

org F78000
   JSL $C2FF6D
Ensuite tu cherche la suite de l'adresse dans le trace.log car la suite du code ce trouve plus bas (pour gagner du temps, tu cherche juste $F7/80) et tu tombera sur

Code : Tout sélectionner

$F7/8004 08          PHP                     A:0000 X:FC03 Y:21E6 P:envMxdIzC
$F7/8005 E2 20       SEP #$20                A:0000 X:FC03 Y:21E6 P:envMxdIzC
$F7/8007 A5 00       LDA $00    [$00:0000]   A:0000 X:FC03 Y:21E6 P:envMxdIzC
$F7/8009 48          PHA                     A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/800A A5 01       LDA $01    [$00:0001]   A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/800C 48          PHA                     A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/800D A5 02       LDA $02    [$00:0002]   A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/800F 48          PHA                     A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/8010 DA          PHX                     A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/8011 5A          PHY                     A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/8012 A2 00 00    LDX #$0000              A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/8015 BF 62 80 F7 LDA $F78062,x[$F7:8062] A:00FF X:0000 Y:21E6 P:envMxdIZC
$F7/8019 85 00       STA $00    [$00:0000]   A:00FB X:0000 Y:21E6 P:eNvMxdIzC
$F7/801B E8          INX                     A:00FB X:0000 Y:21E6 P:eNvMxdIzC
$F7/801C BF 62 80 F7 LDA $F78062,x[$F7:8063] A:00FB X:0001 Y:21E6 P:envMxdIzC
$F7/8020 85 01       STA $01    [$00:0001]   A:005C X:0001 Y:21E6 P:envMxdIzC
$F7/8022 E8          INX                     A:005C X:0001 Y:21E6 P:envMxdIzC
$F7/8023 BF 62 80 F7 LDA $F78062,x[$F7:8064] A:005C X:0002 Y:21E6 P:envMxdIzC
$F7/8027 85 02       STA $02    [$00:0002]   A:007E X:0002 Y:21E6 P:envMxdIzC
$F7/8029 E8          INX                     A:007E X:0002 Y:21E6 P:envMxdIzC
$F7/802A A5 00       LDA $00    [$00:0000]   A:007E X:0003 Y:21E6 P:envMxdIzC
$F7/802C D0 0A       BNE $0A    [$8038]      A:00FB X:0003 Y:21E6 P:eNvMxdIzC
$F7/8038 C2 20       REP #$20                A:00FB X:0003 Y:21E6 P:eNvMxdIzC
$F7/803A BF 62 80 F7 LDA $F78062,x[$F7:8065] A:00FB X:0003 Y:21E6 P:eNvmxdIzC
$F7/803E A8          TAY                     A:0002 X:0003 Y:21E6 P:envmxdIzC
$F7/803F E2 20       SEP #$20                A:0002 X:0003 Y:0002 P:envmxdIzC
$F7/8041 E8          INX                     A:0002 X:0003 Y:0002 P:envMxdIzC
$F7/8042 E8          INX                     A:0002 X:0004 Y:0002 P:envMxdIzC
$F7/8043 BF 62 80 F7 LDA $F78062,x[$F7:8067] A:0002 X:0005 Y:0002 P:envMxdIzC
$F7/8047 87 00       STA [$00]  [$7E:5CFB]   A:00A0 X:0005 Y:0002 P:eNvMxdIzC
$F7/8049 E6 00       INC $00    [$00:0000]   A:00A0 X:0005 Y:0002 P:eNvMxdIzC
$F7/804B D0 02       BNE $02    [$804F]      A:00A0 X:0005 Y:0002 P:eNvMxdIzC
$F7/804F E8          INX                     A:00A0 X:0005 Y:0002 P:eNvMxdIzC
$F7/8050 88          DEY                     A:00A0 X:0006 Y:0002 P:envMxdIzC
$F7/8051 D0 F0       BNE $F0    [$8043]      A:00A0 X:0006 Y:0001 P:envMxdIzC
$F7/8053 80 C0       BRA $C0    [$8015]      A:0049 X:0007 Y:0000 P:envMxdIZC
$F7/804D E6 01       INC $01    [$00:0001]   A:0120 X:00FE Y:014E P:envMxdIZC
$F7/802E A5 01       LDA $01    [$00:0001]   A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8030 D0 06       BNE $06    [$8038]      A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8032 A5 02       LDA $02    [$00:0002]   A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8034 D0 02       BNE $02    [$8038]      A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8036 80 1D       BRA $1D    [$8055]      A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8055 7A          PLY                     A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8056 FA          PLX                     A:0000 X:02AC Y:21E6 P:envMxdIzC
$F7/8057 68          PLA                     A:0000 X:FC03 Y:21E6 P:eNvMxdIzC
$F7/8058 85 02       STA $02    [$00:0002]   A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/805A 68          PLA                     A:00FF X:FC03 Y:21E6 P:eNvMxdIzC
$F7/805B 85 01       STA $01    [$00:0001]   A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/805D 68          PLA                     A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/805E 85 00       STA $00    [$00:0000]   A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/8060 28          PLP                     A:0000 X:FC03 Y:21E6 P:envMxdIZC
$F7/8061 6B          RTL                     A:0000 X:FC03 Y:21E6 P:envMxdIzC
La 1er chose à faire et de vérifier les adresse car des fois le code ne s’exécute pas dans l'ordre.

Par exemple:

Code : Tout sélectionner

$F7/8050 88          DEY                     A:00A0 X:0006 Y:0002 P:envMxdIzC
$F7/8051 D0 F0       BNE $F0    [$8043]      A:00A0 X:0006 Y:0001 P:envMxdIzC
$F7/8053 80 C0       BRA $C0    [$8015]      A:0049 X:0007 Y:0000 P:envMxdIZC
$F7/804D E6 01       INC $01    [$00:0001]   A:0120 X:00FE Y:014E P:envMxdIZC
$F7/802E A5 01       LDA $01    [$00:0001]   A:0000 X:02AC Y:0000 P:envMxdIZC
$F7/8030 D0 06       BNE $06    [$8038]      A:0000 X:02AC Y:0000 P:envMxdIZC
Le code passe de l'adresse $F7/8053 à $F7/804D.

Notre but ici n'est pas de comprendre le code en vue de le modifier mais de le récupérer dans sont intégralité, du moins pour le moment.

Une fois cela fais tu obtiens ceci

Code : Tout sélectionner

org $F78000
    JSL $C2FF6D
    PHP
    SEP #$20
    LDA $00
    PHA
    LDA $01
    PHA
    LDA $02
    PHA
    PHX
    PHY
    LDX #$0000
    LDA $F78062,x
    STA $00
    INX
    LDA $F78062,x
    STA $01
    INX
    LDA $F78062,x
    STA $02
    INX
    LDA $00
    BNE $0A
    LDA $01
    BNE $06
    LDA $02
    BNE $02
    BRA $1D
    REP #$20
    LDA $F78062,x
    TAY
    SEP #$20
    INX
    INX
    LDA $F78062,x
    STA [$00]
    INC $00
    BNE $02
    INC $01
    INX
    DEY
    BNE $F0
    BRA $C0
    PLY
    PLX
    PLA
    STA $02
    PLA
    STA $01
    PLA
    STA $00
    PLP
    RTL
Ensuite le reste se sont des donnés et non du code, la parcontre il faut analysé les données. Il ne sont pas visible dans le trace.log, il sont chargé en ram.

J'aurais pus déplacer toutes ces données n'importe ou dans la bank, mais j'ai choisis de les mettres juste après le code, c'est plus logique et on gagne en place.

Les donnés commence à l'adresse 0x378062 (juste après l'opcode RTL) et ce termine à l'adresse 0x378101. Pour récupéré les données j'utilise un éditeur hexa et je fais un copié/collé de la chaine d'octet, dans mon script asm cela donne ceci

Code : Tout sélectionner

    db $FB, $5C, $7E, $02, $00
    dw $49A0                                 ; Pointeur 16 bit (ram 7E xx yy) texte "producer"
    db $04, $5D, $7E, $02, $00
    dw $49AF                                 ; Pointeur 16 bit (ram 7E xx yy) texte "director"
    db $0D, $5D, $7E, $02, $00
    dw $49BD                                 ; Pointeur 16 bit (ram 7E xx yy) texte "main programmer"
    db $16, $5D, $7E, $02, $00
    dw $49D7                                 ; Pointeur 16 bit (ram 7E xx yy) texte "graphic director"
    db $1F, $5D, $7E, $02, $00
    dw $49D7                                 ; Pointeur 16 bit (ram 7E xx yy) texte "graphic director"
    db $28, $5D, $7E, $02, $00
    dw $49EF                                 ; Pointeur 16 bit (ram 7E xx yy) texte "music"
    db $31, $5D, $7E, $02, $00
    dw $49FB                                 ; Pointeur 16 bit (ram 7E xx yy) texte "image designer"
    db $3A, $5D, $7E, $02, $00
    dw $4A11                                 ; Pointeur 16 bit (ram 7E xx yy) texte "battle planner"
    db $43, $5D, $7E, $02, $00
    dw $4A2F                                 ; Pointeur 16 bit (ram 7E xx yy) texte "field planner"
    db $4C, $5D, $7E, $02, $00
    dw $4A2F                                 ; Pointeur 16 bit (ram 7E xx yy) texte "field planner"
    db $55, $5D, $7E, $02, $00
    dw $4A4C                                 ; Pointeur 16 bit (ram 7E xx yy) texte "event planner"
    db $5E, $5D, $7E, $02, $00
    dw $4A6D                                 ; Pointeur 16 bit (ram 7E xx yy) texte "effect programmer"
    db $67, $5D, $7E, $02, $00
    dw $4A8E                                 ; Pointeur 16 bit (ram 7E xx yy) texte "battle programmer"
    db $70, $5D, $7E, $02, $00
    dw $4AAA                                 ; Pointeur 16 bit (ram 7E xx yy) texte "sound programmer"
    db $79, $5D, $7E, $02, $00
    dw $4AC1                                 ; Pointeur 16 bit (ram 7E xx yy) texte "effect graphic designer"
    db $82, $5D, $7E, $02, $00
    dw $4AD7                                 ; Pointeur 16 bit (ram 7E xx yy) texte "field graphic designer"
    db $8B, $5D, $7E, $02, $00
    dw $4AD7                                 ; Pointeur 16 bit (ram 7E xx yy) texte "field graphic designer"
    db $94, $5D, $7E, $02, $00
    dw $4AD7                                 ; Pointeur 16 bit (ram 7E xx yy) texte "field graphic designer"
    db $9D, $5D, $7E, $02, $00
    dw $4AED                                 ; Pointeur 16 bit (ram 7E xx yy) texte "monster graphic designer"
    db $A6, $5D, $7E, $02, $00
    dw $4B05                                 ; Pointeur 16 bit (ram 7E xx yy) texte "object graphic designer"
    db $AF, $5D, $7E, $02, $00
    dw $4B1B                                 ; Pointeur 16 bit (ram 7E xx yy) texte "sound engineer"
    db $B8, $5D, $7E, $02, $00
    dw $4B30                                 ; Pointeur 16 bit (ram 7E xx yy) texte "remake planner"
    db $A0, $49, $7E, $AD, $01
C'est moi qui structure les données pour qu'il soit le plus claire possible, après analyse j'ai vue qu'il s'agissait des pointeurs.

La suite du script asm, ce sont les textes et pareil je les aient récupérer avec mon éditeur hexadécimal, il sont placé juste après la table de pointeurs.

Code : Tout sélectionner

    db $56, $44, $24, $00
    db "producteur",$00                      ; producer

    db $56, $44, $24, $06
    db "directeur",$00                       ; director

    db $4A, $44, $24, $02
    db "programmeur principal",$00           ; main programmer

    db $4c, $44, $24, $05
    db "directeur graphique",$00             ; graphic director (apparait 2 fois)

    db $58, $44, $24, $00
    db "musique",$00                         ; music

    db $4E, $44, $24, $05
    db "design des images",$00               ; image designer

    db $46, $44, $24, $00
    db "planificateur des combats",$00       ; battle planner

    db $48, $44, $24, $03
    db "planificateur des mondes",$00        ; field planner (apparait 2 fois)

    db $44, $44, $24, $01
    db "planificateur des evenements",$00    ; event planner

    db $44, $44, $24, $01
    db "   programmeur des effets   ",$00    ; effect programmer

    db $48, $44, $24, $05
    db "programmeur des combats",$00         ; battle programmer

    db $4E, $44, $24, $03
    db "programmeur du son",$00              ; sound programmer

    db $4E, $44, $24, $02
    db "design des effets",$00               ; effect graphic designer

    db $4E, $44, $24, $04
    db "design des mondes",$00               ; field graphic designer (apparait 3 fois)

    db $4C, $44, $24, $02
    db "design des monstres",$00             ; monster graphic designer

    db $4E, $44, $24, $00
    db "design des objets",$00               ; object graphic designer

    db $50, $44, $24, $03
    db "ingenieur du son",$00                ; sound engineer

    db $48, $44, $24, $03
    db "planificateur de version",$00        ; remake planner
    db $00, $00, $00
Pareil j'ai structuré les données de façon la plus compréhensible

db $56, $44, $24, $00
db "producteur",$00

Il faut connaitre les commandes xkas, il faut regarder la doc de xkas
http://wiki.superfamicom.org/snes/show/xkas

la commande db permet d'insérer un octet, il y a d'autres commandes
db - Data byte (8-bits)
dw - Data word (16-bits)
dl - Data long (24-bits)
dd - Data double word (32-bits)

Les données db $56, $44, $24, $00 permet de positionner le texte sur l'écran.

Voilà la 1er étape de faite, on a décompiler tout le code, ensuite si on souhaite déplacer ailleurs il faut lire le code et modifier les adresses.

Ici il y en a plusieurs a modifier

org $C2685E
JSL $F78000 ; on modifira l'adresse ou ce trouve le code n'importe ou car il en 24bit

LDA $F78062,x ; Ici c'est l'adresse des pointeurs, il y en a 5 LDA $F78062,x dans le code pareil il sont codé sur 24 bit.
Les noms des personnages principaux sont différent entre les version US et Jap

カイエン・ガラモンド (Cayenne Garamonde)
セッツァー・ギャッビアーニ (Setzer Gabbiani)
エドガー・ロニ・フィガロ (Edgar Roni Figaro)
マッシュ・レネ・フィガロ (Mash Rene Figaro)
モグ (Mog)
ウーマロ (Umaro)
ゴゴ (Gogo)
ガウ (Gau)
ロック・コール (Lock Cole)
ティナ・ブランフォード (Tina Branford)
リルム・アローニィ (Relm Arrowny)
シャドウ (Shadow)
ストラゴス・マゴス (Stragus Magus)
セリス・シェール (Celes Chere)

Ces noms apparait à la fin du jeu sous forme de sprites en romanji écrit comme ci-dessus, ainsi que d'autres censure graphique divers, le logo a été changé Final Fantsy III/VI etc...

Il est possible en effet de modifier ces divers choses dans la rom US, mais en faite lorsque j'ai commencé au tout début, c'est plutôt le hack qui m’intéressé afin de pouvoir progresser à ce niveau. J'ai choisis la difficulté en repartant de zero sans prendre aucun hack/outils existant et faire tout de A à Z. Ca m'a permis d'en apprendre beaucoup plus sur l'asm notamment.

Je bloque au niveau des menus, je n'ai pas le niveau pour faire par moi même une vwf 8x8 pour les menus. Le seul choix possible à mon niveau serait de revoir entièrement la disposition des menus pour réorganiser les cadres (ça c'est à ma porté).

J'ai déplacer tout les textes des menus dans une autres bank pour avoir autant de places que possible, les seul restriction vont venir des largeurs des cadres en définitive.

Je sais pas si tu connais ces sites:

http://kwhazit.ucoz.net/trans/ff6/index.html
http://kumiho.aerdan.org/translations/ff6.html
http://finalfantasy.wikia.com/wiki/Fina ... anslations

Ce sont des retraductions plus fidéle du japonais vers l'anglais, j'allais m'en servir pour en faire une relecture avec les scripts de la version GBA.

Parcontre où tu a vue que la version GBA à été traduite de l'US ?
Car moi en comparant les deux textes (GBA/Jap), j'ai trouvé ça plutôt fidèle dans l'essemble maitrisant un ptiti peu le Japonais. C'est d'ailleurs pour ça que j'ai voulu réutiliser les scripts de la version GBA.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 10 avr. 2016, 08:42

Hum, intéressant.
Effectivement, si c'est l'aspect technique qui t'intéresse, je ne vois guère l'intérêt de partir de la version us de la rom.

Tu es en effet assez bien avancé dans le hack, mais arriver à un résultat comparable à la version us risque de te prendre pas mal de temps, mais si tu peux avoir une vwf dans les menus, ça devrait faciliter grandement les choses ensuite (noms d'objets toujours en 8 caractères, évidemment inadmissible dans une version en alphabet).

Oui, je connais très bien le site de kwhazit, c'est lui qui me sert de référence principale (mais pas unique) grâce à ses textes commentés qui me permettent de vérifier ce que je fais. Je ne connaissais pas le deuxième site, mais le troisième, si. C'est en tout cas dans ces deux derniers qu'on voit qu'il y a toujours des erreurs dans les romanisations des noms. S'il y a un site à suivre, c'est bien celui de kwhazit, qui a fait des recherches approfondies et a résolu la plupart des noms (j'ai trouvé encore quelques erreurs, mais c'est à la marge en comparaison). Je vois par exemple l'ennemi テラリウム Trillium alors que son vrai nom est évidemment Terrarium.

Pourquoi j'avance que la trad fr vient de la version us? Comme j'ai dit, je suis tombé direct sur des images de l'intro où ça parle de la guerre des Magi. Je n'ai du coup pas cherché plus loin, car ce terme est un aspect typique de la trad us, et d'ailleurs ne veut rien dire en français. Ça me fait un peu penser au traducteur qui tombe dessus, se demande quoi, et décide de laisser comme ça, puisque ça semble un nom propre et que ça n'a pas de sens très clair. Ou alors je me suis trompé de version…? Quoi que j'en doute, car j'ai vu ça sur la présentation de la version gba. Autre argument : on trouve les noms us des persos, alors qu'une trad depuis zéro devrait avoir amené d'autres noms. Alors oui, la trad fr peut être assez fidèle à la version jap : à supposer qu'elle soit bien tirée de la version us, elle peut être fidèle à la trad us, qui est elle-même fidèle à la trad jap, et qu'il n'y a donc pas trop de perte en ligne.

Alors, les noms jap. Désolé, mais je pars du principe que les Japonais parlent anglais comme des vaches espagnoles, et donc les noms qu'ils nous servent n'ont a priori aucune valeur, seule la version romaji peut faire autorité. Par exemple Mash. D'où ça vient, ça, Mash ? Je vais te le dire : c'est le diminutif de Mashiasu, qui est la version japonaise de Macias (son prénom complet officiel). Donc mettre Mash dans la version traduite est — désolé — idiot. Si Mash est le diminutif de Mashiasu, c'est Mass qui doit être le diminutif de Macias, et là ça veut dire quelque chose. Même chose pour Celes : j'ai du mal à concevoir comment Celes peut devenir Serisu. Si on part d'une prononciation anglaise, je présume que ça donnerait Seresu ou Serusu, mais jamais Serisu. Si je ne vois toujours pas clairement d'où vient son nom, il n'empêche qu'il devrait plutôt se transcrire Celis que Celes. Bref, ceux qui nous ont pondu les romanisations officielles japonaises ne connaissaient visiblement pas plus l'origine des noms que cela. Partant de ce constat, on peut s'interroger sur la validité de la traduction de Rokku en Lock : ça pourrait aussi bien être Locke comme dans la version US, le seul point qui joue en sa faveur, c'est que pour un voleur, s'appeler Lock est pertinent (mais dans ce cas, c'est un surnom, sinon, être voleur est un trait héréditaire, lol) Il semble dans l'ensemble que tous les noms viennent de quelque chose, et ne sont pas des inventions pures et simples. De même, Gau : là, ça ne veut rien dire, mais en japonais, ça représente le cri d'un animal, ce qui jette un nouveau jour sur les scripts, et une bien plus grande cohérence. Pour ma part, j'ai choisi de le rendre sous la forme Graou. Cayenne. Moui, lui est crédible, mais aurait aussi bien pu s'appeler Kai-En, si on part de l'hypothèse non d'un nom occidental, mais bien japonisant (c'est un samouraï, ne l'oublions pas). Les autres, c'est un peu pareil, certains sont clairs, les autres ne sont pas forcément convaincants en l'état.

C'est pour toutes ces raisons que je me suis décidé à repartir de zéro. En outre, mes textes devraient bénéficier de la relecture d'une japonisante authentique pour rectifier les divergences par rapport aux textes originaux.
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 10 avr. 2016, 10:28

L'avantage d'être partie de la rom japonaise, cest que j'ai beaucoup plus de place pour les caractères et j'en ai profité pour y caser deux font dont une plus fine (contrairement à la rom us qui n'en dispose que d'une seul).

Cest très utile pour la description des objets car je pourrais caser plus de textes (je me souviens que ryusan avait été bien emmerder à l'époque avec ça). Pour la vwf en 8x8 on peut oublier car la seul personne capable de faire ça n'a plus le temps et cest pas faute de l'avoir relancé plusieurs fois le bougre ^^
Je vais continuer à bosser sur le hack pour casser les limitations lié à la version japonaise.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 10 avr. 2016, 10:45

Un truc qui serait vraiment chouette, mais là, c'est de la science fiction, ce serait de pouvoir caser une police normale et une en italique, qui pourraient servir dans le même script, ce qui permettrait d'avoir une meilleure typographie.
Pour la police, j'en ai préparé une assez fine qui passe partout sans être trop moche (j'espère), et qui passe bien en 8*8. À dire vrai, je ne trouve pas que les textes de descriptions soient si exigeants en place, et d'ailleurs, ce n'est pas là que l'on attend une traduction fidèle au mot près, on attend surtout de la concision et de la précision, peu importe la version d'origine.
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 10 avr. 2016, 11:10

Sur la rom japonaise c'est possible de mettre au moins 4 font différente voir plus, le problème c'est qu'il ne faut que du texte sans les balise [Objet], [Num] et autres balise divers car sinon ca fera appelle à la font principale qui elle est utilisé pour les dialogues classique.

En gros tu aura ton texte en italique et des que tu obtiendra un objet c'est la font principal qui sera affiché.

Donc si ton textes ne comporte aucune balise c'est possible, j'ai justement fais ce choix pour les dialogue comme l'introduction ou j'utilise une font plus fine, je voulais la mettre aussi lorsque l'on a du texte sur fond noir (par exemple lorsque l'équipe ce divise en 3)

Image

J'avoue que je serais curieux de voir ta font en 8x8 pour le texte principal. Tu pourrais montrer un screen ingame car j'ai peur que se soit trop petit car justement j'avais l'intention d'utiliser une font fine pour les dialogues mais en tester sur le vrais hardware ont voyait pas grand chose sur la Tv
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 10 avr. 2016, 15:47

Hum, 4 polices différentes, il y a de quoi faire ^^
Enfin, cependant, vu la taille des lettres, je ne sais pas si on peut faire des variantes esthétiques. Dommage qu'on ne puisse pas utiliser les codes en même temps que les polices alternatives, parce qu'il y a quand même pas mal d'endroits où il y a des codes, notamment les pauses.
J'ai dû pour ma version faire une police du même type que celle que tu as utilisée pour l'intro, à cause de la place à l'écran, justement dans le cas des textes préformatés qui doivent tenir entièrement sur un seul écran de texte. Et malgré cela, j'ai dû tronquer un peu ici et là les traductions pour que ça entre. Mais bon, si on peut avoir des polices différentes selon les endroits, ça règlera peut-être le problème. En outre, étant limité en hauteur pour ajouter les majuscules accentuées, le plus esthétique était de réduire la graisse des caractères (question de proportions). Tu dis qu'on voit mal sur la TV avec la police maigre pour les dialogues, mais pas pour l'intro ? Comment cela se fesse ? ^^

Je te mettrai des images quand j'aurai ma version sous la main (demain). Je ne suis pas encore très satisfait de son apparence, il faut que je la retravaille. D'ailleurs, pour info, comme c'est virtuellement la même que dans les menus, j'ai fait en sorte d'avoir des largeurs relativement homogènes pour que ça ne soit pas trop moche dans les menus. Peut-être que je te piquerai la tienne si elle est adaptable à mes besoins. ^^
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 10 avr. 2016, 17:45

Les balise [Pause] ou 13=[Clear Cadre] comme je le nomme ne sont pas gênant, seul les balises qui font appel à du textes peuvent poser problème.

00=[End]\n\n
01=[nl]\n

02=[Tina]
03=[Lock]
04=[Cayenne]
05=[Shadow]
06=[Edgar]
07=[Mash]
08=[Celes]
09=[Stragus]
0A=[Relm]
0B=[Setzer]
0C=[Mog]
0D=[Gau]
0E=[Gogo]
0F=[Umaro]

10=[Delais 10]
12=[Delais 12]
13=\n[Clear Cadre]\n
15=[Choix]

19=[Num]
1A=[Objet]
1B=[Tech]


F0=<Tina>
F1=<Lock>
F2=<Cayenne>
F3=<Shadow>
F4=<Edgar>
F5=<Mash>
F6=<Celes>
F7=<Stragus>
F8=<Relm>
F9=<Setzer>
FA=<Mog>
FB=<Gau>
FC=<Gogo>
FD=<Umaro>

1C08=[Note]
1101=[Delais 1101]
~
16FF=[Delais 16FF]


En faite au tout début du projet j'utilisais une font encore plus réduite (font unique pour les descriptions et les dialogues), elle était sur la même base que celle que l'on peux voir sur les images, sur emulateur ca passe assez bien (lisible) car on joue au pixel prêt, par contre quand j'ai pus tester sur le vrais hardware sur TV CRT, la franchement la police était peu lisible. Du coup j'ai repris la font dialogue US de FF6 en réduisant de 1 pixel sur chaque lettre. Après je me suis aperçus que cette font était trop épaisse pour les description et je suis partie dans l'idée de faire une seconde, j'ai repris ma 1er font peu lisible et je l'ai retravaillé en élargissant les lettres qui poser problèmes.

Voici ma font complète a l’échelle 1.1
Image

J'ai rajouté entre temps des symboles pour les états.

Code : Tout sélectionner

org $C490C0
	db $0C    ; Largeur symbole "Foudre"
	db $0C    ; Largeur symbole "Vent"
	db $0C    ; Largeur symbole "Terre"
	db $0C    ; Largeur symbole "Sacré"
	db $0C    ; Largeur symbole "Flamme"
	db $0C    ; Largeur symbole "Eau"
	db $0C    ; Largeur symbole "Poison"
	db $0C    ; Largeur symbole "Glace"
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 10 avr. 2016, 19:49

D'accord, comme ça c'est plus clair.
D'ailleurs, du coup, ta table va peut-être m'aider à affiner mon script, car j'ai des codes mal identifiés. Je m'interroge d'ailleurs à ce sujet, car tu proposes de $1101 à $16ff un éventail de délais. Je crois que j'avais en effet identifié $11 comme déclencheur de délai, mais le $16 restait pour moi un mystère. Mais je ne suis pas convaincu par ta proposition, car il y a entre $11 et $16 le $13 qui est le curseur de choix, et le $14 qui est un appel d'espace multiple, si je me souviens bien.

Mais peut-être devrions-nous continuer en privé, si personne ne compte se joindre à la conversation.
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 10 avr. 2016, 20:35

J'ai bien vérifier depuis le script, je ne pense pas m'être tromper.
Pour le choix c'est ceci pour la version japonaise de la rom.

15=[Choix]

Je te fournis la tables + quelques script dumper avec cette table.
http://kogami.free.fr/Photo/FF6/FF6_Table.zip
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 11 avr. 2016, 10:18

Je viens de regarder ça plus en détail.
$11 est pour une pause qu'on peut passer, alors que $16 est une pause obligatoire.
$12, c'est pour fermer automatiquement la fenêtre, a priori toujours utilisé après une pause.
$10, apparemment, c'est un raccourci pour $16 et une valeur prédéfinie

Sinon, avec quoi tu édites la police des dialogues ? Je ne trouve aucun éditeur qui l'affiche clairement et proprement (à part Naga, mais qui ne passe pas en 64 bits), c'est toujours un peu la mémerde.

Je joins deux captures pour illustrer la police de caractères dans son état actuel.
Pièces jointes
capture2.png
capture2.png (3.54 Kio) Consulté 6327 fois
capture.png
capture.png (6.06 Kio) Consulté 6327 fois
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
Ryusan
Super Floodeur
Messages : 185
Inscription : 27 sept. 2006, 11:53

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Ryusan » 11 avr. 2016, 14:30

Eh bien, bon courage les gars !!
En tout cas, bravo pour avoir remis le nez là dedans !!
Traduction de Xenogears sur PS1 par Ryusan (CRhack).
Projet débuté le 23 mars 2016. -----> 70% terminé au 15/10/2018.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 11 avr. 2016, 16:11

Y a un outils très intéressant pour FF6 (compatible version jap et US)

FF3usME v6.70
http://www.angelfire.com/pq/jumparound/ ... 70_x64.zip

Il propose l'edition de la font avec un api dédié, par contre je ne te conseil pas d'éditer ta rom fr directement avec ces outils, travail ta font sur une rom original puis ensuite fais un copier collé directement sur ta rom, moi je récupère via un editeur hexa le bloc complet qui contient la font (Font_Dialogue-Description-11x12.bin) et ensuite via un script asm je l'inserre, cela fais partie de ma compilation de la rom Jap avec mes textes traduis et tout le reste des modif.

Code : Tout sélectionner

;#########################################################################;
;Description : Code pour insérer la font dialogue/description 11x12
;#########################################################################;

print "Insertion font dialogue/description 11x12"

org $C494C0                                               ; Adressse PC 0x494C0 - 0x4FFFF
	incbin ASM\Font_Dialogue-Description-11x12.bin    ; Font dialogue/description 11x12 pixel
Pour régler la font variable, pareil j'utilise un script asm

Code : Tout sélectionner

;#########################################################################;
;Description : Code pour modifier la VWF des de la font dialogue
;#########################################################################;

print "Modification font variable dialogue"

org $C49013       ; Adresse PC 0x49013
	db $07    ; Largeur chiffre "0"
	db $04    ; Largeur chiffre "1"
	db $07    ; Largeur chiffre "2"
	db $07    ; Largeur chiffre "3"
	db $08    ; Largeur chiffre "4"
	db $07    ; Largeur chiffre "5"
	db $07    ; Largeur chiffre "6"
	db $07    ; Largeur chiffre "7"
	db $07    ; Largeur chiffre "8"
	db $07    ; Largeur chiffre "9"
	db $0C    ; Largeur lettre "m" japonais
	db $0C    ; Largeur lettre "h" japonais
	db $0C    ; Largeur lettre "p" japonais
	db $07    ; Largeur lettre "A"
	db $07    ; Largeur lettre "B"
	db $07    ; Largeur lettre "C"
	db $07    ; Largeur lettre "D"
	db $06    ; Largeur lettre "E"
	db $06    ; Largeur lettre "F"
	db $07    ; Largeur lettre "G"
	db $07    ; Largeur lettre "H"
	db $05    ; Largeur lettre "I"
	db $07    ; Largeur lettre "J"
	db $08    ; Largeur lettre "K"
	db $06    ; Largeur lettre "L"
	db $09    ; Largeur lettre "M"
	db $08    ; Largeur lettre "N"
	db $07    ; Largeur lettre "O"
	db $07    ; Largeur lettre "P"
	db $07    ; Largeur lettre "Q"
	db $07    ; Largeur lettre "R"
	db $06    ; Largeur lettre "S"
	db $07    ; Largeur lettre "T"
	db $07    ; Largeur lettre "U"
	db $07    ; Largeur lettre "V"
	db $0B    ; Largeur lettre "W"
	db $07    ; Largeur lettre "X"
	db $07    ; Largeur lettre "Y"
	db $07    ; Largeur lettre "Z"
	db $07    ; Largeur lettre "a"
	db $07    ; Largeur lettre "b"
	db $06    ; Largeur lettre "c"
	db $07    ; Largeur lettre "d"
	db $07    ; Largeur lettre "e"
	db $06    ; Largeur lettre "f"
	db $07    ; Largeur lettre "g"
	db $07    ; Largeur lettre "h"
	db $03    ; Largeur lettre "i"
	db $06    ; Largeur lettre "j"
	db $07    ; Largeur lettre "k"
	db $03    ; Largeur lettre "l"
	db $0B    ; Largeur lettre "m"
	db $07    ; Largeur lettre "n"
	db $07    ; Largeur lettre "o"
	db $07    ; Largeur lettre "p"
	db $07    ; Largeur lettre "q"
	db $06    ; Largeur lettre "r"
	db $06    ; Largeur lettre "s"
	db $05    ; Largeur lettre "t"
	db $07    ; Largeur lettre "u"
	db $07    ; Largeur lettre "v"
	db $0B    ; Largeur lettre "w"
	db $07    ; Largeur lettre "x"
	db $07    ; Largeur lettre "y"
	db $07    ; Largeur lettre "z"
	db $07    ; Largeur lettre "à"
	db $07    ; Largeur lettre "â"
	db $0A    ; Largeur lettre "œ"
	db $06    ; Largeur lettre "ç"
	db $07    ; Largeur lettre "è"
	db $07    ; Largeur lettre "é"
	db $07    ; Largeur lettre "ê"
	db $05    ; Largeur lettre "î"
	db $05    ; Largeur lettre "ï"
	db $07    ; Largeur lettre "ô"
	db $07    ; Largeur lettre "ù"
	db $07    ; Largeur lettre "û"

org $C4907D
	db $0C    ; Largeur lettre "en"
	db $09    ; Largeur lettre "nn"
	db $07    ; Largeur lettre "e"
	db $0B    ; Largeur lettre "tr"
	db $07    ; Largeur lettre "a"

org $C49083
	db $07    ; Largeur ponctuation "~"
	db $09    ; Largeur ponctuation "#"
	db $05    ; Largeur ponctuation "-"
	db $08    ; Largeur ponctuation "&"
	db $0A    ; Largeur ponctuation "…"
	db $05    ; Largeur ponctuation "="
	db $03    ; Largeur ponctuation "!"
	db $05    ; Largeur ponctuation "'"
	db $07    ; Largeur ponctuation "?"
	db $04    ; Largeur ponctuation ","
	db $09    ; Largeur ponctuation "%"
	db $05    ; Largeur ponctuation "/"
	db $04    ; Largeur ponctuation ":"
	db $06    ; Largeur ponctuation "«"
	db $07    ; Largeur ponctuation "»"
	db $03    ; Largeur ponctuation "."
	db $06    ; Largeur ponctuation "+"

org $C49095
	db $04    ; Largeur ponctuation "("
	db $04    ; Largeur ponctuation ")"

org $C490C8
	db $0A    ; Largeur ponctuation "Note"

org $C49082
	db $04    ; Largeur espace " "
org $C490BF
	db $04    ; Largeur espace " "

org $C490C0
	db $0C    ; Largeur symbole "Foudre"
	db $0C    ; Largeur symbole "Vent"
	db $0C    ; Largeur symbole "Terre"
	db $0C    ; Largeur symbole "Sacré"
	db $0C    ; Largeur symbole "Flamme"
	db $0C    ; Largeur symbole "Eau"
	db $0C    ; Largeur symbole "Poison"
	db $0C    ; Largeur symbole "Glace"
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 11 avr. 2016, 19:42

Tiens, un revenant ^^ Merci pour les encouragement. :)

Kogami: ah ouais, effectivement, il y a FF6usME, mais ça ne m'avance pas tellement, car je modifie ma police directement dans mon fichier .dat prêt à être intégré, et je ne crois pas que FF6usME accepte mon fichier ^^. Sinon, que penses-tu du rendu de ma police ? Je l'ai un peu modifiée aujourd'hui, à propos, pour qu'elle soit plus cohérente.

Sinon, ma demande de hack asm tient toujours, pour info. :)
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Avatar de l’utilisateur
Lestat
céréal floddeur
Messages : 924
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Lestat » 11 avr. 2016, 23:24

Tiens, je te croyais en retraite hrop !

J'aime bien ta typo :)

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 12 avr. 2016, 08:26

Oui, je suis en retraite, on peut dire, mais je voulais faire quelque chose de vraiment bien avec ce projet. ^^
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

Meradrin
Je suis Kebekois et alors ? ça se voit ?
Messages : 332
Inscription : 17 févr. 2002, 11:11
Localisation : Canada (Québec)
Contact :

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Meradrin » 12 avr. 2016, 10:40

Harunichou, je me suis acheter un pc y a meme pas une semaine, laisse moi installer un emulateur et je te regarder ca ;) Demain soir, je jette un oeuil mais j'ai plus de note sur ce projet, jai meme plus les outils que je tavais donner. Pour la font, ces vrai que ces un vieux format batard de 1bit en 12x12, si ma memoire est bonne. J'ai vus un tiles editor pour windows qui le fesait j'ai juste oublier son nom :(

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 758
Inscription : 17 juin 2004, 16:47

Re: SNES - FF6 - ASM et internationalisation

Message non lu par kogami » 12 avr. 2016, 10:46

Quelqu'un de chaud pour coder une vwf 8x8 pour les menus/noms des objets :) ?
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Hroþgar SCRB » 12 avr. 2016, 12:36

loool un caribou qui ressort, j'y crois pas ! XD

S'il n'y a que ça pour te décoincer, je peux t'envoyer les outils, je les ai encore. ^^ Pour la police, je me débrouille, c'est juste chiant à modifier, mais ça marche. :)

Selon ta motivation, je te donnerai plus ou moins de choses à modifier. C'est plus ou moins tout des petites merdouilles comme ce que je t'ai demandé. Ça ne gêne pas la traduction, mais ça faciliterait le travail pour d'autres qui passeraient après…
Votre fils ne fait pas ses devoirs, il les commet. (Quino)

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

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Skeud » 12 avr. 2016, 13:28

kogami a écrit :Quelqu'un de chaud pour coder une vwf 8x8 pour les menus/noms des objets :) ?
Akira76 ne devait-il pas la faire ?
En tout cas, une fonte variable dynamique pour les items rendrait l'affichage très lent.
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
Lestat
céréal floddeur
Messages : 924
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: SNES - FF6 - ASM et internationalisation

Message non lu par Lestat » 12 avr. 2016, 15:42

Vu que le nombre d'objets est connu, ça ne serait pas mieux de les dessiner à la main et de les afficher ?

En se démerdant bien, faire un genre de dte graphique pour optimiser le tout.

(Moins de tiles à afficher, plus de rapidité, non ?)

Répondre