Aller au contenu


Fall.Exe


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

#51 Daneel53

Daneel53

Posté 08 septembre 2012 - 09:07

Réduire les tables à 2 octets seulement ??? Je ne comprend pas ce que tu essaies de faire.

#52 Porygon

Porygon

Posté 08 septembre 2012 - 10:11

Pour couper les textes comme tu as essayé de le faire "Cuir" en "C" en passant par exemple un "62 41 68 41" en "62 41 64 41" on ne laisse qu'une seule lettre s'afficher plus l'espace, mais ça ne marche pas.

Modifié par Porygon, 08 septembre 2012 - 10:11.


#53 Daneel53

Daneel53

Posté 08 septembre 2012 - 14:51

Rapidement, car je n'ai pas pour le moment le temps de faire des essais, si Cuir commence à l'adresse 1776354 suivant la liste que j'ai postée, tu y trouves l'offset 5F 1E. Si tu le remplaces par 60 1E, il devrait s'afficher "uir" au lieu de "Cuir", puisque tu lui dis de commencer un octet plus loin.

Edit de 18:25

Bon, un essai rapide montre que l'offset de Cuir n'est pas non plus à l'adresse 1776354. Laisse tomber, je vais poursuivre mes recherches juqu'à mettre la main sur un offset qui fonctionne !  :umnik:

Modifié par Daneel53, 08 septembre 2012 - 17:27.


#54 Porygon

Porygon

Posté 08 septembre 2012 - 18:25

Je viens aussi de faire des essais avec "Fer" cette fois en tentant d'afficher "er" sans succès, j'ai essayé toutes les entrées que tu m'as donnés voici les résultats :

Entrée 0619, Fer, Adr0 = 29554, AdrN = 29570, Séquence de 4 mots	Non
Entrée 0619, Fer, Adr0 = 29650, AdrN = 29666, Séquence de 4 mots	Plante
Entrée 0619, Fer, Adr0 = 29710, AdrN = 29726, Séquence de 4 mots	Plante
Entrée 0619, Fer, Adr0 = 1763180, AdrN = 1763196, Séquence de 4 mots	Non
Entrée 0619, Fer, Adr0 = 1776218, AdrN = 1776250, Séquence de 8 mots	Non
Entrée 0619, Fer, Adr0 = 1791174, AdrN = 1791206, Séquence de 8 mots	Non
Entrée 0619, Fer, Adr0 = 1805404, AdrN = 1805424, Séquence de 5 mots	Non

Les non veulent dire que le jeu se lance une mais aucun changement en jeu, et les "plante" veulent dire que le jeu ne se lance même pas, écran noir et retour windows. Comme tu l'as dit on est pas sorti de l'auberge :sorcerer: .

Modifié par Porygon, 08 septembre 2012 - 18:34.


#55 Daneel53

Daneel53

Posté 08 septembre 2012 - 20:23

P'tain ! Tu as mené au bout les essais que j'envisageais (bravo et merci), et ça ne donne rien ! Alors je vais te dire que j'ai volontairement programmé de ne pas sortir de résultat s'il n'y a pas au moins 4 valeurs de suite qui fonctionnent, espérant au moins arriver à trouver des offsets "évidents". Et Fer et sa suite paraissaient pourtant être de super candidats, mais ça ne donne rien (on est d'accord, j'avais fait un essai rapide avant l'apéro de 19h qui n'avait rien donné, ça m'a conduit à en prendre deux de désespoir).

Je suis plutôt effondré de ces résultats lamentables, mais je continue à me dire que les tables d'offsets doivent exister et que ma méthode doit permettre de les trouver. D'ailleurs quand on va à l'endroit indiqué par mon code on tombe quasi systématiquement sur une suite d'octets qui, avec leur structure de forme "00 00 XX YY" ne peuvent pas être du code version langage machine, donc ça ne peut qu'être des offsets d'indirection, rontudiuuuuu ! Allez, on continue les essais, mais il est clair que tant que je n'aurai pas réussi à faire afficher "uir" pour "Cuir" ou "er" au lieu de "Fer" en ajoutant 1 à un offset, c'est que je n'aurai pas trouvé la bonne table d'offsets.

Une nouvelle fois, $%#! de Fall.exe !  :twisted2:

Modifié par Daneel53, 08 septembre 2012 - 20:24.


#56 Porygon

Porygon

Posté 08 septembre 2012 - 20:32

Bah après je me dis aussi que c'est possible que les tables soient bonnes mais c'est peut-être le fait de les modifier qui ne va pas. Le jeu n'aime peut-être pas très bien ou alors il lit les chaines d'un 00 à un autre 00 peu importe si on lui dit de commencer un octet avant. Je ne sais pas FALL.EXE est trop capricieux, des fois en le modifiant un peu il ne se lance plus ni même en remettant celui de base... Du coup ça me force à refaire une installation complète ce qui est plutôt chiant.

#57 Daneel53

Daneel53

Posté 08 septembre 2012 - 21:09

J'ai du mal à admettre que Daggerfall soit capricieux, après tout ça n'est qu'un programme qui exécute ses instructions, il n'a aucune intelligence ni moyen de passer outre ce qu'on lui demande de faire. Ceci étant j'avoue que notre incapacité à lui faire afficher "uir" ou "er" me laisse extremement perplexe vu que je suis certain qu'il va lire la chaine là où on lui dit de la lire, mais bon, quelque chose nous échappe, on finira bien par trouver. L'homlme est bien supérieur à la machine, non ? Enfin, jusqu'à présent, il me semble...  :?

#58 Porygon

Porygon

Posté 09 septembre 2012 - 07:50

Ah en tout cas chez moi ça arrive fréquemment et là deux des mes trois installations sont inutilisables, je suis donc bon pour en refaire trois autres au minimum. Après il y a quelque chose que je me demande, il doit nécessairement y avoir une relation entre la suite hexadécimale des tables et l'offset où se trouve les chaines non ? Sinon comment le programme sait qu'il faut lire telle table pour connaitre la longueur à ne pas dépasser. En tout cas j'espère bien qu'on trouvera oui car c'est à ce jour le dernier souci du PFD il me semble, une fois résolu à nous les syntaxes correctes et fini les abréviations !

Quant au fait de savoir si l'homme est supérieur à la machine, hum je ne sais pas. Tout comme ton avatar le suggère I-Robot est un parfait exemple de machines incontrôlables où les humains sont impuissants. Mais heureusement un gentil américain vient sauver le monde (une fois de plus...) qu'est-ce qu'on ferait sans eux vraiment !

PS : Sinon pour en revenir à un exemple plus parlant oui nous sommes toujours supérieurs aux machines par le fait que nous puissions penser et agir sans avoir besoin d'être programmés mais nous sommes devenu des esclaves de toutes ces technologies. Essaye par exemple de demander au monde entier de se passer du téléphone, d'internet du GPS et de l'ordinateur et 98% de la population sera perdu, la bourse dégringolera plus de business et dans un moindre mal les accros de Facebook ferait une petite cure etc. Je suis sûr que ça serait un bordel monstre, on ne peut donc plus se passer de toutes ces technologies, et encore je ne compte pas la voiture ni l'électricité et l'eau courante et appareils ménagers qui relèvent plus de la mécanique pour moi mais si on les enlève alors là c'est l'apocalypse.

Modifié par Porygon, 09 septembre 2012 - 07:58.


#59 Daneel53

Daneel53

Posté 09 septembre 2012 - 10:26

Citation

I-Robot est un parfait exemple de machines incontrôlables où les humains sont impuissants. Mais heureusement un gentil américain vient sauver le monde

Bah, si le fim avait été français, c'est un français qui aurait sauvé le monde... et si je me souviens bien de l'image finale de I, Robot (que je n'ai vu qu'une fois au cinéma l'année de sa sortie, donc il y a huit ans), il me semblait plutôt que la domination des robots n'était que partie remise.

Accros aux technos ? Peut-être, mais chaque génération utilise les instruments qu'on met à sa disposition. Après ça le temps fera son oeuvre et on verra dans vingt ans ce qu'il restera de vraiment utile dans tout ça.

Pour en revenir à Fall.exe, pour éviter de fiche en l'air le programme je pense qu'il faut se limiter aux structures de type "00 00 ab cd", car sinon c'est que tu es probablement en train de modifier du code et non des données, et là, c'est sûr qu'à l'exécution... Mon programme ne fait pas ce filtrage là, mais je pense que je vais le coder pour éviter ce genre de problème.

Edit de 21:00

Finalement le weed-end fut chargé, peu de travail fait sur ce sujet depuis trois jours, j'essaierai de remettre le couvert cette semaine. Et en attendant, Porygon, passe à autre chose. Quand j'aurai réellement trouvé un offset qui fonctionne je vous ferai signe, mais d'ici là autant que je nage seul dans la purée dans laquelle je me suis jeté goulûment.

Edit de lundi 10, 23:00

Toujours pas d'offset qui fonctionne. Je n'y comprend rien ! A demain.

Lundi, 21:00

En fait je ne comprend pas pourquoi aucune des modifications d'offsets essayées ne donne quoi que ce soit. Le Fall.exe que j'utilise désormais possède au moins une vingtaine de valeurs modifiées sur des éléments affichés à l'écran (cuir, fer, argent, acier, temples, directions...) et malgré tout il continue à afficher les chaines entières comme si de rien n'était. Pourtant quand on met en évidence une suite de 36 adresses dont les différences successives sont exactement les longueurs de 36 entrées successives de Fall.exe, ça NE PEUT PAS être une coïncidence.

Je crois que je vais bientôt me prendre un coup de sang et foutre tous ces offsets à 00 00, et on verra s'il continue à faire comme si on n'avait jamais touché à rien ! A suivre... mais sans doute pas ce soir, je ne suis pas en grande forme.

Modifié par Daneel53, 11 septembre 2012 - 19:48.


#60 Daneel53

Daneel53

Posté 13 septembre 2012 - 00:25

Après moult modifications prudentes, je viens effectivement de remplacer par un gros paquet de zéros des offsets normalement liés aux consommations proposées par les aubergistes (entrées 1403 et suivantes). Et le résultat est toujours le même : Daggerfall se moque éperdument de ces modifications et continue de tout afficher comme si de rien n'était !

La situation est donc la suivante : il y a bien dans Fall.exe, disséminés un peu partout dans la fin de fichier, des centaines d'offsets de valeurs prossessives dont les évolutions suivent parfaitement les longueurs successives de chaines de la ressource 1, mais quand ces valeurs sont modifiées Daggerfall se comporte comme si on n'avait rien fait. Au point que même remplacées par des 00, le jeu ne moufte pas. D'accord, je n'ai pas mis TOUS les offsets identifiés à 00, mais quand même... n'avoir pas réussi une seule fois à faire modifier l'affichage d'une chaine, ça fout les boules.

J'ai beau réfléchir à la question depuis plus d'une semaine, je ne vois toujours pas, si ces offsets ne sont pas utilisés, pourquoi ils sont là, et surtout comment Daggerfall arrive à savoir à quelle adresse exacte se trouve chacune des 2500 chaines qu'il utilise dans les ressources 1, regroupées en paquet les unes derrière les autres en fin de fichier. Car il tape toujours au même endroit, le bougre : il suffit de déplacer une chaine de un octet dans le paquet avec un éditeur héxa pour voir immédiatement le résultat.

Sans debugger capable de voir ce paquet de ressources, permettant ainsi de pièger un appel d'affichage d'une chaine particulière, je vais bientôt jeter l'éponge, car je suis à court d'idées. Il faudrait un vrai spécialiste des compilateurs DOS qui peut-être saurait comment le code est organisé, mais je doute qu'il y en ait un dans les parages. Allez, je vais me coucher, même si je sais que ces putains d'adresses m'empêcheront encore de dormir...

#61 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 13 septembre 2012 - 08:37

Peut être que les offsets sont externalisés dans un autre fichier ?

Sinon, tu peux éventuellement tenter d'envoyer un mail au gars de DaggerXL, peut être qu'il sait.

#62 Daneel53

Daneel53

Posté 13 septembre 2012 - 20:55

Externalisés ? Le concept m'est étranger, en tout cas comme résultat d'une compilation...

Envoyer un mail au gars de DaggerXL ? Oui, pourquoi pas, je n'ai rien à perdre.

Sinon il me pousse d'autres idées bizarres, comme écrire un tout petit programme avec des déclarations de chaines et des printf pour les utiliser, le compiler, puis regarder avec un éditeur hexa comment est fichu le .exe généré et essayer de comprendre comment tout ça est organisé. Mais le risque est très grand que le résultat soit dépendant du compilateur utilisé, et comme je ne sais pas avec quels outils Daggerfall a été programmé...

Bref, je cogite. J'essaie que cela soit en sous-marin quasi inconscient de mes activités normales et que l'idée jaillisse après mure réflexion. Mais je reste totalement dubitatif devant le manque de résultat de tous mes essais. Comment cela fonctionne-t-il, rontudiuuuuuuuuu, comment cela fonctionne-t-il ?   :umnik:

#63 abg

abg

    L'ABG pour les civilisés


Posté 14 septembre 2012 - 08:48

Voir le messageDaneel53, le 13 septembre 2012 - 20:55, dit :

Comment cela fonctionne-t-il, rontudiuuuuuuuuu, comment cela fonctionne-t-il ?   :umnik:

[mode "je remue le couteau dans la plaie"]Tu ne vas pas te laisser tenir en échec par cet exe antédiluvien :P

En essayant d'être plus constructif : Ces données ne seraient-elles pas recopiées dans la sauvegarde ? (Auquel cas il faut obligatoirement passer par un perso neuf pour tester les modifs)
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#64 Daneel53

Daneel53

Posté 15 septembre 2012 - 18:11

Il y a certes des choses dans la sauvegarde, mais pas tout. Par exemple, si le nom des objets possédés s'y trouvent en clair (hache, cuirasse...), la matière dont ils sont faits n'est pas écrite en clair. Ce qui fait que si on modifie "Argent" par "Pognon" dans Fall.exe (tu peux faire l'expérience), une hache en argent devient une hache en pognon. Il y a donc bien accès aux chaines de Fall.exe, y compris pour l'affichage d'objets présents dans les sauvegardes. Mais par ailleurs j'ai essayé de patcher les offsets des phrases qui n'ont rien à voir avec les sauvegardes, comme le "Pouvez pas util. ca" qui s'affiche quand on veut utiliser une arme dans l'inventaire, ou plus simplement le jour de la semaine ou le mois qui s'affichent quand on clique sur la boussole, toujours sans succès.

J'ai aussi, après avoir patché les offsets des matières principales, pensé à aller tuer un sbire qui m'attend à la sortie de l’auberge à 2h du matin, en partant du principe de les objets récoltés sur son cadavre sont générés aléatoirement, donc ne peuvent pas se trouver dans ma sauvegarde. Et le résultat fut le même : malgré la modification de tous les offsets des matières pour faire sauter les deux premières lettres, tous les objets proposés étaient écrits avec des noms de matière complets.

Non, je suis complètement dans le brouillard... Alors là,en cette fin de semaine,  je laisse tomber et j'essaie de ne plus penser à ce problème. Quand l'envie reviendra, je referai d'autres essais, mais pour le moment, basta !

Modifié par Daneel53, 15 septembre 2012 - 18:11.


#65 Daneel53

Daneel53

Posté 19 septembre 2012 - 20:20

Alors... on s'est tous pris un ch'ti coup de mou post vacances d'été ? Plus personne dans le coin ? Z'avez raison, faut parfois lever le pied. Le PFD a BEAUCOUP progressé depuis un an, on peut bien souffler un peu.

Pour ma part je continue ma désintoxication de Fall.exe, et ça va plutôt bien. Je ne pense pratiquement plus à cette histoire d'offsets, et c'est tout aussi bien, je recommence à dormir à peu près normalement. Un jour, peut-être pas si lointain, ça me reprendra, mais pour l'instant je laisse tomber.

Allez, à plus tard, portez vous bien.

#66 Porygon

Porygon

Posté 19 septembre 2012 - 22:01

Oui beaucoup moins de temps maintenant, concentration sur les études et puis on reviendra à ce foutu FALL.EXE à un autre moment, ce n'est que partie remise. Quoique là j'ai un doute sur le vainqueur, enfin bon peut-être qu'un jour un génie de l'hexadécimal passera par là et nous réglera ça en deux temps trois mouvements ! Sait-on jamais :sorcerer: .

#67 Daneel53

Daneel53

Posté 21 septembre 2012 - 22:47

En attendant ce jour incertain, voici toujours Fall.exe accentué. Ben voui, on était tellement obnubilés par cette histoire d'offsets qu'on en oublie les fondamentaux : l'accentuation !

A ajouter au paquet cadeau du futur PFD 0.28 !

Fichier(s) joint(s)

  • Fichier joint  FALL.7z   431,15 Ko   7 téléchargement(s)


#68 Daneel53

Daneel53

Posté 01 décembre 2012 - 13:01

Bonjour à tous.

Le 6 novembre Elenthil nous a signalé un horrible bug du PFD 0.28 au démarrage d'une nouvelle partie, et le coupable a été rapidement identifié : Fall.exe, puisqu'il suffisait de remettre le Fall.exe du PFD 0.27 pour corriger le problème.

Entre les versions 0.27 et 0.28 Fall.exe a été intégralement accentué, donc ça me faisait mal au foie de tout enlever. Après un retour en arrière progressif de l'accentuation avec un éditeur hexa, j'ai fini par trouver LE mot qui met le souk au démarrage d'une nouvelle partie.

Donc, qu'on ne le note définitivement : IL NE FAUT PAS accentuer le mot "region" de l'entrée 2192; Sinon en interne ça devient "r<gion", et visiblement fall.exe n'aime pas ça du tout. Pour faire bonne mesure, j'ai aussi restauré le mot "stereo" qui se trouve en 2199, car c'est peut-être aussi un mot programmatique et non un mot du jeu à traduire.

Voici donc ci-dessous le fall.exe du PFD 0.28 corrigé. Ancestral Ghost, peut-être faut-il régénérer le PFD 0.28 avec ce nouveau fichier, parce que le bug est vraiment trop énorme.

Bon jeu !

Fichier(s) joint(s)



#69 abg

abg

    L'ABG pour les civilisés


Posté 01 décembre 2012 - 19:06

Félicitations :good:
Antoninus Bibulus Glaber
Coaching de PNJs chez Morrowind Renaissance

#70 papill6n

papill6n

    RatZaïïïïï !!!


Posté 02 décembre 2012 - 00:16

Sincèrement félicitations pour ta détermination Daneel' !

#71 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 02 décembre 2012 - 23:05

MAJ Corrective demain. Merci d'avoir débogué ça.

#72 Porygon

Porygon

Posté 23 mai 2013 - 20:09

Bonsoir à tous !

Je reviens après plusieurs mois d'absence pour vous dire que j'ai encore un peu bidouillé cette histoire de table en refaisant les changements suivant :  

Entrée 0619, Fer, Adr0 = 29554, AdrN = 29570, Séquence de 4 mots
Entrée 0619, Fer, Adr0 = 29650, AdrN = 29666, Séquence de 4 mots
Entrée 0619, Fer, Adr0 = 29710, AdrN = 29726, Séquence de 4 mots
Entrée 0619, Fer, Adr0 = 1763180, AdrN = 1763196, Séquence de 4 mots
Entrée 0619, Fer, Adr0 = 1776218, AdrN = 1776250, Séquence de 8 mots
Entrée 0619, Fer, Adr0 = 1791174, AdrN = 1791206, Séquence de 8 mots
Entrée 0619, Fer, Adr0 = 1805404, AdrN = 1805424, Séquence de 5 mots
Fin du fichier---------
Entrée 0627, Cuir, Adr0 = 1025680, AdrN = 1025704, Séquence de 6 mots
Entrée 0627, Cuir, Adr0 = 1776354, AdrN = 1776390, Séquence de 9 mots

Je pensais l'avoir mal fait la première fois mais même en prenant mon temps et en changeant à chaque fois d'exécutable ça ne fonctionne toujours pas. Voilà donc ce message ne fait pas avancer grand chose si ce n'est qu'il confirme que ces adresses ne sont apparemment pas bonnes.

#73 Daneel53

Daneel53

Posté 23 mai 2013 - 20:52

Hé, bonsoir messire Porygon !

Que ce message est cruel ! Moi qui avait presque réussi à oublier cette sombre histoire d'offsets, voilà que tu me remets en mémoire cet échec cuisant. AAARRRRRRRGHH !

Bon, on est d'accord : cette histoire est totalement incompréhensible et assez désespérante. Un jour peut-être, si je n'ai plus rien d'autre à faire, je ré-attaquerai le sujet... mais j'en doute.

#74 Ancestral Ghost

Ancestral Ghost

    Chasseur furtif


Posté 25 octobre 2015 - 13:29

Bon, apparement Interkarma (Celui qui a déjà fait plusieurs outils pour Daggerfall et qui desormais le porte sous Unity) devrait pouvoir remédier au problème. Je tiens cette information de notre homologue allemand.

#75 Daneel53

Daneel53

Posté 17 février 2017 - 17:53

Citation

Un jour peut-être, si je n'ai plus rien d'autre à faire, je ré-attaquerai le sujet... mais j'en doute.

J'ai bien fait de ne pas écrire un truc définitif du style "je laisse tomber le sujet et n'y reviendrai plus jamais".

Près de quatre ans ont passé et, après avoir transféré les DFTools dans un logiciel de développement compatible des OS 64 bits, je réattaque le problème. Cette fois j'oublie cette histoire d'offsets et j'attaque l'ensemble Dosbox-Fall.exe à coups de debugger externe.

Je sais que plus personne ne lit plus ce qu'il se passe ici, mais je tiendrai quand même un mini journal pour vous mettre au courant de mes découvertes qui pourraient servir à d'autres plus tard. Dans l'immédiat je retourne me plonger dans des cours d'assembleur x86 (mon Dieu que c'est vieux !) pour essayer de comprendre ce que j'ai vu hier avec un logiciel libre qui s'appelle Cheat Engine 6.6.

A suivre... :)

Modifié par Daneel53, 17 février 2017 - 17:56.





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

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