Tak sobie myślę, że operowanie na 4-bajtowych wartościach w mode 9 jest niezbyt szybkie, a i wygoda pisania wszelakich operacji
na obrazie w trybach tego typu pozostawia do życzenia. Nasunął mi się więc banalny pomysł, żeby zrobić dwa tylne bufory - jeden
standardowy, a drugi z jednobajtowymi wartościami kolorów pikseli. Nie wiem czy jasno tłumaczę: jeśli normalnie mamy dla dwóch
punktów coś takiego:
#$AF
to w back-backbufferze jest to rozpisane jako:
#AA, #$FF
Tak więc proces chunk2nibble przebiega w następujący sposób:
ldx #59 ;59
yeh ldy cnt2 ;licznik dla chunkbufora
kp lda (c_bufpnt),y
and #$F0 ;lewy nibble
sta lewy
iny ;next bajt
lda (c_bufpnt),y
and #$0F ;prawy nibble
ora lewy ;sklej
iny
sty cnt2
ldy cnt1 ;licznik dla ekranu
sta (scrpnt),y ;na bufor, tudzież ekran
iny
sty cnt1
cpy #40
bne yeh
Do tego dochodzi oczywiście przeładowanie adresów, które też zabija sporo cykli (nawet jeśli na raz załatwimy więcej niż jedną
linię, jak w przykładzie). Jeśli za pomocą tej procki przerzucam chunk'a bezpośrednio na screen, to niestety widać jak wszystko się
rysuje, a dodatkowego bufora nie chcę angażować. W związku z tym dwa pytania:
1. Jak to zrobić żeby chodziło w jednej ramce (niekoniecznie optymalizując mój kod - może stosując inne techniki?)
2. Czy to ma wogóle sens?
Z góry jak zawsze THC.