Ben oui : 24/8=3.
C'est pair.





put_sprite_8 ; (d1,d2) a0 : screen, a1 : sprite
add.w d2,d2 ; y*2
move.w d2,d4 ;
lsl.w #4,d2 ; y*32
sub.w d4,d2 ; y*32 - y*2 = y*30
moveq.l #0,d4 ; efface d4
move.w d1,d4 ; d4=x
and.w #7,d1 ; d1=x%8
lsr.l #3,d4 ;d4 = x/8
add.w d2,d4 ;d4 = y*30 + x/8
add.w d4,a1 ; on aligne le sprite
moveq #7,d6
loop
move.b (a0)+,d4 ; load la ligne courante du sprite
lsl #8,d4 ;
lsr d1,d4 ; décale du reste
or.b d4,1(a1) ;affiche la ligne courante du sprite
lsr #8,d4
or.b d4,(a1)
add #30,a1
dbra d6,loop
rts
TechNIC a écrit :
Merci bien Sbibi pour la correction. Je testerais ce soir.
KK : pk ROM_CALL Sprite8 n'existe pas !!


move.w #24,%d0 /* x.w */
move.w #1,%d1 /* y.w */
move.l #0x4C00,%a0
lea Teste,%a1
/* Calculs de l'offset */
add.w %d1,%d1 /* d1.w*2 */
move.w %d1,%d2 /* d2.w = d0.w */
lsl.w #4,%d1 /* d1.w*2^4 */
sub.w %d2,%d1 /* on a fait: x= x*2*16-x*2 = x*30 */
move.w %d0,%d2 /* d2.w = d0.w */
lsr.w #4,%d0 /* d0.w/2^4 */
add.w %d0,%d0 /* d0.w*2 */
add.w %d0,%d1 /* d0.w + d1.w = d1.w */
add.w %d1,%a0 /* a0.l pointe sur x+/-16 */
moveq #15,%d0 /* d0.w = 15 */
and.w %d0,%d2 /* d2.w = reste de la division de d2.w/16 */
moveq #16,%d1 /* d1.l = 16 */
sub.w %d2,%d1 /* d2.w - d1.w */
Sprite16x16_none: /* Boucle: */
moveq #0,%d2 /* d2.l = 0 */
move.w (%a1)+,%d2 /* d2.w = (a1.w) ^ a1.w+ */
lsl.l %d1,%d2 /* decalage de la ligne */
or.l %d2,(%a0) /* On affiche en OR */
add.w #30,%a0 /* a0 pointe 30 octets plus loin*/
dbra %d0,Sprite16x16_none /* on le fait d0.w+1 fois */

squale92 a écrit :
TIGCCLIB n'est pas implémenté sous AS...
donc, pas possible

PutSprite16 macro
moveq.l #0,d4
move.w (a0)+,d4
lsl.l d1,d4
or.l d4,1(a1)
endm
put_sprite_16x16 ;a0=sprite, a1=LCD_MEM, d1=x ,d2=y
add.w d2,d2
move.w d2,d4
lsl.w #4,d2
sub.w d4,d2
move.w d1,d4
not.w d1
andi.w #$f,d1
lsr.w #4,d4
add.w d4,d4
add.w d2,d4
adda.w d4,a1
PutSprite16 0
PutSprite16 30
PutSprite16 60
PutSprite16 90
PutSprite16 120
PutSprite16 150
PutSprite16 180
PutSprite16 210
PutSprite16 240
PutSprite16 270
PutSprite16 300
PutSprite16 330
PutSprite16 360
PutSprite16 390
PutSprite16 420
PutSprite16 450
rts

il peut y avoir des erreurs
j'av pas compris que tu voulais faire un cas particulier 
Sprite16x16:
add.w d1,d1
move.w d1,d2
lsl.w #4,d1
sub.w d2,d1
move.w d0,d7
lsr.w #3,d0
add.w d0,d1
add.w d1,a0
move.w d7,d0
and.w #16,d7
lsl.w #2,d0
move.l HDL_Sprite16x16(pc,d0.w),a2;
jmp (a2)
HDL_Sprite16x16:
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
dc.l #Sprite16x16_32x,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_9inf,#Sprite16x16_8,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_8sup,#Sprite16x16_15
Sprite16x16_32x:
move.l (a1)+,d0-d7
or.w d0,60*0(a0)
or.w d1,60*1(a0)
or.w d2,60*2(a0)
or.w d3,60*3(a0)
or.w d4,60*4(a0)
or.w d5,60*5(a0)
or.w d6,60*6(a0)
or.w d7,60*7(a0)
swap d0
swap d1
swap d2
swap d3
swap d4
swap d5
swap d6
swap d7
or.w d0,60*0+30(a0)
or.w d1,60*1+30(a0)
or.w d2,60*2+30(a0)
or.w d3,60*3+30(a0)
or.w d4,60*4+30(a0)
or.w d5,60*5+30(a0)
or.w d6,60*6+30(a0)
or.w d7,60*7+30(a0)
rts
Sprite16x16_8sup:
moveq #16,d0
subq d7,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
moveq #0,d7
movem.w (a1)+,d1-d7
lsl.l d0,d1
lsl.l d0,d2
lsl.l d0,d3
lsl.l d0,d4
lsl.l d0,d5
lsl.l d0,d6
lsl.l d0,d7
or.l d1,30*0(a0)
or.l d2,30*1(a0)
or.l d3,30*2(a0)
or.l d4,30*3(a0)
or.l d5,30*4(a0)
or.l d6,30*5(a0)
or.l d7,30*6(a0)
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
moveq #0,d7
movem.w (a1)+,d1-d7
lsl.l d0,d1
lsl.l d0,d2
lsl.l d0,d3
lsl.l d0,d4
lsl.l d0,d5
lsl.l d0,d6
lsl.l d0,d7
or.l d1,30*7(a0)
or.l d2,30*8(a0)
or.l d3,30*9(a0)
or.l d4,30*10(a0)
or.l d5,30*11(a0)
or.l d6,30*12(a0)
or.l d7,30*13(a0)
moveq #0,d1
moveq #0,d2
move.w (a1)+,d1
move.w (a1),d2
lsl.l d0,d1
lsl.l d0,d2
or.l d1,30*14(a0)
or.l d2,30*15(a0)
rts
Sprite16x16_9inf:
subq #4,a0
moveq #0,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
movem.w (a1)+,d0-d6
swap d0
swap d1
swap d2
swap d3
swap d4
swap d5
swap d6
lsr.l d7,d0
lsr.l d7,d1
lsr.l d7,d2
lsr.l d7,d3
lsr.l d7,d4
lsr.l d7,d5
lsr.l d7,d6
or.l d0,30*0(a0)
or.l d1,30*1(a0)
or.l d2,30*2(a0)
or.l d3,30*3(a0)
or.l d4,30*4(a0)
or.l d5,30*5(a0)
or.l d6,30*6(a0)
moveq #0,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
movem.w (a1)+,d0-d6
swap d0
swap d1
swap d2
swap d3
swap d4
swap d5
swap d6
lsr.l d7,d0
lsr.l d7,d1
lsr.l d7,d2
lsr.l d7,d3
lsr.l d7,d4
lsr.l d7,d5
lsr.l d7,d6
or.l d0,30*7(a0)
or.l d1,30*8(a0)
or.l d2,30*9(a0)
or.l d3,30*10(a0)
or.l d4,30*11(a0)
or.l d5,30*12(a0)
or.l d6,30*13(a0)
moveq #0,d0
moveq #0,d1
move.w (a1)+,d0
move.w (a1),d1
swap d0
swap d1
lsr.l d7,d0
lsr.l d7,d1
or.l d0,30*14(a0)
or.l d1,30*15(a0)
rts
Sprite16x16_8:
subq #2,a0
movem.b (a1)+,d0-d7 /* ?? existe? pas de presence dans le timing.txt */
or.b d0,(a0)+
or.b d1,(a0)
or.b d2,30*1(a0)
or.b d3,30*1+1(a0)
or.b d4,30*2(a0)
or.b d5,30*2+1(a0)
or.b d6,30*3(a0)
or.b d7,30*3+1(a0)
movem.b (a1)+,d0-d7 /* ?? existe? pas de presence dans le timing.txt */
or.b d0,30*4(a0)
or.b d1,30*4+1(a0)
or.b d2,30*5(a0)
or.b d3,30*5+1(a0)
or.b d4,30*6(a0)
or.b d5,30*6+1(a0)
or.b d6,30*7(a0)
or.b d7,30*7+1(a0)
movem.b (a1)+,d0-d7 /* ?? existe? pas de presence dans le timing.txt */
or.b d0,30*8(a0)
or.b d1,30*8+1(a0)
or.b d2,30*9(a0)
or.b d3,30*9+1(a0)
or.b d4,30*10(a0)
or.b d5,30*10+1(a0)
or.b d6,30*11(a0)
or.b d7,30*11+1(a0)
movem.b (a1)+,d0-d7 /* ?? existe? pas de presence dans le timing.txt */
or.b d0,30*12(a0)
or.b d1,30*12+1(a0)
or.b d2,30*13(a0)
or.b d3,30*13+1(a0)
or.b d4,30*14(a0)
or.b d5,30*14+1(a0)
or.b d6,30*15(a0)
or.b d7,30*15+1(a0)
rts
Sprite16x16_15:
moveq #0,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
moveq #0,d7
movem.w (a1)+,d0-d7
add.l d0,d0
add.l d1,d1
add.l d2,d2
add.l d3,d3
add.l d4,d4
add.l d5,d5
add.l d6,d6
add.l d7,d7
or.l d0,30*0(a0)
or.l d1,30*1(a0)
or.l d2,30*2(a0)
or.l d3,30*3(a0)
or.l d4,30*4(a0)
or.l d5,30*5(a0)
or.l d6,30*6(a0)
or.l d7,30*7(a0)
moveq #0,d0
moveq #0,d1
moveq #0,d2
moveq #0,d3
moveq #0,d4
moveq #0,d5
moveq #0,d6
moveq #0,d7
movem.w (a1)+,d0-d7
add.l d0,d0
add.l d1,d1
add.l d2,d2
add.l d3,d3
add.l d4,d4
add.l d5,d5
add.l d6,d6
add.l d7,d7
or.l d0,30*8(a0)
or.l d1,30*9(a0)
or.l d2,30*10(a0)
or.l d3,30*11(a0)
or.l d4,30*12(a0)
or.l d5,30*13(a0)
or.l d6,30*14(a0)
or.l d7,30*15(a0)
rts


put_sprite_16x16 ;a0=sprite, a1=LCD_MEM, d1=x ,d2=y
lea spriteS(pc),a0 ;8
add.w d2,d2 ;4
move.w d2,d4 ;4
lsl.w #4,d2 ;14
sub.w d4,d2 ;4
move.w d1,d4 ;4
andi.w #$f,d1 ;8
lsr.w #4,d4 ;14
add.w d4,d4 ;4
add.w d2,d4 ;4
adda.w d4,a1 ;6
movem.l (a0)+,d0/d2-d7
lsr.l d1,d0
lsr.l d1,d2
lsr.l d1,d3
lsr.l d1,d4
lsr.l d1,d5
lsr.l d1,d6
lsr.l d1,d7
or.l d0,(a1)
or.l d2,30(a1)
or.l d3,30*2(a1)
or.l d4,30*3(a1)
or.l d5,30*4(a1)
or.l d6,30*5(a1)
or.l d7,30*6(a1)
move.l (a0)+,d7
lsr.l d1,d7
or.l d7,30*7(a1)
movem.l (a0)+,d0/d2-d7
lsr.l d1,d0
lsr.l d1,d2
lsr.l d1,d3
lsr.l d1,d4
lsr.l d1,d5
lsr.l d1,d6
lsr.l d1,d7
or.l d0,30*8(a1)
or.l d2,30*9(a1)
or.l d3,30*10(a1)
or.l d4,30*11(a1)
or.l d5,30*12(a1)
or.l d6,30*13(a1)
or.l d7,30*14(a1)
move.l (a0)+,d7
lsr.l d1,d7
or.l d7,30*15(a1)
rtssprite
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000
dc.b %xxxxxxxx,%xxxxxxxx,%00000000,%00000000