Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Conversion automatique des projets gint/fxSDK mono vers Prizm CG10/20/50/G90+E
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Conversion automatique des projets gint/fxSDK mono vers Prizm CG10/20/50/G90+E

Posté le 13/03/2023 11:05

Yo,

un petit développement cool est en cours, c'est à ce stade à l'état de PoC (Proof of Concept), mais sera bientôt intégré à fxSDK et gint, les deux briques étant nécessaires : la conversion en (quasi-)automatique des projets fxSDK pour fx9860G/G35+EII vers l'architecture prizm (f-CG10/20/50/G90+E).

Vous pourrez ainsi jouer aux jeux développés sur mono sur votre graphique couleur (à la condition bien entendu qu'il soit développé avec gint/fxSDK et que vous disposiez des sources du projet).

Une image valant plus que 1000 mots, voici le projet Builder de Mb88 converti pour fonctionner sur Graph 90+E.





Le but de la manip consiste à créer une nouvelle cible de build pour fxSDK afin de compiler les sources prévues pour les graph mono vers une architecture de type graph couleur (prizm). Beaucoup de choses sont communes, mais il y a aussi des différences à gérer, en particulier l'écran et sa résolution. Il faut donc faire une conversion de la VRAM "mono" (128x64 pixels en 1bit) vers une VRAM "couleur" (396x224 pixels en 16bits RGB565). On laisse donc l'addin travailler avec une VRAM virtuelle comme sur la graph mono et lors d'un call à dupdate(), on intercepte cet appel pour faire un traitement avant le blit final vers l'écran de la CG. On procède donc à une réécriture de dupdate() pour faire un upscale x3, un centrage de l'écran, une conversion des couleurs puis on envoie le tout vers l'écran couleur.

A ce stade, le moteur de niveaux de gris n'est pas pris en compte, mais cela viendra, c'est là prochaine grosse étape.

Je vous joins une copie de Builder pour CG50 afin que vous puissiez tester par vous même. Je suis très agréablement surpris par la vitesse de fonctionnement, compte tenu de la non optimisation du code (j'en suis à l'étape, on fait comme un bourrin pour voir si c'est jouable ou pas). On va désormais optimiser, maintenant que la faisabilité est démontrée.

A terme, quand cela sera en production, un fxsdk new project générera tout en automatique. Ensuite un projet pour FX pourra être automatiquement converti pour fonctionner sur CG via une build avec fxsdk build-fx-as-cg. Cela aura pour effet de générer le g3a qui pourra tourner sur votre prizm, sans rien toucher à votre projet FX initial. Bien entendu, la version mono "de base), donc le g1a, sera toujours généré via un fxsdk build-fx comme à l'accoutumée.

Il reste pas mal de choses à faire (ayant commencé le zinzin milieu de semaine dernière) :
- tester sur plus de projets
- supporter le moteur de niveau de gris de gint
- mettre un entourage de screen mono un peu plus joli, là on a le "bleu-vert" usuel du dupdate() sans dclear()
- tester, tester, tester, ...
- optimiser, optimiser, optimiser, ...

Attention tout de même, si votre addin FX tripote les syscalls ou autre joyeusetés de bas-niveau, il n'y a vraiment aucune garantie que la conversion soit possible. Le projet vise seulement à rediriger les calls aux primitives/méthodes de gint vers la bonne architecture matériel.

Suite soon ... stay tuned.

Fichier joint


1, 2 Suivante
Hackcell Hors ligne Maître du Puzzle Points: 1524 Défis: 11 Message

Citer : Posté le 13/03/2023 11:10 | #


si t'as besoin d'un projet gint assez simple qui utilise le moteur de gris
https://www.planet-casio.com/Fr/programmes/programme4078-last-dumb-clicker-dx-mono-alice-jeux-add-ins.html
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 13/03/2023 12:22 | #


En complément, et suite à échanges sur le tchat, je précise que si votre projet est basé sur SDK Casio fx-9860G SDK alors la conversion automatique dont je parle ici n'est malheureusement pas disponible.

Le scope se limite seulement aux projets réalisés avec le fxSDK de Lephé.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 13/03/2023 14:06 | #


En fait je suis assez demandeur d'un listing des projets FX gint/fxSDK avec sources, car j'avoue que j'en trouve pas masse pour tester.

Hésitez pas à poster un lien vers les projets que vous connaissez et vers les sources en réponse à ce fil.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Inikiwi En ligne Membre Points: 574 Défis: 8 Message

Citer : Posté le 13/03/2023 18:08 | #


terrario! c'est builder mais en mieux et en plus beau! (tkt mibi c pas méchant)
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 13/03/2023 18:22 | #


Arena s'il compile encore est probablement un exemple raisonnable. Mais je crois que les sources sont pas à jour x)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Labélisateur Points: 944 Défis: 3 Message

Citer : Posté le 13/03/2023 18:24 | #


Oui tu les avais corrigés pour moi, mais tu ne les a pas publiés je crois
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 13/03/2023 18:32 | #


En effet, je les ai ajoutées. J'ai vérifié à l'instant que ça compile... donc ça doit bien marcher.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 17/03/2023 22:59 | # | Fichier joint


Après moultes batailles et un petit coup de main de Lephé, le moteur de gris fonctionne désormais pour convertir les projets Fx9860 vers CG50.

Voici donc pour l'exemple Arena de Lephé en grayscale sur CG50 :





La conversion a été un peu plus difficile que Builder, car Arena est compilé via un Makefile, il faut donc mettre les options à la main dans le fichier, mais cela reste relativement facile tout de même.

Je le joins à ce post pour ceux qui voudraient l'essayer.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 18/03/2023 08:22 | #


Merci ! J'ai fait un build moderne d'Arena quand j'ai testé hier, je vais le pousser sur un dépôt comme ça on sera défaits du vieux Makefile...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 18/03/2023 08:47 | #


Ah cool, oui comme ça on pourra faire le build avec la cible
fxsdk build-fx-as-cg
. Merci beaucoup. Je ferai de même pour Builder version CG50.

Je vais essayer de convertir Terrario aussi, mais ça va demander plus d’efforts car il y a du plus bas niveau. Après je pense que l’avoir dans la ludothèque de la CG50, ça vaut carrément le coup.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 18/03/2023 12:35 | #


Yo, une petite update.

J'ai poursuivi avec quelques tests sur mes différentes machines pour voir à quel niveau tout cela fonctionne sans problème.

Voici une comparaison des deux addins de test, à savoir :

Builder de Mb88 pour un addin monochrome.



Arena de Lephenixnoir pour un addin en niveau de gris.



Les machines sont toutes des SH4, sauf la G35+ (en bas à gauche) qui est en SH3.

Globalement ça tourne mais il reste des trucs à vérifier/corriger/comprendre :
- Builder crashe sur une exception sur la G35+ SH3. A priori ceci n'est pas lié à la conversion, je regarderai d'où cela vient.
- Arena se bloque sur la CG20, mais fonctionne bien sur la CG50 et la G90+E
- le niveau de gris foncé ne ressort pas sur toutes les prizm (cf barres de niveau de vie qui restent blanches au lieu de gris foncé dans leurs parties centrales).

Bref encore 2/3 trucs à vérifier/corriger, mais sur le principe c'est OK, on a donc un PoC (Proof of Concept) fonctionnel.

Suite bientôt

et @RDP
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 18/03/2023 15:57 | #


Tu noteras qu'en plus de la barre de vie, sur ta Graph 90+E sur Arena tu as aussi la ligne horizontale au sommet de la boîte de dialogue qui est gris claire. Peut-être qu'il y a une arnaque avec les alternances de VRAM ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 18/03/2023 16:08 | #


Je suppose en effet un truc du genre. Car aussi les barres de vie des ennemis sont gris clair et surtout clignotent. Comme si je chopais le signal en décalé.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 23/03/2023 08:05 | #


Yo !! Une petite update car hier soir ça a vraiment bien avancé, encore une fois grâce à un petit coup de main de Lephé

Donc désormais, le moteur de gris de la fx9860g est transposé fonctionnellement vers la cible fx-as-cg ce qui signifie qu'un jeu écrit avec gint/fxSDK et utilisant le moteur de gris pourra être utilisé via l'upscale sur la une G90+E (ou fxCG10/20/50). Le même code source sera donc utilisable:
pour créer une version FX via la commande usuelle fxsdk build-fx (ça compilera un g1a),
et pour créer sa grande sœur FX_AS_CG via la commande fxsdk build-fx-as-cg (ça compilera un g3a).

Le bug des "couleurs" bizarres est désormais résolu (le coup de main de Lephé était pour ça, résolu en 5 minutes de son côté, trop fort Senpai ).

J'ai aussi pu rajouter hier la dernière brique qui manquait, à savoir le support de usb_fxlink_screenshot_gray() et usb_fxlink_videocapture_gray() qui n'étaient pas supportés à ce stade.

Pour le moment, la sortie n'est pas mise à l'échelle, donc l'image de sortie est en 128*64 pixels, ce qui est un peu petit comme le montre la capture d'écran suivante :



Mais après discussion avec Lephé, cela permet d'avoir une sortie vraiment fluide (car juste 2048 octets à envoyer correspondant à deux VRAM de mono en 128*64*1bit) et on pourra ensuite adjoindre un upscale (x3 ou plus) coté PC dans fxlink afin d'avoir un truc plus visible. On aura ainsi des captures hyper fluides.

Voici une petite vidéo Youtube d'une capture vidéo réalisée avec Arena qui montre en parallèle l'écran de ma G90+E et la sortie vidéo sur mon PC. Je précise que j'utilise la loupe de mon desktop manager (option d'accessibilité avec un facteur x6) pour que l'on puisse bien voir les deux écrans.



A priori cette fois j'en ai terminé avec la gestion de l'upscaling/conversion automatique, juste à traquer les éventuels bugs, mais cela est réputé fonctionnel.

Je vais passer à autre chose alors

et @RDP pour quand elle sortira
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 08/06/2023 13:51 | #


Salut ! Je trouve tout ça super, mais ça n'est pas très actif en ce moment...

Donc voilà : je voudrais savoir si la conversion de Terrario avance ?

J'ai vraiment envie d'y jouer

J'ai testé un peu Arena et Builder, et franchement, on voit que tu fais des efforts, et non sans résultats

Enjoy!
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 08/06/2023 14:11 | #


En fait c'est un peu subtil.

Terrario utilise gint, mais aussi un certain nombre de syscalls directement, la conversion directe n'est pas possible comme pour Builder et Arena. Il y a un peu de taf pour faire la conversion, mais cela reste tout de même je pense possible.

En en discutant avec Lephé, il y a peu, on (enfin plus Lephé car il faut du niveau pour ce genre d'idée) réfléchi à un système plus global d'"émulation" qui serait applicable directement sur le g1a (l'addin compilé). Cela pourrait permettre, si faisable, d'étendre le scope à tout addin, même non codé avec Gint. Mais à ce stade, cela reste une expérience de pensée, et clairement c'est pas pour demain.

Pour en revenir à Terrario, je regarderai si je peux convertir sans trop de taf vers CG50 en faisant un truc un peu "bancal"
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Acrocasio Hors ligne Membre Points: 974 Défis: 0 Message

Citer : Posté le 08/06/2023 14:24 | #


Ah, oui, ok. Mais bon, tant que c'est pas impossible, ça va !

J'admets que l'idée de l'émulation de G1A est une super idée. Encore faut il avoir le temps et le courage


Pour en revenir à Terrario, je regarderai si je peux convertir sans trop de taf vers CG50 en faisant un truc un peu "bancal" : Merci et que la force soit avec toi !
Parisse Hors ligne Membre Points: 484 Défis: 0 Message

Citer : Posté le 14/06/2023 11:14 | #


Slyvtt a écrit :
En complément, et suite à échanges sur le tchat, je précise que si votre projet est basé sur SDK Casio fx-9860G SDK alors la conversion automatique dont je parle ici n'est malheureusement pas disponible.

Ce serait un projet très utile! Ou au moins disposer de headers de compatibilité avec les noms de fonctions tels qu'ils sont documentés dans le wiki prizm/fxcg de cemetech https://prizm.cemetech.net/Libfxcg/
Lephenixnoir Hors ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 14/06/2023 11:18 | #


Tu parles bien de pouvoir compiler des add-ins écrits pour monochrome avec le fx-9860G SDK (utilisant fxlib + syscalls) en les linkant avec le PrizmSDK (utilisant libfxcg) pour obtenir une version Prizm/Graph 90+E, c'est ça ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Parisse Hors ligne Membre Points: 484 Défis: 0 Message

Citer : Posté le 14/06/2023 13:01 | #


Ah non, j'ai confondu avec la 35eii. Ce qui m'intéresserait c'est de pouvoir compiler KhiCAS avec le SDK de gint, sur la 35 et sur la 90. Mais c'est loin d'être trivial, à commencer par la résolution d'écran de la 90.
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 88 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