Traduction d’Ultima Underworld

Réduire
X
 
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages
  • Hrvg
    Abandonwarriors


    • février 2007
    • 3263

    #31
    Envoyé par Sylvain_rocher Voir le message

    Ce que tu veux dire, c’est peut être déplacer la string dans une zone « morte » de l’EXE et rediriger l’appel à cette adresse ? Si oui, c’est plus chaud, mais faudrait que je vois si je trouve l’adresse de cette string en dur dans l’exe (généralement sur 4o). Si ça ça marche, ce serait encore plus simple à gérer en effet.
    oui, c'est que je pensais. Je reconnais que ce n'est pas très facile de trouver le pointeur.

    Commentaire

    • Sylvain_rocher
      Paladin


      • septembre 2024
      • 708

      #32
      Envoyé par Hrvg Voir le message
      oui, c'est que je pensais. Je reconnais que ce n'est pas très facile de trouver le pointeur.
      Je ferai un essai ce soir ou demain, ça serait vraiment le plus confortable !

      Commentaire

      • Hrvg
        Abandonwarriors


        • février 2007
        • 3263

        #33
        Ca sera facile de trouver les pointeurs avec IDA Pro free pour le fichier uw.EXE.
        Le pointeur de "You see" est à l'adresse : 0x27BC2 et sa valeur est : 02BD --> BD02.

        Commentaire

        • Sylvain_rocher
          Paladin


          • septembre 2024
          • 708

          #34
          Envoyé par Hrvg Voir le message
          Ca sera facile de trouver les pointeurs avec IDA Pro free pour le fichier uw.EXE.
          Le pointeur de "You see" est à l'adresse : 0x27BC2 et sa valeur est : 02BD --> BD02.
          Ah ouais, là on passe au niveau professionnel !!! Je connaissais pas cet outil !
          J’aurais tenté en effet un « simple » Ctrl+F de l’adresse de la string, sur 4o il y aurait eu peu de chance d’avoir bcp de résultats. J’imagine qu’à côté de l’adresse doit se trouver la taille de la string. Merci infiniment pour ce savoir, on sent l’expérience ! Il me tarde d’aller faire des essais !!

          J’ai l’impression qu’au final, je vais presque passé plus temps à la traduction de ces petites string que les 95% des phrases du jeu

          Faudra peut être aussi que je vois si je peux pas modifier la taille de l’allocation mémoire lors de la lecture des blocks de strings du fichier pour éviter des débordements et être plus libre dans la traduction. Pour l’instant je m’en sors sans trop de compromis, mais ça rend la phase de test plus pénible, car je dois m’assurer d’aller trouver l’événement dans le jeu qui affiche la dernière string pour être sûr que ça dépasse pas, ou bien attendre la cinématique aléatoire qui m’intéresse, sans garanti de la retrouver rapidement pour faire d’autres essais.
          Dernière modification par Sylvain_rocher, 26 septembre 2024, 09h21.

          Commentaire

          • Hrvg
            Abandonwarriors


            • février 2007
            • 3263

            #35
            J’ai l’impression qu’au final, je vais presque passé plus temps à la traduction de ces petites string que les 95% des phrases du jeu
            En effet, ces morceaux de phrases sont galères et en plus c'est inversé en anglais par rapport au français.
            J'ai regardé un peu le fichier uw.EXE. Et c'est que des morceaux de phrases. Par contre, j'ai vu par exemple : <bh:00>That <bh:00>You read the <bh:00>

            <bh:00>You read the <bh:00> Je supprimerai le "the" et attacher l’article au nom de l'objet ou autres.
            De même, tu peux inverser l'affichage des mots en inversant les pointeurs. Par exemple ; A = pointeur BD02, B = pointeur CD02 et C = pointeur DD02... Et qu'on veuille que la phrase sorte A C B =
            A= pointeur BD02 C = pointeur CD02 B = pointeur DD02
            Evidemment,ce n'est pas toujours possible.

            Faudra peut être aussi que je vois si je peux pas modifier la taille de l’allocation mémoire lors le lecture des blocks de strings du fichier pour éviter des débordements et être plus libre dans la traduction. Pour l’instant je m’en sors sans trop de compromis, mais ça rend la phase de test plus pénible, car je dois m’assurer d’aller trouver l’événement dans le jeu qui affiche la dernière string pour être sûr que ça dépasse pas, ou bien attendre la cinématique aléatoire qui m’intéresse, sans garanti de la retrouver rapidement pour faire d’autres essais.
            Je sais qu'on peut agrandir un EXE, mais des fois le jeu ne prend pas en charge l'ajout d'octets.

            Commentaire

            • Hrvg
              Abandonwarriors


              • février 2007
              • 3263

              #36
              C'est possible... Il suffit de trouver de l'espace et non utilisé par le jeu....
              Fichiers attachés

              Commentaire

              • Sylvain_rocher
                Paladin


                • septembre 2024
                • 708

                #37
                Envoyé par Hrvg Voir le message
                <bh:00>You read the <bh:00> Je supprimerai le "the" et attacher l’article au nom de l'objet ou autres.
                Je me rappelle plus ce que j’ai mis pour celle-la, mais ce que tu proposes n’est pas toujours possible sans effet de bord : ça dépend des string. Si j’ajoute l’article, il pourrait malheureusement s’afficher en double dans d’autres utilisation. Ici en l’occurrence le risque est de voir « Vous voyez 1 le livre ». Je ne vois pas où elle peut être utilisée dans le jeu pour le coup cette string … sûrement à un endroit spécial que je connais pas. Car il y a des strings équivalentes dans le fichier décoder pour la lecture de tous les objets type livre/ parchemin, et pour la lecture des plaques au mur par exemple, il y’a une string dans l’EXE que j’ai traduit par « Il est écrit », plutôt que « vous lisez »

                Envoyé par Hrvg Voir le message
                De même, tu peux inverser l'affichage des mots en inversant les pointeurs. Par exemple ; A = pointeur BD02, B = pointeur CD02 et C = pointeur DD02... Et qu'on veuille que la phrase sorte A C B =
                A= pointeur BD02 C = pointeur CD02 B = pointeur DD02
                Evidemment,ce n'est pas toujours possible.
                Ce serait idéal, mais c’est plus dur à investiguer pour trouver les pointeurs. Peut être que ton outil aidera ? Et sûrement que cet ordre doit être défini à côté des adresses des fameuses string comme « you see ».

                Envoyé par Hrvg Voir le message
                Je sais qu'on peut agrandir un EXE, mais des fois le jeu ne prend pas en charge l'ajout d'octets.
                j’ai déjà essayé ça, et ça crash immédiatement au chargement du jeu. Donc je pense pas que ce soit possible. Mais comme les strings sont dans un fichier à part, j’imagine qu’ils sont chargés en RAM non ? Donc ça ne devrait pas influencer l’EXE si ? Ou alors je me plante dans ma vision du truc … si ça se charge dans l’EXE, j’aurais du mal à identifier une zone morte pour y déplacer les strings comme You see…
                Dernière modification par Sylvain_rocher, 26 septembre 2024, 10h12.

                Commentaire

                • Hrvg
                  Abandonwarriors


                  • février 2007
                  • 3263

                  #38
                  Ce serait idéal, mais c’est plus dur à investiguer pour trouver les pointeurs. Peut être que ton outil aidera ? Et sûrement que cet ordre doit être défini à côté des adresses des fameuses string comme « you see ».
                  IDA donne tous les pointeurs... Le problème (minime), c'est qu'il y a des fois plusieurs même valeurs et il peut y avoir une seule valeur qui est le pointeur ou plusieurs. Mais, avec des tests et les notes qu'on écrit... On trouve les vrais pointeurs. Je vais t'envoyer IDA en MP.

                  Je me rappelle plus ce que j’ai mis pour celle-la, mais ce que tu proposes n’est pas toujours possible sans effet de bord : ça dépend des string. Si j’ajoute l’article, il pourrait malheureusement s’afficher en double dans d’autres utilisation. Ici en l’occurrence le risque est de voir « Vous voyez 1 le livre ». Je ne vois pas où elle peut être utilisée dans le jeu pour le coup cette string … sûrement à un endroit spécial que je connais pas. Car il y a des strings équivalentes dans le fichier décoder pour la lecture de tous les objets type livre/ parchemin, et pour la lecture des plaques au mur par exemple, il y’a une string dans l’EXE que j’ai traduit par « Il est écrit », plutôt que « vous lisez »
                  Tu as raison, je n'avais pas pensé au "un/1" et "le".

                  j’ai déjà essayé ça, et ça crash immédiatement au chargement du jeu. Donc je pense pas que ce soit possible.
                  As-tu modifié les valeurs de la première ligne de uw.EXE ?

                  Mais comme les strings sont dans un fichier à part, j’imagine qu’ils sont chargés en RAM non ? Donc ça ne devrait pas influencer l’EXE si ? Ou alors je me plante dans ma vision du truc … si ça se charge dans l’EXE, j’aurais du mal à identifier une zone morte pour y déplacer les strings comme You see…
                  Les zones non utilisées, mais pas toujours, sont 00 00 00 00...
                  Je voulais tester en écrivant "Vous voyez" sur les 00 à la fin du fichier. Le problème, c'est que le pointeur était sur trois octets au lieu de deux.

                  Commentaire

                  • Sylvain_rocher
                    Paladin


                    • septembre 2024
                    • 708

                    #39
                    Envoyé par Hrvg Voir le message
                    As-tu modifié les valeurs de la première ligne de uw.EXE ?
                    non, j’avais juste essayer brutalement d’ajouter un octet dans les strings trop courtes, j’ai pas cherché plus loin… tu me dis ça car tu penses qu’il y a la taille totale dans la 1ere ligne ? Après c’est quand même galère d’augmenter le fichier, sauf si c’est à la fin, sinon ça pete tous les pointeurs.

                    Envoyé par Hrvg Voir le message
                    Les zones non utilisées, mais pas toujours, sont 00 00 00 00...
                    Je voulais tester en écrivant "Vous voyez" sur les 00 à la fin du fichier. Le problème, c'est que le pointeur était sur trois octets au lieu de deux.
                    J’avais déjà identifié qu’il y avait des grosses zones de 0, par qu’à la fin de l’exe il me semble. Du coup dans ton essai, tu as mis dans une zone accessible sur 3o c’est ça ?
                    Mais question de noob : si dans l’exe, il y a des zones à 00, le seul risque est que le jeu interprète cette zone de 00 c’est bien ça ? Le risque est donc faible de l’altérer vu la nature des octets…

                    Commentaire

                    • Sylvain_rocher
                      Paladin


                      • septembre 2024
                      • 708

                      #40
                      Envoyé par Hrvg Voir le message
                      C'est possible... Il suffit de trouver de l'espace et non utilisé par le jeu....
                      Trop chouette !! Tu as du modifier quelque part aussi la longueur de la string à lire à la nouvelle adresse non ? Ou bien de l’encadrer par des octets 00 suffit ?

                      Commentaire

                      • Hrvg
                        Abandonwarriors


                        • février 2007
                        • 3263

                        #41
                        non, j’avais juste essayer brutalement d’ajouter un octet dans les strings trop courtes, j’ai pas cherché plus loin… tu me dis ça car tu penses qu’il y a la taille totale dans la 1ere ligne ? Après c’est quand même galère d’augmenter le fichier, sauf si c’est à la fin, sinon ça pete tous les pointeurs.
                        C'est à la fin du fichier, mais ça n'ira pas, car le pointeur sera sur 3 octets au lieu de 2.

                        J’avais déjà identifié qu’il y avait des grosses zones de 0, par qu’à la fin de l’exe il me semble. Du coup dans ton essai, tu as mis dans une zone accessible sur 3o c’est ça ?
                        Je m'excuse, mais je ne comprends pas 3o. Je l'ai écrit à 68 octets de You see (le premier).

                        Mais question de noob : si dans l’exe, il y a des zones à 00, le seul risque est que le jeu interprète cette zone de 00 c’est bien ça ? Le risque est donc faible de l’altérer vu la nature des octets…
                        Le problème, c'est qu'il y a des EXE avec des blocs, mais qui ont aussi des pointeurs et qui peuvent être modifié. Mais, je sais pas reconnaître ce genre d'EXE.
                        D'autres EXE ne prennent pas en charge les 00, Ce qui est vraiment gênant. C'est impossible de tricher...
                        D'autres EXE prennent en charge les 00, même s'ils sont inutiles et là, c'est parfait. Mais, il y a des fois des 00 qui servent au jeu. Par exemple comme ce style jeu : Tu as les compétences qui augmentent, il y a aussi les sauvegardes qui s'inscrivent dans L'exe au lieu de fichiers. Et autres. On le voit parfois par l'affichage ou quand on joue. Le jeu change. On se dit : Tiens, je n'avais pas ceci ou cela...

                        Commentaire

                        • Hrvg
                          Abandonwarriors


                          • février 2007
                          • 3263

                          #42
                          Trop chouette !! Tu as du modifier quelque part aussi la longueur de la string à lire à la nouvelle adresse non ? Ou bien de l’encadrer par des octets 00 suffit ?
                          J'ai remplacé une série de 00 00 par Vous voyez. Mais, il y avait des 00 qui étaient utilisés, j'ai dû le déplacer plus sur la droite. Non, juste la valeur du pointeur.

                          Commentaire

                          • Hrvg
                            Abandonwarriors


                            • février 2007
                            • 3263

                            #43
                            Tu as du modifier quelque part aussi la longueur de la string à lire
                            Je ne comprends pas trop. Je n'ai pas touché à une chaîne, ce sont des 00 qui sont logiquement nuls, mais pas toujours.

                            Commentaire

                            • Hrvg
                              Abandonwarriors


                              • février 2007
                              • 3263

                              #44
                              Regarde :
                              + 76 octets --> 4C + 02BD = 0309
                              Fichiers attachés

                              Commentaire

                              • Sylvain_rocher
                                Paladin


                                • septembre 2024
                                • 708

                                #45
                                Envoyé par Hrvg Voir le message
                                Je m'excuse, mais je ne comprends pas 3o. Je l'ai écrit à 68 octets de You see (le premier).
                                Désolé, je croyais que tu disais que le pointeur était sur 3o.

                                Envoyé par Hrvg Voir le message
                                Le problème, c'est qu'il y a des EXE avec des blocs, mais qui ont aussi des pointeurs et qui peuvent être modifié. Mais, je sais pas reconnaître ce genre d'EXE.
                                D'autres EXE ne prennent pas en charge les 00, Ce qui est vraiment gênant. C'est impossible de tricher...
                                D'autres EXE prennent en charge les 00, même s'ils sont inutiles et là, c'est parfait. Mais, il y a des fois des 00 qui servent au jeu. Par exemple comme ce style jeu : Tu as les compétences qui augmentent, il y a aussi les sauvegardes qui s'inscrivent dans L'exe au lieu de fichiers. Et autres. On le voit parfois par l'affichage ou quand on joue. Le jeu change. On se dit : Tiens, je n'avais pas ceci ou cela...
                                ah ouais, faut être prudent alors … ça peut être galère à identifier les zones…

                                Commentaire

                                Chargement...