Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [SDK] MonochromeLib - une lib graphique monochrome
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

[SDK] MonochromeLib - une lib graphique monochrome

Posté le 09/06/2010 02:22

MonochromeLib, qu'est ce que c'est ?
MonochromeLib est une bibliothèque de dessin pour le SDK Casio Graph 85.
Elle fournit aux développeurs des fonctions optimisées pour tracer toute sorte de choses à l'écran.
Chaque fonction de MonochromeLib est bien plus rapide que son équivalent dans fxlib.h, et elle fournit de nombreuses fonctionnalités supplémentaires.

Comment l'utiliser
Pour utiliser la bibliothèque, copiez les 2 fichiers dans le dossier de votre projet, ajoutez MonochromeLib.c à votre projet (dans la fenêtre "Files in project" dans le SDK), ajoutez #include "MonochromeLib.h" au début de votre code.
Pour n'ajouter à votre projet que les fonctions dont vous avez besoin, chaque fonction est protégée par un #ifdef, et les #define de chaque fonction sont commentés par défaut.
Pour pouvoir utiliser une fonction, il suffit d'éditer MonochromeLib.h et de décommenter les #define des fonctions que vous voulez utiliser.
/!\ Important
Si vous rencontrez une erreur de compilation de ce type :
** L2310 (E) Undefined external symbol "_ML_pixel" referenced in "C:\...\CASIO\fx-9860G SDK\Projet\Debug\MonochromeLib.obj"
et que le #define de la fonction en question est bien actif dans MonochromeLib.h, alors il faut juste recompiler MonochromeLib.c
Pour cela, Utilisez la fonction Project > Rebuilt all dans le SDK. Si cela ne résoud pas le problème, supprimez le dossier Debug de votre projet, et recompilez normalement.

N'attendez plus !
Une documentation complète est maintenant fournie dans l'archive zip, en anglais et en français.


Questions récurrentes :

Problème : voici mon code, le compilateur ne veux pas le compiler :
unsigned char image[] = { ... };

ML_clear_vram();
ML_BMP_OR(image, 21, 42, 34, 34);
ML_clear_vram();

Solution : toutes les fonctions de MonochromeLib s'appellent en minuscule : les seules majuscules sont celles du "ML". Relisez la doc ou le wiki, et regardez l'orthographe exacte de la fonction.


Version actuelle : 22 novembre 2011
Télécharger MonochromeLib


Pages : Précédente1, 2, 3, 4Suivante
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 03/06/2014 22:30 | #


Tu as parfaitement raison Xavier59, l'erreur est présente dans le header et dans la doc.

MonochromeLib aurait bien besoin d'une mise à jour. Si vous pouviez m'aider à rassembler tous les trucs à corriger pour me faire une todo-list, je veux bien repasser dessus une dernière fois.
Après franchement si vous vous sentez d'y apporter vos modifications, je n'y vois aucun inconvénient. Je ne suis plus du tout présent et ne code plus rien pour calculette, donc si la lib continue d'être utilisée elle aura besoin de gens pour la maintenir. Je pense notamment à la compatibilité SH4, c'est le genre de truc dont on ne peut pas se passer.

Pour la todo-list, voici ce que j'ai pour le moment :
- ML_filled_ellipse_in_rect : corriger paramètres (header+doc)
- ML_bmp : il me semble qu'une des fonctions AND ne se comporte pas correctement
- ML_vram_adress : corriger en address (gérer rétro-compatibilité)
- ML_get_contrast : ne fonctionne pas
- Compatibilité SH4
- Fournir une todo-list et un changelog avec la release
Si vraiment motivé :
- Intégrer le module de texte que j'avais commencé
- Tester les performances d'autres algo pour les polygones pleins
- Ajouter une fonction ML_horizontal_scroll_area
- Ajouter une fonction de tracé de ligne large
- Inclure un convertisseur bitmap, ça évitera les prises de tête pour les débutants
- Enrichir la doc
- Commenter le code


@Eltoredo : Tu n'imagines pas à quel point ça me fait plaisir de voir que ce projet vieux de maintenant 4 ans est encore une référence
LephenixnoirEn ligneAdministrateurPoints: 14138 Défis: 136 Message

Citer : Posté le 04/06/2014 09:25 | #


Il faudrait que tu nous dises au moins quels algos tu utilises, on ne les connaît pas dans l'ensemble... du coup impossible de commenter le code, ou de l'optimiser -- si tenté qu'on le puisse encore.
Il me semble qu'Intelligide bosse sur une lib qui permet le mouvement, scroll, rotation de bitmaps.
Une version compatible SH4 de la lib existait déjà par ailleurs, avec le syscall qui convenait pour la VRAM.
Enfin, j'ai moi-même fait une lib de texte.

Au final si on croise tout, on a déjà de bonnes bases.
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 04/06/2014 09:47 | #


Pierrotll a écrit :
Tu as parfaitement raison Xavier59, l'erreur est présente dans le header et dans la doc.

MonochromeLib aurait bien besoin d'une mise à jour. Si vous pouviez m'aider à rassembler tous les trucs à corriger pour me faire une todo-list, je veux bien repasser dessus une dernière fois.


Sans rire? Tu veux bien refaire un tour avec nous? Cool. Dommage que tu aies quitté la programmation sur Casio par contre, t'étais un des meilleurs.

Pierrotll a écrit :
Après franchement si vous vous sentez d'y apporter vos modifications, je n'y vois aucun inconvénient. Je ne suis plus du tout présent et ne code plus rien pour calculette, donc si la lib continue d'être utilisée elle aura besoin de gens pour la maintenir.


J'ai des plans pour maintenir un GitHub avec cette lib, GrayscaleLib si elle marche de partout (et si je l'ai retrouvée) et ECode (plus une nouvelle lib graphique que je suis en train de mettre au point avec Siapran). Ca permettra aux gens de pouvoir trouver plus facilement les fonctions qu'il faut et ne pas avoir à gérer maintes et maintes versions du même fichier.

Pierrotll a écrit :
@Eltoredo : Tu n'imagines pas à quel point ça me fait plaisir de voir que ce projet vieux de maintenant 4 ans est encore une référence


Pierrot... N'importe quel projet que je fais commence par une inclusion de ML. C'est juste la lib la plus utilisée dans les projets en C ici.

Je me souviens d'une discussion avec toi où tu parlais d'une version ASM de la lib, est-ce toujours d'actualité? Gratter quelques cycles ici serait pas mal, surtout dans les fonctions de dessin de sprites.
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 28/08/2014 11:32 | #


J'ai commencé une FAQ, ce sera à compléter avec les questions/problèmes récurrents

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DarkysunHors ligneMembrePoints: 1746 Défis: 52 Message

Citer : Posté le 28/08/2014 15:30 | #


Bravo pour cette magnifique lib pierrotll
Sinon pour ton problème récurant en exemple il faudrait peut-être mettre display_vram(); pasque mettre en minuscule ne fais pas tout .
J'utilise tout le temps ta doc mais j'ai pas réussi à trouver le contraste max et le contraste min qui permet de faire de beaux effets de fondus comme sur ton Orton (un des mes jeux préférés ) les connais-tu ?
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message

Citer : Posté le 31/08/2014 10:34 | #


Darkysun a écrit :
J'utilise tout le temps ta doc mais j'ai pas réussi à trouver le contraste max et le contraste min qui permet de faire de beaux effets de fondus comme sur ton Orton (un des mes jeux préférés ) les connais-tu ?

Le contraste dépend de la calculatrice, regarde dans les sources de I robot de Nitrosax, il a plus ou moins géré ça.
Par contre ces fonctions ne sont pas compatibles SH4, donc je ne pense pas que ce soit une bonne idée que de les utiliser.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 31/08/2014 10:41 | #


Il faut savoir que la fonction ML_get_contrast() ne fonctionne pas
Donc la meilleure solution consiste à faire choisir à l'utilisateur la valeur du contraste qu'il préfère, puis à enregistrer cette valeur afin de la réutiliser plus tard
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DarkysunHors ligneMembrePoints: 1746 Défis: 52 Message

Citer : Posté le 31/08/2014 11:49 | #


A zut en fait je voulais juste faire un effet de fondu de maniere à augmenter le contrste puis a le diminuer jusqu'à eevenir au normal, mais pendant ce temps, l'image affichée aurait changée
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 31/08/2014 12:34 | #


Tu peux, mais pour remettre le contraste à la valeur initiale, il faut demander à l'utilisateur celle qu'il préfère

Ajouté le 31/08/2014 à 12:35 :
Regarde les sources d'iRobot, ou de Gravity Guy
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 27/10/2014 18:42 | #


J'ai un problème avec la fonction ML_polygon:

Voici le code http://pastebin.com/rpaaacDj

ça compile très bien, mais lorsque je lance le jeu, l’exécution se bloque au niveau de ML_polygon (ce n'est pas une erreur système ni un breakpoint)
LephenixnoirEn ligneAdministrateurPoints: 14138 Défis: 136 Message

Citer : Posté le 27/10/2014 18:45 | #


Pourquoi tu compiles le code de Xavier59 (qu'il n'a pas écrit d'ailleurs) sur la rotation de carré ?
En attendant, ML_polygon() prend des int * il me semble.
Xavier59Hors ligneMembre de CreativeCalcPoints: 1337 Défis: 12 Message

Citer : Posté le 27/10/2014 18:48 | #


Lephenixnoir a écrit :

Pourquoi tu compiles le code de Xavier59


Euh peut être parce qu’on fait un jeu ensemble pour le concours ?

Soit dit en passant, il n'a jamais dit, ni même sous entendu que j'avais écrit ce code
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 27/10/2014 18:49 | #


Xavier et moi ont bosse sur le même projet
C'est pour ce projet d'ailleurs que je cherche à utiliser ML_polygon et ML_filled_polygon mais ça fonctionne pas

Ajouté le 27/10/2014 à 18:50 :
Edit: j'ai remplacé les tableaux par des int et ça marche
Matt36230Hors ligneMembrePoints: 1868 Défis: 0 Message

Citer : Posté le 19/01/2016 18:42 | #


Pour pouvoir utiliser les fonctions il faut enlever tous les // du .h ?
Fife86Hors ligneMembrePoints: 830 Défis: 0 Message

Citer : Posté le 19/01/2016 18:44 | #


Normalement Le #Define All permet de toutes les utiliser.
It's Show Time !!!
Mes Jeux :
- Street Fighter : Pour les accrocs du free-fight.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".


< Le recoin du C-Engine >
Matt36230Hors ligneMembrePoints: 1868 Défis: 0 Message

Citer : Posté le 19/01/2016 18:46 | #


Merci je viens de le faire et les fonctions s'écrivent bien :
ML_clear_vram;

et pas :
ML_clear_cram() ?

KirafiHors ligneMembrePoints: 2014 Défis: 10 Message

Citer : Posté le 19/01/2016 18:49 | #


Non non, il y a bien les parenthèses .
ML_clear_vram();
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Matt36230Hors ligneMembrePoints: 1868 Défis: 0 Message

Citer : Posté le 19/01/2016 18:56 | #


Il veut pas build avec les parenthèses

Aussi ceci ne fonctionne pas : ML_bmp_or_cl(perso, X, Y, 7, 12);
J'ai défini perso grâce au sprite converter et je n'ai rien changé, il fait bien 7 de large par 12 de haut alors je ne comprends pas

edit : j'ai bien mis #include "MonochromeLib.h" au début

edit : ML_line(1, 32, 127, 32, 1); il ne veut pas non plus

edit : j'ai fait rebuild all mais ça ne fonctionne toujours pas

edit : J'ai supprimé debug et rien


Le code http://hastebin.com/uxatonoxab.avrasm
KirafiHors ligneMembrePoints: 2014 Défis: 10 Message

Citer : Posté le 19/01/2016 19:19 | #


Essaye avec uniquement ça dans ta boucle (passe le reste en commentaire avec /* */)
While(1){
      ML_clear_vram();
      
      //Dessin
      ML_line(1, 32, 127, 32, 1);

      ML_display_vram();

    }

iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Matt36230Hors ligneMembrePoints: 1868 Défis: 0 Message

Citer : Posté le 19/01/2016 19:20 | #


Le nouveau code : http://hastebin.com/okecanozov.java

Je test kirafi

Ajouté le 19/01/2016 à 19:21 :
Que neni
KirafiHors ligneMembrePoints: 2014 Défis: 10 Message

Citer : Posté le 19/01/2016 19:22 | # | Fichier joint


Hum... remplace ton fichier Monochrome.lib par celui que j'utilise (en PJ).
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Pages : Précédente1, 2, 3, 4Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 64 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