[optiASM] scrolling vertical "shoot'em up"

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) :
Hey ! 16155 T-States , je suis sur qu'on peut faire beaucoup moins !!
Allez! On compte sur vous ! Exposez vos idées, vos suggestions !
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 !!

Allez! On compte sur vous ! Exposez vos idées, vos suggestions !
