Ok, bon je vais mettre mes deux routines de sprite restantes, mais ca ne sera pas optimisé maintenant (les vacances approchent). Comme j'ai un problème avec le TI-GRAPH LINK chez moi, je suis obligé de tout recopier
(L'ecriture de la pile x+y+z(a7) a été empruntée dans le 92Guide)
Sprite16:
Sprite16:
move.l 4+0+10(a7),a0
;-------------------------
move.w 4+0+2(a7),d0
muls #30,d0
add.w d0,a0
;-------------------------
move.w 4+0+0(a7),d0
lsr.w #3,d0
add.w d0,a0
;------------------------
move.w 4+0+0(a7),d1
divu #8,d1
swap d1
sprite16_b1:
cmp.w #0,4+0+4(a7)
beq sprite16_f1
move.l 4+0+6(a7),a2
;-------decalages---------
clr.l d2
move.w (a3),d2
lsl.l #8,d2
lsr.l d1,d2
move.b d2,d5
lsr.l #8,d2
move.b d2,d4
lsr.l #8,d2
move.b d2,d3
lsr.l #8,d2
;----- mode d'écriture --------
cmp.w #0,4+0+14(a7)
beq sprite16_xor
cmp.w #1,4+0+14(a7)
beq sprite16_or
;---------------------------------
sprite16_and:
and.b d2,(a0)
and.b d3,1(a0)
and.b d4,2(a0)
and.b d5,3(a0)
bra sprite16-endtst
;---------------------------------
sprite16_xor:
eor.b d2,(a0)
eor.b d3,1(a0)
eor.b d4,2(a0)
eor.b d5,3(a0)
bra sprite16-endtst
;---------------------------------
sprite16_or:
or.b d2,(a0)
or.b d3,1(a0)
or.b d4,2(a0)
or.b d5,3(a0)
;--------------------------------
sprite16_endtst:
add.l #30,a0
add.l #2,4+0+6(a7)
sub.w #1,4+0+4(a7)
bra sprite16_b1
sprite16_f1:
rts
je me suis tromé à la ligne 20, c'est (a2) et non (a3)
Sprite32:
Sprite32:
move.l 4+0+10(a7),a0
;-------------------------
move.w 4+0+2(a7),d0
muls #30,d0
add.w d0,a0
;-------------------------
move.w 4+0+0(a7),d0
lsr.w #3,d0
add.w d0,a0
;------------------------
move.w 4+0+0(a7),d1
divu #8,d1
swap d1
sprite32_b1:
cmp.w #0,4+0+4(a7)
beq sprite32_f1
move.l 4+0+6(a7),a2
;-------decalages---------
clr.l d0
clr.l d2
move.l (a2),d0
move.l (a2),d2
move.w #8,d3
sub.w d1,d3
lsr.l d1,d0
lsl.l #8,d2
lsl.l #8,d2
lsl.l #8,d2
lsl.l d3,d2
lsr.l #8,d2
lsr.l #8,d2
lsr.l #8,d2
move.b d0,d5
lsr.l #8,d0
move.b d0,d4
lsr.l #8,d0
move.b d0,d3
lsr.l #8,d0
;----- mode d'écriture --------
cmp.w #0,4+0+14(a7)
beq sprite32_xor
cmp.w #1,4+0+14(a7)
beq sprite32_or
;---------------------------------
sprite32_and:
and.b d0,(a0)
and.b d3,1(a0)
and.b d4,2(a0)
and.b d5,3(a0)
and.b d4,4(a0)
bra sprite32_endtst
;---------------------------------
sprite32_xor:
eor.b d0,(a0)
eor.b d3,1(a0)
eor.b d4,2(a0)
eor.b d5,3(a0)
eor.b d4,4(a0)
bra sprite32_endtst
;---------------------------------
sprite32_or:
or.b d0,(a0)
or.b d3,1(a0)
or.b d4,2(a0)
or.b d5,3(a0)
or.b d4,4(a0)
;--------------------------------
sprite32_endtst:
add.l #30,a0
add.l #4,4+0+6(a7)
sub.w #1,4+0+4(a7)
bra sprite32_b1
sprite32_f1:
rts
(Sprite32 n'est pas passé ... tant pis je laisse tomber)