je ferait sa technique pour les 16 premieres lignes puis:
movem.l d0-d6/a1-a7,(a0)+
en bref bourin de base

geogeo :Oui, c'est tout à fait possible. Tu as une vieille version de fonction daffichage de sprite, je n'avais pas encore implémenté cette technique.
Sasume je voudrais savoir un truc:
J'ai regardé la source de FastGraySPrite32_OR_R en détail et je me demande si on peu l'optimiser, pour cela il suffirais seulement d'utiliser ta routine de scrolling de 32 pixels et de la répéter pour chaque ligne?? En bref ce baser sur la fonction de scrolling.
;C prototype: void DrawScreen (void *sprt, void *dest); ; ;void DrawScreen (register long *sprt asm("%a0"), ; register void *dest asm("%a1")); section ".data" xdef DrawScreen ;Motif de 32x32 répété sur une zone de 234x200 pixels DrawScreen: movem.l d3-d7/a2-a3,-(a7) lea 256(a0),a0 lea 7988(a1),a1 lea 8000(a1),a2 movea.l a0,a3 ;Réptition 6 motifs par colonnes soit 192 pixels de hauteur moveq.l #5,d7 ;Répétion du motif en hauteur \draw_up moveq.l #31,d6 ;Répétition du motif sur 32 pixels de hauteur et 216 pixels de largeur. \rep: move.l -(a0),d0 move.l d0,d1 move.l d0,d2 move.l d0,d3 move.l d0,d4 move.l d0,d5 move.w (a0),-(a2) movem.l d0-d5,-(a2) move.l -(a0),d0 move.l d0,d1 move.l d0,d2 move.l d0,d3 move.l d0,d4 move.l d0,d5 move.w (a0),-(a1) movem.l d0-d5,-(a1) sub.l #14,a1 sub.l #14,a2 dbf d6,\rep movea.l a3,a0 dbf d7,\draw_up movem.l (a7)+,d3-d7/a2-a3 rts
;C prototype: void Font0_DrawChar (short x, short y, void *sprite, void *dest); ; ;void Font0_DrawChar (register short x asm("%d0"), ; register short y asm("%d1"), ; register void *sprite asm("%a0"), ; register void *dest asm("%a1")); section ".data" xdef Font0_DrawChar Font0_DrawChar: movem.l d3-d7/a2-a6,-(a7) ;y*40 lsl.w #3,d1 move.w d1,d2 add.w d2,d2 add.w d2,d2 add.w d2,d1 moveq.l #$0F,d3 ;15=0b1111 move.w d0,d2 ;d2=x and.w d3,d0 ;d0=Bit à décaler not.w d3 and.w d3,d2 ;d2=octet lsr.w #3,d2 add.w d2,d1 ;Octet ou ce commence la copie adda.w d1,a1 ;Ce place dans la source ;Masks moveq.b #-1,d1 ;Tout les bits de 2^8 activé. lsl.b d0,d1 ; d1 = mask1 move.b d1,d2 not.b d2 ; d2 = mask2 ;d0=Bit à décaler ;d1=mask1 ;d2=mask2 moveq.l #7,d7 ;Dessine le caractère \rep_draw_char: move.b (a0),d3 lsl.b d0,d3 move.b (a0)+,d4 rol.b d0,d4 move.b d4,d5 and.b d2,d5 or.b d5,d3 move.b d3,8000(a1) move.b d3,(a1)+ swap.b d4 move.b d4,8000(a1) move.b d4,(a1)+ adda.l #38,a1 dbf d7,\rep_draw_char movem.l (a7)+,d3-d7/a2-a6 rts
Sasume :
P.S. : Comment se fait-il que swap.b ne soit pas rejeté par a68k ?
Kevin Kofler :Et apparemment, tu n'es pas pour changer ça
Il arrive que A68k accepte un peu tout et n'importe quoi.
Bugs.txt
A68k accepts some incorrect extensions like moveq.w, dbra.s or btst.w.
I don't know whether I should fix this one because some sources seem to rely on this. Kevin Kofler