Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » Fichiers binaires g1m
Louis1469 Hors ligne Membre Points: 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


Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 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 !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Louis1469 Hors ligne Membre Points: 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...
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 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é.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Manolo Hors ligne Membre Points: 910 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]

Louis1469 Hors ligne Membre Points: 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 :/
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Louis1469 Hors ligne Membre Points: 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 !
Lephenixnoir Hors ligne Administrateur Points: 24700 Défis: 170 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.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 70 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