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
Citer : Posté le 13/08/2024 17:37 | #
Ok, cool !
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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.
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
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 13/08/2024 18:34 | #
Ha ! J'aime déjà. Joli
Citer : Posté le 15/08/2024 14:26 | #
Ma démo fait plus de 4Ko, mais j'ai la flemme de l'optimiser plus. Enjoy.
Démo : https://git.planet-casio.com/mibi88/what_casiont/src/branch/master/what_casiont.pdl
Repo : https://git.planet-casio.com/mibi88/what_casiont
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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).
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.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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
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.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 15/08/2024 17:43 | #
Dans ce cas c'est de ta faute, attention... initialisez bien vos variables...
Citer : Posté le 15/08/2024 17:46 | #
Faut initialiser le BSS ?
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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.
Citer : Posté le 15/08/2024 17:50 | #
Oui, je veux bien les symboles.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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.
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.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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 ?
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
Caltos : G35+EII, G90+E (briquée )
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).
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
Citer : Posté le 16/08/2024 14:07 | #
Fcalva, j'ai pas fait de tunnel, pas de feu, pas de rotozoom et pas de plasma. Je te conseille https://seancode.com/demofx/ , ça m'a été utile.
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html
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...
Citer : Posté le 20/08/2024 11:28 | #
Wow, j'ai l'impression que tu nous prépares un truc incroyable !
libMicrofx : https://www.planet-casio.com/Fr/forums/topic17259-2-libmicrofx-remplacez-fxlib-pour-faire-des-add-ins-tres-legers.html !
Racer3D : https://www.planet-casio.com/Fr/programmes/programme4444-1-racer3d-mb88-jeux-add-ins.html