π
<-
Chat plein-écran
[^]

[83PCE] Des SPRITES pour le Basic ! (v3.3)

Assembleur, Axe, C/C++, ICE...

[83PCE] Des SPRITES pour le Basic ! (v3.3)

Message non lude grosged » 20 Mai 2016, 21:11

Il y a du nouveau dans cette version 3.3 :D :
( disponible ici : archives_voir.php?id=539203 )

DJ Omnimaga me l'ayant suggeré, j'ai aussi inclu une option "zoom" lors de la définiton de sprite :p

Image ImageImage

Tout d'abord, l'installation...
transférez simplement ces 6 fichiers :

backhome.8xp
clscreen.8xp
palette.8xp
print.8xp
settings.8xp
sprite.8xp

Le projet SPRITES v3.2 (pour TI83PCE/TI84+CE) comprend 6 fonctions écrites en Assembleur,
exécutables depuis le TI-Basic :

1) SETTINGS ,placé en début de programme, initialise les routines, mémorise la barre d'état,
efface l'écran en noir, passe en mode 256 couleurs (8bpp).

Si vous précédez SETTINGS du signe plus entre guillemet "+", cela forcera le programme
à rester en 16bpp (utile pour le débogage d'une erreur Basic!).

incorporé en plein programme:
Code: Tout sélectionner
"+":Asm(prgmSETTINGS


ou juste avant de lancer votre programme DEMO:
Code: Tout sélectionner
"+":prgmDEMO



2) CLSCREEN permet d'effacer (tout ou partie de) l'écran, avec l'une des 256 couleurs
(voir 256_colors.png).

Code: Tout sélectionner
255:Asm(prgmCLSCREEN
efface TOUT l'écran avec la couleur blanche.


Code: Tout sélectionner
{x,y,largeur,hauteur,couleur,x2,y2,largeur2,hauteur2,couleur2...:Asm(prgmCLSCREEN
affiche à l'écran un (ou plusieurs) rectangle plein dont les coordonnées (x,y) représentent le coin supérieur gauche.


3) PALETTE permet de modifier/réinitialiser la palette standard de 36 couleurs
(voir Palette_36colors.png)
Code: Tout sélectionner
{255,15,0,...:Asm(prgmPALETTE
modifie les premières couleurs de la palette
(on peut ainsi modifier toute la palette!).


Code: Tout sélectionner
0:Asm(prgmPALETTE ou "":Asm(prgmPALETTE ...(bref! tout sauf une liste)
réinitialise la palette standard.



4) SPRITE
permet de définir/afficher un Sprite.

Lorsqu'un sprite est à définir, il faut respectivement préciser:
-son numéro (0 à ...),
-sa largeur (1 à 35),
-sa hauteur (1 à 35),
-son grossissement (zoom x1 à x7),
-enfin les couleurs-pixels.

Afin de pouvoir coder de telles valeurs en un caractère, la base 36 est utilisée
(on va donc de 0 à Z avec A=10, B=11....Z=35)

Par exemple:
Code: Tout sélectionner
"000,C3,5
Ans+"0123456789AB
Ans+"CDEFGHIJKLMN
Ans+"OPQRSTUVWXYZ
Asm(prgmSPRITE
défini le Sprite n°0 , au format 12x3 avec un zoom x5

Détail important: le programme définira par ordre croissant les sprites 0,1,2....etc.
Et le fait de définir le sprite "000" automatiquement (ré)initialisera les sprites!

76800 octets sont attribués au stockage des sprites, il y a donc de la marge !
Un sprite occupant en mémoire 2+(largeur*hauteur)*zoom^2 octets, on peut donc stocker jusqu'à 62 sprites 35x35 en zoom x1 :)

Lors d'un affichage d'un -ou plusieurs- sprite(s), il faut respectivement préciser:
-son numéro (0 à ...)
-son abscisse (nombres entiers de 0 à 319)
-son ordonnée (nombres entiers de 0 à 239)

Exemple:

Code: Tout sélectionner
{0,100,200,1,0,0:Asm(prgmSPRITE
affichera le sprite n°0 en coordonnées (100,200) ainsi que le sprite n°1 en coordonnées (0,0), c'est-à-dire le coin supérieur gauche de l'écran.

5) PRINT permet de configurer le mode d'affichage (position graphique, choix des couleurs (0-256), taille des caractères) ; permet également d'afficher des caractères (texte, variables, calculs...)
Bien entendu, les minuscules sont accessibles par le biais d'un double [alpha]

Pour configurer...

Code: Tout sélectionner
{x,y:Asm(prgmPRINT
ou
Code: Tout sélectionner
{x,y,couleur,couleur de fond:Asm(prgmPRINT
ou
Code: Tout sélectionner
{x,y,couleur,couleur de fond,zoom en largeur,zoom en hauteur:Asm(prgmPRINT


Et pour afficher...

Code: Tout sélectionner
"Hello world":Asm(prgmPRINT
x:Asm(prgmPRINT
L1(1:Asm(prgmPRINT
123+4567:Asm(prgmPRINT
π:Asm(prgmPRINT


Pour faire un "retour à la ligne", ajouter le caractère i (en faisant [2nde] [.] )

"Coucou!iTout va bien?":Asm(prgmPRINT
affichera...

Coucou!
Tout va bien?

à noter que la précision des calculs est plus importante qu'à l'accoutumée!
Par exemple,

Code: Tout sélectionner
π:Asm(prgmPRINT
affichera 3.1415926535898 au lieu du classique 3.141592654

à ce propos, veillez à ce que vos programme soient en mode réponse DECimale (instruction DEC)
(sinon , π:Asm(prgmPRINT affichera 1 )
Veillez aussi à ce que cette instruction soient placée en tout début de programme, bien AVANT Asm(prgmSETTINGS , simplement parce que DEC (tout comme FLOAT, MATHPRINT, CLASSIC,...etc) altère la barre d'état.



6) BACKHOME permet un bon retour vers le TI-OS (efface toute trace de données, converti l'écran actuel en mode 16bpp,repasse en mode 16bpp, rétabli la barre d'état)

Asm(prgmBACKHOME)

En option, vous pouvez forcer BACKHOME à NE PAS rétablir la barre d'état,
en le précèdant d'un "NSB" (No Status Bar)
Code: Tout sélectionner
"NSB":Asm(prgmBACKHOME



IMPORTANT
: afin d'éviter de "contrarier" la TI83PCE, voici quelques recommandations:

-SETTINGS est à utiliser en tout début de programme (car il initialise pas mal de choses...)
-Définir les sprites par ordre croissant (en partant du n° 0...)
-Et bien entendu, ne JAMAIS tenter d'afficher un sprite avant de l'avoir défini préalablement.
-Attention à ne pas faire déborder un sprite hors de l'écran!
-NE PLUS utiliser tout ce qui concerne l'affichage : Output,ClrHome,ClrDraw,Text, Line,Pxl-on,Pt-on...

Voilà! J'espère que cet utilitaire vous sera utile dans vos créations.
Amusez-vous bien !.. Et bonne programmation !

Merci à Epharius, Dj Omnimaga, Diolum (astuce "minuscules"), DrDnar (astuces "faster/fastest") et tant d'autres pour les conseils, astuces, et informations !!

-Gérald alias grosged (juin 2016)


PS: N'hésitez pas à me faire part d'éventuels bugs, merci ;)
Dernière édition par grosged le 07 Juin 2016, 18:28, édité 7 fois.
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude Epharius » 20 Mai 2016, 21:24

Super, j'allais te proposer de mettre l'exemple du Mario dans l'archive mais tu as pensé à tout !

Que dire, t'as l'air d'avoir bien optimisé le tout, j'ai épuisé tous les conseils que je pouvais te donner... sinon j'ai bien quelque chose qui serait bien (si ce n'est pas déjà fait ^^) ce serait de pouvoir effacer une portion de l'écran avec une certaine couleur aux coordonnées X/Y de taille A*B. Ça éviterait de devoir créer un sprite vide ou d'effacer tout l'écran quand on veut déplacer le sprite de plus de deux pixels, mais je n'ai pas vérifié si ça avait déjà été fait ou non.

Bref, bon boulot !
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude grosged » 20 Mai 2016, 21:35

Merci, Epharius ;)
Oui, je vois ce que tu veux dire: un genre de fonction Box (x1,y1,x2,y2):)
DJ Omnimaga m'en avait également fait la suggestion ;)
D'ailleurs je crois qu'on pourrait même "caser " cette fonction dans CLSCREEN...
Car celle-ci pourrait encore gérer un Ans de type "liste" :)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude Ti64CLi++ » 02 Juin 2016, 10:01

Il faudrait que tu fasses que le zoom soit défini à l'affichage et non à la déclaration du sprite.
Et que l'on puisse aussi choisir comme Plot-Off par exemple:
Code: Tout sélectionner
{0,0,0,0:Asm(prgmSPRITES

Les paramètres sont d'abord 1 ou 0 pour afficher ou effacer, ensuite le numéro du sprite, et enfin les coordonées ;)
Cela effacerais le sprite numéro 0 au lieu de créer un sprite couleur du fond et l'afficher ensuite. ;)
Voili voilà
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude grosged » 02 Juin 2016, 10:56

Malheureusement, le fait d'inclure le zoom à l'affichage (plutôt qu'au moment de la définition) ralentirait assez l'affichage du sprite.
Et l'idée d'un paramètre suplémentaire pour afficher/effacer impliquerait l'ajout d'un autre paramètre: celui de la couleur de fond (et plus il y a de paramètre pour 1 sprite, moins c'est performant)
C'est pas évident, mais il faut faire un compromis: privilégier autant la vitesse que la simplicité d'utilisation.
Je viens de mettre à jour (v3.2 maintenant) ...
DJ Omnimaga vient de me signaler quelques imperfections/suggestions
Cette version n'est pas encore définitive ...je poursuis son amélioration ;)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude Ti64CLi++ » 02 Juin 2016, 12:38

C'était juste une idée parce que j'en ai marre de créer un nouveau sprite pour effacer chaque sprite ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude grosged » 02 Juin 2016, 16:31

Oui, je te comprends !! J'ai, moi aussi, parfois la flemme de devoir effacer !
Je n'oublie pas cette suggestion ( d'Anonyme0 , je crois) d'effacer automatiquement à l'ancienne position, à chaque nouvel affichage. Il faudrait alors mentionner la couleur d'effaçage (lors de la définition?) , également prévoir la capacité d'activer/désactiver cette option ...
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 30.2%
 
Messages: 770
Images: 75
Inscription: 14 Sep 2011, 12:29
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude DoOmnimaga » 02 Juin 2016, 16:58

Il faudrait uploader la version finale sur Ticalc.org à mon avis. Même si ça ferait 2 sites où la mettre à jour, ticalc.org est le site principal de la communauté anglophone et peut-être que le lib serait plus populaire, surtout avec son nom. Peut être que le titre sur Ticalc devrait être Sprites for BASIC.
Dream of Omnimaga
ImageImageImageImage
Avatar de l’utilisateur
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 8%
 
Messages: 683
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: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude Ti64CLi++ » 02 Juin 2016, 17:14

Comment créer un compte sur TI-Calc?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: [83PCE] Des SPRITES pour le Basic ! (version3)

Message non lude Ti64CLi++ » 02 Juin 2016, 17:14

Et quels sont les changements de la version 3.2?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Suivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 20 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.
1353 utilisateurs:
>1328 invités
>20 membres
>5 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)