Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1690 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Edition d'offset pour string table

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Edition d'offset pour string table

n°1567600
celestus
Posté le 31-05-2007 à 05:34:43  profilanswer
 

Salut à tous.
Voici mon problème.
 
Je suis entrain de faire un patch français pour Command & Conquer First Decade.
J'ai quasiment finis, il ne me reste qu'un seul fichier à traduire : le fichier des chaînes string de caractères de C&C1.
 
En gros, dans ce fichier, il y a tous les textes qu'utilise l'.exe de base (nom des pays, titres, options, nom des véhicules, texte de l'écran des options, etc.)
 
Ce fichier se nomme conquer.eng
 
Globalement il se compose comme ça :
 
De l'offset 00 00 00 00 à l'offset 00 00 05 CB
il y a des pointeurs vers les premiers caractères de chaque chaîne
 
De l'offset 00 00 05 CC à l'offset 00 00 37 56 (= la fin)
il y a les chaînes de caractère juxtaposées, sachant que 0D = sauter une ligne et 00 = fin de ligne
 
Je clarifie :
00 00 06 AX: 20 25 64 00 56 6F 75 73 20 61 76 65 7A 20 61 74 : %d.Vous avez at
00 00 06 BX: 74 65 69 6E 74 20 6C 65 20 67 72 61 64 65 20 64 :teint le grade d
00 00 06 CX: 65 00 4F 75 69 00 4E 6F 6E 00 50 72 88 74 00 41 :e.Oui.Non.Prêt.A
 
Chaque chaîne de texte se finit par un 00 qui correspond à un point.
 
Au niveau de la table d'allocation, depuis le premier octet, il faut mettre le premier caractère de la chaîne, dont le premier truc juste après ce 00 (et il faut inverser les octets, normal quoi).
 
Concrètement, pour faire le pointeur du "Oui" et du "Non" de l'exemple ci-dessus, je vais devoir écrire
C2 06 C6 06 dans ma table d'allocation en première partie de fichier.
_____________________________________________________________
 
Alors voilà.
J'ai essayé de tout faire à la main, j'y ai passé des heures, mais j'ai du faire une gaffe parce que ça ne marche pas correctement.
 
J'ai donc extrait avec un programme (qui ne permet pas d'éditer malheureusement) cette table en TXT, ça se présente comme ça
 
%3d.%02d
Upgrade
Upgrade Structure
Upgrade
Sell
Sell Structure
Demolish Structure
Repair
Repair Structure
Repair
You:
Enemy:
Buildings Destroyed By
Units Destroyed By
Tiberium Harvested By
Score: %d
You have attained the rank of
Yes
No
Ready
Holding
Accomplished
 
Etc.
 
Donc en héxadécimal, j'ai tous mes caractères juxtaposés séparés par des 0D0A (= un saut de ligne pour le format TXT).
 
Je vais traduire sur ce TXT, ce sera moins prise de tête (faut mettre les caractères DOS mais je sais faire c bon).
 
Ensuite j'utiliserai Winhex pour transformer les enchaînements ODOA en 00
 
Et mon problème, c'est pour me taper les pointeurs du début.
Alors voilà.
=> Je voudrais faire un batch
- qui ouvre mon fichier TXT,
- qui repère dedans les octets double 00 (sachant qu'il n'y en a jamais 2 à la suite)
- qui répertorie la position (offset) de l'octet juste après le 00
- et qui écrit cette position sur 4 octet en les inversant (5C 6A => 6A 5C par exemple) dans un fichier (n'importe lequel on s'en fout)
 
Comme ça, j'aurai plus qu'à prendre ma table de pointeurs => Copié collé
et mes chaînes de caractères => Copié collé
 
et c'est bon !
 
Quelqu'un peut-il donc m'expliquer comment on stocke des données offset octet en variable et comment on écrit dans un fichier avec le batch DOS windows svp ?
 
 :pt1cable:  :pt1cable:  :pt1cable:

mood
Publicité
Posté le 31-05-2007 à 05:34:43  profilanswer
 

n°1567601
celestus
Posté le 31-05-2007 à 05:51:23  profilanswer
 

J'ai peur de pas être clair en fait.
 
Il me faut un programme qui aille répertorier une position d'octet dans un fichier.
 
L'ennui, c'est que je n'ai jamais su comment on faisait pour faire "rentrer" un batch dans un fichier pour le lire.
 
Si quelqu'un connaît les principales fonctions, qu'il me les dise par pitié...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Edition d'offset pour string table

 

Sujets relatifs
REPAIR TABLE massif ?probleme: ajouter une valeur taper dans un formulaire dans une table
[Mysql] Changer l'ordre des champs d'une table[C] fonction pour remplacer du texte dans une string
VB2005 : Conversion d'une valeur string en valeur numériquePb de Table en SWT
prendre 10 entrées aux hasard dans la table[MySQL] Recréer la table mysql.user
[oracle] nom de table en argument d'une procedure[BATCH] Supprimer les " d'un string [résolu]
Plus de sujets relatifs à : Edition d'offset pour string table


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR