Page 1 of 1

[optiASM] scrolling vertical "shoot'em up"

PostPosted: 23 Dec 2015, 21:25
by grosged
Pour ce premier sujet d'optimisation en assembleur, je propose que l'on se penche sur la routine de scrolling vertical , comme ceux que l'on voit dans les (bons vieux?) shoot'em up (donc défilement vers le bas).

La routine que l'on rencontre le plus souvent repose sur l'utilisation d'un LDDR
Voici l'une des façons de faire défiler l'écran vers le bas (avec ajout d'une ligne supérieure vierge) :

Code: Select all
   ld hl,plotSScreen+755   ; {10}      juste au dessus du coin inférieur droit
   ld de,plotSScreen+767   ; {10}     coin inférieur droit de l'écran
   ld bc,756               ; {10}            756 octets à
   lddr                    ; {15871=755*21+16}    copier , donc (hl) vers (de) puis décrèmente hl,de,bc
   ex de,hl                ; {4}       de (qui, à ce moment =plotSScreen+11) permute avec hl
   ld (hl),c               ; {7}       efface le contenu de (hl)
   ld de,plotSScreen+10    ; {10}       de même pour la case voisine de gauche
   ld c,11                 ; {7}        et on fait ça 11 fois
   lddr                    ; {226=10*21+16}        en partant vers la gauche. Terminé!
        ;  T-States, total: {16155}


Hey ! 16155 T-States , je suis sur qu'on peut faire beaucoup moins !! :#fou#:
Allez! On compte sur vous ! Exposez vos idées, vos suggestions ! :p