1

        include "doorsos.h"
        include "graphlib.h"
        include "userlib.h"
     
        xdef _ti89
        xdef _main
        xdef _comment
_main:
        jsr             graphlib::clr_scr
 	move.w		#7,d0
 	move.w		#5,d1
 put_sprite:

 	move.l 		#LCD_MEM,a1	;on charge l'adresse de la memoire de l'ecran dans a1
 	lea 		sprite(pc),a0	;on charge l'adresse du sprite dans a0
	move.w		(a0)+,d7	;on recupère la hauteur du sprite 
	sub.w		#1,d7		;on enlève 1 a la hauteur pour le dbra
	move.w		d1,d2		;oncopie d1 dans d2
 	mulu		#30,d2		;on multiplie d2 par 30
 	ext.l		d2		; d2 devient un long mot
 	add		d2,a1		;on fait pointer a1 sur la bonne ligne

 	move.w		d0,d1		;on copie d0 dans d1
 	lsr		#3,d1		;on divise d1 par 8 soit 2^3
 	ext.l		d1		;d1 devient par magie un long mot
 	add		d1,a1		;on fait pointer a1 sur la bonne colone (fin presque)
 	move.w		#8,d1		;on mets 8 dans d1
 	and.w		#7,d0		; on obtient le reste de d0/8 dans d0
 	sub.w		d0,d1		;on a le nombre de pixels qui manque pour bien placer le sprite
 	add.w		#8,d1		;16=8+le reste de d0/8=d0 + d1-d0
 boucle:
 	clr.l		d0		;on efface d0
 	move.w		(a0)+,d0	;on copie les 16 premiers pixels dans d0
	lsl.l		d1,d0		;on positionne bien le sprite
 	rol.l		#8,d0		; 
	or.b		d0,(a1)+	;1
	rol.l		#8,d0		;
 	or.b		d0,(a1)+	;1+1
 	rol.l		#8,d0		;
 	or.b		d0,(a1)+	;1+1+1
 	rol.l		#8,d0		;
 	or.b		d0,(a1)+	;1+1+1+1=4
 	lea 		26(a1),a1	;30-4=26 donc on vas a la ligne suivante
 	dbra 		d7,boucle	;on recommence jusqu'a que d7 =0
 	jsr		userlib::idle_loop
rts
;et le sprite dois etre definie comme ceci ! 
sprite:
	dc.w	8		;déclaration du sprite
 	dc.w	%1000000000000001
 	dc.w	%0100000000000010
 	dc.w	%0010000000000100
 	dc.w	%0001000000001000
 	dc.w	%0001111111111000
 	dc.w	%0001000000001000
 	dc.w	%0010000000000100
	dc.w	%1000000000000001 
_comment:
         dc.b "Routines crée par Kraky avec l'aide de ti-fr",0
         end

ben voila je voudrais si on peu l'optimzer car c'est celle la que j'utilise dans mon jeu !(avec un rajout de clipping , de sprite?*32,...

je presise que Kraky est au courant et c'est lui qui ma prmis
punky chut wink
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

2

la voila tel que je l'utilise !
put_sprite:		;put_sprite	;a0=sprite,a1=mask,a2=screen,d0=x,d1=y,d2=1 il s'agit d'un titre !
	movem.l		d0-d7/a0-a6,-(a7)
	move.w		(a0)+,d7
	move.w		(a0)+,d6
	sub.w		#1,d7			;d7 = hauteur du sprite
	sub.w		#1,d6
	cmp		#0,d1
	blt		prepare		;d1<0
	move.w 		d1,d2 			;d2 =d1=3
	mulu 		#30,d2
	ext.l 		d2
	add 		d2,a2			;a2 est possitionner sur la bonne ligne
	jmp		jump

prepare:
	move.w		d7,d5		;d5 = hauteur du sprite
	move.w		#0,d4		;d4 = 0
	sub.w		d1,d4		;d4 = -d1 >0 = nb ligne en negatif
	sub.w		d4,d7		;d7 = hauteur - ce qui est en dehors de l'ecran 
	cmp		#0,d7		;si la hauteur est negative on quitte
	blt		fin		;d7<0
	move.w		d6,d5
	add.w		#1,d5		;car on a enlever 1 a d6
	lsl.l		#1,d5		;d5=4 <=> sprite 32	d5=2 <=> sprite 16	d5>4
	mulu.w		d5,d4
	add.w		d4,a0
	add.w		d4,a1
jump:
	move.w 		d0,d1
	lsr 		#3,d1
	ext.l 		d1 
	add 		d1,a2			;a1 est positionner sur la bonne colonne a 8 pixel pres !
	move.w 		#16,d2			
	and 		#7,d0 			;d0 = le reste de la division de d0 par 7
	sub 		d0,d2			;d2 = 16 - le reste
loop: 
	move.w		d6,d3
	move.l		a2,a3
subloop:
	clr.l 		d0
	clr.l		d1
	move.w 		(a0)+,d0
	move.w		(a1)+,d1
	lsl.l		d2,d0
	lsl.l		d2,d1 
	rol.l		#8,d0
	rol.l		#8,d1
	or.b		d1,(a2)
	not.b 		d0
	and.b		d0,d1
	eor.b 		d1,(a2)+
	rol.l 		#8,d0 
	rol.l		#8,d1
	or.b		d1,(a2)
	not.b 		d0
	and.b		d0,d1
	eor.b 		d1,(a2)+
	rol.l 		#8,d0 
	rol.l		#8,d1
	or.b		d1,(a2)
	not.b 		d0
	and.b		d0,d1
	eor.b 		d1,(a2)+
	rol.l 		#8,d0
	rol.l		#8,d1 
	or.b		d1,(a2)
	not.b 		d0
	and.b		d0,d1
	eor.b 		d1,(a2)+
	dbra		d3,subloop
	move.l		a3,a2
	add.w		#30,a2
	dbra 		d7,loop
fin:
	movem.l		(a7)+,d0-d7/a0-a6
	rts
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

3

horrible tongue
"I read the game.dll assembly more easily than you read the joke on the back of your box of Cocoa Pebbles, and have spent the past 2 1/2 years navigating it." ©

4

je m'en doute un peu mais etant qu'un newbies je la trouve pas mal ! car je la comprends mais maintenat il fodrais que j'arrive a l'optimiser !
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

5

rol.l #8,d0 ;
or.b d0,(a1)+ ;1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1+1
rol.l #8,d0 ;
or.b d0,(a1)+ ;1+1+1+1=4
Optimise ca !
Par un or.l d0,(a1)
=> Fait que a1 soit pair !

6

mais comment je peu savoir si a1 est paire ou imapire ?
ca je ne vois pas du tout !
l'optimization que tu ma dis je crois que je l'avais deja faites mais j'avais bloque au moment ou a1 est impaire sad
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

7

Tu le forces a etre pair, c'est pas + complique.

8

je te passe la mienne qu'est super nulle !
(Thanks: Bill - Bob )

mais tu verras comment la rendre paire ! ! !
( C'est pas du tt optimisé mais je m'en fou je programme + )


zlklib::sprite8
zlklib@0008:
sprite8:
;d3.w = hauteur
sub.w #1,d3
moveq.w #0,d2
move.w d1,d2
lsl.w #5,d1
add.w d2,d2
sub.w d2,d1
;;;;;;;;;;;;;;;;;;;;;
moveq.w #0,d2
move.w d0,d2
lsr.w #3,d0
and.b #$fe,d0 ;combiné a lsr.w #8 il donne le nombre de word à sauté!
add.w d0,d1
add.w d1,a0
;;;;;;;;;;;;;;;;;;;;
and.w #15,d2 ;le mod 15
moveq.w #24,d0
sub.w d2,d0 ;nbre de décallage
;;;;;;;;;;;;;;;;;;;;
loop_sprite0:
clr.l d1
move.b (a2)+,d1 ;Mask
lsl.l d0,d1 ;on décale
not.l d1 ;On inverse
and.l d1,(a0) ;on applique sur l'ecran
;;;;;;;;;;;;;;;;;;;;;;;;;;;
clr.l d1
move.b (a1)+,d1
lsl.l d0,d1 ;on décale
or.l d1,(a0) ;j'applique à l'ecran
lea 30(a0),a0 ;je saute une ligne
dbf.w d3,loop_sprite0
rts
LinuX Powa (:

9

je n'ai ien compris !
donc comment je peu le forcer a etre paire ?
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

10

tu mets un "even" devant tes sprites
Site personnel
Site professionnel

msn / mail : racine.f(at)free.fr

11

???
c'est koi ca ?
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS

12

merci beaucoup!

surtout a FlashZ winkwink
Plus tu pedale moins vite moins t'avance plus vite
Ma team CS