
( 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




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 basic-z80 : Select all
"+":Asm(prgmSETTINGS
ou juste avant de lancer votre programme DEMO:
- Code basic-z80 : 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 basic-z80 : Select all
255:Asm(prgmCLSCREEN
- Code basic-z80 : Select all
{x,y,largeur,hauteur,couleur,x2,y2,largeur2,hauteur2,couleur2...:Asm(prgmCLSCREEN
3) PALETTE permet de modifier/réinitialiser la palette standard de 36 couleurs
(voir Palette_36colors.png)
- Code basic-z80 : Select all
{255,15,0,...:Asm(prgmPALETTE
(on peut ainsi modifier toute la palette!).
- Code basic-z80 : Select all
0:Asm(prgmPALETTE ou "":Asm(prgmPALETTE ...(bref! tout sauf une liste)
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 basic-z80 : Select all
"000,C3,5
Ans+"0123456789AB
Ans+"CDEFGHIJKLMN
Ans+"OPQRSTUVWXYZ
Asm(prgmSPRITE
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 basic-z80 : Select all
{0,100,200,1,0,0:Asm(prgmSPRITE
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 basic-z80 : Select all
{x,y:Asm(prgmPRINT
- Code basic-z80 : Select all
{x,y,couleur,couleur de fond:Asm(prgmPRINT
- Code basic-z80 : Select all
{x,y,couleur,couleur de fond,zoom en largeur,zoom en hauteur:Asm(prgmPRINT
Et pour afficher...
- Code basic-z80 : 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 basic-z80 : Select all
π:Asm(prgmPRINT
à 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 basic-z80 : 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
