Programik ma docelowo wyświetlać obrazek HAM6 na AGA z paletą 8-bit, na razie dołączony listing ma wyświetlać 16-kolorowy obrazek na AGA też z paletą 8-bit i już tu mam problem (nie jestem programistą). Gdy wyświetlam obrazek z paletą 4-bit jest ok, ale gdy chcę "polepszyć" paletę to kicha. Co trzeba włączyć? Inaczej jeszcze mówiąc np. kolor $ffffff chcę przełączyć na $0f0f0f.
start bsr initcols
bsr initscreen
move.l #copper,$dff080
.loop btst #6,$bfe001 ;czekanie na lewy przycisk myszy
bne .loop
rts
;wpisuje kolory do copperlisty
initcols lea colors,a0
;gdy palette_hi+4 to mamy obrazek w OCS
lea palette_lo+4,a1
move.l #15,d0 ;16 kolorów
.loop move.w (a0)+,2(a1)
add.l #4,a1
dbf d0,.loop
rts
;wpisuje adresy bitplanów do copperlisty
initscreen lea planes,a0
move.l #screen,d1
move.l #5,d0 ;6 bitplanów (ostatnie 2 puste)
.loop move.w d1,6(a0)
swap d1
move.w d1,2(a0)
swap d1
add.l #40*256,d1
add.l #8,a0
dbf d0,.loop
rts
SECTION dane,DATA_C
copper: dc.l $01fc0000 ;fmode=0
dc.l $008e2c81,$00902cc1 ;okno wyswietlania
dc.l $00920038,$009400d0 ;pobieranie
dc.l $00960020 ;DMA
dc.l $01020000,$01040000 ;kasujemy BPLCON1/2
dc.l $01080000,$010a0000 ;modulo 0
palette_hi:
dc.l $01060000 ;loct=0
dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018a0000,$018c0000,$018e0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019a0000,$019c0000,$019e0000
palette_lo:
dc.l $01060200 ;loct=1
dc.l $01800000,$01820000,$01840000,$01860000
dc.l $01880000,$018a0000,$018c0000,$018e0000
dc.l $01900000,$01920000,$01940000,$01960000
dc.l $01980000,$019a0000,$019c0000,$019e0000
planes:
dc.l $00e00000,$00e20000,$00e40000,$00e60000
dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
dc.l $00f00000,$00f20000,$00f40000,$00f60000
dc.l $01004000 ;BPLCON0
dc.l $fffffffe
;palete w odcieniach szarości
colors: dc.w $000,$111,$222,$333,$444,$555,$666,$777,$888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
;obrazek raw 320x256 (4 bitplany)
screen:
incbin pic.raw
dcb.b $2800,$00 ;(2 kolejne puste bitplany, później dla ham)
dcb.b $2800,$00