Posté le 14/02/2006 à 14:06 Membre depuis le 14/02/2006, 1844 messages
Bonjour, je voulais savoir si qq connait un lien ou on explique comment bouger un sprite (avec ion si possible)?
Merci

confus
Posté le 14/02/2006 à 16:03 Membre depuis le 09/07/2003, 21783 messages
Tu efface l'ancienne position (à l'aide du même sprite que t'applique dessus, en changeant un paramètre) et tu retrace la nouvelle ?

Sinon, y'a surement moyen de traffiquer directement le buffer (l'adresse du) de l'écran, mais bon, j'y connais rien en z80 la-dessus, et c'est déjà d'un aute niveau.
Posté le 14/02/2006 à 17:49 Membre depuis le 14/02/2006, 1844 messages
hehe Seulement je commence a peine la prog en Z80, c'est pour ca que si tu me dit ca comme ca ca veut pas dire beaucoup de chose pour moi, un exemple un peu plus concret seurait le bien venu! roll

PS: c'est quoi le buffer SVP?? confus
Posté le 14/02/2006 à 19:05 Membre depuis le 15/03/2005, 3470 messages
Moi j'avais réussis à afficher une sprite mais pas à la faire bouger... C'est dur l'asm. En plus maintenant que j'ai reformater j'ai plus rien :'( !
Posté le 14/02/2006 à 19:35Edité par very le 14/02/2006 à 22:57 Membre depuis le 09/07/2003, 21783 messages
Bha, je ne connais presque rien en asm z80, mais comme on fait pareil dans tous les langages...
Il faut que tu reussie à effacer ton sprite de la 1er position (tu utilse une fonction spécifique ou tu y vas à la main ?), et ensuite, tu n'a plus qu'a afficher de nouveau ton sprite, à la nouvelle position.

sinon, http://fr.wikipedia.org/wiki/Buffer
( en gros, ici, c'est une zone de mémoire où l'écran est écrit en bit.Tu peux te réprésenter ça comme un tebaleu de 0 et de 1, 0=éteint, 1=allumé. Sur certaines architectures [Ti 68k I,..], l'adresse de cet endroit est modifiable, ce qui est plutôt fun niveau programmation, notemment pour les scrooling, etc. )
Posté le 14/02/2006 à 20:19 Membre depuis le 14/02/2006, 1844 messages
>"Moi j'avais réussis à afficher une sprite mais pas à la faire bouger"

Idem pour moi: ya plein de tuto qui explique comment afficher un sprite, mais aucun ou on puisse faire bouger les sprites, par contre j'en ai trouvé 1 ou on peu faire bouger un pt, G essayer de faire un mix des deux mais ca a pas marché, sad C pour ca que je pose la question...


>"En plus maintenant que j'ai reformater j'ai plus rien :'( ! "

Tu veux dire que ta tout reformater sans faire de sauvegarde??? fou




Au fait si j'ai bien compris le buffer c'est la ou tt les registres sont stocké, C ca?
Posté le 14/02/2006 à 22:58 Membre depuis le 09/07/2003, 21783 messages
"Au fait si j'ai bien compris le buffer c'est la ou tt les registres sont stocké, C ca?"
nan
Posté le 15/02/2006 à 19:15 Membre depuis le 14/02/2006, 1844 messages
ok merci gni
Posté le 15/02/2006 à 23:31 Membre depuis le 09/07/2003, 21783 messages
Mais de rien.
Posté le 16/02/2006 à 11:51Edité par glre le 25/02/2006 à 17:30 Membre depuis le 10/10/2004, 541 messages
Faire bouger un sprite , c'est pas si dur.
tu fais une routine directinput, pour voir si tu appuie sur les touches que tu veux pour faire bouger ton sprite,tu efface le graphbuffer buffer avec une routine "maison" à chaque boucle et tu affiche le sprite à chaque fois aussi, parcque si tu remet a chaque fois la nouvelle position sur l'ancienne, ça risque d'être lent. Pour le sprite, il te faut des coordonnées, donc tu définie des variables x_sprite et y_sprite de 8 bit de préférence, au début du programme par exemple. Il te reste plus qu'à ajouter ou soustraire 1 ou plus à tes variable pour les faire bouger. Un petit exemple vu mon explication foireuse grin

#define x_sprite saferam1
#define y_sprite saferam1+1

<<tu met ton header normal>>

        ld     a,10            'tu met
        ld     (x_sprite),a     'tes variables
        ld     (y_sprite),a     'au point que tu veux, ici 10
directinput:

        ld hl,plotsscreen          'routine qui 
	ld (hl),0                      ' efface le
	ld de,plotsscreen+1     'plotscreen, c'est -a-dire 
	ld bc,12*64-1             ' le graphbuffer
	ldir                            '

	ld	b,4                  '
	ld	a,(y_balle)       '   affiche ton sprite
	ld	l,a                   '
	ld	a,(x_balle)        '
	ld	ix,balle             '
	call	ionputsprite       '

	ld	a,$FF         '
	out	(1),a         '   
	ld	a,$FE         '
	out	(1),a         'routine de directinput, tu choisis les touches que tu veux scanner, j'ai pris
	in	a,(1)           ' haut et bas pour bouger le sprite de bas en haut , j'ai pas mis gauche droite expres
	bit	0,a              ' pour que tu le fasse, par contre, la touche gauche permet de quitter le jeu pour l'instant    
	call	z,bas          ' 
	bit	1,a              '
	call	z,quitter     ' 
	bit	3,a              ' 
	call	z,haut           '
        jp      directinput

bas:
      push   af                  ' met a dans la pile pour pouvoir continuer a faire marcher le directinput
      ld      a,(y_sprite)
      inc     a
      ld       (y_sprite),a
      pop     af                  'retire la valeur de la pile et la stoque dans a
      ret

haut:
      push   af                 
      ld      a,(y_sprite)
      dec    a
      ld       (y_sprite),a
      pop     af               
      ret

quitter:
       pop a
       ret


balle:
	.db	%01100000
	.db	%11110000
	.db	%11110000
	.db	%01100000


edit_very: rha ces jeunes :
edir glre : merci
Posté le 18/02/2006 à 08:45 Membre depuis le 14/02/2006, 1844 messages
top OUah Ca sent super bon tt ca! Merci, je vais essayer de me debrouiller avec ca!



...Au fait, C quoi le graph buffer?
Posté le 18/02/2006 à 12:47 Membre depuis le 09/07/2003, 21783 messages
Ce que j'ai expliqué plus haut ?
en gros, ici, c'est une zone de mémoire où l'écran est écrit en bit.Tu peux te réprésenter ça comme un tebaleu de 0 et de 1, 0=éteint, 1=allumé.
Posté le 18/02/2006 à 14:18 Membre depuis le 14/02/2006, 1844 messages
Ah d'accord, je commence a comprendre 1 peu mieu smile
Posté le 25/02/2006 à 17:57 Membre depuis le 10/10/2004, 541 messages
le graphbuffer, c'est un zone de 768 octet, soit 96 * 64, les "dimension en pixel" de ton ecran de calculatrice. lorsque tu écris a cette adresse, par exemple, tu change le premier pixel en 1 (alors qu'il était) à zero, ça ne se verra sur l'écran que si tu fais un refresh, c'est-à-dire avec ion tu appelle la fonction "ionfastcopy" qui copie le graphbuffer à l'ecran. ("ifastcopy" avec mirage os).
Et aussi, tu verra que le graphbuffer se nomme aussi plootscreen.
Voila, bonne chance pour la programmation smile
Posté le 28/02/2006 à 16:48 Membre depuis le 14/02/2006, 1844 messages
Merci smile
Posté le 02/11/2006 à 10:55 Membre depuis le 02/11/2006, 1 message
bonjour, ou peut on telecharger des sprites? SVP MERCI
Posté le 02/11/2006 à 11:45 Membre depuis le 19/12/2002, 480 messages
EUH, oui et non, disons que tu peux aller chercher dans les sources des jeux asm qui sont sur internet les sprites qui t'intéressent (un petit message de remerciement dans le lisez-moi de ton programme étant alors bien vu)... Mais il n'existe pas à ma connaissance de site proposant des sprites de TI déjà dessinés...