π
<-
Chat plein-écran
[^]

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

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

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

Unread postby grosged » 20 May 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: Select all
"+":Asm(prgmSETTINGS


ou juste avant de lancer votre programme DEMO:
Code: Select all
"+":prgmDEMO



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

Code: Select all
255:Asm(prgmCLSCREEN
efface TOUT l'écran avec la couleur blanche.


Code: Select all
{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: Select all
{255,15,0,...:Asm(prgmPALETTE
modifie les premières couleurs de la palette
(on peut ainsi modifier toute la palette!).


Code: Select all
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: Select all
"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: Select all
{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: Select all
{x,y:Asm(prgmPRINT
ou
Code: Select all
{x,y,couleur,couleur de fond:Asm(prgmPRINT
ou
Code: Select all
{x,y,couleur,couleur de fond,zoom en largeur,zoom en hauteur:Asm(prgmPRINT


Et pour afficher...

Code: Select all
"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: Select all
π:Asm(prgmPRINT
affichera 3.14159265
35898
au lieu du classique 3.14159265
4


à 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: Select all
"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 ;)
Last edited by grosged on 07 Jun 2016, 18:28, edited 7 times in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 3.5%
 
Posts: 729
Images: 69
Joined: 14 Sep 2011, 12:29
Gender: Not specified

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

Unread postby Epharius » 20 May 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
User avatar
EphariusPremium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 87%
 
Posts: 1009
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Male
Calculator(s):
Class: ENSIMAG

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

Unread postby grosged » 20 May 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" :)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 3.5%
 
Posts: 729
Images: 69
Joined: 14 Sep 2011, 12:29
Gender: Not specified

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

Unread postby Ti64CLi++ » 02 Jun 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: Select all
{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
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 90%
 
Posts: 3260
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

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

Unread postby grosged » 02 Jun 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 ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 3.5%
 
Posts: 729
Images: 69
Joined: 14 Sep 2011, 12:29
Gender: Not specified

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

Unread postby Ti64CLi++ » 02 Jun 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
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 90%
 
Posts: 3260
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

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

Unread postby grosged » 02 Jun 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 ...
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 3.5%
 
Posts: 729
Images: 69
Joined: 14 Sep 2011, 12:29
Gender: Not specified

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

Unread postby DJ Omnimaga » 02 Jun 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.
User avatar
DJ OmnimagaPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 99.4%
 
Posts: 385
Images: 1
Joined: 21 Feb 2012, 12:04
Location: Quebec, Canada
Gender: Male
Calculator(s):
Class: Diplômé Secondaire (11ème année scolaire terminé)
YouTube: DJOmnimaga
Twitter: DJOmnimaga
Facebook: DJOmnimaga

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

Unread postby Ti64CLi++ » 02 Jun 2016, 17:14

Comment créer un compte sur TI-Calc?
Image
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 90%
 
Posts: 3260
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

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

Unread postby Ti64CLi++ » 02 Jun 2016, 17:14

Et quels sont les changements de la version 3.2?
Image
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 90%
 
Posts: 3260
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

Next

Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 5 guests

-
Search
-
Featured topics
L'OS 5.5 de la TI-83 Premium CE / 84 Plus CE supprime l'assembleur - la plupart des jeux et certains programme ne fonctionneront plus
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
661 utilisateurs:
>654 invités
>2 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)