[Bêta] PythonExtra.
Posté le 29/10/2022 09:49
PythonExtra est un add-in Python alternatif pour (à ce stade) Graph 35+E II, Prizm et Graph 90+E. L'objectif est de fournir plus de fonctionnalités : modules standard,
getkey(), fonctions de dessin plus performantes, etc.
Version Bêta 0.2
Graph 35+E II / Prizm / Graph 90+E : PythonExtra-pe-0.2.0-beta.zip
Aperçu de PythonExtra sur Graph 90+E. (Cliquez pour agrandir)
Description sommaire des fonctionnalités :
- Compile pour Graph 90+E (fx-CG 10/20/50) et Graph 35+E II (fx-9860G III)
- Peu de RAM sur Graph 35+E II (c'est difficile d'en trouver sur ce modèle)
- Un shell pas trop mal (saisie rapide, scrolling) avec de bonnes performances
- Plein de modules standard
- array, builtins, cmath, collections, io, math, random, struct, sys, time
- Le module spécifique CASIO : casioplot (fidèle à part sur les polices)
- Un nouveau module gint avec les fonctionnalités avancées de gint :
- Pour l'instant, une bonne partie de <gint/display.h> et <gint/keyboard.h>
- Donc getkey() (attente de touche) ainsi que keydown() (test instantané) !
- Et des fonctions de dessin rapides comme dline() ou drect()
Le plan actuel :
- Être sensiblement compatible avec l'appli Python officielle.
- Pousser les fonctionnalités ajoutées pour vraiment relever le niveau de Python !
- Si du temps de développement se débloque : support autres Graph mono (pas de promesses).
Updates et screenshots à venir. Je n'ai pas l'intention d'implémenter un million de fonctionnalités, juste ce qu'il faut pour s'assurer que ça ne finisse pas mal documenté et non maintenu comme CasioPython.
Dépôt Git :
https://gitea.planet-casio.com/Lephenixnoir/PythonExtra
PythonExtra est notamment possible grâce à l'aide précieuse de
Mb88.
Comparaison directe
Dans l'exemple ci-dessous (
réalisé par Mb88), un Flappy Bird déjà bien optimisé (dessin partiel etc, à gauche) est accéléré un bon gros coup en utilisant PythonExtra et le module
gint pour le dessin (à droite).
Contexte historique
Aux
journées APMEP 2022, redgl0w racontait comment le port MicroPython pour Numworks n'était finalement pas super difficile. Moi je parlais de comment un port maison résoudrait le problème de
getkey(), et Critor m'a convaincu d'essayer sur-le-champ.
En fin de compte, j'ai clôné MicroPython Dimanche à midi et à 1 heure du matin j'avais un port fonctionnel avec
getkey() sur ma Graph 90+E (que j'ai d'ailleurs montré à CASIO Lundi, pour la démo). Comme quoi, des fois ça marche tout seul !
(Enfin, le début marche tout seul. Faire une bonne UI et gérer tous les détails ensuite c'est une autre paire de manches !)
Fichier joint
Citer : Posté le 17/03/2024 17:51 | #
Rien de nouveau pour PE ? des choses en préparation ?
https://joz.alwaysdata.net/info/
Citer : Posté le 17/03/2024 17:53 | #
Rien en effet, j'étais absent pendant un moment et ensuite je me suis laissé distraire pas un "truc" cette dernière semaine. Mais les modules Numworks arrivent enfin (dans les prochains jours) et ensuite je publie une nouvelle version.
Note que sur la liste il y a aussi quelques bugs que tu as rapporté mais que je n'ai personnellement pas encore reproduits, tous détails sont bienvenus sur ceux-là.
Citer : Posté le 17/03/2024 19:11 | #
Tu t'es pas fais distraire par quelque chose qui commence par "ray" et se termine par "casting" par hasard?
Citer : Posté le 17/03/2024 19:14 | #
Je vois pas de quoi tu parles
Oh si j'optimise le rendu là je peux gagner quelques FPS
Citer : Posté le 19/03/2024 10:05 | #
Nouvelle update (0.3.0-beta) !
Lien de téléchargement : PythonExtra-pe-0.3.0-beta.zip
Voici une liste des changements depuis la version 0.2.0-beta :
Citer : Posté le 19/03/2024 11:08 | #
GG Lephé.
Citer : Posté le 20/03/2024 20:09 | #
Merci pour tour le travail accompli pour cette nouvelle release.
.
J'ai vu que le module time retrouve time() et time_ns() ( et mononic() ?)
Il me semblait qu'il y avait d'autres fonctions dans la première version, mais je confonds peut-être avec le module de M. Parisse.
Quant l'écran d'affichage de mémoire, je ne sais pas l'interpréter, mais c'est sans doute à votre destination en cas de problèmes.
Sinon le moteur de gris est prévu dans une prochaine version ?
J'ai mis le plugin sur la G35 et je vais faire quelques tests et vous ferai un retour.
Bien à vous
https://joz.alwaysdata.net/info/
Citer : Posté le 20/03/2024 20:13 | #
Oui, le module time a bien récupéré monotonic(). S'il y a d'autres fonctions qu'il serait utile d'ajouter, je peux les mettre.
Le moteur de gris est effectivement à l'étude, la subtilité étant qu'il faut davantage de mémoire pour le faire marcher (3000 octets en plus) et pour l'instant c'est encore un poil délicat.
Merci pour ton retour
Citer : Posté le 22/03/2024 09:16 | #
je pensais que time(h,m) permettait de mettre la calculatrice à l'heure voir ici dans le billet mais apparemment ce n'est pas possible (par d'arguments possibles) comment faire pour gérer date et heure ?
https://joz.alwaysdata.net/info/
Citer : Posté le 22/03/2024 11:55 | #
La fonction time(h,m) ne fait pas partie de la spécification standard de Python, je pense qu'il s'agit d'une extension développée par Bernard Parisse spécifiquement pour KhiCAS.
A ce jour, il n'y a rien pour régler la date et l'heure dans PythonExtra (ni dans Python officiel d'ailleur).
Ceci est jouable via un développement spécifique (par exemple dans le module gint), on a je pense tout dans gint pour gérer ça correctement.
Par contre, attention, c'est pas un truc pérenne dans le sens où un changement de pile (et un reset je crois aussi), fait perdre le décompte, donc à reprogrammer à chaque session.
Citer : Posté le 22/03/2024 13:00 | #
La fonction time(h,m) ne fait pas partie de la spécification standard de Python, je pense qu'il s'agit d'une extension développée par Bernard Parisse spécifiquement pour KhiCAS.
A ce jour, il n'y a rien pour régler la date et l'heure dans PythonExtra (ni dans Python officiel d'ailleur).
Ceci est jouable via un développement spécifique (par exemple dans le module gint), on a je pense tout dans gint pour gérer ça correctement.
Par contre, attention, c'est pas un truc pérenne dans le sens où un changement de pile (et un reset je crois aussi), fait perdre le décompte, donc à reprogrammer à chaque session.
Merci
oui dans l'addin de Parisse idem, il fallait remettre à l'heure si crash ou reset
en fait j'avais fait dans le temps une horloge pas géniale, car je n'avais pas la fonction sleep() https://tiplanet.org/forum/archives_voir.php?id=2809308 et je voudrais un peu reprendre ce programme en PE
https://joz.alwaysdata.net/info/
Citer : Posté le 22/03/2024 13:07 | #
On peut ajouter les fonctions de manipulation de la RTC dans gint. Techniquement tu as plus ou moins déjà accès à la date et l'heure vu qu'elles sont cachées dans le timestamp mais ça ira mieux avec la fonction appropriée.
Citer : Posté le 22/03/2024 21:47 | #
Une partie de Orlog (mini jeu de Assassin Creed Valhalla) dans sa dernière version (v99) fonctionnant sur PythonExtra v0.3.0 Beta :
Ça utilise les modules Numworks avec l'extension fxCG pour avoir accès à l'écran large de la Graph 90+E.
Les images utilisent un algo de Afyu et sont intégrées directement au code. Le script fait grosso modo 135ko avec les images, donc c'est plutôt gros. On voit ce qu'il est possible de faire avec PythonExtra, ça ouvre pas mal de portes par rapport à Python Officiel.
Citer : Posté le 24/03/2024 08:20 | #
@Lephe : j'ai eu quelques soucis pour activer le mode "sortie vidéo" avec la dernière version de PythonExtra-0.3.0-Beta.
Il semble que la version courante en mode "PE_DEBUG" soit un peu récalcitrante et n'enclenche pas pe_debug_screenshot() comme attendu à tous les coups.
J'ai eu aussi qq ruptures de flux avec fxlink -iw en passant du shell au programme en lui même.
Je pense qu'il y a un truc à regarder, petite régression de ce côté-ci.
J'aimerais à terme rajouter un menu (par exemple sur F4 ou F5) avec qq options:
- Overclock (ensuite accès aux niveaux d'OC)
- Activation/Désactivation mode USB (mais il faudrait savoir si la machine est connectée avec fxlink de l'autre côté ou pas sinon on va avoir du freeze)
- Affichage infos (RAM consommée, restante, ...)
- ...
Citer : Posté le 09/04/2024 14:46 | #
Avec la dernière @RDP qui date un peu y'a deux versions à rapporter : 0.2.0-beta et 0.3.0-beta.
Citer : Posté le 27/04/2024 14:55 | #
sur la graph 35+EII je n'arrive pas a utiliser open pour créer un fichier (je ne sais plus, ayant un peu perdu le fil, si c'est implémenté).
par exemple sur pc
# ecriture
fic="test.tmp"
fw=open(fic,"w")
fw.write("ok !")
fw.close()
# lecture
fr=open(fic,"r")
a=fr.read()
print(a)
fr.close()
https://joz.alwaysdata.net/info/
Citer : Posté le 27/04/2024 16:30 | #
C'est implémenté dans un des protos de Sly mais pas dans la dernière release officielle. Si ce n'est pas ça je veux bien savoir quelle erreur tu as.
Citer : Posté le 27/04/2024 20:46 | #
non ce n'est pas sur le proto de Slyvtt mais sur PythonExtra-pe-0.3.0-beta
voici le retour de l'émulateur
pour info je n'ai pas fait de from import
Bien à toi
https://joz.alwaysdata.net/info/
Citer : Posté le 29/04/2024 20:02 | #
Bonjour
est-ce que python extra intégrera l’accès aux fichiers ?
Merci
https://joz.alwaysdata.net/info/
Citer : Posté le 29/04/2024 20:29 | #
Si tu es pas sur le proto de Sly alors c'est normal que ça ne marche pas. Oui c'est prévu, dans la prochaine version probablement !
Citer : Posté le 29/04/2024 20:37 | #
d'accord, je vais attendre mais il n'y a pas d'urgence.
Faudrait que je retrouve le le module de sly
https://joz.alwaysdata.net/info/