Tomasz Wachowiak napisał/a:Nie bądź taki skromny... :) Te kilkanaście linijek jest przykładem na to, jak myśląc w nieszablonowy sposób można uzyskać świetne rezultaty. Jak dla mnie, to numer jeden od naprawdę długiego czasu.
:)
Tomasz Wachowiak napisał/a:Myślę jeszcze o czymś innym :) Tyle, że dużo roboty i muszę cały kod napisać, żeby się przekonać, czy będzie szybciej. A krótkich linii bym nie ruszał, bo kod blittera jest zbyt piękny, żeby go prymitywną motorolą zastępować :P
zapodawaj :)
widzę jeszcze miejsce na drobne optymalizacje, typu:
- Jeśli ekran jest w obrębie 16bitowej strony to można:
"move.l a4,dstAddr(a6) ; Destination Addr" --> "move.w a4,dstAddr+2(a6) ; Destination Addr"
- zmienić adresowanie dla kodu blittera z:
move.w D0,hop(A6)
...
move.w #0,endmsk3(a6) ; EndMask3
move.w #-6,dstYinc(a6) ; DestYInc
move.l a4,dstAddr(a6) ; Destination Addr
move.w #2,xCount(a6) ; xCount
move.w d4,yCount(a6) ; yCount
move.b D7,lineNum(a6) ; Do Blit, start with 3rd Half-Tone
na:
lea $FFFF8A3A.w,A6 ;HOP
move.w D0,(A6)
...
move.w d4,-(a6) ; yCount
move.w #2,-(a6) ; xCount
move.l a4,-(a6) ; Destination Addr
move.w #-6,-(a6) ; DestYInc
move.w #0,-2(a6) ; EndMask3
move.b D7,$10(a6) ; Do Blit, start with 3rd Half-Tone
Ale to urywa zaledwie kilkanaście cykli na linię.