MPM : Mod add-ins Math+
Posté le 02/12/2024 12:36

MPM est un mod communautaire de la Math+ remettant le support des add-ins, développé par Planète Casio.
Version actuelle : bêta
Instruction d'utilisation
- Brancher la calculatrice en mode mise à jour de l'OS. Si vous utilisez une VM, attachez la calto à la VM.
- Lancer mpm-installer-1.0bw.exe depuis cmd. Un échange se fait.
- Quand l'installeur affiche "Communicating more..." la calto se reconnecte. (Si vous utilisez une VM, attachez la calto à la VM. J'utilise une fonction naïve pour la reconnexion donc vous avez genre 10 secondes.) Attendez une seconde et appuyez sur EXE pour continuer.
- Ensuite suivez les instructions sur la calto, en gros TOOLS puis SETTINGS et RESTART.
- Transférez mpm.bin dans la mémoire de stockage.
- Dans le menu principal, appuyez sur TOOLS pour accéder au menu des add-ins (inactif en mode examen).
État actuel du support (2025-02-19)
- Les add-ins compilés avec la branche dev de gint doivent marcher normalement.
- Les add-ins gint non recompilés marcheront mais le clavier sera en désordre et tout retour au menu / accès système de fichiers / autre syscall plantera.
- Les add-ins PrizmSDK ne marcheront pas parce qu'ils utilisent des syscalls partout (pas encore émulés)
- Tous les add-ins modifiés pour remplacer les syscalls par des adresses explicites si les syscalls ont le même code marcheront (... tant que y'a pas en plus des fonctionnalités spécifiques aux modèles dans l'appli).
Liste de préoccupations
- Compatibilité binaire :
Pas encore clair
Si on peut l'avoir, c'est super. Sinon, y'a un casse-tête à attendre pour traquer quels add-ins sont compatibles. L'absence de table de syscalls est le principal souci ici, ce qui peut peut-être se contourner avec un coup d'UBC pour intercepter les appels.
- Compatibilité de la disposition clavier :
Pire cas, en recompilant
Syscalls + GetKey() : les codes sont adaptés, certaines touches disparaissent, d'autres sont nouvelles.
gint sans recompiler : j'ai un trick en tête mais il vaut mieux imaginer que ça va donner des mauvais résultats.
gint en recompilant : la compatibilité sera assurée.
- Reste du matériel :
Quasiment garanti identique
Il faudrait qu'un truc très gros m'ait échappé.
- RAM étendue :
Probablement OK
Il y a de la mémoire après les 2 premiers Mo, pas sûr cependant de si l'utiliser interférera avec l'opération normale de l'OS.
- Récupérer 16 Mo de mémoire de stockage :
Pas clair
Il faut que ça marche en pratique et c'est dur d'écarter tous risques de brick. Et je sais pas comment faire techniquement parlant.
Post original
Cliquez pour enrouler
Comme annoncé pour le
Puzzle de l'Avent, un mod Math+ non-officiel est en cours de développement pour permettre d'écrire des add-ins sur la Math+.
Le mod n'est pas encore public du fait qu'il n'y a pas encore les sécurités nécessaires pour bien empêcher qu'on en abuse. Mais les questions techniques sont partiellement résolues et on commence à avoir une vue raisonnable de ce qu'on va pouvoir, ou pas, faire sur la Math+.
La préoccupation principale est
si les .g3a existants vont marcher tels quels, ou
compatibilité binaire. Ce serait le pied, mais c'est pas encore clair si on peut parce que la table des syscalls n'existe plus.
Par ce topic je souhaiterais savoir ce que la communauté voudrait voir dans un tel mod et discuter de la faisabilité technique. Y a-t-il des choses qui posaient problèmes sur la 90 que vous voudriez améliorer ? Des soucis attendus avec la Math+ que vous voulez voir adressés ? J'ai déjà quelques idées en tête, mais je vous laisse vous exprimer.
Fichier joint
Citer : Posté le 17/06/2026 09:34 | #
Oui, il faut utiliser le branche dev, juste en ajoutant @dev:
J'ai pas fait de release depuis des plombes donc tout est encore sur dev, désolé @_@
Mais oui c'est compatible Math+ et c'est même compatible nouvel écran (même si MPM lui-même le supporte pas encore).
Par contre pour Upsilon/Delta faudra repenser à la disposition des touches par rapport à la 90, bien sûr. Pour une fois le nouveau clavier devrait aider !
Citer : Posté le 17/06/2026 10:35 | #
La compilation échoue assez vite:
giteapc install fxsdk@dev gint@dev
<giteapc> Fetching Lephenixnoir/fxsdk...
<giteapc> Checking out dev
<giteapc> Fetching Lephenixnoir/gint...
<giteapc> Checking out dev
<giteapc> Fetching Lephenixnoir/sh-elf-gcc...
<giteapc> Fetching Lephenixnoir/sh-elf-binutils...
<giteapc> Fetching Lephenixnoir/OpenLibm...
<giteapc> Fetching Vhex-Kernel-Core/fxlibc...
<giteapc> Will install: Lephenixnoir/fxsdk@dev, Lephenixnoir/sh-elf-binutils, Lephenixnoir/sh-elf-gcc, Lephenixnoir/OpenLibm, Vhex-Kernel-Core/fxlibc, Lephenixnoir/gint@dev
<giteapc> Is that okay (Y/n)?
<giteapc> Lephenixnoir/fxsdk: Checking out dev
<giteapc> Lephenixnoir/fxsdk: Configuring
...
-- Installing: /home/parisse/.local/lib/libfxlink.a
make[1] : on quitte le répertoire « /home/parisse/.local/share/giteapc/Lephenixnoir/fxsdk/build »
<giteapc> Lephenixnoir/fxsdk: Done!
<giteapc> Lephenixnoir/sh-elf-binutils: Configuring
<sh-elf-binutils> binutils 2.42 already installed, skipping rebuild
<giteapc> Lephenixnoir/sh-elf-binutils: Building
<giteapc> Lephenixnoir/sh-elf-binutils: Installing
<giteapc> Lephenixnoir/sh-elf-binutils: Done!
<giteapc> Lephenixnoir/sh-elf-gcc: Configuring
<sh-elf-gcc> libsupc++.a found, libstdc++-v3 is already built
<sh-elf-gcc> GCC 14.1.0 with libstdc++-v3 already there; skipping rebuild
<giteapc> Lephenixnoir/sh-elf-gcc: Building
<giteapc> Lephenixnoir/sh-elf-gcc: Installing
<giteapc> Lephenixnoir/sh-elf-gcc: Done!
<giteapc> Lephenixnoir/OpenLibm: Configuring
<giteapc> Lephenixnoir/OpenLibm: Building
make[1] : on entre dans le répertoire « /home/parisse/.local/share/giteapc/Lephenixnoir/OpenLibm »
make[1]: Rien à faire pour « default ».
make[1] : on quitte le répertoire « /home/parisse/.local/share/giteapc/Lephenixnoir/OpenLibm »
<giteapc> Lephenixnoir/OpenLibm: Installing
make[1] : on entre dans le répertoire « /home/parisse/.local/share/giteapc/Lephenixnoir/OpenLibm »
mkdir -p /home/parisse/.local/share/fxsdk/sysroot/sh3eb-elf/lib
cp -RpP -f libopenlibm.a /home/parisse/.local/share/fxsdk/sysroot/sh3eb-elf/lib/
ln -sf libopenlibm.a /home/parisse/.local/share/fxsdk/sysroot/sh3eb-elf/lib/libm.a
mkdir -p /home/parisse/.local/share/fxsdk/sysroot/sh3eb-elf/include
cp -RpP -f \
include/openlibm.h \
include/openlibm_complex.h \
include/openlibm_defs.h \
include/openlibm_fenv.h \
include/openlibm_fenv_sh3eb.h \
include/openlibm_math.h \
/home/parisse/.local/share/fxsdk/sysroot/sh3eb-elf/include
make[1] : on quitte le répertoire « /home/parisse/.local/share/giteapc/Lephenixnoir/OpenLibm »
<giteapc> Lephenixnoir/OpenLibm: Done!
<giteapc> Vhex-Kernel-Core/fxlibc: Configuring
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/parisse/.local/share/giteapc/Vhex-Kernel-Core/fxlibc/build-gint
<giteapc> Vhex-Kernel-Core/fxlibc: Building
make[1] : on entre dans le répertoire « /home/parisse/.local/share/giteapc/Vhex-Kernel-Core/fxlibc/build-gint »
[100%] Built target fxlibcStatic
make[1] : on quitte le répertoire « /home/parisse/.local/share/giteapc/Vhex-Kernel-Core/fxlibc/build-gint »
<giteapc> Vhex-Kernel-Core/fxlibc: Installing
make[1] : on entre dans le répertoire « /home/parisse/.local/share/giteapc/Vhex-Kernel-Core/fxlibc/build-gint »
[100%] Built target fxlibcStatic
Install the project...
-- Install configuration: ""
make[1] : on quitte le répertoire « /home/parisse/.local/share/giteapc/Vhex-Kernel-Core/fxlibc/build-gint »
<giteapc> Vhex-Kernel-Core/fxlibc: Done!
<giteapc> Lephenixnoir/gint: Checking out dev
<giteapc> Lephenixnoir/gint: Configuring
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/parisse/.local/share/giteapc/Lephenixnoir/gint/build-fx
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/parisse/.local/share/giteapc/Lephenixnoir/gint/build-cg
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/parisse/.local/share/giteapc/Lephenixnoir/gint/build-fxg3a
-- The C compiler identification is GNU 14.1.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/parisse/.local/bin/sh-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/parisse/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: /usr/bin/git (found version "2.47.3")
-- Configuring done (0.9s)
-- Generating done (0.0s)
-- Build files have been written to: /home/parisse/.local/share/giteapc/Lephenixnoir/gint/build-cp
<giteapc> Lephenixnoir/gint: Building
[ 0%] Generating fx9860g.ld
[ 0%] Building C object CMakeFiles/gint-fx.dir/src/fxlibc_hal.c.obj
/home/parisse/.local/share/giteapc/Lephenixnoir/gint/src/fxlibc_hal.c:4:10: erreur fatale: fxlibc/hal.h: Aucun fichier ou dossier de ce nom
4 | #include <fxlibc/hal.h>
| ^~~~~~~~~~~~~~
compilation terminée.
make[3]: *** [CMakeFiles/gint-fx.dir/build.make:83: CMakeFiles/gint-fx.dir/src/fxlibc_hal.c.obj] Error 1
make[2]: *** [CMakeFiles/Makefile2:87: CMakeFiles/gint-fx.dir/all] Error 2
make[1]: *** [Makefile:136: all] Error 2
gmake: *** [/home/parisse/.local/share/giteapc/Lephenixnoir/gint/giteapc.make:12: build] Error 2
error: error 2 in command: gmake -f /home/parisse/.local/share/giteapc/Lephenixnoir/gint/giteapc.make build
Je ne trouve pas hal.h dans l'arborescence .local/share ( find . -name hal.h -print)
Citer : Posté le 17/06/2026 10:43 | #
du coup j'ai aussi switché sur fxlibc@dev, le hal.h y est
Citer : Posté le 17/06/2026 11:16 | #
Oups, je savais que j'en oubliais un, désolé xD