Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » gint : un noyau pour développer des add-ins
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

gint : un noyau pour développer des add-ins

Posté le 20/02/2015 17:30

Les SDKs classiques pour écrire des add-ins sont le fx-9860G SDK de Casio avec fxlib (pour Graph monochrome) et le PrizmSDK avec libfxcg (pour Prizm et Graph 90+E). Voici mon alternative : le fxSDK avec gint, pour toutes les plateformes.

Contrairement à fxlib et libfxcg, qui appellent les fonctions de l'OS pour faire leur travail, gint est un noyau indépendant de l'OS qui exploite seul le matériel et le met à disposition de votre add-in. Il vous offre plus de finesse sur le contrôle du matériel, notamment le clavier, l'écran et les horloges, de meilleurs performances sur le dessin, les drivers et la gestion de interruptions, et des choses entièrement nouvelles comme le moteur de gris.

Toutes les sources de gint sont publiques et accessibles sur la forge de Planète Casio :

» Dépôt Gitea Lephenixnoir/gint «

Voici plus précisément ce que gint vous offre de nouveau :

• Un contrôle détaillé du clavier pour les jeux, parfait pour les combos !
• Des timers avec une précision de 60 ns, d'autres à 30 µs
• Toutes vos images converties automatiquement sans code à copier (plus de Sprite Coder)
• Des polices personnalisées
• Des fonctions de dessin, d'images et de texte fulgurantes et optimisées la main
• Mesurer les performance de votre code à la microseconde près (avec libprof)
• Le contrôle du matériel et des interruptions
• Plein de petites choses pratiques comme dprint(1, 1, "x=%d", x)

• (Graph monochrome) Un moteur de gris pour faire des jeux en 4 couleurs !
• (Graph monochrome) La compatibilité SH3 et SH4, avec le même fichier g1a.

• (Graph 90+E) Une nouvelle police de texte, plus lisible et économe en espace
• (Graph 90+E) Le dessin en plein écran, sans les bordures blanches et la barre de statut !
• (Graph 90+E) Un driver écran capable de triple-buffering

Le coût de tout ceci, c'est que vous avez une copie du code de gint dans votre add-in. Cela prend environ 20 ko de place (selon la quantité de fonctions que vous utilisez), soit à peu près comme le sprintf() de fxlib qui fait 18 ko !

Et voici quelques photos et captures d'écran !





Tester gint sur votre machine

La fin du portage vers la Graph 90+E signera la sortie de gint v2. L'add-in de test de l'application est désormais gintctl :

» Dépôt Gitea Lephenixnoir/gintctl «

En plus de tester les fonctionnalités de gint, cet add-in contient quelques outils permettant d'inspecter la machine, la mémoire, et les registres. Je le développe au fur et à mesure, et je posterai un protocole de test complet avec la sortie de la v2 !

Utiliser gint pour développer des add-ins

Normalement, vous avez besoin du fxSDK pour développer avec gint. Le fxSDK est compatible avec Linux et Mac OS, et on peut réfléchir à un portage sous Windows s'il y a vraiment des intéressés. Il faut l'installer en premier (et avoir un cross-compilateur GCC).

La procédure de compilation et d'installation de gint est décrite sur le README du dépôt, c'est du configure - make tout à fait banal.

Une fois que gint est installé sur votre système, voyez les tutoriels de développement pour avoir un aperçu de son fonctionnement. La plupart des choses sont expliquées dans les en-têtes (fichiers .h) de la bibliothèque que vous pouvez consulter en ligne, sur votre copie locale du dépôt, ou dans les dossiers d'installation du compilateur.

Obtenir la dernière version de gint après une mise à jour

Je pousse régulièrement des mises à jour de gint sur le dépôt du projet. Pour les télécharger, tapez git pull, puis recompilez et réinstallez gint avec make et make install.


Fichier joint


Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 25Suivante
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 10/07/2017 12:48 | #


Mais là tu as quand même ta boucle While qui tourne à fond nan ?
Cakeisalie5Hors ligneMembre de CreativeCalcPoints: 1750 Défis: 10 Message

Citer : Posté le 10/07/2017 12:49 | #


waitevent() est, comme son nom l'indique, une fonction bloquante.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Besoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 10/07/2017 12:54 | #


Ok je comprends maintenant merci
Dark stormHors ligneMembre d'honneurPoints: 10828 Défis: 176 Message

Citer : Posté le 10/07/2017 19:04 | #


Question technique : que se passe-t-il si plusieurs events sont déclenchés à peu près en même temps ? Je suppose qu'ils sont poussés dans une file pour ne pas en perdre en chemin, mais j'aimerai en être sûr.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 10/07/2017 19:35 | #


Il y a une file de toute façon, parce que les analyses du clavier génèrent les événements en bloc (évolution de tout le clavier tous les 16èmes de seconde).

Pour le reste, c'est la priorité des interruptions qui fait la différence.

Ajouté le 10/07/2017 à 21:54 :
J'ai mis à jour le topic et réécrit complètement le post principal. Il n'y a pas encore de quoi installer lib', liée au fxSDK (mais ça ne saurait tarder !), en revanche vous pouvez d'ores et déjà tester gint sur votre machine en suivant les instructions. Et j'espère bien que ça sera impeccable !
ZezombyeEn ligneRédacteurPoints: 1625 Défis: 12 Message

Citer : Posté le 10/07/2017 22:08 | #


Sur l'émulateur Manager PLUS (fx-9860) :

Tout fonctionne sauf le retour au menu.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 10/07/2017 22:10 | #


Alors ça c'est impressionnant ! Il est béton, leur émulateur. x)

Du coup, tout à l'air bien clean vu l'écran de contrôle (enfin j'imagine que le gris doit piquer un peu). Du coup, pour le retour au menu, il fallait s'y attendre, c'est de loin la manip' la plus technique. J'ai quelques pistes d'instabilité à explorer sur ce sujet.
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 12/07/2017 13:40 | #


Intéressant, je ferai ton test on-calc pour t'avoir un retour supplémentaire.
Certainement une erreur le lien "tutoriels de développement" renvoie sur cette page même
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 12/07/2017 13:41 | #


Ce n'est pas encore une erreur, car je suis en train de les écrire. Le lien dans le topic du fxSDK a été agrémenté d'un « (à venir rapidement) », ce que j'aurais dû mettre ici aussi. Je fais au plus vite.
YatisEn ligneMembrePoints: 435 Défis: 0 Message

Citer : Posté le 23/07/2017 15:37 | # | Fichier joint


Voila mon test (fichier joint)tout fonctionne, mais quand je lance un autre add-in, ma calto reset ou sinon certain add-in sont très accélerer (m'enfin rien de bien mechant )
En tout cas, merci beaucoup pour gint c'est un projet monstrueux qui m'a montrer quel point j'ai encore des choses à apprendre
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 23/07/2017 15:40 | #


Ouh là, c'est gênant tout ça. La calto reset, tu dis ? Essaie voir le protocole suivant :
→ Reset la machine avec la touche derrière le boîtier ;
→ Lancer RUN/MAT et faire quelques calculs ;
→ Ensuite lancer gint et voir si les crashs sont toujours présents quand tu changes d'application.
La clé que j'ai en tête, c'est que gint ne doit pas être la première application à s'exécuter. Peux-tu voir aussi si ça se passe qu'avec les add-ins ou aussi avec les applications du système ?

Pour les add-ins accélérés, la principale chose qui peut changer c'est l'overclock. Je t'invite à installer FTune2 (tu as une SH4 d'après gint), qui est capable de te donner la fréquence des horloges. Vérifie qu'avant de lancer gint et après l'avoir lancé, c'est toujours la même valeur.

Sinon, je regarderai du côté de mes timers. Merci du test !
YatisEn ligneMembrePoints: 435 Défis: 0 Message

Citer : Posté le 23/07/2017 16:02 | #


En faisant le protocole j'ai pas eu de probleme de crash.
FTune2 m'indique exactement la même chose avant est apres l'utilisaion de gint SAUF que: quand FTune2 est lancer avant gint et que je vais sur gint ->test->Clocks and timers->time: l'Accuracy affiche 100.00% et il y un un clignotement ou je vois des 9 s'afficher sauf quand Timer et RTC est comprit entre [1000; 2000] l'affichage reste a 100.00%.
Bref quand je quitte gint FTune2 me dit que rien a changer mais certaint add-in sont accelerer
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 23/07/2017 16:40 | #


Donc, le problème de crash est bien celui que je connais, un que j'avais détecté il y assez longtemps. Pour information, il marche aussi avec les add-ins du SDK, et dans l'émulateur, se manifeste sous la forme d'une pop-up avec un message du genre Nonexisting memory by read/write access at xxx. Je ne sais pas du tout comment le résoudre, par contre.

Pour l'accélération, c'est sans doute les timers du coup. Zezombye me souffle un problème connu avec Sleep(), mais c'est peut-être moi qui le déclenche. Je regarde ça prochainement ; je te demanderai peut-être de tester de nouveau quand j'aurai quelque chose.
ZezombyeEn ligneRédacteurPoints: 1625 Défis: 12 Message

Citer : Posté le 23/07/2017 16:47 | #


Si un reset ne marche pas ce n'est peut-être pas le problème que j'ai eu. Quand tu parles d'accélération, est ce que les addins comme jetpack joyride ou métro siberia 2 sont injouables, mais qu'il n'y a pas d'overclock (la calto est toujours aussi lente) ?

Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
YatisEn ligneMembrePoints: 435 Défis: 0 Message

Citer : Posté le 23/07/2017 17:08 | #


Le problème étant que seulement certains add-in sont accéléré mais d'autre non (comme gravity Duck, flappy bird), et oui des jeu comme jetpack joyride sont totalement injouable, (quand je reset moi même la calto le problème disparait )
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 23/07/2017 17:15 | #


Juste une note au passage : que la précision des timers descende en-dessous de 100% stricto sensu, c'est pas un problème du tout. Tant que c'est supérieur à 98%, c'est déjà assez bon.
NinestarsHors ligneMembrePoints: 2253 Défis: 22 Message

Citer : Posté le 23/07/2017 20:22 | #


Waw ! Le niveau de gris est dingue ! ça rend tellement bien !
Tout fonctionne pour ma part
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 23/07/2017 20:56 | #


Merci ! <3

Comme c'est toi qui avais émis quelques restrictions lors des premiers tests, je suis content de voir que ça te plaît. Après, il ne faut pas oublier que ça ne marche pas avec n'importe quel type de surface (taille caractéristique, taux de recouvrement de l'écran). Après c'est aux devs' de bien identifier l'usage adapté du gris dans leurs images, qui fournira des bons rendus sur la calto !
YatisEn ligneMembrePoints: 435 Défis: 0 Message

Citer : Posté le 28/07/2017 19:02 | #


Quand je suis dans "Keyboard and events" et que je presse SHIFT + Up + Right ça m'indique que j'appuie sur ALPHA, c'est normal ? bug hardware ?
Puis aussi quand on quitte (via MENU) gint puis qu'on etein la calto puis qu'on revient sur gint, la calto reset...
LephenixnoirEn ligneAdministrateurPoints: 15794 Défis: 136 Message

Citer : Posté le 28/07/2017 19:06 | #


Oui, malheureusement, c'est normal. C'est un problème connu et qui existe déjà depuis longtemps avec le SDK.

Wow, tu as raison ! Je n'avais jamais essayé ça. o_o
Aaah, c'est gênant. >_<

Ajouté le 04/12/2017 à 18:56 :
News time! J'essaie péniblement d'avancer entre mes cours, mes cours et mes cours, c'est compliqué, mais c'est possible.

J'ai fini de réécrire le gestionnaire d'interruptions en assembleur ! La bonne nouvelle, c'est qu'il est bien plus petit et optimisé que l'ancien. Je n'ai pas encore mesuré les performances mais sur SH4 il pourrait bien être 3 fois plus rapide.

Actuellement un Hello World compilé avec gint prend autour de 24 ko. Je sais que j'ai déjà pu descendre à 16 ko il y a quelques temps, et travailler sur la taille de la lib devrait être mon objectif principal pendant quelques temps. Malheureusement, les résultats sont difficiles à prédire et contrôler finement ce qui est linké à quel moment est subtil.

J'ai également des plans pour améliorer les performances de façon globale. L'éternel bottleneck graphique pourrait être significativement amélioré si j'arrive à implémenter de la génération d'assembleur au vol. Les cas tordus comme les sprites gris transparents en particulier... on peut peut-être doubler la vitesse de rendu pour ces machins-là. La réactivité des timers, et la vitesse de traitement du clavier importent aussi beaucoup.

Je sais qu'on a déjà assez de puissance de base, mais il existe des modèles sur lesquels la programmation d'add-ins a toujours été un calvaire à cause de problèmes de vitesse. (Et j'ai déjà vu des add-ins lagger aussi.)

Enfin, j'avance doucement sur les tutoriels d'utilisation de la lib', qui vont bien finir par être cruciaux pour tous ceux qui seraient potentiellement intéressés par le modèle.
Suruq gameHors ligneMembre de CreativeCalcPoints: 619 Défis: 20 Message

Citer : Posté le 01/03/2018 14:16 | #


j'ai trouvé des paramètre sympa en niveaux de gris

light : 2243
dark :3612



ps : on ne commente pas le faite que mon écran soit dégueulasse
There is only one thing that makes a dream impossible to achieve : the fear of failure
Pages : Précédente1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ... 25Suivante

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