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. Fri, 19 Apr 2024 13:02:02 GMT Fri, 19 Apr 2024 13:02:02 GMT contact@planet-casio.com (Planet Casio) contact@planet-casio.com (Planet Casio) 5 Emulateur addins Graph100 https://www.planet-casio.com/Fr/forums/topic17730--.html Bonjour tous ! La graph100 est bien vieille maintenant, et chez certains (très) anciens, c'est une calculatrice qui nous a accompagné et qui a été une formidable aventure. La graph100 disposait d'un processeur 5Mz avec un système proche de DOS et de l'assembleur x86 16 bits (80286 plus précisément). Les addins étaient limités à 64KO ! De merveilleux programmes ont été écrits pour cette calculatrice, qui supportait les addins (à l'époque c'était la seule de CASIO avec la Classpad à les supporter). Hélas la plupart des sites graph100 et la communeauté associée a disparue. De nombreux programmes ont été perdus, mais de nombreux sont encore disponible sur planet-casio. Quelques documents sont encore disponibles: https://bible.planet-casio.com/cakeisalie5/websaves/graph100.com/ Le processeur est également bien documenté (v30Mx), par exemple: http://www.buchty.net/casio/files/v30-core.pdf D'autres docs sur le jeu d'instructions: https://www.gladir.com/CODER/ASM8086/serie-nec-v20-v30.htm https://www.ardent-tool.com/CPU/docs/NEC/V20-V30/v_series.pdf Une projet déjà existant d'émulation de cpu proche (V30Mz): https://github.com/FluBBaOfWard/ARMV30MZ La documentation disponible permet donc de reproduire le comportement mémoire, et les timings du processeur, ainsi que de savoir comment décoder toutes les instructions. Il est donc possible d'écrire un interpréteur des programmes graph100. Dans un premier temps sur PC, mais qui sais peut-être plus tard sur calculatrice. Des idées pour démarrer ? Des volontaires pour participer au projet ? Sat, 06 Apr 2024 23:03:07 +0200 omega/oSDK - un (autre) unikernel pour Graph 90+E https://www.planet-casio.com/Fr/forums/topic17724--.html Pour programmer sur les calculatrices Casio, la solution la plus simple a souvent été le Basic Casio. Bien que très utilisé au cours du temps - et Planète Casio en est un bon exemple -, c'est un langage vraiment lent, et plutôt pauvre en possibilités. La solution du Python s'est incorporée progressivement : c'est mieux, mais pas idéal. Enfin, il a - quasiment - toujours été possible d'utiliser le SDK de Casio. Ce SDK - kit de développement - permet de développer des add-ins, c'est-à-dire des applications natives. Mais en 2015, Lephenixnoir crée sa propre solution : gint, et son acolyte le fxSDK. Permettant toujours de programmer des add-ins, c'est aujourd'hui la solution la plus répandue. C'est ici que j'arrive. Fin 2023, je regarde le code de gint de près : je me découvre un intérêt pour la programmation bas niveau et la compréhension de ce genre de systèmes. C'est donc dans l'optique de toucher ça d'un peu plus près que je me lance dans omega. Mon but n'est pas de concurrencer gint - je n'en ai ni l'envie ni les capacités - : je veux simplement m'amuser et découvrir des choses. :D omega est un unikernel. Cela veut dire qu'à l'intérieur de chaque add-in réalisé avec omega, se trouve le kernel qui le lance. Le but est de ne pas utiliser l'OS de Casio, et de créer le nôtre, en quelque sorte. Ce fonctionnement est aussi celui de gint. Avec omega vient l'oSDK, mon kit de développement. Les sources sont sur le dépôt git d'omega ainsi que sur le dépôt git du oSDK Principales fonctionnalités omega est actuellement en cours de développement. Voici une liste des principales fonctionnalités gérées : - Driver de l'écran, fonctions basiques de dessin et de texte (printf-like, fonctions de dessins de ligne/rectangles...) ; avec, bien sûr, mise en place d'une VRAM - Conversion d'images .png - oconv - et fonctions d'affichage de ces images - Gestion basique du clavier : keydown() et keypressed() actuellement - Gestion des interruptions : je gère les interruptions, les exceptions (souvent appelées System ERROR) et les interruptions du TMU - Gestion de timers : possibilité de gérer 3 timers en simultané, ce qui est surtout utile pour garder un nombre constant de FPS (possibilité d'attendre la fin d'un timer) Installation du oSDK et d'omega Il est nécessaire au préalable d'installer sh-elf-gcc et sh-elf-binutils via GiteaPC. Compilons et installons ensuite omega : % git clone https://git.planet-casio.com/Potter360/omega/ % make % sudo make install Enfin, installons l'oSDK : % git clone https://git.planet-casio.com/Potter360/osdk % chmod +x install.sh % ./install.sh Et voilà ! On peut maintenant créer un nouveau projet avec : % osdk new [<nom du projet>] Démonstration(s) Il n'existe pour l'instant pas de démonstration. J'aurai pu joindre quelques photos d'un projet minimal (texte, image) créé avec omega, mais je préfère attendre d'avoir un "vrai" jeu ou projet codé avec omega. J'en profite pour dire que si ça vous tente d'utiliser omega pour votre prochain projet, ce serait avec plaisir ! En attendant quelques projets arrivent... stay tuned ! Sun, 24 Mar 2024 23:15:16 +0100 [mini-projet] azuray -- un raycaster avec Azur https://www.planet-casio.com/Fr/forums/topic17720--.html C'est la saison des raycasters en ce moment, et je me suis fait tenter une fois de trop donc j'ai fini par essayer d'en coder un. Le rendu graphique c'est plus drôle que debugger MicroPython (désolé mais facts quoi). Ça a bien tourné et le résultat est raisonnablement utilisable je pense, donc je partage. Télécharger une démo .g3a Dépôt Git Lephenixnoir/azuray https://git.planet-casio.com/Lephenixnoir/azuray/media/branch/main/screenshot.jpg Le "mini-projet" dans le titre est pour clarifier que c'est un projet que j'ai commencé sur coup de tête et je n'ai pas l'intention de le pousser plus loin. Je suis toujours là pour debugger ou tirer sur des petites fonctionnalités si des gens s'en servent, mais sinon ça ne bougera plus. Contrôles pour la démo : Flèches pour se déplacer, F1/F2 pour strife VARS pour afficher le HUD et les compteurs de performance F4, F5, F6 pour se téléporter à quelques endroits prédéterminés C'est mon délire habituel : prendre un truc raisonnable (un raycaster), le passer sous Azur, et ensuite commit après commit de grattage de cycles jusqu'à ce que ce tout le code qui manipule le moindre pixel soit au milieu d'un gros paquet d'assembleur illisible. Mais d'un autre côté, ça va vite ! Le raycaster est documenté dans `azuray.h` et le moteur est séparé de l'exemple, ce qui devrait le rendre vaguement réutilisable si jamais il y a des gens qui voudraient essayer de jouer avec. Notez que je ne l'ai testé que sur cet exemple par contre, donc je garantis pas que vous arriviez forcément à faire ce que vous voulez avec. Voilà voilààà, retour à PythonExtra maintenant. Sun, 17 Mar 2024 23:23:10 +0100 Cahute, pour communiquer efficacement avec sa calculatrice CASIO sous Linux https://www.planet-casio.com/Fr/forums/topic17699--.html Vous êtes utilisateur.ice de Windows, et vous utilisez Cahute, ou êtes intéressé(e) par son utilisation ? Vous êtes invité(e) à réagir ici vis-à-vis du support de Windows par Cahute :) Vous êtes utilisateur.ice de Debian ou dérivé, et vous utilisez Cahute, ou êtes intéressé(e) par son utilisation ? Vous êtes invité(e) à réagir ici vis-à-vis du packaging de Cahute pour votre distribution :) Cahute est mon dernier projet dans une lignée de projets qui avaient vocation à réimplémenter les protocoles et formats de fichiers autour des calculatrices CASIO, qu'ils soient officiels ou communautaires. En 2015/2016, dans le monde balbutiant des utilitaires de communication avec fx-9860G et compatibles Linux, on trouvait un xfer9860 vieillissant et pas très fonctionnel, et un UsbConnector qui ne supportait pas assez de features. Alors en août 2016, j'ai fini par faire p7, une implémentation des interactions avec la mémoire de stockage avec le protocole 7.00 tel que documenté par Simon Lothar. Tel que le veut la tradition capitaliste, maintenant que j'avais quelque chose qui fonctionnait et était apprécié de la communauté, il s'agissait de grandir. Les autres commandes du protocole 7.00 requièrent une connaissance beaucoup plus approfondie de la mémoire principale et de formats bien plus diversifiés, alors il est temps de s'enfoncer dedans et de gérer ces formats ; c'est ainsi qu'en novembre 2016, je sors la libg1m. Mais voilà, ces formats requièrent un encodage de caractères qu'il faut gérer également, alors hop, le même mois, la référence FONTCHARACTER est annoncée. En 2018/2019, alors que je reprends mes études, je me rends compte que tout ça fait beaucoup de projets à interconnecter, documenter et faire marcher ensembles ; alors j'entreprends d'en faire un projet commun, nommé "libcasio", où j'en profite pour aller au bout de mon refactoring en séparant les différentes couches, introduisant beaucoup de complexité mais beaucoup de flexibilité au niveau du design, introduisant des concepts assez intéressants mais qui sortent du cadre simple de la communication avec des calculatrices CASIO, au point même que j'en extraierai l'I/O dans une bibliothèque nommée "libtio" (pour "Touhey I/O"). La libcasio a de belles réussites, notamment avec l'ajout d'un utilitaire nommé "p7os" qui permet, enfin, de flasher une calculatrice depuis Linux, faisant au passage deux victimes collatérales sous la forme de deux Graph 35+USB, celle que j'avais au lycée et celle d'Eltoredo qui en a fait don pour la science (merci à lui !). C'est Lailouezzz qui réussira le premier flash avec p7os ; une commande était incorrecte, et il fallait en réalité en employer un autre. La barre était franchie, fxRemote ou même Windows n'est plus nécessaire pour flasher une calculatrice ! Seulement voilà, la libcasio était très complexe à maintenir, avec beaucoup de couches différentes, et j'étais seul à m'en occuper. Courant 2019, ma motivation s'effrite et je finis par m'intéresser à d'autres sujets, d'autres projets, et à délaisser les calculatrices CASIO. Pendant quatre ans, nous avions donc une libp7 et des p7utils plus maintenus, une libcasio qui n'est jamais sorti, une myriade de petits projets plus maintenus non plus et dont le potentiel d'interconnexion avec les autres projets n'a jamais été exploité. Avec de plus, des utilitaires de moins en moins utiles dans la vie de tous les jours, puisque les fx-CG / Prizm / Graph 90+E ont un mode "clé USB" qui rend accessible leur contenu de façon standard. Alors mi-février 2024, je me suis motivé et j'ai recommencé un projet similaire à la libcasio, mais avec les expériences que j'ai eues entretemps (beaucoup de documentation, un recours à la simplicité bien plus présent, et plus d'expérience en général), et un scope plus limité dans un premier temps : avoir les mêmes features que la dernière release de la libp7 et des p7utils, mais sous une forme plus maintenable et, surtout, documentée cette fois. Cet objectif a été atteint avec la release 0.1 de Cahute, qui a lancé ce topic ! Il est constitué d'une bibliothèque statique et d'un ensemble d'utilitaires en ligne de commandes, ainsi que d'une documentation en ligne. Les fonctionnalités actuellement présentes dans le logiciel sont : Transferts de fichiers dans les deux sens pour fx-9860G / Graph monochromes, en USB et en série. Partage d'écran depuis fx-9860G / Graph monochrome et fx-CG / Prizm / Graph 90+E, en USB. Le projet est sous CeCILL 2.1, et j'en suis le seul propriétaire et mainteneur pour le moment. Les liens pour ce projet sont : Documentation officielle (en anglais) Dépôt de projet (Gitlab.com) Guide d'installation (en anglais) Guide de contribution (en anglais) Pas de roadmap définie pour le moment. J'ai les mêmes pistes qu'à l'époque, mais l'une des premières choses à reprendre est sans doute la gestion des encodages de caractère de CASIO, puisque c'est eux qui sont utilisés dans les formats de fichiers et les protocoles. Ensuite, il faut que je trouve par quel bout prendre la gestion de la mémoire principale. En espérant que ça vous plaise ! :) Mon, 04 Mar 2024 14:26:05 +0100 Schengen https://www.planet-casio.com/Fr/forums/topic17683--.html https://www.planet-casio.com/storage/forums/2024-03-14-122507-Drawing%205-17683.png Schengen Schengen (assez bizarre comme nom mqis bon) est un groupe fondé par Acrocasio (qui a quitté pas longtemps après) et moi et contient Validuser et Le_masque. Il s'agit d'un groupe où on partage nos idées et codons ensemble pour essaye de faire des programmes (principalement des jeux). Nos projets du moment: - Terraria Graph 90+E - Gint++ - Mega Man Python (secret....) - tutoriel python lisible sur calculatrice (aussi secret....) >>Dépôt Gitea<< Voilà Tuper Wed, 21 Feb 2024 22:54:41 +0100 Adapatation de Kingdom pour calculatrice ? https://www.planet-casio.com/Fr/forums/topic17678--.html Salut, peut-être connaissez vous le jeu Kingdom ainsi que ses multiples DLC, c'est basiquement un jeu en 2d, dans lequel on est un roi et il faut étendre son royaume sauf que des petit monstres veulent voler nos sous et notre couronne. Etant assez fan du jeu, je me suis demandé, si vu qu'il n'est pas très demandant, si il pouvait etre adapté ? Mon, 19 Feb 2024 00:16:08 +0100 Terrario Graph 90+E (un meilleur appel aux volontaires) https://www.planet-casio.com/Fr/forums/topic17677--.html https://www.planet-casio.com/storage/forums/2024-03-14-122507-Drawing%205-17683.png Projet de Schengen(mais vous pouvez toujours aider ;) ) Salut tout le monde ^^ , Alors, vous avez surement vu le projet de Kbd2 qui est un Terraria pour calculatrices monochromes. Je vous propose alors un projet (dont n'importe qui peut participer) qui consistera a reprendre ce jeu et le "transformer" pour les graph 90+E et CG-50. Ce projet sera séparé en 3 étapes consécutifs: I. transformation des images en couleur La première est assez simple, il faut juste colorier les images avec votre logiciel préféré (paint, Gimp, Paitbrush, etc...) II. agrandissement des images La deuxième est de aggrandire les images pour que ça passe sur l'écran de la G90 (les maths, je ne les ai pas encore fais ^^") 3. et changer tout les "dsubimage" Et la troisième est de changer tout les "dsubimage" qui consiste a prendre qu'une seule partie de l'image (regarde cet exemple pour mieux comprendre). La raison de changer toutes ces commandes est par ce qu'on changé la taille des images donc on aura besoin de lui dire quelle partie de l'image il a maintenant besoin de prendre. Alors vous pouvez directement commencer (sans besoin de demander) en allant sur le dépot Github, et en prenant une image de assets-fx, la télécharger et la colorier, et de la remettre dans le assets-cg. Exemple: si vous prenez l'image vulture.png qui se trouve dans: assets-fx/img/ents, vous devrez la colorier et la mettre dans: assets-cg/img/ents et renommer avec le même nom que le original. Pour l'instant, vous ne devez que colorier les images sans besoin de modifier la taille. Et j'ai déja commencé un peu :D . Si vous trouvez une image colorier et que vous croyez que vous pouvez faire mieux, vous pouvez juste la renommer avec un 2 a la fin. (Évidemment si le 2 est déja utilisé, mettez un 3 et si le 3 est déja utilisé, mettez un 4 et ainsi de suite :lol: .) De cette façon, cette image de slime est coloré en une image comme ça! Dépôt Github Dépôt Gitea Toutes les images se mettent sur Github et non sur Gitea (car il s'agit de son mirroir et on a juste besoin de synchroniser de temps en temps) Toutes questions ou problème sont attendus dans les commentaires ^^ Le fichier .g3a a venir ;) J'attends de vos graphismes ^^ Voilà ;) Tuper Sat, 17 Feb 2024 10:36:26 +0100 Projet Pong sur Casio 35+ EII en python Extra https://www.planet-casio.com/Fr/forums/topic17674--.html à venir un pong en PythonExtra sur Casio 35+ EII https://imgur.com/yD8pKwA.png actuellement déjà jouable, mais encore des points à voir le code — qui date de mes débuts en PE – est à peaufiner et je le mettrai en ligne quand j'aurai revu certains points Edit Par exemple, la balle est carrée, car la fonction dcircle() n'était pas disponible Wed, 14 Feb 2024 20:41:46 +0100 Blackjack https://www.planet-casio.com/Fr/forums/topic17662--.html Salut tout le monde ! J'ai précédemment réalisé un jeu de Blackjack totalement fonctionnel et j'aurais pour projet de le transformer en add-in, malheureusement je ne suis pas très doué en C, donc je rechercherai un peu d'aide Fri, 09 Feb 2024 17:33:23 +0100 [BETA] Gint++ https://www.planet-casio.com/Fr/forums/topic17660--.html =200x300|center]https://www.planet-casio.com/storage/forums/2024-03-14-122507-Drawing%205-17660.png Projet de Schengen voila le Lien du projet voila le Dépot Gitea Je suis actuellement en train de travailler sur un projet que j'appelle(avec l'accord de Lephenixnoir) gint++. Le projet sera un fichier python qui offrira plus de fonctionnalité de graphismes pour gint. Les fonctions sont juste en réalité plusieurs fonctions de gint pour faire une image. Pour l'utiliser, tu n'as qu'a fairefrom gintpp import * au début de ton code ^^ . Ce projet est inutilisable sans PythonExtra puisqu'il utilise gint. Les fonctions que j'ai en tête: - dmenu(titre,option) #dessine un menu () - dlocate(x,y,string) #comme celui de Casio Basic - dsline(x1,y1,x2,y2,couleur,type) #dessine une ligne Cette dernière fonction a comme type ces possibilités: "pp" pour petit pointillés, "gp" pour grands pointillés et "lp" pour long pointillés. Je mettra les sources et des images pour les gens intéressés ;) . Je suis ouvert aux questions ^^ et si vous avez des autres idées, mettez les en commentaires s'il vous plaît :) . dlimage sera sous cette forme:dlimage(x,y,list,couleur). Voici a quoi servent tous ces paramètres: x et ysont les coordonnées du coin de l'image en haut a droite. la list doit ressembler a ça:img = [ "# #", "#####" ]Cette image sera une sorte de but et ressemblera a ça: |___|. taillex et tailley dans le cas du but sera alors:taillex = 5 tailley = 2 car il y a 5 caractères par lignes et il y a 2 caractères par colonnes. :here: la fonction trouve la taille toute seule maintenant ;) . couleur1 est la couleur des 0 et couleur2 est la couleur des #il n'y a plus qu'une seule couleur a mettre et ce sera la couleur du #, tu dois juste mettre un espace au lieu d'un 0 et sa couleur sera du blanc Cette fonction est la version améliorée de dimage() (désolé Lephe' ^^"). Maintenant regardons les pour et les contres: :+: plus facile a éditer :+: plus facile a comprendre :-: ne peux que faire deux couleurs (pour l'instant >:) ) :-: ne peux pas être très bien bien utilisé pour Graph 90+E a cause de ses plus petits pixels que les monochromes Le module python s'appelle gintpp et est en fichier joint ;) . Voilà Tuper @RDP Fri, 09 Feb 2024 15:22:47 +0100