π
<-
Chat plein-écran
[^]

Découverte format image Python IM8C TI-83 Premium CE 5.5

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude critor » 02 Juin 2020, 10:14

Dans sa mise à jour 5.5.1 gratuite, Texas Instruments rajoute de formidables possibilités historiques à ta TI-83 Premium CE :
  • mise à jour en 5.5 de l'application SciTools
  • mise à jour en 5.5 de l'application Periodic
  • mise à jour en 5.5 de l'application Python (TI-83 Premium CE Édition Python uniquement)

Python 5.5 offre de nouveaux modules intégrés pour tes scripts Python :
  • time, certes déjà présent mais maintenant listé au menu et donc officiel
  • ti_system, avec diverses possibilités :
    • détection des simples pressions de touches clavier, y compris avec un clavier USB externe !
    • affichage dans la console à la ligne que tu veux
    • exportation de listes de nombres du contexte Python vers l'environnement de la calculatrice
    • importation dans le contexte Python de listes existant dans l'environnement de la calculatrice vers
    • et donc plus généralement un début d'intégration du Python à l'environnement mathématique de la calculatrice; plus besoin de traiter les tâches numériques à part, l'application Python 5.5 va enfin pouvoir servir s'articulier naturellement au sein de la résolution de problèmes et tâches complexes !
  • ti_plotlib, une bibliothèque graphique pour tracer dans un repère othogonal, conformément aux programmes de Mathématiques et Physique-Chimie, comparable à matplotl chez Casio ou encore matplotlib.pyplot, et gérant ici les diagrammes suivants :
    • nuage de points
    • diagramme en ligne brisée
    • droite de régression linéaire
  • ti_graphics pour contrôler directement les pixels de l'écran, comparable à kandinsky chez NumWorks ou encore casioplot
  • ti_hub, pour les projets d'objects connectés à l'aide de l'interface TI-Innovator Hub
  • ti_rover, pour les projets de robotique à l'aide du TI-Innovator Rover
Mais ce n'est pas tout car Python 5.5 gère également la possibilité inédite de rajouter des modules Python complémentaires :
  • ce_turtl, comparable à turtle
  • ce_box pour les diagrammes en boîte
  • ce_chart pour les histogrammes et aires entre courbes
  • ce_quivr pour les diagrammes utilisant des champs de vecteurs

Dans notre exploration de ti_graphics, nous avions découvert une fonction a priori hautement intéressante pour afficher des images, drawImage().
Nous n'avions hélas pas réussi à la faire fonctionner correctement. :'(

Nous découvrions par la suite que les images affichables en question était des variables d'application (fichiers .8xv) à charger en mémoire de la calculatrice.
C'est très malin, drawImage() va donc chercher ses données en externe ce qui évite de consommer du tas/heap Python, surtout que les images pouvant rentrer dans 17K n'atteindraient même pas les dimensions timbre poste.

Aujourd'hui nous disposons enfin d'images compatibles au bon format .8xv ! :D

Voici donc ci-contre le couple mythique de super-héros Tristan et Iseult : ;)
Code: Tout sélectionner
import ti_graphics as scr
from ti_system import disp_wait

scr.drawImage('BOY_200', 15, 30)
scr.drawImage('GIRL_200', 125, 30)

scr.setColor((255, 0, 0))
scr.drawString('T', 155, 122)

scr.setColor((0, 255, 0))
scr.drawString('I', 175, 117)

Ce qui est exceptionnel c'est la vitesse de tracé, à peine une fraction de seconde pour l'affichage de ces deux énormes images ! :o
Peut-être matière à réutiliser cela pour l'affichage de sprites au sein de futurs superbes jeux en Python pour ta formidable TI-83 Premium CE Edition Python ! :favorite:

Et également de quoi aborder facilement le traitement d'image en SNT puis NSI ! :bj:

Autre gros avantage, la fonction drawImage() marche aussi bien avec une image placée en mémoire principale (RAM) qu'en mémoire d'archive (Flash). :bj:
Tant mieux, de quoi économiser la RAM de 150K déjà lourdement sollicitée par tes scripts et modules complémentaires Python. :)

En passant notons la taille de l'image BOY_200, 10,830 Ko pour seulement 94×200=18800 pixels.
Nettement moins de 2 octets par pixel alors que nous sommes ici sur un écran 16 bits, et même moins d'1 octet par pixel, il y a clairement une compression à l'oeuvre.

L'exploration du fichier .8xv associé à l'éditeur hexadécimal nous révèle un commentaire intéressant en entête, Created by img2appvar 1.0.0.
Malheureusement nous ne disposons pas de l'outil img2appvar, et ignorons même totalement si il sera publié.

Un identifiant sur 4 octets IM8C débute de plus la partie données, et est donc à rajouter à la liste des types officiels de variables d'application que Texas Instruments est en train d'étoffer :
  • PYCD : script Python
  • PYMP : module complémentaire Python
  • IM8C : image Python
Bref, il s'agit donc ici du format d'image IM8C.

Quelques altérations d'octets nous permettent d'en apprendre un peu plus à son sujet :
  • il utilise une palette avec au maximum 256 couleurs, chacune précisée au format RGB-565
  • les données image sont par la suite compressées au format RLE
Il y a même 2 octets permettant de rendre transparente une des couleurs de la palette ! :D

Bref, nous avons maintenant a priori tout ce qu'il faut pour te concevoir un convertisseur d'images pour tes futures créations. A bientôt... ;)

Téléchargement : OS + applis TI-83 Premium CE 5.5.1
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude Dogm » 02 Juin 2020, 10:16

Bah le voilà le module pour remplacer l'ASM :troll:
Avatar de l’utilisateur
DogmEcrivain
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 44.3%
 
Messages: 117
Images: 7
Inscription: 14 Nov 2019, 18:53
Localisation: Lyon, France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Terminale Math NSI
GitHub: Tim-ats-d

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude critor » 02 Juin 2020, 10:32

En effet, n'est-ce pas superbe ? :D

Ce qui était super compliqué en asm te prend maintenant 1 ligne en Python 5.5 ! :bj:
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude Lionel Debroux » 02 Juin 2020, 10:53

En C/C++, c'est évidemment plus compliqué qu'en Python, mais nettement plus simple qu'en ASM eZ80, il ne faut pas exagérer :)

Est-ce que ces fonctions de sprite sont clippées ?
Combien de tas reste-t-il disponible après avoir importé ces modules ?
Quelle est la performance de l'affichage de 20x15 sprites de 16x16 pour remplir l'écran 320x240 ? C'est tout sauf exceptionnel d'afficher un gros sprite en une fraction de seconde, et je pense qu'avec ce test qui nécessite, comme le set_pixel, une communication entre l'ATSAMD21 et l'ASIC à base d'eZ80, qui se fait manifestement avec un lien lent, on va s'approcher de la performance du set_pixel...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude critor » 02 Juin 2020, 11:05

La consommation de tas due à ti_graphics a déjà été traitée, dans les 1.5K :
viewtopic.php?f=41&t=23857
Pas catastrophique donc.

C'est nettement plus rapide que l'affichage d'une image en Python sur NumWorks, avec une boucle de set_pixel() faute d'alternative.
Pour la Casio Graph 90+E qui est très performante en graphismes Python grâce à son double buffering exclusif à ce jour, c'est moins sûr.

Pour le reste des tests demandés, il va falloir que l'on se fabrique un convertisseur.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude zardam » 04 Juin 2020, 00:50

Le setPixel passe par un UART à 115200 bauds, et en ASCII (le même que pour la console), ce qui explique en grande partie ses "performances". Je suppose que drawImage doit faire de même.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude DoOmnimaga » 04 Juin 2020, 04:08

Donc aurons nous enfin notre Reuben Quest partie 1 à 10? (vu qu'il faudrait séparer le jeu en 10 parties pour n'en charger qu'une à la fois sur la calculatrice) :troll:
Dream of Omnimaga
ImageImageImageImage
Avatar de l’utilisateur
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 6.9%
 
Messages: 680
Images: 25
Inscription: 21 Fév 2012, 12:04
Localisation: Quebec, Canada
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 11eme annee scolaire termine
YouTube: DJOmnimaga
Twitter/X: DJOmnimaga
Facebook: djomnimaga

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude critor » 04 Juin 2020, 18:13

zardam a écrit:Le setPixel passe par un UART à 115200 bauds, et en ASCII (le même que pour la console), ce qui explique en grande partie ses "performances". Je suppose que drawImage doit faire de même.


A la différence que le setPixel() fait également passer dans le tuyau les coordonnées et couleur du pixel concerné.

drawImage() ne fait passer dans le tuyau que les coordonnées du coin supérieur gauche et le nom de l'image à afficher.
La récupération en mémoire des données de l'image en question se passe hors du contexte Python.
Le drawImage() ne devrait donc pas être sensiblement plus lent que le setPixel().
Avec des images pas trop grosses parce que ça a quand même un coût (même si ce n'est pas le coprocesseur Python qui l'encaisse), on devrait donc pouvoir afficher jusqu'à 49 tiles par seconde, ou encore jouer des animations jusqu'à 49 fps. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude zardam » 05 Juin 2020, 22:42

Oui, exactement !

Pour la complétude, un setPixel sans passer par le module ti_graphics :
Code: Tout sélectionner
import sys, ti_system

for x in range(320):
  # setPixel(x,50,(0,0,0))
  sys.stdout.write("\x1b["+str(x)+";50;0;0;0;2G\x03")
  # handshake
  sys.stdin.read(1)

ti_system.disp_wait()


Edit :
Le caractère envoyé par la calculatrice en réponse est \x06.

Pour scr.drawImage('BOY_200', 15, 30), on obtient (avec un handshake pour chaque ligne) :
- \x1b[12G\x03
- BOY_200\x03
- \x1b[15;30;13G\x03
Dernière édition par zardam le 05 Juin 2020, 23:41, édité 1 fois.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Découverte format image Python IM8C TI-83 Premium CE 5.5

Message non lude Lionel Debroux » 05 Juin 2020, 22:50

Un introducteur "\x1b[" et cette syntaxe avec des ; font irrésistiblement penser à https://en.wikipedia.org/wiki/ANSI_escape_code , même si TI n'a manifestement pas pas suivi toute la syntaxe - on attendrait un introducteur de commande devant la valeur x.
Le \x03 final est un ETX (End of Text).
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6858
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Suivante

Retourner vers News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 49 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
906 utilisateurs:
>874 invités
>28 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)