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 - Projets de programmation


Index du Forum » Projets de programmation » Un compresseur d'addins pour Graph Math+ [Work In Progress - Mais problème que je ne comprends pas]
Slyvtt Hors ligne Maître du Puzzle Points: 2725 Défis: 17 Message

Un compresseur d'addins pour Graph Math+ [Work In Progress - Mais problème que je ne comprends pas]

Posté le 03/11/2025 20:15

Hello,

une fois n'est pas coutume, c'est un addin de type utilitaire que je suis en train de programmer.
Mais qu'arrive-t-il donc à Papy Sly se demande la foule estomaquée !!! Rien, juste une immense frustration d'avoir l'impression de tout le temps devoir retirer des addins pour en mettre d'autres sur la Graph Math+, avec ses "seulement" 4,5Mo de flash réservé à l'utilisateur (mémoire de stockage).

Bref, je me suis dit que je ne devais certainement pas être le seul dans ce cas et j'ai donc lancé le projet "Squish It !!" dont les sources sont sur le dépôt de la forge ici.

Le programme permet de compresser les fichiers G3A sous un format propriétaire basé sur la compression zlib que j'avais à l'époque mis en place sur Casio pour le portage de la SDL/SDL_image. La compression génère donc un fichier G3Z de taille réduite. On est en moyenne à un ratio de compression de l'ordre de 60%, ce qui est loin d'être négligeable, ceci revenant à avoir virtuellement une mémoire de stockage de ~10Mo (il faut un peu de marge pour pemettre les opérations de compression/décompression) au lieu des 4,5Mo de la machine.

Lorsque l'on a besoin de l'addin, il suffit en théorie de le décompresser, et on peut ensuite le lancer une fois qu'il a retrouvé sa forme de G3A reconnu par MPM.

Bon, il y a juste un petit (enfin gros) problème à ce stade : l'OS / MPM ne voit pas les fichiers G3A générés après la décompression, bien que ceux-ci soient bien présents sur la mémoire flash. Donc c'est un peu ballot et ça casse un peu le rêve.

Voici la manip:
- Si on part d'un addin par exemple OutRun.G3A (faisant 848Kb), on peut le voir dans MPM.bin via Tools (...) sur Graph Math+.
- Je lance mon addin SquishIt, je sélectionne le fichier OutRun.G3A, je fais la compression qui me génère le fichier OutRun.G3Z (312Kb).
- De retour dans MPM.bin via Tools (...), l'addin OutRun a bien disparu (normal, le G3A n'existe plus, il est remplacé par l'archive G3Z).
- On relance SquishIt cette fois pour décompresser le G3Z et revenir au G3A, ce qui se fait sans problème. SquishIt actualise les fichiers après la décompression, ne voit plus le G3Z (normal) et voit à nouveau bien le G3A (avec la bonne taille, il y a une vérification pendant la décompression).
- on quitte SquishIt pour retourner dans MPM.bin via Tools (...), mais là OutRun n'apparait pas dans la liste des addins présent sur la machine.
- si on va dans l'application "mémoire" de l'OS, on voit bien le fichier sur la flash dans la mémoire de stockage (normal).
- Pour pouvoir voir et lancer l'addin depuis MPM.bin, je n'ai trouvé qu'une seule méthode : copier l'addin décompressé en G3A sur mon PC puis le remettre sur la calculatrice, et là il apparaît bien dans le menu de MPM.bin via Tools (...).

Bref, c'est à s'arracher les cheveux, j'ai la preuve que le G3A est fonctionnel puisque le passage avec le PC se fait sur la base d'addins compressés puis décompressés.

J'ai essayé de faire une connexion USB sans déplacer les fichiers, mais sans succès, dans ce cas MPM ne voit pas les G3A décompressés.

Bref, je comprends pas ce qui peut se passer de différent entre la copie depuis un PC et l'écriture sur la flash depuis la calculatrice.

Si quelqu'un a des idées, je suis preneur.

Attention si vous testé l'addin SquishIt, j'ai vérifié pas mal de chose, mais c'est du WIP (notamment sur Graph 90+E il plante à la phase d'effacement du fichier source G3A ou G3Z selon si compression ou décompression).

Fichier joint


Parisse Hors ligne Membre Points: 612 Défis: 0 Message

Citer : Posté le 03/11/2025 20:53 | #


Khicas fait à peu près ça avec un petit addin lanceur qui est au format g3a (et donc visible par MPM) et se charge de la décompression en RAM, et deux fichiers d'extension mzs qui contiennent le code de khicas compressé (la compression est faite sur le PC). Il y a 2 fichiers parce que je charge le fichier compressé en RAM et qu'il n'y aurait pas assez de place pour tout faire d'un coup en RAM.
Le lanceur fait en plus une vérification de la signature RSA du code de khicas qui n'aurait pas lieu d'être ici.
On pourrait imaginer un addin lanceur commun qui affiche la liste des g3z et gère la décompression en RAM et le lancement.
Exécutables: https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/khicasio.html#sec4
Source: https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/mp.tgz
Lephenixnoir Hors ligne Administrateur Points: 25440 Défis: 174 Message

Citer : Posté le 03/11/2025 20:57 | #


On pourrait imaginer un addin lanceur commun qui affiche la liste des g3z et gère la décompression en RAM et le lancement.

On devrait même en faire une feature de mpm.bin, comme ça c'est invisible !

[Il faut toujours (désolé encore pour le délai) que je comprenne pourquoi le setup mémoire de KhiCAS plante avec d'autres add-ins pour éviter que tu aies à distribuer un mpm.bin différent.]

mpm.bin fait vraiment Bfile_find* donc y'a des étrangetés à debugger. Le fait que tu le voies après l'écriture est bon signe au moins.
Mon graphe (27 Juin): (MQ || Rogue Life) ; serial gint ; passe gint 3 ; Azur ; ...) || (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 - 2025 | Il y a 89 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