Posté le 09/02/2019 19:18
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
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 !
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...
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é.
Citer : Posté le 09/02/2019 20:34 | #
tu peux faire ça :
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 :/
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.
Citer : Posté le 10/02/2019 00:28 | #
Merci Lephenixnoir j'ai réussi à faire ce que je voulais grâce à toi !
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.