Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vie communautaire


Index du Forum » Vie communautaire » MPM : Mod add-ins Math+
Lephenixnoir Hors ligne Administrateur Points: 25843 Défis: 174 Message

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

  1. Brancher la calculatrice en mode mise à jour de l'OS. Si vous utilisez une VM, attachez la calto à la VM.
  2. Lancer mpm-installer-1.0bw.exe depuis cmd. Un échange se fait.
  3. 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.
  4. Ensuite suivez les instructions sur la calto, en gros TOOLS puis SETTINGS et RESTART.
  5. Transférez mpm.bin dans la mémoire de stockage.
  6. 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


Précédente 1, 2, 3 ··· 10 ··· 17, 18, 19, 20
Lephenixnoir Hors ligne Administrateur Points: 25843 Défis: 174 Message

Citer : Posté le 17/06/2026 09:34 | #


Oui, il faut utiliser le branche dev, juste en ajoutant @dev:

giteapc install fxsdk@dev gint@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 !
Mon graphe (28 Juin): (MPM ; v5 ; Azur ; passe gint 3 ; ...) || Rogue Life
Parisse Hors ligne Membre Points: 623 Défis: 0 Message

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)
Parisse Hors ligne Membre Points: 623 Défis: 0 Message

Citer : Posté le 17/06/2026 10:43 | #


du coup j'ai aussi switché sur fxlibc@dev, le hal.h y est
Lephenixnoir Hors ligne Administrateur Points: 25843 Défis: 174 Message

Citer : Posté le 17/06/2026 11:16 | #


Oups, je savais que j'en oubliais un, désolé xD
Mon graphe (28 Juin): (MPM ; v5 ; Azur ; passe gint 3 ; ...) || Rogue Life
Parisse Hors ligne Membre Points: 623 Défis: 0 Message

Citer : Posté le 18/06/2026 18:11 | #


Et bien ça marche déjà pas mal du tout, chapeau pour le travail de compatibilité fait sur gint!
Version très préliminaire d'Upsilon dispo ici pour math+ (si vous arrivez à vous connecter sur ma page web du labo):
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/mpm/epsilon.g3a
En fait la version math+ devrait être très proche de celle de la 90, sauf pour la gestion des touches, en particulier j'ai du un peu bidouiller pour pouvoir quitter Upsilon sans reset sur la math+ (en fait l'addin marche même sur la 90 sauf quand on veut sortir, le bidouillage de la math+ fait planter la 90)
N'a pas été encore fait: gestion de certaines touches au clavier (certaines touches ne font rien du tout, d'autres agissent comme si le clavier était une 90).
Bug: Le mode alphabétique en majuscules ne marche pas, mais pas non plus sur la 90
Bug: dans la console Python d'Upsilon et parfois aussi dans l'éditeur, j'ai des grosses traces noires, je soupçonne que ça vient d'une tentative de copier des scripts Python de la partie Casio de la calculatrice vers le scriptstore d'Upsilon.
Donc à utiliser seulement pour tester et se convaincre que ça devrait marcher un jour!
Parisse Hors ligne Membre Points: 623 Défis: 0 Message

Citer : Posté le 19/06/2026 10:57 | #


C'était probablement plutot un buffer mal positionné en mémoire, maintenant tout a l'air de fonctionner et avec le même addin binaire sur graph90 et sur graph math +.
Précédente 1, 2, 3 ··· 10 ··· 17, 18, 19, 20

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
captcha
Rafraîchissez la page si vous souhaitez obtenir un nouveau CAPTCHA.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2026 | Il y a 113 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd