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: 16787 Défis: 140 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 ... , 25, 26, 27, 28, 29, 30, 31, 32, 33, 34Suivante
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 17:56 | #


Je voulais savoir si la transparence est gérée, ou pas ? Dans la version actuelle de Gint.

Merci d'avance !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 17:58 | #


Absolument. Si tu es sur Graph monochrome, il faut convertir avec les profils mono_alpha ou gray_alpha. Si tu donnes à fxconv une image contenant des pixels transparents, il le fera automatiquement pour toi.

Sur Graph 90, il faut utiliser les profils r5g6b5a, p8 ou p4.
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:36 | #


Okay… J'ai pas très bien compris… je le met où le mono_alpha (c'est le blanc qui est transparent)…
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 18:37 | #


Tu le mets nulle part, tu enregistres ton image dans le dossier des images comme d'habitude, c'est tout.
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:39 | #


Donc j'ai le blanc en canal alpha, je met l'image en *.png comme d'habitude, mais où intervient la conversion ? (je suis avec ma Graph 35++) Comment je dit au compilateur que le blanc de cette image est transparent ? Il détecte tout seul le canal alpha ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
MilangEn ligneMembrePoints: 416 Défis: 2 Message

Citer : Posté le 08/12/2019 18:39 | #


Il faut qu'avec gimp l'image ait de la transparence
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:41 | #


Euh… Tu m'a perdu @Milang… mon image est un png avec le blanc en canal alpha… C'est bon ou il faut faire autrement ?
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 18:41 | #


Shadow15510 a écrit :
Euh… Tu m'a perdu @Milang… mon image est un png avec le blanc en canal alpha… C'est bon ou il faut faire autrement ?

Si c'est alpha c'est transparent, donc ce n'est pas blanc... x)
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:43 | #


Oui mais ce que je veux dire c'est que c'est le blanc qui est transparent (sous GIMP j'ai mis le blanc en canal alpha, du coup le blanc devient transparent)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 18:44 | #


Si tu as utilisé la fonction "Calque » Transparence » Couleur vers alpha" alors ce n'est plus du blanc. Ça s'affiche comme un damier peu importe la couleur qu'il y avait avant.

Dans ce cas, tu l'enregistres en PNG et tu balances à fxconv.
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:48 | #


Oui c'est ça
Donc le seul truc qui change par rapport aux image non transparente c'est le canal alpha et c'est tout ? fxconv se démerde seul ? Quel est l'intérêt des deux fonctions que tu a donné tout à l'heure du coup ? (mono_alpha gray_alpha)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 18:51 | #


Oui si tu donnes une image qui a un canal alpha et des pixels transparents, fxconv le détecte et utilise un profil de stockage approprié.

Dans gint sur Graph monochrome, il y a quatre profils de stockage d'images : noir et blanc (mono), pareil avec la transparence (mono_alpha), quatre niveaux de gris (gray) et quatre niveaux de gris avec la transparence (gray_alpha). Pour des raisons de compacité et d'optimisation, il vaut toujours mieux choisir le "plus petit" profil permettant de représenter l'image.

fxconv se débrouille pour le sélectionner automatiquement. S'il voit de la transparence, il prendra mono_alpha s'il n'y a pas de gris et gris_alpha s'il y en a. Et hop, c'est plié. Tu n'as rien d'autre à faire.
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 18:51 | #


Ok ! Merci !!

Ajouté le 08/12/2019 à 19:01 :
J'ai essayé avec Plague… Le fichier pieces.png comporte une partie transparente. Mais ça ne compile pas (je viens de mettre Gint à jour) et j'ai ce rapport :

pc37:Sources antoine$ make
fxconv -i assets-fx/img/pieces.png -o build-fx/assets/img/pieces.png.o --fx name:img_pieces
Traceback (most recent call last):
  File "/Users/antoine/.local/bin/fxconv", line 130, in <module>
    main()
  File "/Users/antoine/.local/bin/fxconv", line 124, in main
    fxconv.convert(input, params, target, output, model)
  File "/Users/antoine/.local/bin/fxconv.py", line 668, in convert
    convert_bopti_fx(input, output, params, target)
  File "/Users/antoine/.local/bin/fxconv.py", line 246, in convert_bopti_fx
    img = Image.open(input)
  File "/usr/local/lib/python3.7/site-packages/PIL/Image.py", line 2705, in open
    % (filename if filename else fp))
OSError: cannot identify image file 'assets-fx/img/pieces.png'
make: *** [build-fx/assets/img/pieces.png.o] Error 1

"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 08/12/2019 19:02 | #


La bibliothèque d'images de Python n'a pas réussi à lire ton image. Je sais pas avec quoi tu l'as enregistré (de la drogue ?). Tu devrais certainement retourner dans Gimp pour la réexporter proprement.
Shadow15510Hors ligneAdministrateurPoints: 4084 Défis: 16 Message

Citer : Posté le 08/12/2019 19:06 | #


Hey ça marche ! merci !!
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   98%
HackcellEn ligneMembrePoints: 1204 Défis: 10 Message

Citer : Posté le 17/12/2019 09:14 | #


J'ai un messages d'erreur lorsque j'ai tenté de make gint
j'ai bien suivi les tutoriel pour gccet binutils à la lettre pourtant (j'ai tenté avec les option--whit-libssp et--with-lto)

make a écrit :
>as core/exch. s
as: unrecognized option '-big'
make: *** [makefile:97: src/core/exch. s. o] error 1


une idée de ce que j'ai pus oublier ?
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 17/12/2019 12:21 | #


Essaie sh-elf-as -big pour voir si ça donne une erreur (sinon ça attend du texte, tape C-C ou C-D pour produire un a.out vide). Voilà la version que j'ai compilée :

GNU assembler version 2.32 (sh3eb-elf) using BFD version (GNU Binutils) 2.32
HackcellEn ligneMembrePoints: 1204 Défis: 10 Message

Citer : Posté le 17/12/2019 12:24 | #


hmmm... j'ai pas d'erreur XD

Ajouté le 17/12/2019 à 12:25 :
je crois que je sais pourquoi, un instant...
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 17/12/2019 12:25 | #


Le fait que le message d'erreur affiche "as:" et non pas "sh-elf-as:" me laisse penser que tu compiles avec l'assembleur système.

As-tu bien spécifié --toolchain=sh-elf ?

N'hésite pas à lancer make VERBOSE=1 pour voir le détail des commandes.
HackcellEn ligneMembrePoints: 1204 Défis: 10 Message

Citer : Posté le 17/12/2019 12:29 | #


j'ai bien CONFIG. TOOLCHAIN=sh-elf dans mon makefile. cfg

Ajouté le 17/12/2019 à 13:04 :
j'ai trouvé
j'ai pas défini PREFFIX parce que je pensais qu'il était déjà dans mon. profile:'(

Ajouté le 17/12/2019 à 13:05 :
est-ce que je peux déplacer tout ça où il faut recompiler ?
I usually spend meow time cosplaying as a diligent student...
So it can get pretty stressful.
That's exactly why PC is such a happy place for meow to be ⭐
LephenixnoirEn ligneAdministrateurPoints: 16787 Défis: 140 Message

Citer : Posté le 17/12/2019 13:12 | #


Une fois compilé, tu peux supprimer ton build-gcc et déplacer le reste des dossiers (y'a des bin/share/etc) à peu près où tu veux, typiquement /usr/local ou ~/.local.
Pages : Précédente1 ... , 25, 26, 27, 28, 29, 30, 31, 32, 33, 34Suivante

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