Page 1 of 5

Programmer des applis .g3a sur graph 90+E

Unread postPosted: 20 Oct 2017, 19:00
by xavdark17
Bonjour,
je viens d'avoir la nouvelle graph 90+E et je ne trouve pas après pas mal de recherches les outils de développement pour faire des application .g3a ni une liste de librairies pour casio. :error:
La calculatrice est plutôt puissante, ce serait bien de pouvoir en profiter :D

Merci d'avance

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 20 Oct 2017, 19:50
by critor
Il y a le SDK pour fx-CG20 qui est compatible en tenant compte des spécificités du nouveau matériel :
http://www.planet-casio.com/Fr/forums/t ... uleur.html

Mais il est vrai qu'une mise à jour du SDK serait bienvenue...

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 21 Oct 2017, 13:43
by Nemhardy
Salut !
Déjà c'est cool que tu t'intéresses à la programmation sur cette machine, il y a pas mal de choses à faire et elle est assez ouverte, donc tu devrais pouvoir t'y plaire ! :)

Pour ce qui est des choses disponibles pour programmer dessus, si tu es sous Windows (si tu es sous Linux, n'hésite pas à le signaler, on a de quoi faire aussi ! ;) ), il existe un SDK (qui n'est pas celui proposé par Critor plus haut, qui pour le coup n'est vraiment pas à jour, enfin en tout cas il n'était déjà plus utilisé quand j'ai commencé à programmer pour les Casio ! ^^) plus ou moins à jour, disponible ici. Il s'agit en fait d'un SDK permettant de programmer pour les anciennes casio Prizm (fx-CG10 et fx-CG20), mais celles ci partagent énormément de points communs avec la nouvelle Graph90+E, à tel point qu'il est tout à fait possible d'utiliser ce SDK pour développer à destination des Graph90+E.
Ce SDK vient avec des bibliothèques permettant de faire pas mal de choses déjà (je t'invite à parcourir son dossier `include` pour y voir les fonctions disponibles (en sachant tout de même que c'est un peu le bazar niveau organisation, mais bon…), et à te référer à ce Wiki pour en savoir plus sur les fonctions «non-standard» que tu pourrais rencontrer).
Pour utiliser ce SDK, il suffit de le dézipper quelque-part (il me semble qu'il vaut mieux éviter que le chemin menant à lui comporte des espaces ou des parenthèses), et ensuite dans `projects/example`, tu trouves un projet d'exemple, pas très poussé, mais ça te permet de voir comment ça se passe : il suffit d'exécuter `make.bat` et ça compilera le projet.

La compatibilité avec la Graph90+E sera normalement assurée d'emblée si tu utilises les syscalls pour faire ce que tu veux faire (en particulier pour récupérer l'adresse de la mémoire vidéo ! C'est ce point qui est à l'origine de pas mal des problèmes de compatibilité des addins qui circulent : certains ont codé l'adresse de cette mémoire en dur, ce qui ne permet pas de tourner sur un modèle certes proche, mais présentant quelques différences mineures… :? ).

Si tu veux plus d'infos sur quoi que ce soit, ou si quelque chose ne marche pas, n'hésite pas à poser des questions ! ^^

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 21 Oct 2017, 13:48
by critor
Merci beaucoup à toi pour cette correction de haute qualité. :)

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 21 Oct 2017, 19:02
by xavdark17
Merci beaucoup pour ta réponse !
En fait j'avais trouvé ce sdk mais j'ai du mal avec les fonctions a utiliser pour la calculatrice, je vais fouiller le wiki et le include pour essayer de faire un premier programme
je dirais ou j'en suis et quels problèmes je peux rencontrer
Sinon avez vous des exemples de codes c que je pourrais examiner pour apprendre ?
:-)

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 21 Oct 2017, 20:29
by Nemhardy
Tu parles d'apprendre le C en général ou à l'utiliser pour programmer pour une calculatrice ?

Dans le premier cas, je te conseille plutôt de te tourner vers les nombreux tutos que l'on peut trouver sur Internet, qui te permettent d'apprendre le langage en général (avec une pratique sur PC pour le coup).

Si tu connais déjà le C et est intéressé par l'usage qu'on peut en avoir avec une Graph90, tu peux regarder le jeux CubeField par exemple, même si tout n'est peut-être pas évident à comprendre, ça peut te donner une première idée de à quoi ressemble un jeu pour une telle machine. N'hésite pas à parcourir les programmes pour les fx-CG20 que tu pourras trouver ici ou sur Planète Casio, certains sont dispos avec leurs sources. ;)

Il y a aussi ce Pong dispo sur Cemetech, volontairement pédagogique (je me souviens que ça a été plus ou moins mon entrée dans la programmation en C sur Casio à l'époque… ^^), mais pas vraiment au goût du jour en terme de bonnes pratiques (typiquement l'adressse de la mémoire vidéo est codée en dur, il y a quelques trucs un peu obscurs quand on débute), mais bon, éplucher du code ça fait bien progresser je pense.

Je me dis que faire quelques programmes de ce style «pédagogique», mais un peu plus à jour, est peut-être une bonne idée pour rendre plus accessible la programmation sur cette machine d'ailleurs, si j'en ai le temps un jour je m'y mettrai peut-être un peu… ^^

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 22 Oct 2017, 16:07
by xavdark17
Oui effectivement je n'ai pas un niveau suffisant en c, je vais continuer à regarder et à éplucher les programmes :-)
merci encore pour ta réponse

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 22 Oct 2017, 16:34
by xavdark17
En ce qui concerne l'adresse de la mémoire vidéo, il y a des choses à ne pas reproduire ?

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 22 Oct 2017, 16:54
by Nemhardy
Tu n'as pas forcément besoin d'avoir un très haut niveau en C non plus, je voulais juste te prévenir qu'apprendre en partant de rien uniquement en essayant de programmer sur calculatrice est peut-être un peu difficile à mon avis, mais c'est une chouette plateforme pour progresser une fois que tu as quelques bases. ;)

Pour ce qui est de la mémoire vidéo, par exemple dans le Pong que j'ai donné en exemple, on trouve la fonction suivante :

Code: Select all
void rectangle(int x, int y, int width, int height, unsigned short color) {
   unsigned short*VRAM = (unsigned short*)0xA8000000;
   for(int j = y; j < y+height; j++) {
      for(int i = x; i < x+width; i++) {
         *(j*LCD_WIDTH_PX+i+VRAM) = color;         
      }
   }
}


Cette fonction permet de colorier un rectangle dont la position et la taille sont passées en arguments, de la couleur souhaitée. Mais on a en particulier la ligne :
Code: Select all
unsigned short*VRAM = (unsigned short*)0xA8000000;

Qui correspond tout simplement à coder en dur l'adresse de la mémoire vidéo : sur les anciens modèles, celle-ci ne changeait jamais et donc ça n'avait jamais vraiment posé de soucis, mais maintenant ça ne marche plus. Mais ce n'est pas vraiment un problème puisqu'on dispose d'une fonction GetVRAMAddress qui permet de s'adapater aux différents modèles sans avoir rien à coder en dur.
Il faudrait donc remplacer la ligne qui posait problème plus haut par :

Code: Select all
unsigned short*VRAM = (unsigned short*)GetVRAMAddress();


C'est à peu près la seule chose à laquelle faire attention vis à vis de la mémoire vidéo pour pouvoir tourner sur les nouveaux modèles.
Tant que tu ne fais pas de choses de trop bas niveau, tu ne devrais pas avoir à t'inquiéter de grand chose d'autre niveau compatibilité je pense.

Re: Programmer des applis .g3a sur graph 90+E

Unread postPosted: 27 Oct 2017, 10:36
by xavdark17
Bonjour,
J'explore les bibliothèques de fonctions pour créer une première application mais quand je souhaite compiler je rencontre principalement cette erreur : Couldn't compute FAST_CWD pointer.
J'utilise le sdk mais je ne sais pas comment utiliser le make.bat ni paramétrer le makefile

Quant au pong je n'arrive pas à l'utiliser sur ma graph 90+E :?

Code: Select all
#include <display_syscalls.h>
#include <keyboard_syscalls.h>
#include <color.h>

void main(void) {
Bdisp_AllClr_VRAM();
PrintXY(3,3,"  message a afficher  ",TEXT_MODE_NORMAL, TEXT_COLOR_BLACK);
}


Ceci est le code que j'essaye de compiler en vain
c'est peut être mal fait je ne comprends pas