Aller au contenu


Fall.Exe


  • Veuillez vous connecter pour répondre
109 réponses à ce sujet

#1 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 12 février 2012 - 20:38

L'exécutable du jeu.

Se traduit avec DFEXEEDT.EXE.

le problème de ce fichier est qu'on ne sais pas comment changer le nombre de caractères maximum par ligne car il est très insuffisant dans certains cas.

#2 Daneel53

Daneel53

Posté 29 février 2012 - 22:15

FALL.exe symbolise à lui tout seul toute la difficulté de traduire correctement Daggerfall. C'est la pièce centrale, puisqu'il s'agit du programme principal qui fait fonctionner le jeu. Et ce programme ne serait pas un vrai problème si les développeurs n'avaient pas mis dans le code de Fall.exe une quantité très regrettable de chaines de caractères utilisées partout dans le jeu.

Et pourtant de très nombreux textes ont été externalisés : les conversations courantes et toutes les explications sur les sorts ou les factions dans TEXT.RSC, les noms de lieux et de monstres dans MAPS.BSA, les nom des objets magiques dans MAGIC.DEF, tous les textes liés aux quêtes dans les fichiers .QRC, les noms et effets des sorts dans SPELL.STD. On aurait donc pu croire que la traduction serait simple au sens où il n'y aurait qu'à traduire ces fichiers externes et tout baignerait. Malheureusement, il y a encore FALL.EXE.

Si on lance DFEXEEDT-En.exe et qu'on ouvre FALL.EXE, on s'aperçoit qu'il y a, disséminés dans le code executable, 4 zones de stockage de chaines de caractères. Commençons par les plus simples.

Le paquet n°2 est une longue suite d'objets communs, pour la description desquels on dispose de 21 caractères : les matériaux, les bijoux, les habits, les armes, etc. Au lieu de créer un "Item.def" par exemple où les noms de ces objets auraient été externalisés comme les objets magiques, tous les objets courants ont été groupés au sein d'un tableau de largeur fixe dans le code de fall.exe qui est compilé avec l'executable. Avec 21 caractères à notre disposition, DFEXEEDT nous permet de remplacer sans trop de problème les nom anglais par les noms français, même si parfois il a fallu prendre des raccourcis.
Le paquet n°3 est une liste de 19 sorts décrits avec 31 caractères. Pourquoi ces 19 sorts sont là alors qu'il y en a 89 dans SPELL.STD, mystère. En attendant là aussi avec 31 lettres on peut sans problème les passer en français, surtout que les noms dans SPELL.STD sont limités à 25 lettres.
Le paquet n°4 est une liste de lieux sur 31 caractères. Et peu importe, puisque ces noms de régions et de villes n'ont pas vocation à être traduits dans le PFD.

Reste le paquet n°1... et c'est là la véritable galère. Au contraire des 3 autres listes, ce tableau est une liste à taille variable, dont la taille de chaque objet est tout simplement la taille de la chaine en anglais. Pour quelle raison ? Parce que ce sont des mots ou messages directement écrits par les programmeurs un peu partout au sein des instruction du code source (affichage d'un message d'erreur par exemple, comme la ressource 0), ou des listes de taille variable créés au sein de chaque routine spécifique. Par exemple, le programmeur qui a écrit la routine qui gère la force d'un personnage s'est créé dans son coin une liste de 8 états croissants allant de "weak" à "superhuman", liste que l'on retrouve dans les entrées 667 à 674 du paquet n°1. Toutes ces chaines ont été regroupées au moment de la compilation du code source (c'est un des boulots du compilateur) en un énorme paquet où les 2539 chaines de caractères disséminées dans tout le code se retouvent les unes derrière les autres séparées par un x00.

Alors, vu qu'on n'a pas le code source, que fait DFEXEEDT ? Il remplace, directement à la même adresse du code executable, une chaine en anglais par les mots français que vous lui indiquez. Mais si on écrit des textes plus longs que l'original anglais, on écrase le x00 séparateur avec un lettre de plus, et le début de la chaine suivante avec quelques lettres en plus ce qui, je suis sûr que même non programmeur vous le comprenez, va mettre la zone dans le programme et conduire à afficher n'importe quoi. Donc DFEXEEDT-En vous l'interdit fort justement : vous êtes limité au nombre de lettres du mot anglais, et si vous écrivez plus court, le trou sera bouché par des x00, ce qui dans ce sens là ne perturbe pas les routines d'affichage des textes qui s'arrêtent au premier x00.

Oui mais voilà : le français est généralement plus verbose que l'anglais. Tiens, "weak" qu'on a cité tout à l'heure, ça se traduit par "faible"... zut, deux lettres de trop ! Alors qu'est-ce que je met ? "Mou" ? Bof, pas top, mais quoi d'autre ? Encore plus simple, "No" c'est "Non" en français, ça ne rentre pas, alors on va laisser No, mais au milieu de textes en français ça va faire tache et on ne pourra s'empêcher en jouant de se dire "ces cons de traducteurs, ils ont fait une faute, ils ont oublié une lettre !" Ben non, c'est dans FALL.EXE, on n'a pas pu faire autrement, mais c'est frustrant.

Alors oui, il y en a plein des comme ça, des mots où on a dû faire des raccourcis qui finalement risquent de paraître très abscons à la lecture durant le jeu. Tiens, au hasard, "wereboar" : c'est un sanglier-garou (si, ça existe !). Vous écrivez comment, en français, "sanglier-garou" avec 8 lettres, hein ? Et chaque mot de ce style a été une torture pour essayer de trouver un raccourci qui rentre et qui continue à avoir une chance d'être compris en français.

Alors oui, vous trouverez en jouant plein de mots à l'orthographe très "bizarre", et même des mots restés en anglais faute de mieux, mais dites-vous bien que ce sont à coup sûr des mots qui viennent de ce µ%$£& de FALL.EXE et que les traducteurs ont fait ce qu'ils ont pu avec la taille disponible. Lancez-donc deux DFEXEEDT-En simultanément, une fois sur le FALL.EXE du PFD et une fois avec le même en anglais, et comparez. Et si vous trouvez de meilleurs raccourcis que ceux qui sont dans le PFD nouveau, alors n'hésitez pas : modifiez les, et postez ici le FALL.EXE généré avec vos améliorations (merci de les décrire). En attendant, toutes les chaines utiles dans le jeu du paquet de ressources n°1 sont maintenant en français, c'est toujours mieux qu'avant.

Bye... heu, pardon, Salut ! Ah, zut, ça rentre pas ! Alors, comment on traduit Bye en français avec 3 lettres, voyons...  ;)

Fichier(s) joint(s)



#3 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 02 mars 2012 - 17:29

J'ai discuté avec des gens de l'équivalent allemand du PFD et ils disent qu'il y aurait peut être éventuellement une possible solution que serait de changer les "Offsets".

#4 Daneel53

Daneel53

Posté 02 mars 2012 - 18:53

La question est : pourrait-on simplement changer UNE adresse d'offset quelque part et pouvoir ainsi décaler tous les textes dans une zone libre du binaire FALL.EXE et y prendre ses aises ? Même si une zone libre de taille suffisante existait (et ce n'est pas sûr), je ne le pense pas.

Ce qu'a fait le compilateur, c'est remplacer le code direct du programmeur Affiche "Bonjour" par appeller une routine d'affichage en passant l'adresse de là où il a rangé la chaîne "Bonjour". Et ce pour les centaines de demandes d'affichage disséminées dans le code. Donc en fait ce sont les centaines d'appels à cette routine dont il faudrait changer l'adresse pour se rediriger à chaque fois sur l'emplacement du nouveau mot français, et non changer UNE adresse : à chaque appel, il faut donner l'adresse du nouveau mot.

En fait, changer l'endroit où est rangée une chaine est possible pour quelques cas isolés si on est très motivé : on lance le jeu avec un debugger et on demande au debugger de s'arrêter dès que le code adresse la chaine xxxx (dans un RPG, on peut parfois attendre longtemps avant de tomber sur le personnage X ou l'objet Y...). Là on trouve effectivement un offset qui permet d'aller du code d'appel d'affichage à l'adresse de la chaine à afficher, et si on modifie l'offset pour aller plutôt pointer sur une chaine en français qui a été mise ailleurs par un éditeur hexa, ça fonctionne. Mais on est obligé de faire ça chaine par chaine, appel par appel dans le code, et comme il y en a plusieurs milliers...

Car même s'il y avait quelque part un offset général pour aller au début du tableau des ressources 1, offset qui serait pris en compte dans tous les appels à la routine d'affichage, les adresses relatives des chaines entre elles auraient changé vu la différence de taille des mots français par rapport aux mots anglais. Et là je ne vois pas comment le programme pourrait s'y retrouver... Mais bon, peut-être qu'un pro des compilateurs saurait trouver une solution à laquelle je ne pense pas, mais ce genre de profil est plutôt rare.

Modifié par Daneel53, 02 mars 2012 - 18:55.


#5 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 03 mars 2012 - 11:55

En gros, cela serait en effet possible mais très difficile à mettre en place si j'ai bien compris. Peut être pourrait on utiliser cette solution pour les cas les plus gênants ?

#6 Daneel53

Daneel53

Posté 03 mars 2012 - 19:04

Quand aux modifs d'offsets évoquées, même pour en faire ne serait-ce qu'une, cela demanderait un véritable investissement de très nombreuses heures avant de pouvoir espérer en changer une. Donc, à moins de trouver un gars vraiment motivé par CE challenge là, c'est cause perdue. En tout cas ça n'a plus rien à voir avec un "simple" travail de traduction de l'anglais vers le français, ici il nous faut un hacker dans le sens honnête du terme.

#7 ELOdry

ELOdry

    Bibliothécaire de Tamriel


Posté 05 mars 2012 - 14:10

Merci pour ces explications, c'est fort instructif. Ce que j'en retiens, c'est que malgré des approximations, FALL.exe, le casse-tête qui a pourri la vie de générations de traducteurs, est désormais traduit? C'est génial! Du coup le jeu est quasiment en VF maintenant, non?

Sinon pour wereboar, je propose Sangarou :) après tout, c'est pas plus débile que Bordeciel.

#8 Daneel53

Daneel53

Posté 05 mars 2012 - 21:58

Ouaip, ELOdry, il est traduit beaucoup plus que celui du PFD 0.24... même si certaines traductions ont dû être tellement raccourcies qu'elles sont à la limite du compréhensible, et si j'ai préféré laisser certains mots carément en anglais tellement la traduction est impossible, comme No ou New qu'il est strictement impossible de passer en français avec si peu de lettres. Alors le résultat dans les écrans d'inventaire est plutôt bof...

Je pense qu'il faudra réellement pratiquer le PFD 0.25 quand il sera sorti pour nettoyer ce que j'ai fait. Pour ma part j'ai passé une heure à jouer au hasard hier soir à partir d'une sauvegarde ancienne récupérée sur le Net, et j'ai déjà repéré plusieurs points à améliorer, même s'il n'est pas facile de faire le tri entre ce qui viendra du futur PFD (que j'ai ici parce que j'ai les fichiers modifiés) et ce qui vient de l'anglais stocké dans les sauvegardes et qu'il est impossible d'éradiquer. Moi j'arrive à peu près à le faire parce que j'ai en tête tout ce que j'ai traduit dans TEXT.RSC et FALL.EXE, mais le vrai test sera quand des parties vierges seront faites avec le PFD 0.25.

#9 Daneel53

Daneel53

Posté 01 mai 2012 - 17:50

Bonjour,

Voici une nouvelle version de Fall.exe, avec les modifs suivantes (en plus de corrections de fautes mineures).

Dans les capacités :
- Etre Loup-xx et Guerir Loup-XX --> Devenir Garou et Guerir Garou : correction d'une erreur de traduction de "werething", car il y a des wereboars (sangliers-garous) en plus des werewolves (loups-garous).
- G. des Mage --> Gui. Mages (comme Gui. Guerriers)
- Medical --> Medecin
- Dbrouillar --> Argot (suggestion de Sifraël)
- Jumping --> Saut
- Orque --> Orc (langage)
- Mercantile --> Marchand
- Sante --> Furtif (erreur de traduction de Stealth)
- Nager --> Natation
- Tir arc --> Arc (au même titre que les capacités "epee longue" ou "arme contondante")

Dans les grades de certaines capacités :
- awkward --> balourd
- lest --> vif
- erratic --> moyen
- vite --> vif
- desesper --> nul
- ill-favored --> infortune
- lucky --> ravi

Dans les titres. A l'origine je pensais que ça s'ajoutait au nom de personnages, mais en fait c'est utilisé dans des phrases du style "Nivena a ete nommée Comtesse", et du coup laisser les titres en anglais est inadéquat.
- King --> Roi
- Queen --> Reine
- Duke --> Duc
- Count --> Comte
- Countess --> Comtesse
- Baroness --> Baronne

Divers :
- item --> obj. (vu que item ne signifie pas "objet" en français)
- helmet --> casque
- The %s Residence --> Residence de %s
- Equipping --> Equipe de
- DONE --> FAIT
- Days left: %ld --> Reste (j) : %ld

Pour mémoire...

#10 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 13 juin 2012 - 13:18

Concernant la manière d'outrepasser la limitation de caractères :

Ferital, le 13 juin 2012 - 13:04, dit :

Pour Fall.exe, oui il y a possibilité de passer outre la limitation des chaînes de caractères, mais c'est un poil compliqué, ou du moins chiant sans outil qui automatiserait la tâche. En fait chaque chaîne est référencée dans une table d'adressage au sein de l'exe qui indique son emplacement dans un certain espace réservé de ce même exécutable. Une fois que l'exe sait où trouvait une chaîne, il la lit jusqu'à tomber sur l'octet nul, ce qui indique une fin de chaîne en C. Le problème qu'on a en français, c'est que les chaînes sont généralement plus longues qu'en anglais, ce qui fait que généralement quand on traduit une chaîne, il va falloir rogner les caractères de la chaîne suivante, ce qui obligera à modifier l'adresse de celle-ci, qu'on va ensuite traduire à son tour en rognant sur la suivante, et ainsi de suite... Je ne sais pas si tu m'as tout à fait suivi (si tu es un développeur j'imagine que oui), mais c'est en gros un effet boule de neige qui fait qu'on ne peut théoriquement pas traduire l'ensemble des chaînes de caractères. Sauf qu'il y a un truc malgré tout, c'est que dans le paquet de chaînes à traduire, il y en a qui ne servent à rien, qui ne sont pas utilisées par l'exécutable. L'astuce serait donc d'identifier ces chaînes pour pouvoir écrire par-dessus sans se poser de questions. Je pourrais le faire mais c'est fastidieux et même une fois que ce serait fait, il serait tout aussi fastidieux de modifier les adresses des chaînes manuellement, et propice à l'erreur. L'idéal serait donc de coder un petit soft qui s'en charge... Mais je n'ai pas le temps pour faire ça en fait, pas pour coder mais pour me replonger dans le hacking de Fall.exe. Voilà pour la petit histoire.


#11 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 26 juin 2012 - 19:24

J'ai posté une correction pour ce fichier .

#12 Porygon

Porygon

Posté 29 juin 2012 - 13:46

Même chose que pour TEXT.RSC quelques modifications.

Fichier(s) joint(s)

  • Fichier joint  FALL.zip   563,34 Ko   17 téléchargement(s)


#13 Daneel53

Daneel53

Posté 13 juillet 2012 - 18:27

Bonsoir,

Au cas où il y aurait un besoin urgent, voici une première version 1.2 de DFEXEEDT-En qui contient le bouton magique "Export to TXT". Comme son nom l'indique, ça balance toutes les ressources de Fall.exe dans un fichier de nom "Fall.txt".

C'est tout à fait fonctionnel, vous pouvez vous en servir. Il y a aura probablement sous peu une version 1.2.1, mais ce sera plus cosmétique qu'autre chose. J'y ajouterai cependant au moins la sécurité à la sauvegarde pour éviter les pertes de saisies, comme pour d'autres programmes.

Edit du 13 juillet 19:00

Et voici la version 1.2 finale.

Par rapport à celle d'hier, j'ai ajouté le nombre de caractères des ressources #1 dans l'export et surtout implémenté la sécurité de sauvegarde évoquée ci-dessus : on ne peut plus perdre ses modifs par mégarde en sortant du programme, sauf en cliquant deux fois de suite sans réfléchir.

La version 1.3, si elle voit le jour, verra l'ajout de l'import pour récupérer les accents que vous aurez glissé dans le fichier d'export fall.txt. Mais là il va falloir attendre un moment, vu que je vais tenter cette opération en commençant par le plus important : le fichier TEXT.RSC.

A suivre...

Fichier(s) joint(s)


Modifié par Daneel53, 14 juillet 2012 - 10:14.


#14 Porygon

Porygon

Posté 23 juillet 2012 - 09:37

Toujours quelques corrections que j'ai remarqué hier en jouant.
Passage de Pur à New, on laisse comme ça pour le moment, Mag. General devient donc Bazar. Et une dernière left par gauc, ça servait lorsqu'on changeait de main.

Fichier(s) joint(s)

  • Fichier joint  FALL.zip   563,34 Ko   16 téléchargement(s)


#15 Daneel53

Daneel53

Posté 06 août 2012 - 20:43

Les amateurs peuvent se précipiter dans le sujet dédié aux outils pour télécharger la version 1.3.0 de DFEXEEDT-En qui permet d'accentuer les textes de FALL.EXE.

Ne me dites pas que les 2500 entrées de la ressource 1 vous font peur ! Allez, au boulot, bande de feignants, avant que je ne vous balance l'outil pour accentuer les fichiers .BSA et autres DEF ou STD !

Modifié par Daneel53, 06 août 2012 - 20:44.


#16 Daneel53

Daneel53

Posté 06 août 2012 - 21:44

Pour aider nos amis s'ils veulent s'y coller, et là ce n'est plus de la traduction mais de l'informatique, on est bien d'accord, voici la nature du problème.

Il y a dans Fall.exe quatre paquets de textes dont les quatre adresses de départ sont connues (voir le source main.cpp de DFEXEEDT-En), et dans le fichier anglais d'origine chaque paquet contient des dizaines de chaines terminées par le classique 0x00. Comme le programme s'y retrouve, c'est qu'il y a quelque part dans le binaire des offsets qui permettent d'aller taper directement sur la chaîne voulue dans chacun de ces paquets, et rien de plus normal puisque c'est le boulot du compilateur de ranger les chaines où il le veut et de mettre les offsets correspondants où il le désire dans le binaire. Et c'est ici que se trouve le nœud du problème : nous n'avons jamais réussi à trouver dans FALL.EXE où se trouvent les offsets en question.

Pour quoi faire ? Et bien nous aimerions parfois mettre ici ou là un peu plus de lettres en français que le texte anglais original, ce qui signifie qu'il faudrait décaler les autres... et donc recalculer tous les offsets en conséquence. Mais sans savoir où ils sont, l'opération est impossible. Ne pouvant changer les adresses de départ des chaînes, nous sommes donc obligés de respecter la taille du texte anglais pour chacune d'elles, ce qui pose de gros problèmes pour la traduc. Un exemple : tu traduis comment "new" en français avec 3 lettres ?

Nous sommes nombreux à nous être cassés les dents sur le sujet jusqu'à présent, y compris bien sûr à coup de debuggers, mais nous n’avons pas encore trouvé où se trouvent ces $£%# de tableaux d'offsets. Faut dire que Fall.exe fonctionne non pas directement mais par l’intermédiaire de Dosbox, ce qui ne facilite pas du tout le debuggage. Toute personne capable de répondre à ce problème sera loué dans la communauté jdu PFD jusqu'à la fin des temps.

Bon courage à vous !

Modifié par Ancestral Ghost, 07 août 2012 - 11:37.


#17 Porygon

Porygon

Posté 06 août 2012 - 22:04

Effectivement c'est très casse gueule comme sujet ce FALL.EXE, je viens de perdre une demi-heure completement paumé dans le programme sans trop savoir ce que je faisais si ce n'est plein de tests (foireux bien sûr) avec l'aide de cette page avec quelques commandes utiles : http://www.uesp.net/...acking_FALL.EXE . Franchement comme Daneel53 l'a dit c'est à la limite de l'impossible cette affaire... Il faudrait qu'on trouve un type du même niveau que Boris dans le film Goldeneye  :green: .

#18 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 07 août 2012 - 11:44

Voir le messageDaneel53, le 06 août 2012 - 21:44, dit :

Faut dire que Fall.exe fonctionne non pas directement mais par l’intermédiaire de Dosbox, ce qui ne facilite pas du tout le debuggage.
C'est possible de se passer de Dosbox, il faut juste un ordinateur virtuel voir un vrai PC avec Windows 95/98.

#19 Daneel53

Daneel53

Posté 07 août 2012 - 12:26

Ouaip, une machine virtuelle... pourquoi pas, j'en ai bien installé une comme beaucoup avec Windows 8 Release Preview à l'intérieur, pour voir.

Deux possibilités :
  • Y installer un DOS 6.22. Je ne pense pas avoir encore les disquettes de distribution sous la main... et puis il faut un lecteur de disquettes !
  • Y installer ce bon vieux Windows 98 SE. Là j'ai ce qu'il faut, mais Daggerfall, en bon programme DOS, ne se lancera pas aussi aisément, non ? J'ai passé de nombreuses années sous W98, mais là ça commence à dater sérieusement, j'ai un peu oublié tout ça...


#20 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 07 août 2012 - 12:57

Daggerfall marche très bien sous Win9X sans avoir à faire de manips particulières.

Sous XP, vista, 7, ... il se lance, mais attention aux bugs, c'est à peine jouable.

#21 abg

abg

    L'ABG pour les civilisés


Posté 07 août 2012 - 13:37

Voir même sous Vista/Seven.
Ce n'est pas une chose à faire parce qu'alors commencent à se manifester des bugs à la gomme, comme l'impossibilité d'escalader, de nager, ou encore les mobs invisibles... Mais pour tester rapidement les modifs de texte ça doit être envisageable.
Bref, si dosbox est incontournable pour jouer "sérieusement", pour le hacking de l'exe, ce ne doit pas être pas un vrai problème...
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#22 Daneel53

Daneel53

Posté 07 août 2012 - 13:41

OK, si tu le dis, j'essaierai ça un de ces jours... Ça s'installe aussi avec le DaggerfallSetup ?

Enfin, pour l'instant la priorité est de terminer le passage en français accentué des trois outils restants (pour les deux BSA, SPELLS.STD et MAGIC.DEF), puis ensuite de coder l'import des fichiers de quêtes depuis l'export texte, idéalement du fichier complet AllQRC.txt, pour faciliter l'accentuation de toutes les quêtes.

Modifié par Daneel53, 07 août 2012 - 13:42.


#23 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 07 août 2012 - 14:05

Voir le messageDaneel53, le 07 août 2012 - 13:41, dit :

OK, si tu le dis, j'essaierai ça un de ces jours... Ça s'installe aussi avec le DaggerfallSetup ?
Oui, lances juste le jeu avec un .bat contenant la ligne "FALL.EXE Z.CFG" (Après avoir corrigé les chemins dans Z.CFG).

#24 Porygon

Porygon

Posté 12 août 2012 - 13:17

Sinon un jour quand DaggerXL aura vu le jour on pourra peut-être compter sur ce type qui extrait les textes de certains fichiers de Daggerfall pour les mettre en .XML , je ne sais pas si il compte faire FALL.EXE mais si oui ça pourrait servir : http://xlengine.com/....php?f=29&t=477

#25 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 12 août 2012 - 13:22

Ce serait quand même pas mal de ne pas dépendre de DaggerXL, premièrement parsqu'il n'est pas fini loin de là. et secondement parsque ceux qui voudraient tester le jeu tel qu'à l'origine ne pourriraient pas utiliser le PFD.




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)