Planète Casio - Projets de programmation - Flux RSS http://www.planet-casio.com Programmes Casio, Jeux, Cours pour Calculatrices Casio fr-FR https://www.planet-casio.com/images/logo.gif Planète Casio - Projets de programmation - Flux RSS http://www.planet-casio.com 55 50 Programmes Casio, Jeux, Cours pour Calculatrices Casio. Sun, 25 Jul 2021 12:10:28 GMT Sun, 25 Jul 2021 12:10:28 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 fxIP - TCP/IP stack, IRC client and webserver https://www.planet-casio.com/Fr/forums/topic16826--.html Hello! Je m'excuse de ne pas parler français. J'espère que ça ne pose pas de problème que j'écrive en anglais ici. ^^ I wrote fxIP, a port of uIP to Casio fx-Calculators, an IRC client and a webserver. https://github.com/Manawyrm/fxIP Using the 2.5mm serial port, SLIP-encapsulated IPv4 packets can be sent to the calculator. It could even be connected to a modem directly :lol: I made a short YouTube-clip showing the IRC client (while chatting on libera): https://www.youtube.com/watch?v=afkrucsMMrc If you're very quick, http://casio.as203478.net/ is a webpage directly hosted on my casio. It might not be available anymore in a few hours/days... It uses the fantastic fxsdk by lephenixnoir, and we added rudimentary serial support. fxsdk really is a fantastic pice of software, one of the best libraries I've used. Thank you very much for making it! Best regards Tobias (manawyrm) Mon, 12 Jul 2021 21:36:28 +0200 TLT : Théorie magique et un RPG temps réel https://www.planet-casio.com/Fr/forums/topic16817--.html Ça fait (très) longtemps que je veux faire un bon RPG temps-réel avec un accent sur la notion de magie, et l'univers (que je développe au papier et dans ma tête par petits bouts depuis quelques années) a donné le nom «TLT» ; c'est juste un acronyme, mais c'est presque devenu coutumier de ne pas donner le nom complet, alors je m'y tiens pour l'instant. ^^ Synopsis Le cœur du concept c'est la notion de magie de l'univers. Toute l'histoire se passe dans un monde où la magie est un élément naturel et dont l'existence est bien connue, mais qui est très niche parce qu'on n'en connaît pas les principes et que peu de gens arrivent à s'en servir pour faire peu de choses. Vous pouvez imaginer une époque type Renaissance, pas encore d'industrie à proprement parler, mais plus raffinée et intellectuellement développée que du médiéval. Lorsque des éléments systématiques sur le fonctionnement de la magie sont découverts, élargissant à la fois ses applications et son public, la société se reforme autour de cette science et technologie, et soudain tous les enjeux se mettent à tourner autour : le génie civil, l'armement, les relations politiques et internationales ; mais aussi la gestion de l'énergie, l'automatisation, et l'industrie, qui se créent du fait des nouveaux moyens disponibles. TLT raconte le début de cette histoire, de la période où la magie est découverte jusqu'aux premiers conflits internationaux majeurs. Parce que sans surprise, c'est l'armement qui profite de la nouvelle technologie en premier, qu'on l'ait voulu ou non. :( Théorie magique La pièce de voûte de tout l'univers donc c'est cette magie. Le but ici c'est bien d'avoir un système de magie «dur», où le pourquoi du comment de chaque usage de la magie est expliqué. Pour résumer la vidéo en une phrase, moins on explique un système de magie (eg. le seigneur des anneaux) moins il est légitime/raisonnable de faire reposer des enjeux importants dessus, sinon on trahit les attentes et connaissances des spectateurs/joueurs. Et donc là je compte bien tout expliquer. :) Pour vous donner une idée des grands principes, la magie c'est similaire au calcul mental. Tous les êtres conscients peuvent l'utiliser modulo explications et entraînement. Tout comme on peut retenir et combiner des nombres mentalement quand on fait du calcul, on peut conserver et combiner de l'énergie quand on fait de la magie. Et tout comme on peut écrire, dire, ou mettre en œuvre de diverses façons les résultats des calculs dans le monde physique, on peut aussi manifester l'énergie manipulée de différentes façon dans le monde physique. J'agite les mains pour expliquer où exactement est l'énergie quand on «calcule» et comment la conversion avec les énergies du monde physique se font (si quelqu'un connaît un modèle compatible avec la physique moderne je prends). Mais une fois que cette partie est admise on peut rentrer dans le cœur du sujet. ;) Dans ce monde qui vient de découvrir la magie, l'enjeu majeur consiste à la systématiser (rendre son comportement reproductible avec le plus de fidélité possible) puis à la passer à l'échelle (construire des systèmes magiques de plus en plus complexes). Comme c'est un humain qui «calcule» chaque sort, il y a besoin de techniques pour rendre le procédé aussi simple que possible ; simplification des règles de «calcul», représentations visuelles, etc. La version actuelle de la théorie (la plus prometteuse pour l'instant) consiste en une seule primitive de «calcul» qui déplace de l'énergie selon une règle aussi simple que possible. La primitive s'appelle un limiteur asymétrique (le nom est compliqué à cause de la longue lignée d'objets l'ayant précédé) et ressemble à ça. https://www.planet-casio.com/storage/forums/asymmetric-limiter-16817.png L'énergie attend dans les entrées en haut. Lorsque c>0, le limiteur peut être activé, auquel cas l'énergie traverse du haut vers le bas. La valeur c est le «contrôle» du limiteur, il indique quelle quantité d'énergie est autorisée à traverser. L'entrée est i₁+i₂, et du coup la sortie c'est min(c, i₁+i₂). Toute l'énergie qui n'est pas autorisée à traverser est rejetée sur le côté. L'énergie du contrôle ressort telle quelle, d'où le trait direct qui traverse sur le dessin. C'est pas hyper simple, mais quand on sait qu'avec juste une combinaison de ces limiteurs on peut construire une partie de l'arithmétique, de la logique booléenne, du stockage/des mémoires, des horloges et des systèmes synchrones, sans même supposer que les limiteurs sont activés en même temps ou à intervalles réguliers, je dirai que c'est pas mal. ^^ J'ai pas mal de résultats très prometteurs sur cette théorie, mais comme je ne me fais pas confiance pour prouver des sorts complexes au papier je prépare un simulateur pour valider mes résultats ! Gameplay Le gameplay doit servir l'histoire et l'expérience du protagoniste, qui ne sont pas entièrement définis, donc les mécaniques sont vraiment pas fixées ; mais voilà des idées. Magie. Le but majeur du jeu (et le point le plus dur) c'est d'intégrer une notion de magie toute théorisée dans un RPG. Je voudrais que le joueur puisse découvrir et apprendre à utiliser le système de magie en même temps que le protagoniste, et concevoir des sorts au cours du jeu. Bien sûr il n'est pas question de faire assembler des limiteurs asymétriques (ce serait horrible :lol: ), mais de présenter une version plus haut niveau de la chose. Un peu comme si je présentais Scratch au joueur après avoir inventé le transistor, si vous voulez. Cette partie se clarifiera sans doute quand j'aurai atteint des aspects vraiment haut niveau du système de magie ; pour l'instant j'ai surtout travaillé sur le partie abstraite («calcul») et pas encore sur les interactions avec le monde physique, donc ça reste indéterminé. Mais il y a plusieurs options permettant au joueur de s'investir au niveau qui lui convient, donc je suis assez confiant que ce sera intéressant à jouer. ^^ Combat. L'histoire impose pas mal de combat, et ça colle pas mal au style du Action-RPG aussi, donc ce sera probablement la mécanique principale pour accompagner la magie. J'aimerais être économe en mécaniques pour ne pas m'éparpiller, donc je pense que les statistiques et techniques de combat seront limitées aux équipements portés et à un arbre de compétences, sans système de niveau/XP (les points de compétences étant distribués au cours du scénario). Initialement je voulais faire reposer l'intégralité du système de combat sur la magie, mais il est trop compliqué de formaliser de façon convaincante dans un sort (qui n'est qu'un diagramme) toutes les directions physiques («vers l'arrière»), ou les formes (sphère, cylindre), ou les timings. Du coup, je m'appuie à la place sur les entrées du joueur ou les compétences de combat physique (une liste fixe) pour exprimer ces notions, ce qui me donne un mélange de combat physique et de magie. ;) Environnement. J'aimerais pouvoir utiliser la magie pour autre chose que le combat, parce que l'univers s'en sert aussi dans plein d'autres situations (rien que le génie civil par exemple), mais je ne sais pas si j'arriverai à trouver des tâches/actions raisonnables pour réaliser ça. Scénario. Le jeu sera probablement assez linéaire pour coller à l'histoire (genre Half-Life premier du nom), ce qui me permet aussi de définir assez peu de lieux et de me concentrer sur les mécaniques. Aspects techniques et plan Récemment j'ai infiltré KikooDX et Masséna (ils disent qu'ils m'ont «pris en stage» mais j'aurai le dernier mot !) pour avoir tous les protips de développement de jeux vidéos, vu que mon domaine c'est plutôt le genre gint et que les méthodes sont vraiment pas les mêmes. x) J'ai vraiment pas les réflexes qu'il faut pour aller vite mais je m'accroche, vous verrez apparaître rapidement un petit jeu de combat marrant (co-op avec Masséna) si j'arrive à me concentrer dessus. Ce que j'ai concrètement, en ignorant les idées : Des documents décrivant la théorie des limiteurs asymétriques ; Des notes sur l'univers avec en particulier un chapitre de narration qui raconte la fin de TLT (qui est plus le début de l'histoire principale de l'univers) ; Un moteur de rendu (... dans le futur, de jeu, mais pour l'instant de rendu) qui supporte SDL sur PC, SDL/emscripten dans le navigateur, et gint sur Graph 90+E avec des méthodes pétées. Des détails arriveront plus tard. Et le début d'un simulateur pour valider les résultats théoriques. Programmer les grandes lignes du jeu (map, combat, physique, etc) n'est pas particulièrement difficile, mais comme les détails de la magie auront beaucoup d'influence dessus je me précipite pas. Voilà voilà, maintenant que j'ai un topic je posterai des update sur tout ce qui tourne autour de ce jeu, vu que j'ai toujours un pied dans un des aspects. ^^ @RDP avant que j'oublie. Tue, 29 Jun 2021 19:06:24 +0200 Juicy Level Editor ; un éditeur de niveau pour les g@m3rz https://www.planet-casio.com/Fr/forums/topic16810--.html Bonjour tout le monde ! JLE est un éditeur de niveau conçu comme je crée mes jeux, et avec comme objectif premier d'être simple et agréable à utiliser. Une vidéo disant plus que mille mots : https://www.youtube.com/watch?v=L0zPZU6wTD8 L'éditeur a du feedback et du jus jamais vu, le ressenti est inégalé ! Je vais pouvoir design les niveaux du prochain Dumb Clicker avec JLE et le sourire aux lèvres. Vous pouvez essayer JLE dès maintenant, un tileset et un niveau de test sont inclus dans le dépôt du projet. Téléchargement de JLE et instructions. @RDP me kickez pas ohménon Wed, 23 Jun 2021 10:20:06 +0200 [C/ASM] Optimiser au cycle près : la référence https://www.planet-casio.com/Fr/forums/topic16807--.html J'adore programmer des add-ins, je pense que ça ne vous aura pas échappé. Le sujet est très large, mais s'il y a une problématique spécifique que je considère ma «spécialité», c'est d'exploiter toutes les astuces logicielles et matérielles pour améliorer les performances. Ce topic est une référence de techniques d'optimisation d'add-ins, de tous les styles et niveaux. Ce post contient un index de tous les sujets qui me paraissent utiles (sauf ceux que j'ai oubliés), et j'écrirai des bouts au gré des opportunités et des découvertes. Le sujet étant large, je ne m'attarderai pas sur les notions générales de C/assembleur dans un premier temps ; si vous comprenez les notions d'«accès mémoire» , «instruction», «cycle d'horloge», «timer», et «bus» vous savez tout ce qu'il faut pour aborder les catégories «Bas niveau». Sinon, demandez dans les commentaires :) Tutoriels qui vous aideront à comprendre les concepts : TDM 18 : Comprendre les données et leurs représentations TDM 19 : Appréhender la mémoire pour éclairer le bas niveau Initiation à l'assembleur SuperH Quelques mythes brumeux du développement C (vieux mais correct) La référence de l'optimisation au cycle près Identifier les besoins d'optimisation Il est très tentant, mais inutile, d'optimiser du code qui ne limite pas les performances du programme. Identifier les parties critiques et les liens faibles qui monopolisent les ressources est toujours la première étape. Concepts généraux et bons benchmarks (Programmation générale — ★☆☆) Mesurer et visualiser les performances  (Programmation générale — ★☆☆) Mesurer au cycle près (Bas niveau — ★★★) Optimisations algorithmiques On ne peut pas sous-estimer l'importance des optimisations algorithmiques. En un sens, l'algorithmique est la science de calculer ce qu'on veut avec la bonne méthode, indépendamment de l'implémentation. Avec l'exception du dessin sur Graph 90+E et des programmes très intensifs en calcul, l'immense majorité des améliorations du code sont des fourmis au pied de la montagne de l'algorithmique. Introduction à la complexité (Algorithmique — ★☆☆) Interlude : éléments d'analyse asymptotique (Maths — ★★★) Structures de données (Algorithmique — ★★☆) Recherches de valeurs et tris (Algorithmique — ★★☆) Notions simples de pathfinding (Algorithmique — ★★☆) Algorithmes probabilistes et approximations (Algorithmique — ★★★) Optimisations de calcul et d'implémentation Vous allez voir que nos chères calculatrices ne sont pas si bien équipées pour calculer que ça. Calcul en point fixe et en point flottant (Programmation générale — ★☆☆) Précalcul des divisions (Maths — ★★☆) Approximations polynomiales : développements limités, séries entières (Maths — ★★★) Approximations itératives : méthode de Newton, simulation d'équa diffs (Maths — ★★☆) Produits : Karatsuba (entiers/polynômes), Strassen (matrices), Hörner (Maths — ★☆☆) Optimisations sur la mémoire En général, plus vous progressez en C, plus vous regardez la mémoire de près. Je vais jusqu'à dire que la mémoire est le concept fondamental et omniprésent qui guide l'implémentation de tout programme en C (avec bien sûr l'algorithmique qui guide la conception). Sur la calculatrice, c'est encore plus vrai, et de toutes les optimisations de code très peu concurrenceront une gestion supérieure de la mémoire. Accès aux mémoires, bus, et compromis taille/vitesse (Bas niveau — ★☆☆) Exploiter efficacement les caches (Programmation générale — ★☆☆) La cartographie du SH4AL-DSP et du SH7305 (Bas niveau — ★★☆) Optimisations des copies et écritures avec le DMA (Programmation générale — ★☆☆) Benchmark de toutes les méthodes d'accès par région (Programmation générale — ★☆☆) L'écran R61524 de la Graph 90+E (Bas niveau — ★★☆) Optimisations sur le code assembleur C'est dans le boucles critiques, exécutées plusieurs millions de fois par seconde, où chaque cycle compte, que ce topic trouve son nom. Vous avez optimisé les algos, les méthodes de calcul, conçu le programme avec la meilleure distribution possible de la mémoire, et maintenant vous voulez écrire en assembleur la version la plus rapide possible. Voilà comment. Les forces et les limites de l'optimisation dans le compilateur (Programmation générale — ★★☆) Idiomes d'assembleur SuperH, techniques classiques (Programmation générale — ★☆☆) Exécution simultanée d'instructions : le pipeline (Bas niveau — ★★★) Exécution simultanée d'instructions : l'architecture superscalaire (Bas niveau — ★★☆) Accès mémoire : délais, alignement, conflits (Bas niveau — ★★☆) Dépendances de données et ordonnancement des instructions (Bas niveau — ★★☆) Entrelacement des boucles, «ouverture» des itérations (Bas niveau — ★★★) Détournements du jeu d'instructions parallèle du DSP (Bas niveau — ★★☆) Sun, 20 Jun 2021 22:24:26 +0200 Duktap+E, ou la programmation de programmes en JS https://www.planet-casio.com/Fr/forums/topic16806--.html Bon, si vous avez regardé le salon #projets de la shoutbox, vous le savez peut-etre, je travaille sur un add-in pour interpreter du JS pour la Graph 90+E. Le developpement de l'add-in étant à un état presque utilisable(y a toujours des bugs), j'ai voulu en parler ici Vu que au début du dev de l'add-in j'ai eu une flemme incroyable de seulement lire le fichier \\fls0\code.js ca a résulté en un truc sympa: des loaders(en gros c'est des programmes en JS qui load d'autres programmes en JS) Je commence à en écrire un, CasioRun qui permet aussi de charger des modules (aussi j'ai envie de faire un module qui permetterait d'utiliser l'USB pour se connecter a l'Interwebz. Quoi? J'en ai dit trop?) Bon c'est temps de parler de problemes connus: -Read address error dès que j'appuie sur une touche (retirer le getKey ne fait pas crash) voici le code JS var obj = { name: "Maxime",//Si tu es Maxime, ping moi sur le Discord avec le message "Flag found, capt'n" :kappa: color: RGB888(255, 0, 188), //RGB888 -> RGB565 x: 1, y: 1 } clear(RGB888(255, 255, 255)) text(obj.x, obj.y, obj.color, obj.name) update() getKey() @RDP Sat, 19 Jun 2021 18:21:06 +0200 [ANNONCE] nouveau add-in oui-oui https://www.planet-casio.com/Fr/forums/topic16801--.html cet après-midi je vais commencer un nouveau add-in oui-oui le contenu: c'est une surprise :mmm: Wed, 09 Jun 2021 14:30:58 +0200 Lecteur vidéo https://www.planet-casio.com/Fr/forums/topic16795--.html Je le met ici au cas ou quelqu'un voudrait faire quelque chose avec. Y'a un peut de temps maintenant j'avais essayé de mettre Bad Apple sur la calculatrice et donc j'ai fait un programme pour regarder des vidéo compresée. Mais y'en a déja, donc pour changer j'ai aussi implémenté une version qui utilise les DCT pour avoir une vidéo en noir et blanc 8bits (c'est de la compression jpeg en gros), elle fonctionne relativement bien et pourrait être modifé pour ajouter de la couleur pour utilisation sur Graph 90 (probablement avec un peut d'overclock parcontre). Bref j'arrète de raconter ma vie, comme tout le temps la source est sur github ici. Et ca utilise gint, bien sûr ;) Wed, 02 Jun 2021 13:41:46 +0200 MiddleArch, un dépot communautaire https://www.planet-casio.com/Fr/forums/topic16790--.html J'avais pas d'idée pour le titre, désolé pour le jeu de mots pourri. Si vous correspondez à ces trois critères, alors cette page est pour vous : – Vous utilisez la toolchain fxsdk / gint pour créer des addins – Vous utilisez une distribution linux basée sur ArchLinux (Manjaro, Artix Linux, Endeavour OS, etc.) – Vous en avez marre de devoir compiler les paquets à chaque mise à jour de la toolchain MiddleArch est un projet de dépôt alternatif pour pacman, que je maintiens personnellement. Il comprends la majeure partie des paquets dont vous pourriez avoir besoin afin d'utiliser les outils communautaires qui tournent autour des calculatrices. Il est hébergé à l'adresse https://arch.middleearth.fr. Ces paquets sont précompilés, ce qui signifie : :+: plus besoin de passer 30 minutes à compiler GCC/binutils/gint/whatever sur votre machine :+: une installation simplifiée avec les cycles de dépendances intégralement gérés :+: des mises à jour automatiques dès que de nouvelles versions sont publiées :-: aucune modification des options de compilation possible :-: vos projets doivent être en permanence à jour par rapport aux API des bibliothèques installées :-: il faut me faire confiance pour le contenu des paquets Liste des paquets disponibles (au 2020-06-09) En bleu, les paquets qui sont intéressants à installer explicitement. Les autres sont généralement des dépendances installées par les précédents. – isl (0.24) – sh-elf-binutils-casio (2.36.1) – sh-elf-gcc-casio (11.1.0) – fxsdk (2.5.1) – mkg3a (0.5.0) – libp7 (3.0) – p7 (3.0) – p7screen (3.0) – gint (2.5.3) – fxlibc (1.2.0) – openlibm-casio (0.7.5) – justui (1.1.0) – libimg (2.4.0) – libprof (2.4.0) Utiliser le dépôt Avec les droits root, commencez par ajouter le dépôt en bas de votre `pacman.conf`, puis faites une mise à jour du système, et enfin installez les paquets. # cat << EOF >> /etc/pacman.conf SigLevel = Optional TrustAll Server = https://arch.middleearth.fr/$arch EOF # pacman -Syu # pacman -S fxsdk gint libprof Support et résolution de bugs En cas de problèmes avec l'utilisation des paquets, n'hésitez pas à me contacter via ce topic. J'essayerais d'être le plus réactif possible. Wed, 26 May 2021 23:56:08 +0200 Kimeera Reboot https://www.planet-casio.com/Fr/forums/topic16789--.html Bonjour tout le monde ! Je commence aujourd'hui à travailler sur Kimeera Reboot, inspirée par le prototype que j'ai créé pour le CPC#27. Ce reboot prendra en compte tous les retours que j'ai eu sur le premier jeu -- un grand merci aux testeurs. Je vais repenser le gameplay, le lore, etc. avec comme seul objectif de rendre le jeu meilleur en utilisant vos remarques. Une fois cela fait, je pourrai me reconcentrer sur le game design : ajout de contenu et mécaniques. Ce jeu sera un add-in créé avec gint, pour calculatrices polychromes et monochromes. Petite photo de mon moteur de texte bricolé cet après-midi, sur 75+E et 90+E : https://www.planet-casio.com/storage/forums/test-16789.jpg uwu La police utilisée sur la 75+E est Kenney Mini. Repo du projet, mis à jour en temps réel. PS : je fais un break avec Projet Secret™ pour prendre du recul, ne vous inquiétez pas :) @RDP Wed, 26 May 2021 15:58:37 +0200 Projet Secret 2:tm: https://www.planet-casio.com/Fr/forums/topic16781--.html Oui oui, y a déja 50 projets secrets, mais bon. Avec l'avancement de gint(et de l'USB :waza: ), j'ai eu une idée, stupide, mais sympa d'un FWL pour calculatrices =) Le projet reposera sur fxlink, et un jour aura meme un support PC ! (bon moi j'ai cours donc je finis ca prématurément) @RDP Mon, 17 May 2021 13:56:12 +0200