@Shredder, post #1
@teh_KaiN, post #4
Ustawianie losowego, pojedynczego piksela na bitmapie to jest jakieś 6 operacji (odczyt bajtu z bitem danego piksela, przygotowanie maski ustawiającej bit, sprawdzenie czy ustawiamy zero czy jedynkę, skok do instrukcji od odpowiedniego wariantu warunku, instrukcja za warunkiem która zrobi to co trzeba, zapis z powrotem do bitmapy, a może coś jeszcze co pomijam) na każdy bit głębi kolorów, przy 16 bitach na piksel ustawienie każdego piksela potrzebuje 6*16 = 96 instrukcji.
; Wstaw piksel $00-$ff na miejsce 0-7 w bajcie ; Przygotowanie MOVE.B #$80,D0 LSR.B #MIEJSCE,D0 ; D0: Miejsce, gdzie wklejamy piksel w formie maski MOVE.B #PIKSEL,D2 ; D2: Wartość piksela ROL.W #8,D2 ; Wklejanie ; Wklejam bitplan 0 ROR.W #1,D2 LSR.B #MIEJSCE,D2 MOVE.B D0,D1 AND.B (A0),D1 ; Pobieramy dane bitplanu nr 0 EOR.B D2,D1 EOR.B D1,(A0) ; Wklejam bitplan 1 BCLR #7-MIEJSCE,D2 ROR.W #1,D2 LSR.B #MIEJSCE,D2 MOVE.B D0,D1 AND.B (A1),D1 ; Pobieramy dane bitplanu nr 1 EOR.B D2,D1 EOR.B D1,(A0) itd.
@Hexmage960, post #5
...
Ustawienie jednego piksela jest nieco prostsze. Zdecydowanie mniej niż 6 kroków.
...
; Wklejam bitplan 0 1 ROR.W #1,D2 2 LSR.B #MIEJSCE,D2 3 MOVE.B D0,D1 4 AND.B (A0),D1 ; Pobieramy dane bitplanu nr 0 5 EOR.B D2,D1 6 EOR.B D1,(A0) ; Wklejam bitplan 1
@docent, post #6
; Ustawia kolor ołówka A na ten w D0. ; d0: a7a6a5a4a3a2a1a0 SetAPen: move.b d0,d1 ; d1: bitplan 7 move.b d1,d2 add.b d2,d2 ; d2: bitplan 6 move.b d2,d3 add.b d3,d3 ; d3: bitplan 5 move.b d3,d4 add.b d4,d4 ; d4: bitplan 4 swap d1 move.b d4,d1 add.b d1,d1 ; d1: bitplan 7/3 swap d2 move.b d1,d2 add.b d2,d2 ; d2: bitplan 6/2 swap d3 move.b d2,d3 add.b d3,d3 ; d3: bitplan 5/1 swap d4 move.b d3,d4 add.b d4,d4 ; d4: bitplan 4/0 rts
WritePixel: ; Przygotowanie moveq #$80,d5 lsr.b d0,d5 lsr.l d0,d1 lsr.l d0,d2 lsr.l d0,d3 lsr.l d0,d4 ; Wklejanie bitplanu 0 move.b d5,d6 and.b d1,d6 eor.b (a0),d6 eor.b d6,(a0) ; Wklejanie bitplanu 1 move.b d5,d6 and.b d2,d6 eor.b bpr(a0),d6 eor.b d6,bpr(a0) ; Wklejanie bitplanu 2 move.b d5,d6 and.b d3,d6 eor.b 2*bpr(a0),d6 eor.b d6,2*bpr(a0) ; Wklejanie bitplanu 3 move.b d5,d6 and.b d4,d6 eor.b 3*bpr(a0),d6 eor.b d6,3*bpr(a0) ; Przygotowanie swap d1 swap d2 swap d3 swap d4 ; Wklejanie bitplanu 4 move.b d5,d6 and.b d1,d6 eor.b 4*bpr(a0),d6 eor.b d6,4*bpr(a0) ; Wklejanie bitplanu 5 move.b d5,d6 and.b d2,d6 eor.b 5*bpr(a0),d6 eor.b d6,5*bpr(a0) ; Wklejanie bitplanu 6 move.b d5,d6 and.b d3,d6 eor.b 6*bpr(a0),d6 eor.b d6,6*bpr(a0) ; Wklejanie bitplanu 7 move.b d5,d6 and.b d4,d6 eor.b 7*bpr(a0),d6 eor.b d6,7*bpr(a0) ; Sprzątanie swap d1 swap d2 swap d3 swap d4 lsl.l d0,d1 lsl.l d0,d2 lsl.l d0,d3 lsl.l d0,d4 rts