Sasume :
Ça fait un bon point en plus pour AS
Bah c'est assez vite vu, Pollux l'a dit : Soit tu as un fond statique et pas trop d'objets mouvants sur l'écran, alors un "vrai" scrolling devrait être plus rapide, soit tu as un fond pas toujours statique (tiles animés par exemple) et un nombre conséquent d'objets, et alors il vaut surement mieux tout réafficher.
l'ancienne était bien trop lente
la nouvelle avec les movem me fait gagner 7 fps de plus que l'ancienne mais est optimisable et je ne vois pas comment, j'ai tout apliiqué de ce que tu as dit Pollux
Laquelle? Celle que tu as postée?
Heu, ce que tu as dit Pollux me semble être en contradiction assez radicale avec la nouvelle avec les movem... Tu as essayé sans les movem, mais avec les optimisations dont je t'ai parlé?
;C prototype: void DrawScreen2 (void *sprt, void *dest); ; ;void DrawScreen2 (register long *sprt asm("%a0"), ; register void *dest asm("%a1")); section ".data" xdef DrawScreen2 DrawScreen2: movem.l d3/a2,-(a7) lea 322(a1),a1 lea 8000(a1),a2 movea.l a0,a3 moveq.l #11,d2 \rep: moveq.l #15,d3 ;Sprite totale \b0: move.l (a0)+,d1 moveq.l #5,d0 ;Gris clair \s1: move.l d1,(a1)+ dbf d0,\s1 ;16 pixels move.b -4(a0),(a1) move.l (a0)+,d1 moveq.l #5,d0 ;Gris foncé \s2: move.l d1,(a2)+ dbf d0,\s2 ;16 pixels move.b -4(a0),(a2) lea 16(a1),a1 lea 16(a2),a2 dbf d3,\b0 movea.l a3,a0 dbf d2,\rep movem.l (a7)+,d3/a2 rts
moveq.l #5,d0 ;Gris clair \s1: move.l d1,(a1)+ dbf d0,\s1
move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+
;C prototype: void DrawScreen2 (void *sprt, void *dest); ; ;void DrawScreen2 (register long *sprt asm("%a0"), ; register void *dest asm("%a1")); section ".data" xdef DrawScreen2 DrawScreen2: lea 322(a1),a1 moveq.l #5,d2 \rep: moveq.l #31,d0 ;Sprite totale \b0: ;Gris clair move.l (a0)+,d1 move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ ;16 pixels move.b -4(a0),(a1) lea 8000-24(a1),a1 ;Gris foncé move.l (a0)+,d1 move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ move.l d1,(a1)+ ;16 pixels move.b -4(a0),(a1) lea 16-8000(a1),a1 dbf d0,\b0 lea -32*8(a0),a0 dbf d2,\rep rts
Un phénomène bizarre apparait mais logique, avec le scrolling je ne suis jamais à 60 fps, c'est une moyenne, je peut aller de 78 fps à 58 fps et quand une zone est fixe je suis toujours à 63 fps.