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 Hors ligne Administrateur Points: 24458 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


1, 2, 3, 4 Suivante
Redoste En ligne Membre Points: 49 Défis: 0 Message

Citer : Posté le 09/08/2024 01:39 | #


Woa, alors déjà je tiens à dire que c'est très cool comme initiative. J'adore suivre la demoscene et je vous invite vraiment à faire de même, pour ceux qui ne connaissent pas je vous invite vraiment à faire un tour sur pouet.net régulièrement, c'est le "site de référence" dans la communauté (et téléchargez et exécutez les démos, la compression agressive de Youtube ne fait pas honneur à pas mal d'entre elles).
Je vous aurais bien invité à uploader vos démos CG stylés dessus, mais ils n'ont pas de plateforme pour les machines Casio (y a des TIs par contre).

Je voulais donc me motiver à essayer d'en faire une un jour, et bien sûr qu'en faire pour calto m'avais traversé l'esprit et j'avais justement pensé au header des G3As qui empêche d'avoir des petits fichiers.
Bon après c'est toujours pas arrivé et j'ai vraiment aucune fibre artistique, ce qui me motive vraiment pas, mais peut-être qu'un jour je trouverais la motivation de faire un truc.

Maintenant je vais être chiante et pédantique.
Alors bien sûr que ce loader est super utile et rends le développement de démos plus simple, plus pratique et permet d'avoir de bien plus petits fichiers, mais c'est juste qu'à mon avis ce serait un peu unfair d'appeler une "démo 1k" qui utilise PDL, une "démo 1k".
Pour moi une démo est là pour pousser les limites d'une machine, que ce soit son matériel et son logiciel, et si on s'amuse à ajouter du logiciel qui ne compte pas dans la taille de la démo et qui rajoute pas mal de fonctionnalités c'est pas vraiment légitime.
Il faut que l'on puisse exécuter une démo sur une machine qui sort du magasin.

Je vous invite à check les règles d'une des plus grandes demoparty
Revision 2024 PC Competition Rules a écrit :
We will not install any additional Runtimes, SDKs, Codecs, Drivers etc on the compo machine.

Car évidement si les machines venaient avec super-demo-loader.1.3.37.dll dans le PATH, ça serait plus simple.

Après comme c'est "notre propre scène" (dans le sens où y a pas grand monde à part les membres de PC) on peut se fixer la taille des démos comme ne prenant pas en compte la taille du header G3A, je pense que c'est un bon compromis.
Dans ce cas les démos 4k qui utilisent PDL seraient des démos "4k+PDL" où juste une 64k en gros, alors que les démos qui n'utilisent pas PDL pourraient être de "véritables" 4k.

Par contre il faudra juste accepter que si une personne trouve un bug dans CASIOWIN pour charger du code sans le header, la taille de sa démo sera négative x)

Edit: C'est une idée vraiment conne, mais ce serait possible de faire un G3A avec juste un tout petit loader qui charge le code qui est dans la thumbnail. Ça permettrait de faire un add-in très proche de la limite de taille, donc c'est peut-être pas la meilleure des solutions de juste soustraire la taille de 28ko, car ça catégoriserai une démo qui peut contenir pas mal de code comme une 512b ou 1k.
Acrocasio Hors ligne Membre Points: 994 Défis: 0 Message

Citer : Posté le 09/08/2024 02:53 | #


Salut ! C'est vraiment très cool comme projet, j'y avait déjà pensé, mais j'ai jamais pu le faire de moi même. Je suis plutôt d'accord avec Redost sur la philosophie. C'est bien de pousser la machine dans ses retranchements. Mais c'est aussi très cool de pouvoir faire des trucs au top en utilisant le moins de ressources possibles, à mon avis.

Et j'ajouterai qu'il y'a les demos de Sly [ https://www.planet-casio.com/Fr/programmes/programme4234-1-ccjdemo-slyvtt-jeux-concours-casio.html / https://www.planet-casio.com/Fr/programmes/programme4366-1-cc26-demo-slyvtt-jeux-concours-casio.html] qui sont aussi très bien faites et intéressantes. Bref, super idée que vous avez eu, j'espère que ça ira le plus loin possible
ouééé, jsuis un papillon, breizh à des émotions, il dort avec des peluches, il s'invente des histoires avec, et moi je suis parfaitement sain.
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

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


Cool pour l'enthousiasme

Pour le format, je n'ai pas moi-même d'opinion très forte. Si vous voulez changer, je vous suis.

Cela dit, j'ai du mal à suivre la logique. PDL ne rajoute pas des fonctionnalités, il en enlève en limitant l'interface à laquelle on a accès ; je l'ai mal communiqué, mais l'idée c'est bien sûr qu'on n'a le droit d'utiliser rien d'autre : le programme doit être autonome avec juste la petite interface.

Si je devais parier, je pense pas que faire du CASIOWIN/g3a ce soit fun. Avec CASIOWIN y'a plein de fonctionnalités cachées, y compris de quoi faire des dessins. Imagine que tu fais ta démo 3D from scratch et moi je vais faire du reverse-engineering pour trouver une fonction ultra obscure dans l'appli Graphe qui remplit un polygone. Ça, c'est de l'abus de runtime à mon avis (surtout que les adresses dépendent des versions de l'OS donc c'est pas portable). Pareil, là tout de suite combien de gens à ton avis savent qu'il y a des champs inutilisés/inconnus formant un bloc d'environ ~3500 octets, hors icônes, dans un g3a ? Si on organisait une compétition 4 ko demain y'aurait peut-être 3 gens qui s'en rendraient compte et tous les autres perdraient automatiquement.

Ma préoccupation c'est que si tu prends des add-ins bare metal et que tu autorises l'exploitation de CASIOWIN et du format la compétition ne sera pas fun parce qu'elle sera réservée aux experts. Si tu sais pas coder un driver écran t'as pas accès au 396x224, tu dois te payer une bande blanche sur trois côtés ou bien copier du code sur les autres. Si tu sais pas faire du reverse-engineering tu dois faire du dessin avec des méthodes moins flexibles ou bien copier du code sur les autres. Déjà que si tu sais pas coder en assembleur tes chances sont minces...

L'intention avec PDL est de mettre tout le monde au même niveau : écrire le code "style BIOS" le plus compact possible. Mais je comprends si ce n'est pas jugé le bon choix.

Edit : je me rappelle soudain que le header G3A est pas chargé (!), ce qui annule/simplifie les inquiétudes liées au format, mais pas celles liées à l'OS et aux compétences bas-niveau requises. Sauf bien sûr si lire sur le filesystem est autorisé.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Eragon Hors ligne Gardien des bots Points: 453 Défis: 0 Message

Citer : Posté le 09/08/2024 09:54 | #


Je suis vraiment tentée par cette idée c'est génial.
J'ai encore plus hâte de recevoir le lot du 1000 bornes pour pouvoir participer avec la G90 dans les mains.

J'aime bien l'idée de Lephé, peut-être que ça devrai pas s'appeler démo du coup, mais ça rend la création de petits binaires bien plus simple et plus fun je trouve.
A mon avis avoir un loader rend ça beaucoup plus accessible et bien plus fun, au lieu de passer des jours a décortiquer le format et les méthodes de l'OS tu est dans un cas bien plus simple qui force tout le monde a utiliser plutôt son imagination pour rendre son code plus petit.
Au lieu d'avoir une bataille de connaissance de l'OS tu a une bataille sur l’ingéniosité des participants pour hacker son propre code de manière a l'optimiser.
Qui sait on aura peut-être un algo de compression qui tient en x octets et qui permet d'avoir un code de plus de 1ko une fois extrait en RAM et du coup le binaire fait 1ko. Et je pense que c'est vraiment là que c'est fun.
En fait c'est pas tant un combat pour la g90 qu'un combat sur la conception de son code pour faire une création qui impressionne par le génie de son créateur
Fcalva Hors ligne Membre Points: 553 Défis: 9 Message

Citer : Posté le 09/08/2024 10:11 | #


Perso je pense que ça serait pas mal pire d'avoir que l'OS, vu que c'est horrible à utiliser, lent et ne permet pas de tester sur l'émulateur1.
Pour le plus de la solution de Lephé, je vous invite à lire le post de Eragon qui le dit très bien.
1: L'émulateur pratique de Circuit10
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

Citer : Posté le 09/08/2024 10:16 | #


Remarque en passant que l'API proposée par PDL là tout de suite est pas fondamentalement plus rapide que l'OS, et pourrait devenir le bottleneck puisqu'on n'a supposément droit à rien d'autre. Mais bon c'est juste 11 ms par dupdate() et pas d'accès DMA.
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: 2358 Défis: 17 Message

Citer : Posté le 09/08/2024 11:50 | #


Va-t-y pas que je regarde pas le site pendant 2 jours et que je vois ça qui pop !!!



Topissime, foi de DemoFX

Content que cette idée se matérialise. Une variante Azur à terme serait géniale, mais l'interface minimum sera plus lourde.
Du coup faudra que je trouve du temps pour regarder ça, entre mon placo, ma peinture et mon parquet
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: 2358 Défis: 17 Message

Citer : Posté le 09/08/2024 12:18 | #


PS : il faudrait peut être tout de même prévoir dans le loader une escape key au cas où, je ne sais pas si la touche MENU permet de sortir si besoin.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Fcalva Hors ligne Membre Points: 553 Défis: 9 Message

Citer : Posté le 09/08/2024 12:25 | #


Sly, on peut utiliser les routines de touches de l'OS dans la démo pour quitter
Edit : Non j'ai rien dit vu que le loader utilise gint complet, et on a pas d'interface pour le world switch
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

Citer : Posté le 09/08/2024 12:27 | #


Ben non pas si le but c'est de pas utiliser l'OS
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1151 Défis: 3 Message
Slyvtt Hors ligne Maître du Puzzle Points: 2358 Défis: 17 Message

Citer : Posté le 09/08/2024 12:33 | #


Je pensais plus a un "Boss Key" en fait, mais c'est le principe, pouvoir aborder via le check d'une touche accessible dans l'interface.

Logiquement une démo ne demande pas d'interaction du "spectateur", donc pas besoin d’accès au clavier.
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: 1151 Défis: 3 Message
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

Citer : Posté le 09/08/2024 14:34 | #


Je dirais que le loader peut quitter tout seul. Mais sinon oui.

Il se peut que j'aie parlé de gzip sur le chat
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: 2358 Défis: 17 Message

Citer : Posté le 09/08/2024 14:48 | #


Lephenixnoir a écrit :
Je dirais que le loader peut quitter tout seul. Mais sinon oui.


Oui le loader sort avec MENU pour un retour à l'OS, par contre rien quand on lance le PDL.
Un accès à u, PDL->ExitRequired serait peut être pas mal à ajouter.

Lephenixnoir a écrit :
Il se peut que j'aie parlé de gzip sur le chat


J'ai vu qu'en effet la compression te provoquait des émois
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Redoste En ligne Membre Points: 49 Défis: 0 Message

Citer : Posté le 09/08/2024 23:46 | #


Lephenixnoir a écrit :
Cela dit, j'ai du mal à suivre la logique. PDL ne rajoute pas des fonctionnalités, il en enlève en limitant l'interface à laquelle on a accès ; je l'ai mal communiqué, mais l'idée c'est bien sûr qu'on n'a le droit d'utiliser rien d'autre : le programme doit être autonome avec juste la petite interface.
Ahhh mais d'accord, j'avais pas compris. C'était pas hyper clair dans le post original et moi tu me donnes toute la machine, j'utilise toute la machine hein x)
Car sinon PDL n'enlève rien en soit, il donne juste "gratuitement" un driver écran qui peut faire du 396x224 et un timer préconfiguré.
Dans ce cas il faudra être plus clair sur les règles je pense, typiquement on interdit d'utiliser le moindre code de CASIOWIN mais est-ce qu'on autorise de taper à la main sur des périphériques si on sait exactement dans quel état PDL ou gint l'a laissé ?

Ça, c'est de l'abus de runtime à mon avis (surtout que les adresses dépendent des versions de l'OS donc c'est pas portable).
Oui je comprends, après encore une fois c'est une histoire de règle, typiquement dans les règles de Revision que je citais précédemment, c'est interdit de faire ce genre de trucs (pour les 8k et les 4k) :
Revision 2024 PC Competition Rules a écrit :
Import by ordinal for DLLs with non-fixed ordinals is forbidden (don’t even think about directly jumping into DLLs with hardcoded offsets!). Please use alternative, more compatible techniques like muhmacs import by hash to save on executable size or just use a packer like Crinkler, which does this automatically.
Mais d'un autre côté, c'est ce que j'aime voir personnellement.

Lephenixnoir a écrit :
Ma préoccupation c'est que si tu prends des add-ins bare metal et que tu autorises l'exploitation de CASIOWIN et du format la compétition ne sera pas fun parce qu'elle sera réservée aux experts.
Oui, tout comme pour être dans la demoscene Windows il faut être un expert de DirectX et pour être dans la demoscene DOS il faut être un expert sur le INT 21h, le BIOS du PC et les cartes VGA.
Je sais que c'est pas pour tout le monde, c'est pour ça que j'aime bien aussi que PDL existe pour ceux qui préféreraient.

je me rappelle soudain que le header G3A est pas chargé (!), ce qui annule/simplifie les inquiétudes liées au format, mais pas celles liées à l'OS et aux compétences bas-niveau requises. Sauf bien sûr si lire sur le filesystem est autorisé.
L'idée que j'avais eu hier soir était en effet d'utiliser le filesystem car j'avais pas capté que ce n'était pas quelque chose que tu pensais autoriser.

J'espère que ça ne sonne pas trop gatekeepy comment je rédige mes messages (je suis désolée, je sais pas parler), j'aime bien l'approche de PDL aussi hein. C'est juste que je trouverais ça intéressant d'avoir une autre catégorie pour des démos qui ne l'utilisent pas (si y a des compétitions bien sûr).
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

Citer : Posté le 10/08/2024 08:53 | #


Désolé pour la confusion, c'est de ma faute ! Je vois qu'on arrive quand même à la même conclusion. Du coup je propose deux catégories :

  1. Une catégorie autonome prenant la forme d'un binaire PDL pur, dans laquelle on n'a le droit d'utiliser que l'interface PDL qui sert de BIOS, avec pas d'autre accès à l'OS ni aux périphériques. Il est entendu que cette catégorie est plus accessible en éliminant la complexité de la machine, et que le loader pourra être mis à jour si on le juge nécessaire (*cough* le jour où y'a de l'audio *cough*).
    • Il serait probablement nécessaire de fournir les sources pour participer pour justifier qu'on n'abuse pas de l'OS.

  2. Une catégorie machine dans laquelle tout est permis, OS, drivers, abus de formats, système de fichiers, you name it. Les démos doivent fonctionner au moins sur une calculatrice vide (mémoires principale/stockage purgées) après un RESET (pour simplifier les drivers).
    • Attention quand même au risque que le code marche pas les 3/4 du temps ou que sur une version de l'OS.

Faire deux catégories ne résout pas instantanément le problème qu'en cas de compétition on ne saura pas forcément classer les deux catégories en même temps, mais au moins ça pourrait être des règles de départ.

Dans ce cas il faudra être plus clair sur les règles je pense, typiquement on interdit d'utiliser le moindre code de CASIOWIN mais est-ce qu'on autorise de taper à la main sur des périphériques si on sait exactement dans quel état PDL ou gint l'a laissé ?

Perso je dirais non. Si y'a un besoin d'utiliser un périphérique on pourrait fournir une interface BIOS-like dedans, mais sinon rester minimaliste. C'est toujours ouvert à discussion.

Du coup.

Qui serait chaud pour une petite compétition bientôt-ish ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24458 Défis: 170 Message

Citer : Posté le 12/08/2024 14:48 | #


Ping ? Je partirais bien sur des démos de 1 ko pour la première fois, histoire de voir. J'ai une idée dans un coin, je sais pas si c'est faisable mais ça m'amuserait.

Vu que le header g3a contient 3.5 ko de vide, pour la catégorie machine je propose une limite de 1 ko sur le diff entre un g3a contenant uniquement les métadonnées et la soumission. Ça me semble être "honnête" dans le sens où les syscalls sont accessibles ce qui est très bien pour la compacité, par contre il faut payer un coût d'entrée pour charger le code.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Mb88 Hors ligne Rédacteur Points: 1151 Défis: 3 Message

Citer : Posté le 12/08/2024 14:51 | #


1Ko c'est vraiment chaud, le template de libufx fait 1,7 Ko (sur mono bien sûr), je dirais 4Ko c'est accessible (c'est la taille de mon pong).
Fcalva Hors ligne Membre Points: 553 Défis: 9 Message

Citer : Posté le 12/08/2024 14:53 | #


1ko je pense que c'est faisable, mais assez dur aussi... Après faut voir le temps qu'on se donne, pour 24/48h ça me semble la valeur raisonable
PS : J'avais aussi commencé a faire un pong en assembleur, et à la moitié env. il fait déja 300o donc ouais c'est assez bas
Pc master race - Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
1, 2, 3, 4 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 57 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