Je ne sais pas si ça t'intéressera, elle n'a pas du tout la prétention d'être state-of-the-art ou quoi que ce soit, je dis juste qu'elle est plus efficace que
./17 
// d3 <= 8
// d4 = (1<<d3)-1
// d5 = ~d4
move.w (a1)+,d0
rol.l d3,d0 // ou ror/swap si shift>8
and.w d4,d0
boucle {
move.l (a1)+,d1
rol.l d3,d1 // ou ror/swap si shift>8
move.l d1,d2
and.w d4,d2
and.w d5,d1
or.w d1,d0
move.l d0,(a0)+
... idem en échangeant d0 et d2 ...
}
soit 48+2n cycles pour afficher 32 nouveaux pixels, à comparer avec 28+2m cycles pour afficher 16 pixels avec la méthode de
./17 ^^
(le pire des cas est atteint pour n=9, donc 66 cycles/32 bits avec cette méthode, comparé au pire des cas m=8 -- 44 cycles/16 bits = 88 cycles/32 bits avec
./17 modifié pour que shift<=8 ; donc en fait c'est 33% plus rapide

)