ou alors on peut le faire en asm mais l'image doit être en héxa, contrairement à Ion, où l'image doit être du binaire


Qu'est-ce que c'est que ce délire ? On peut écrire les données en hexa ou en binaire dans les deux, puisque c'est de l'assembleur...
Je voulait aussi savoir comment en ion on recall des pic en OVERWRITE ou en AND ou meme en OR parceke avec EZASM je n'est drot qu'au XOR.


Euh, c'est pas très clair, là ...
Qu'est-ce que c'est que ce délire ? On peut écrire les données en hexa ou en binaire dans les deux, puisque c'est de l'assembleur...


Essaye toujours d'afficher une sprite en héxa avec Ion, perso j'ai pas encore réussis (y'avais un problème d'affichage, mais je dit pas que c'est impossible à faire). 'fin de toute façons c'est le compilo qui convertit tout ensuite...
je vé le publié sur ti calc.org.Merci pour l'émulatueur je vé voir ce que ca donne.
En fait avec EZASM je n'est pas encore touver le moyen d'afficher un sprite dans un format différent de XORed.C'est pour cela que je demande ciomment on fait biensur en ION^^.
je n'est pas encore essayer de recaller en hex:
pour l'instant c'est en bin sous forme.db %001000...
le pourcent(cheeky c'est juste pour différencier hex:$ et bin:%
"call ionPutSprite" c'est la commande équivalente.
avatar
(oui c'est ce que je disait). Moi j'aisserai bien de le faire en 'masquant les bits' mais aucuns tutorial ne montre précisement la syntaxe.
^^ Merci alors je me demande comment vous faites.pour recaller en overwrite dapres vos sreenshot cé le cas nn?
avatar
j'ai fait cette routine "or" en asm il y a quelque temps, je ne sais si elle peut vous servir...

;Routine de copie de sprite dans le graph buffer (or).¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;par Joe 14.
;entrée hl = adresse de placement du premier octet dans le graph buffer.
;entrée de = adresse du premier octet du sprite.
;entrée b = Hauteur du sprite en nombre de lignes.
;entrée c = largeur du sprite en nombre d'octets.

affsprite:
 push bc			;Sauve b et c dans la pile.
 ld b,c				;Charge c dans b afin d'initialiser la boucle djnz affsprite3.
affsprite3:
 ld a,(de)
 or (hl)			;Opérateur or entre les octets (de) et (hl).
 ld (hl),a			;Copie de l'octet obtenu dans le graph buffer.
 inc de				;
 inc hl				;Incrémentation de hl et de afin de passer à l'octet suivant.
 djnz affsprite3	;Selon la valeur de b, continue ou non la ligne en cours.
 ld a,12			;12 est le nombre d'octets par ligne
 sub c				;Selon la largeur du sprite, l'adresse de début d'une ligne varie.
 ld c,a				;Prépare le passage à la ligne suivante.
 add hl,bc			;Passe le curseur lié au graph buffer à la ligne suivante.
 pop bc				;Récupère les valeurs de b et c.
 djnz affsprite		;Décide, selon la valeur de b, si la copie est finie ou non.
 ret				;Va à l'adresse suivant call affsprite.




Pour cette histoire d'hexa, j'essaierai de voir ce soir.
Une petite précision : ma routine ne gère que des copies de sprite à un octet près...
J'ai fait quelques tests avec OR, enfaite je trouve ça plutot simple (du moins le concept, mais après pour mettre en pratique cheeky) :
OR
---------
1 1 -> 1 Le bit résultant est égal
1 0 -> 1 à 1 quand au moins un
0 1 -> 1 des deux bits est égal à 1 0 0 -> 0


Enfaite, si on définit la première colonne comme l'image à afficher et la seconde par le 'fond', on ce rend compte que le résultat est bien celui voulut :

-Si les deux bits valent 1, le résultat vaut 1;

-Si le bit de l'image vaut 1 mais que celui du 'fond' vaut 0, le résultat est 1;

-Si le bit de l'image vaut 0 mais que celui du 'fond' vaut 1, le résultat est 1;

-Si les deux bits valent 0, le résultat est 0.

Ce qui donne bien l'impression de transparence (en principe).

Voilà un code que j'ai fait pour tester tout ça :
.nolist
#include "ion.inc"
.list

#ifdef TI83P
.org ProgStart-2
.db $bb,$6d
#else
.org ProgStart
#endif

ret
jr nc,Start
.db "Test - Deeph",0

Start:
bcall(_ClrScrnFull)
bcall(_grbufclr)
bcall(_homeUp)
ld a,%1100 ;ce qui vaut 12 en décimal (la première colone)
or %1010 ;ce qui vaut 10 en décimal (la seconde colone)
ld h,0
ld l,a
bcall(_disphl)
bcall(_getKey)
ret

.end END


Le résultat est 14, soit en binaire :

14/2 → 2*7 + 0
7/2 → 2*3 + 1
3/2 → 2*1 + 1
2/2 → 1*1 + 1

Ce qui donne à l'envers 1110, qui est bien le résultat (la dernière colone du tableau) smile.
en fait les prog que vous avez donné transforme le sprite en or avant de l'afficher .cé simple et en plus cé ce dont j'avais besoin.wink
avatar
Ouais enfin faut comprendre un peu le principe avant de recopier le code, sinon ça sert pas à grand chose.
^^^^Merci^^^^
avatar
./40> d'un autre coté un ou non exclusif, c'est pas bien compliqué à comprendre ( "colorer le pixel si le fond et/ou le premier plan est coloré" )
Oui mais faut comprendre le principe en ASM, c'est à dire comment ça marche avec le binaire, etc...
le ou non-exclusif, c'est déjà du binaire car booléen (bon sinon tu peux également t'amuser à faire un ou sur un système logique normand, mais bon je pense que c'est assez clair par défaut..)
Mouais.

shinei z80 > ça avance ton projet ?
oaui ca avance vite en basic (logik ) cé preske finit cé juste ke je doit régler un probleme de mémoire avec des XTEMP paceke la ram n'est pas infinie ^^.
mais en asembleur il me faut savoir comment uutiliser les matrice pour faire les limites. maintenant que je me tape plus lécriture des sprite en bin vive l'hex smile.
voila cé tt^^
avatar
Cool, t'aurai une screen ?

Pour les matrices en ASM, il y a ASM Guru qui en parle dans son tuto 24 et 30.
tromb Fichier joint : pkmntest.zip

voila celui la cé celui en basic xlib lotre faudra attendre pour celui en ion paceke les matrices^^.
Tu transfere le tt et tu archive tt sauf START et QUIT parceque eux ce sont les seuls qui ne sont pas en xtemp smile
tu prend xlib et puis cé bon.
avatar
J'ai tester et franchement c'est bien fait, et j'ai pas l'impression que c'est lent ('fin bon, j'ai une 84+ SE grin). Continue le, ce serai bien d'avoir un jeu comme ça sur TI (et en français en plus happy).
Bof, en fait, si vous utilisez l'ASM, une matrice maison faite dans le programme ASM serait beaucoup plus rapide, efficace en termes de mémoire et de capacité à l'utiliser et serait définitivement plus facile à créer.

Mélanger du Basic avec de l'ASM n'est pas spécialement ce qui est le plus facile à faire.
suis pas d'accord avec toi fallen ghost, en asm je n'arrive qu'a faire des maps, des sprites et quelques routines, et je fais le reste en basic, parce que des qu'il s'agit de tout faire en asm, ça devient beaucoup plus dur...
Mwai moi je trouve quel'asm ça devient 'simple' une fois qu'on a fait plein de tests/étudier plein de tuto/poser quelques questions sur ce qu'on ne comprend pas.