MQ : Émulateur add-ins universel
Posté le 28/05/2025 20:22
Parmi les
projets de 2025 il y a tout un plan pour préserver les contenus du site, notamment les vieux programmes. La base de programmes de Planète Casio n'est pas beaucoup maintenue et on ne traque pas vraiment ce qui est encore jouable ou pas.
Les projets d'émulateurs c'est pas nouveau, c.f.
*,
*,
* et j'en oublie. Initialement je pensais repartir d'un existant, mais finalement j'en ai commencé un from scratch en voyant le cahier des charges :
- Il faut pouvoir émuler à la fois les Graph mono et les Prizm et à la fois les SH3 et les SH4 ;
- Il faut que ça puisse tourner sur le site donc compiler vers WebAssembly et optimiser raisonnablement (téléphones etc. ont pas des perfs de dingue) ;
- Il faut émuler pas mal de trucs matériels, donc assez bas-niveau, pour bien couvrir les add-ins et potentiellement l'appli PRGM pour émuler les programmes Basic ;
- Et si on fait tout ça ce serait criminel de pas s'en servir pour développer/debugger, ce pour quoi une GUI plus grosse que juste l'écran est nécessaire (et/ou gdb).
Les détails techniques, pour ceux que ça intéresse, c'est : pur C, tourne sur
Azur par facilité (GUI en OpenGL avec
ImGui + compile pour Linux et WebAssembly), le décodeur est un arbre de
switch généré automatiquement et la mémoire est hiérarchique par blocs de 1 Mo, 4 ko, et 1 octet.
L'état actuel (Mai 2025) c'est : on peut faire tourner quelques add-ins sur CG, y'a des syscalls mais peu, y'a une partie du matériel émulé pour faire tourner gint ; en gros si vous prenez un add-in aléatoire ça va probablement pas marcher, mais pas loin.
Voici le dépôt et au passage à quoi ressemble l'interface : y'a tous les trucs techniques nécessaires pour debugger.
» Dépôt Git Lephenixnoir/mq «

J'ai pas encore de build pour le web sur lequel vous pouvez cliquer et tester tout de suite, mais vous pouvez compiler depuis le dépôt.
Voilà plus de nouvelles bientôt j'espère.
Fichier joint
Citer : Posté le 02/06/2025 16:16 | #
Il faudrait peut-être ajouter un mode activable qui réduit le nombre de cycles CPU ou le temps d'update de l'écran pour se rapprocher de la vitesse originale de la calculatrice pour les jeux qui n'utilisent pas de delta time.
Sinon, très impressionnant à ce que je vois sur les captures. L'UI est très clean, ça utilise quoi pour la faire ?
Citer : Posté le 02/06/2025 16:22 | # |
Fichier joint
L'UI utilise Dear ImGui avec quelques trucs custom notamment la barre de menu (ci-dessous), la fenêtre "Display" qui est dessinée direct en OpenGL avec zoom etc, et des widgets maison pas encore très élaborés mais ça vient
Citer : Posté le 04/06/2025 17:44 | # |
Fichier joint
Je me suis amusé à tweaker le clavier virtuel de façon à pouvoir "slider" sur les touches, ce qui permet de profiter pleinement de l'expérience originale proposée par Fruit Ninja
Citer : Posté le 04/06/2025 18:11 | #
Est ce que t'as prévu d'ajouter une option pour émuler la persistance de l'écran pour pouvoir pleinement profiter des add-ins gint qui utilisent le moteur de gris ?
Sinon c'est super impressionnant
Citer : Posté le 06/06/2025 05:39 | #
...et on ne traque pas vraiment ce qui est encore jouable ou pas.
J'avoue j'ai un peu zappé, mais avec les exams je ne peux pas trop faire grand chose en ce moment. Ma dernière épreuve étant mercredi pochain, jespére pouvoir continuer le "job".
Sinon, super émulateur. Et d'après la screenshot, on dirait qu'il supporte la mémoire (et les syscalls?) ce qui à l'aire top to be honest.
Un gros GG desus
Par ce que Oct 31= Dec 25
Citer : Posté le 07/07/2025 14:11 | #
make : on entre dans le répertoire « /home/pierre/casio-dev/Azur/build-linux »
[ 3%] Generating /home/pierre/casio-dev/Azur/3rdparty/gl3w/src/gl3w.c
env: ‘python’: Aucun fichier ou dossier de ce nom
make[2]: *** [3rdparty/CMakeFiles/gl3w.dir/build.make:74: /home/pierre/casio-dev/Azur/3rdparty/gl3w/src/gl3w.c] Error 127
make[1]: *** [CMakeFiles/Makefile2:1117: 3rdparty/CMakeFiles/gl3w.dir/all] Error 2
Pourquoi make essaye d'accéder a python2??
Citer : Posté le 07/07/2025 14:23 | #
Alors. Pour le contexte là t'es en train de générer gl3w qui est une lib pour charger OpenGL. Accéder aux fonctionnalités d'OpenGL est un peu chiant parce qu'il faut "charger un profil", ce que personne n'aime faire à la main, d'où les libs comme gl3w.
Le code utilisé par gl3w c'est beaucoup de boilerplate, essentiellement y'a un wrapper autour de chaque fonction, et la liste des fonctions est données par une spécification de Khronos. Du coup au lieu de l'écrire à la main, gl3w génère le boilerplate en téléchargeant la spécification puis en générant les wrappers avec un programme Python. C'est pour ça que tu as du Python.
Quant à la version de Python, le script utilisé par gl3w supporte à la fois Python 2 et Python 3, il faut juste qu'une des deux versions soit installée. Y'a encore des distros qui font chier et refusent de symlink python vers python3.
Edit: tu peux modifier 3rdparty/CMakeLists.txt dans Azur pour remplacer ./gl3w_gen.py par python3 gl3w_gen.py.
Citer : Posté le 07/07/2025 15:08 | #
test
Citer : Posté le 07/07/2025 15:11 | #
Inikiwi se fait jeter par OVH pour son post avec un message d'erreur CMake, c'est très drôle (2 minutes).
Bientôt on va découvrir que Azur trigger les filtres LLM stupides pour la détection d'attaques ou un truc de ce style...
Citer : Posté le 15/07/2025 11:05 | #
Des trucs excitants arrivent, on se penche sur les performances avec Yatis et changer le décodeur d'une série de switch à un tableau gagne 30% sur toute la partie émulation (i.e. pas juste le décodage, l'émulateur entier hors GUI accélère de 30%). Je pensais que le bon vieux switch était tenable, eh bah non. x)
Pour contexte, pour l'instant MQ est plus lent que l'émulateur de circuit10, casio-emu/calcemu. MQ fait tourner certains programmes que casio-emu ne supporte pas (genre Boson X), et à l'inverse casio-emu fait tourner pas mal de programmes que MQ ne supporte pas encore (parce qu'on n'a pas encore regardé les modules matériel appropriés).
Drakalex j'ai encore un oeil sur tes PR, super désolé de pas les avoir mergé encore alors que c'est très très utile, je suis en mode survie sur mon manuscrit de thèse donc j'avance que durant les appels avec Yatis (où on fait les parties subtiles à deux). @_@