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 » Démos Graph 90—à vos pinceaux !
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Démos Graph 90—à vos pinceaux !

Posté le 08/08/2024 23:55

Tout à l'heure sur la shout avec Mb88 on repassait sur l'idée de faire des démos (voir scène démo si vous ne connaissez pas). Essentiellement, c'est des programmes minuscules (aussi petits que possible) qui font des trucs graphiques stylés.

Sur Graph 90, on ne peut pas trop faire ça parce que de toute façon un add-in doit faire 28 ko rien que pour mettre l'en-tête du g3a avec les icônes... donc vous imaginez que les démos de 4 ko c'est pas la peine d'y penser. ^^"

Du coup j'ai écrit un petit programme, "Prizm Demos Loader" (PDL) qui permet essentiellement de charger des binaires purs de petite taille pour les exécuter :

Prizm Demos Loader
Comme le bare metal c'est quand même un peu chiant, le chargeur fournit à la démo :
  • Un pointeur VRAM et un pointeur vers la fonction d'affichage (dupdate) ;
  • Une variable qui compte automatiquement le temps écoulé en millisecondes.

Avec le loader il y a aussi une démo d'exemple toute bête qui fait une sorte de fondu de couleurs pendant 4 secondes . Quand on le compile ça donne un fichier .pdl qui est juste un binaire pur (124 octets, plutôt optimisé !) et qu'on peut lancer dans l'add-in de chargement.

Voilà c'est très primitif encore mais c'est pour lancer un peu le mouvement. Si vous avez des commentaires ou pensez qu'on devrait s'y prendre différemment, allez-y. Je serais intéressé pour faire une mini-compétition de démos, genre 1 ko comme clin d’œil à la 1kBCJ, s'il y a des preneurs !

Télécharger pour tester :
PrizmDemos.g3a
exdemo.pdl
Copier les deux fichiers sur la calto, lancer l'add-in "PrizmDemos", sélectionner "example.pdl" (EXE)

Fichier joint


Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 13/08/2024 18:10 | #


J'ai déjà poussé le code qui rajoute EXIT comme touche de sortie anticipée. Comme ça les démos peuvent faire des boucles infinies.

Pour les segfaults, je réalise que le FireCube de SlyVTT ainsi que ma version sont tous les deux buggés au sens où il y a des variables non initialisées dedans. Ça peut être la source du segfault. PDL garantit que le code est bien chargé mais pas que les variables non initialisée par le code ont une valeur spécifique au chargement. Je m'occupe du cache mais je t'invite à vérifier que c'est pas là ton problème.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 13/08/2024 18:32 | # | Fichier joint


J'espère que cette vidéo, même si elle montre très peu de la démo (il me reste beaucoup à ajouter) vous donnera envie de la regarder :



Ps : J'espère que vous avez la ref
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 13/08/2024 18:34 | #


Ha ! J'aime déjà. Joli
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Slyvtt En ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 15/08/2024 16:59 | #


Joli Mibi. Par contre chez moi, j'ai juste le titre en sin_loop et l'effet de moiré.
Ensuite, je suis sur un écran noir (c'est pas planté je précise).
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 15/08/2024 17:02 | #


Met à jour le lanceur

J'ai que testé avec la version sur git. Sinon c'est peut être parce que t'as lancé une autre démo avant.
Slyvtt En ligne Maître du Puzzle Points: 2410 Défis: 17 Message

Citer : Posté le 15/08/2024 17:14 | #


Oui c'est bon, en effet j'avais lancé ma démo du cube avant. C'est vraiment top Mibi !!
Si je peux me permettre 2 remarques :
- les étoiles du Starfield sont vraiment très fines, je te conseillerai d'une part de faire des carrés de 2x2 pixels. Si tu veux pas que ça soit trop choquant en taille, tu peux soit augmenter la taille en fonction de la coordonnées Z (si Z est grand, l'étoile est loin donc tu fait du 1x1pixel et sinon 2x2) ou jouer sur la couleur : gris pour lointain et blanc pour proche.
- pour le cube transparent, tu devrait le faire un peu plus gros, au lieu de mettre 0,5 pour les coordonnées, un 0,75 ou 1,0 serait à mon avis mieux.

Logiquement ce ne sont que des paramétrés qui devrait pas (ou peu) changer la taille de ton code.

En tout cas, GG.

Pour info, hier pas eu le temps de me mettre sur mon code, mais j'ai réduit à 1020o. Je m'arrête là, je vais peut être regarder pour faire un petit truc rapide tout de même qui pourrait permettre de participer à un mini-contest
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 15/08/2024 17:21 | #


Le cube c'est une histoire de perfs, et les étoiles qui ajustent leur taille ça prendrait plus de place.

Mais je suis content que ça t'as plu.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 15/08/2024 17:43 | #


Sinon c'est peut être parce que t'as lancé une autre démo avant.

Dans ce cas c'est de ta faute, attention... initialisez bien vos variables...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 15/08/2024 17:48 | #


Oui, le loader n'initialise pas la région BSS pour toi. On peut discuter de si moralement c'est la bonne chose à faire, notamment parce que dans un ELF classique sous Linux c'est initialisé à 0. Mais là avec un binaire pur y'a aucun moyen technique de le faire, donc c'est à vous. C'est toujours possible de le faire en genre 16 octets donc je pense pas que ce soit super contraignant. Je peux modifier le linker script pour ajouter les symboles appropriés, d'ailleurs.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 15/08/2024 18:08 | #


Ok, j'ai poussé le commit qui purge le cache d'instructions.

J'ai aussi poussé des instructions et une fonction d'exemple PDL_clear_bss() qui fait le boulot nécessaire (40 octets sous cette forme, urgh c'est un peu gros). La solution facile, qui est donnée dans la démo d'exemple, est juste d'appeler PDL_clear_bss() au début de main().

Si vous avez des crashs avec cette version du loader et que la démo qui crashe n'oublie pas d'initialiser ses variables, alors c'est un bug du loader, faites-le moi remonter.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 15/08/2024 20:47 | #


Une petite vidéo de ma démo (on calc c'est quand même plus fluide) :



J'ai fait un fork du lanceur et j'ajoute la capture vidéo + l'envoi des démos par USB (si j'y arrive). La capture vidéo marche déjà mais j'ai des petits problèmes avec JustUI.
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 16/08/2024 14:03 | #


Aaah, c'est joli... j'ai commencé à travailler sur la mienne aussi. Je crois qu'on va être un peu trop en décalé pour faire une compétition à proprement parler, mais ça me plaît beaucoup tout ça. Y'a d'autres personnes qui sont dessus ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fcalva Hors ligne Membre Points: 603 Défis: 10 Message

Citer : Posté le 16/08/2024 14:05 | #


Moi aussi je suis dessus, même si je sais pas trop quoi mettre que Mb n'a pas déja fait
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

Citer : Posté le 16/08/2024 14:06 | #


Je crois que Fcalva en fait une aussi.

J'ai une idée: on pourrait faire plusieurs catégories. Je propose 1K, 4K, 8K, 64K (le max du coup).
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 20/08/2024 09:43 | # | Fichier joint


J'ai commencé ma démo aussi, j'espère reproduire ou un deux effets graphiques de Kingdom Hearts III. Voilà un début (pour l'instant codé avec gint) :


Pour ce que j'ai en tête précalculer serait un peu chiant donc j'essaie d'optimiser pour que ça soit en temps réel. Sur la photo vous pouvez voir que la partie qui prend du temps fait 26 ms, j'ai commencé à la réécrire en assembleur. Pour l'instant elle fait 21 ms avec absolument zéro optimisation, donc j'ai bon espoir de pouvoir améliorer ça. J'ai besoin de mettre environ une dizaine de "sprites" similaires pour arriver à mes fins, donc ça reste pas facile.

Edit : c'est animé, mais évidemment ça se voit pas sur la photo...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1213 Défis: 3 Message

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 150 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