Forum Casio - Discussions


Index du Forum » Discussions » Fichiers binaires g1m
Louis1469Hors ligneMembrePoints: 7 Défis: 0 Message

Fichiers binaires g1m

Posté le 09/02/2019 19:18

Bonjour,

Je viens ici pour vous exposer mon problème :
Alors voilà ça fait plusieurs heures que je cherche sur internet comment fonctionne l'en-tête des fichiers g1m pour un projet personnel et j'ai compris pas mal de valeurs sauf les octets 0x0E et 0x14.

J'ai joint une photo des valeurs hexadécimales d'un programme vide nommé A

Si quelqu'un s'y connait merci par avance pour son aide

Fichier joint


LephenixnoirEn ligneAdministrateurPoints: 13834 Défis: 136 Message

Citer : Posté le 09/02/2019 19:22 | #


SimLo a documenté tout ça, voici une copie qui documente le header standard (premiers 32 octets), la partie sur le format g1a ne t'intéresse pas, je présume.

https://bible.planet-casio.com/simlo/chm/v20/fx9860_G1A.htm

Pour les programmes, tu as la suite ici :

https://bible.planet-casio.com/simlo/chm/v20/fx_legacy_PRGMFileFormat.htm

Fouiller dans le dossier te révélera d'autres informations.

Les deux sont donc des checkums, bien joué pour voir trouvé le reste !
Rise.
Louis1469Hors ligneMembrePoints: 7 Défis: 0 Message

Citer : Posté le 09/02/2019 19:29 | #


Merci pour ta réponse, je vais regarder ça tout de suite !

Ajouté le 09/02/2019 à 19:40 :
Je viens de regarder, et sur le premier lien pour l'octet 0x0E on indique qu'il vaut : LSB de la taille du fichier (à l'offset 0x13)) + 0x41
Mais pour ma part j'ai :
La valeur A7 en 0x13 donc 58 si inversée
La valeur 00 en 0x41 donc FF si inversée
Et la somme des 2 fait 58 + FF = 157
Si je l'inverse à nouveau j'obtient EA7
Déjà je pense que je fais mal la procédure car j'obtient une valeur à 3 chiffres...

Merci de m'éclairer

Ajouté le 09/02/2019 à 20:04 :
C'est bon je viens de comprendre mon erreur je prenait l'offset 0x41 au lieu d'ajouter simplement 41...
LephenixnoirEn ligneAdministrateurPoints: 13834 Défis: 136 Message

Citer : Posté le 09/02/2019 20:34 | #


Tu as été plus rapide que moi !

Il s'agit bien d'une constante. Par ailleurs dans ton calcul, la somme est modulo 8 bits donc 0x58 + 0xff vaut 0x57, ce qui aurait donné 0xa8 en inversé.
Rise.
ManoloHors ligneMembrePoints: 861 Défis: 13 Message

Citer : Posté le 09/02/2019 20:34 | #


tu peux faire ça :
[img=center]https://www.planet-casio.com/files/forums/En_tete-15598.png[/img]

Louis1469Hors ligneMembrePoints: 7 Défis: 0 Message

Citer : Posté le 09/02/2019 21:47 | #


Merci à vous !

Par contre en testant le fichier je me suis rendu compte que j'avais oublié un paramètre :
C'est le décalage de 0x45 sur 4 octet. Sur la bible casio il est marqué qu'il dépend de la taille du programme mais je ne vois pas trop comment le trouver :/
LephenixnoirEn ligneAdministrateurPoints: 13834 Défis: 136 Message

Citer : Posté le 09/02/2019 22:26 | #


Il y a deux choses différentes ici : la valeur, et l'endroit où elle est stockée.

La valeur est la taille du fichier moins 0x4c, ça c'est facile à obtenir.

L'endroit où elle est stockée, c'est à la position 0x45 ; il faut donc voir ça comme 4 octets consécutifs aux positions 0x45..0x48. La subtilité c'est que ce n'est pas un multiple de 4, du coup utiliser un int pour y accéder échouera sur les architectures ne supportant pas les accès non alignés. C'est pour ça que SimLo consille de ne pas lire ce champ avec un int ; c'est une subtilité d'implémentation destinée aux programmes manipulant ce type de fichiers, et ça n'a pas grand-chose à voir avec le format à proprement parler.
Rise.
Louis1469Hors ligneMembrePoints: 7 Défis: 0 Message

Citer : Posté le 10/02/2019 00:28 | #


Merci Lephenixnoir j'ai réussi à faire ce que je voulais grâce à toi !
LephenixnoirEn ligneAdministrateurPoints: 13834 Défis: 136 Message

Citer : Posté le 10/02/2019 09:54 | #


Super ! N'hésite pas à nous raconter ce que tu fais de fou avec ce format.

Si tu as besoin de faire des choses plus compliquées sans vouloir réinventer la roue, tu peux chercher les outils de Cakeisalie5 (notamment mcsutils) qui implémentent ces formats de façon réutilisable.
Rise.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 38 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd