Attention : cette antiquité n'est compatible qu'avec le fx-9860G SDK et n'est plus maintenue depuis 2015.
La bibliothèque C memory simplifie la manipulation de la mémoire. Elle permet entre autres d'utiliser des interfaces utilisateur, de charger et sauvegarder les fichiers automatiquement, d'utiliser des char * pour les adresses, tout en se passant de Bfile.
Une documentation en HTML est jointe à l'archive, très complète depuis la version 3. Celle-ci comprend quelques explications sur la mémoire, la liste des fonctions de memory et un court tutoriel pour l'utilisation de cette dernière.
N'oubliez pas d'inclure memory.h au début de votre programme et d'ajouter memory.c au projet.
Cette bibliothèque génère un code nativement compatible SH4.
Pour ceux qui utilisent encore les versions 1.1 ou 2, je les laisse dans les fichiers (données perdues...).
Fichiers
1. memory.zip : version 3.0
2. memory.zip : version 2.0
3. memory.zip : version 1.1
Les archives contiennent la source, le header, et la documentation HTML.
Changelog
Cliquer pour enrouler
13.06.2014
Ajout de la documentation de la version 3.
11.06.2014 -- Version 3.0
Compression de la transformation de l'adresse char * en FONTCHARACTER.
Ajout de l'affichage des erreurs et causes pour les développeurs.
29.05.2014
Correction de bugs détectés au niveau de l'allocation, qui généraient parfois une adresse FONTCHARACTER fausse et provoquaient systématiquement une erreur.
24.05.2014 -- Version 2.0
Ajout des fonctions d'interfacage et des fonctions automatisées.
Définition par define des fonctions basiques.
15.03.2014 -- Version 1.1
Ajouté un header à la bibliothèque.
La fonction memory_seekfile() (alias de Bfile_SeekFile) a été ajoutée.
Les doubles inclusions de headers sont évitées.
01.03.2014
Quelques bugs corrigé (inclusions de headers)
Pas non plus ça ! Autant dire que j'ai vérifié les moindres détails. La bibliothèque est bien inclue, ajoutée au projet, je compile quasi-systématiquement avec "rebuild all"...
Voici le code source complet (le fragment incriminé est dans le main).
C'est celui du démineur que je vient de sortir et auquel j'ajoute quelques fonctionnalités, dont sauvegarde de partie notamment.
Là en vrai, je commence à espérer que c'est vraiment un problème hyper subtil que je n'aurais pas pu voir venir tout seul, et pas juste un truc tout pourri que j'aurais du remarquer et qui me mettrait bien la honte...
edit : pour l'instant comme cela est apparent à la lecture du programme, l'ouverture d'une sauvegarde est implémentée mais pas l'enregistrement. Je suis bien conscient que ça n'a donc aucune utilité (pour l'heure), mais de toute façon, ce n'est pas ça qui pose problème
Oui ! Ça marche ! Merci infiniment du conseil, voilà un détail auquel je penserai à l'avenir
En revanche... J'ai toujours une erreur venue des tréfonds : "memory.h(22) : C2133 (E) Multiple parameter declarations", sur laquelle je n'ai pas réussi à trouver le moindre signe de documentation toujours à la ligne :
Either a parameter name is declared in a macro or function definition parameter list more than once or a parameter is declared inside and outside the function declarator.
Peut-être un souci sur la valeur de retour, essaie d'inclure fxlib.h dans memory.h et de remplacer unsigned short par FONTCHARACTER.
C'est quand même bizarre tout ça, la lib a jamais eu ce problème... '-'
Tu as essayé de compiler un exemple minimal qui utilise juste la lib dans un programme vide sur le SDK ? Si oui, alors je veux bien tester les fichiers.
De plus en plus curieux. Ce que je viens de mettre en pièce jointe compile sans souci.
Du coup... ça voudrait forcément dire qu'il y a quelque chose dans mon code source qui aurait par je ne sais quelle manipulation spatio-temporelle un effet quelconque sur la compilation de memory. Mmmmmmmh... "Il y a quelque chose de pourri au royaume de Casio."
C'est bien ce que je pensais donc, la lib marche bien en principe. Il y a donc deux possibilités :
1. Il y a un problème dans la lib', et ton programme le révèle.
2. Il y a un problème dans ton programme, et la lib' le révèle.
Je n'ai pas trouvé de problème évident en regardant dans ton code, mais je soupçonne que le caillou est là (pas par vanité, plutôt parce que la lib' a déjà utilisée pas mal de fois sans problème).
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