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 - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Basic] Utiliser l'espace graphique comme espace de stockage
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

[Basic] Utiliser l'espace graphique comme espace de stockage

Posté le 14/06/2020 19:05

Testé sur 35+e II.
Ce texte est un peu brouillon, je le retoucherai si besoin. Destiné aux programmeurs en mode texte (càd moi ).
Il se trouve que l'écran graphique de nos calculatrices peut-être utilisée comme espace de stockage !
Avec les fonctions simples PxlOn, PxlOff, PxlChg, 'PxlTest(' nous avons accès à 127x63 cellules (soit 8001 bits ou presque 1000 octets !) de mémoire avec virtuellement aucun coût !
PxlOn 1,1 //rend la cellule 1;1 "vraie"
PxlOff 63,127 //rend la cellule 127;63 "fausse"
PxlChg 50,50 //inverse l'état de la cellule 50;50
Locate 1,1,PxlTest(1,1) //lit l'état de la cellule 1;1

Rien de très révolutionnaire, mais je pense qu'il est important d'en garder une trace quelque part (je n'avais jamais vu cette technique sur le forum).
Les Pictures peuvent être utilisées pour obtenir des espaces de mémoire variables ne pesant que 2048 octets (toujours pour 8001 bits utiles), ce qui en fait un système de stockage très efficace et plutôt rapide.
Notez que pour utiliser ce système en mode texte, il faut modifier l'écran graphique avant d'appeler PxlTest( pour éviter une erreur fatale.
PxlTest( fonctionne très bien en mode texte et travaille sur le buffer graphique sans raffraîchir l'écran. (C'est à dire qu'il le fait de façon transparente !)
Voici un autre code d'exemple affichant les valeurs des 127 cellules de la ligne supérieure à l'aide d'une boucle :
PxlChg 1,1 //On utilise deux PxlChg pour "activer" l'espace graphique
PxlChg 1,1
For 1→A To 127
Locate 1,1,PxlTest(1,A)
Locate 1,2,A
Next

Ce sera tout, je ne suis pas rédacteur j'ai juste balancé des données et je m'en excuse


Ne0tux Hors ligne Membre d'honneur Points: 3525 Défis: 265 Message

Citer : Posté le 14/06/2020 19:39 | #


Je ne suis pas très convaincu, pour les raisons suivantes :

Stocker 1bit coûte autant que stocker 8001bits, c'est à dire 2048octets.

Le meilleur ratio n'est toujours pas mirobolant et la fonction de décodage sera plutôt volumineuse puisqu'elle s'appuie sur de "gros opcodes". Ça devient un peu plus intéressant si ça fonctionne avec des Pictures 1024.

Je n'ai pas de données chiffrées à avancer mais je ne crois pas me tromper en affirmant que les fonctions PxlXXX sont lentes.

Pour stocker uniquement des bits, un système de stockage basé sur un dictionnaire de Str comme on a déjà pu en discuter sur le forum à l'époque avec Alex_1186 me semble plus performant.

Merci en tout cas d'avoir documenté cette technique.
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 14/06/2020 19:49 | #


Il y a des avantages mineurs comme le fait qu'on peut manipuler de grandes quantités en utilisant des fonctions graphiques intelligentes. Un Horizontal ou un coup de DrawStat peut modifier beaucoup de pixels en très peu de temps, possiblement plus vite que les Str. Mais le nombre limité de fonctions permettant d'effacer des pixels mitige ce point...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 15/06/2020 09:49 | #


Avant de répondre, je veux préciser que l'intérêt principal de mon point de vue est le stockage en brut d'un grand nombre de données encodées sur peu d'octets, et non pas de vitesse pure. L'utilisation des Pictures est aussi parfaitement facultatif, l'écran graphique est conservé entre les exécutions. C'est pourquoi j'ai parlé de mémoire gratuite

Ne0tux a écrit :
Stocker 1bit coûte autant que stocker 8001bits, c'est à dire 2048octets.

Je pense bien que cette solution ne serait pas utilisée pour stocker une ou deux valeurs.

Ne0tux a écrit :
Je n'ai pas de données chiffrées à avancer mais je ne crois pas me tromper en affirmant que les fonctions PxlXXX sont lentes.

Elles sont lentes en effet, je pense que stocker les données sous cette forme a un intérêt comme stockage "froid" (exemple : stocker un niveau d'un de mes jeux (147 cellules avec 4 états différents et une position de départ) coûterait 301 bits. 8001//301 = 26, ce qui est pas mal pour 2048/1024 octets.

Ne0tux a écrit :
Pour stocker uniquement des bits, un système de stockage basé sur un dictionnaire de Str comme on a déjà pu en discuter sur le forum à l'époque avec Alex_1186 me semble plus performant.

Tu aurais un lien que je puisse comparer ? Je suppose que c'est basé sur StrSrc( mais j'aimerai voir pour comparer l'efficacité mémoire. Je ne doute pas une seconde que les Str soient plus rapides sinon

Ne0tux a écrit :
Merci en tout cas d'avoir documenté cette technique.

Merci à toi
ouais ouais

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:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 79 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