obj: Profils pour X52: explication: changer le nom des modes avec un éditeur hexadécimal
But, Exemple: Faire que quand on change le commutateur de mode, c'est "Navigation", "Combat air" "Combat air shift" qui s'affaiche au lieu d'un bête "Mode 1" ou d'un ridicule "Mode 2 + petit doigt".
NB: je crois que pour le X36 et le X45, le logiciel est le même alors cette methode devrait fonctionner aussi pour eux.
Bonjour,
Sur le MFD du X52, on a 3 zones d'affichages: en haut l'affichage du mode sélectioné, au millieu un afficheur 3*16 caractères, en bas un chrono/horloge.
En fonctionnement profil chargé, l'afficheur 3 * 16 affiche le nom de mode sur la première ligne.
Or le logiciel de programmation sst ne propose pas la modification du nom du mode. Le mode 1 s'appelle toujours "Mode 1", le MFD affiche donc inutilement deux fois la même information.
J'ai téléchargé des profils en anglais et j'ai constaté que les modes shiftés s'appelaient "Mode X + Pinkie" au lieu de "Mode X + petit doigt" en Français (logique).
J'en ai conclu que les noms de modes sont modifiables dans les fichiers ".dat" de profils.
Après lecture de ce messages, vous devriez être capable de changer vous-mêmes le nom des modes.
Ce week-end j'ai donc utilisé un éditeur hexa (indispensable), comparé plusieurs profils, pour comprendre où se trouvent les informations qui nous interressent et comment sont elles structurées.
Pour les impatients, si le nom des modes que vous voulez utiliser, sont de taille inférieure ou égale à celle des noms d'origine, recherchez la chaine 00 4D 00 6F 00 64 00 65 00 20 00 31 (=".M.o.d.e. .1" ). Attention les points n'en sont pas ce sont des NULL (00h). Puis remplacez les lettres que vous souhaitez.
Mais si 6 caractères, ça ne vous suffit pas, lisez la suite.
Dans la zone de fichier qui nous interresse dans notre fichier d'origine, vous trouverez toujours ceci:
pré-visualisation texte (Attention les points représentent des valeurs NULL ou non affichables:
.........M.o.d.e. .1...........M.o.d.e. .2...........M.o.d.e. .3.......*...M.o.d.e. .1. .+. .p.e.t.i.t. .d.o.i.g.t.......*...M.o.d.e. .2..+. .p.e.t.i.t. .d.o.i.g.t.......*...M.o.d.e. .3. .+. .p.e.t.i.t. .d.o.i.g.t..
vue hexa du contenu réel: (Attention les adresses ne sont pas invariables et différent selon les fichiers)
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000960 00 00 00 00 00 0E 00 00 00 .........
00000970 4D 00 6F 00 64 00 65 00 20 00 31 00 00 00 01 00 M.o.d.e. .1.....
00000980 00 00 0E 00 00 00 4D 00 6F 00 64 00 65 00 20 00 ......M.o.d.e. .
00000990 32 00 00 00 02 00 00 00 0E 00 00 00 4D 00 6F 00 2...........M.o.
000009A0 64 00 65 00 20 00 33 00 00 00 04 00 00 00 2A 00 d.e. .3.......*.
000009B0 00 00 4D 00 6F 00 64 00 65 00 20 00 31 00 20 00 ..M.o.d.e. .1. .
000009C0 2B 00 20 00 70 00 65 00 74 00 69 00 74 00 20 00 +. .p.e.t.i.t. .
000009D0 64 00 6F 00 69 00 67 00 74 00 00 00 05 00 00 00 d.o.i.g.t.......
000009E0 2A 00 00 00 4D 00 6F 00 64 00 65 00 20 00 32 00 *...M.o.d.e. .2.
000009F0 20 00 2B 00 20 00 70 00 65 00 74 00 69 00 74 .+. .p.e.t.i.t
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000DDF0 00 .
0000DE00 20 00 64 00 6F 00 69 00 67 00 74 00 00 00 06 00 .d.o.i.g.t.....
0000DE10 00 00 2A 00 00 00 4D 00 6F 00 64 00 65 00 20 00 ..*...M.o.d.e. .
0000DE20 33 00 20 00 2B 00 20 00 70 00 65 00 74 00 69 00 3. .+. .p.e.t.i.
0000DE30 74 00 20 00 64 00 6F 00 69 00 67 00 74 00 00 t. .d.o.i.g.t..
|
explication de la structure des données:
Ceux qui ont déjà fait de l'édition auront compris que la zone de noms de mode est dans ce cas là coupée en deux (et c'est presque toujours le cas).
Le fichier est enregistré par mots de 16 bits, ici les valeurs étant toujours inférieures à 256, on a un octet sur 2 égal à 0.
On peut diviser la zone en 6 parties (1 par nom de mode) qui ont la même structure, que voici:
1°mot de 16 bits: NULL 2°:ID mode 3°: NULL 4°:nombre d'octets en en Hexa d'ici à la fin du nom de ce mode 5°: NULL 6°: début du nom du mode
Exemple du dessus avec Mode 1: NULL 1° mode NULL 14 octets sont à suivre NULL nom du Mode: "Mode 1"
hexa 00 00 00 00 00 00 00 0E 00 00 00 4D 00 6F 00 64 00 65 00 20 00 31
ASCII ".." ".." ".." ".." ".." ".M" ".o" ".d" ".e" ". " ".1"
Exemple du dessus avec Mode 3 + petit doigt:
NULL 6° mode NULL 42 octets sont à suivre NULL nom du Mode: "Mode 3 + petit doigt"
hexa 00 00 00 06 00 00 00 2A 00 00 00 4D 00 6F 00 64 00 65 00 20 00 31 00 20
ASCII ".." ".." ".." ".." ".." ".M" ".o" ".d" ".e" ". " ".3" ". "
hexa 00 2B 00 20 00 70 00 65 00 74 00 69 00 74 00 20 00 64 00 6F 00 69 00 67 00 74
ASCII ".+" ". " ".p" ".e" ".t" ".i" ".t" ". " ".d" ".o" ".i" ".g" ".t"
récap des ID de mode: 1° 2° 3° 4° 5° 6°
0000h 0001h 0002h 0004h 0005h 0006h Bah oui, ils comptent bizare chez Saitek, pour eux, après 2 il y a 4. |
Quelle valeur donner à "nombre d'octets..."?
1° tactique: compter; 2° tactique: "Mode 1" prend 6 caractères. 6*2+2=14=0Eh
Donc vous collez tout ce petit monde à la suite les uns des autres, vous rajoutez un NULL, et vous obtenez la structure globale de la zone de définition des noms.
Par contre n'ai pas réussi à trouver comment modifier la taille de la stucture globale de la zone, donc si vous ajoutez des caractères à un nom de mode, il faudra ABSOLUMENT en enlever à un autre.
Mais ce n'est pas un problème, il suffit de remplacer les ridicules "+ petits doigt" par des "shift" ou des "bis". Donc avant de modifier quoi que ce soit, notez l'offset du dernier octet de la structure, et quand vous avez fini les modifs, vérifiez qu'il est au bon endroit.
Maintenant il ne reste plus qu'a trouver où se trouvent ces données dans le fichier de profil:
En 9FF vous trouverez ceci:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
000009F0 00 .
00000A00 43 00 6F 00 6E 00 74 00 72 00 6F 00 6C 00 30 C.o.n.t.r.o.l.0 |
Il s'agit un début de suites de données qui ne doivent absolument pas changer de place.
Si votre profil est vierge ou pas trop compliqué, la zone des noms de mode commence quelques octets ou quelques dizaines d'octets plus avant.
Malheureusement, la structure de données ne rentre pas avant l'offset 9FF (même avec un profil vierge). La suite se trouve alors (beaucoup) plus loin, vers la fin du premier tiers du fichier. (lancer une recherche de chaine hexa pour la trouver).
Si le profil est complexe, il n'y a pas d'adresse fixe où chercher, mais la zone de déf des noms de mode est monobloc. Rechercher 00 4D 00 6F 00 64 00 65 00 20 00 31 (=".M.o.d.e. .1" ).
Message édité par guig2000 le 07-02-2006 à 00:03:39