corelib: PUTPIXEL can draw color 0 again

This commit is contained in:
slederer 2026-02-02 00:33:50 +01:00
parent 4ad879ba68
commit 4d103f99ec

View file

@ -754,6 +754,9 @@ PUTPIXEL_4BPP:
STORE.B FB_WA ; set as write and read addresses STORE.B FB_WA ; set as write and read addresses
STORE.B FB_RA STORE.B FB_RA
LOAD PUTPIXEL_COLOR
CBRANCH.Z PUTPX_CLR ; color 0 is special case
; create pixel data from color value in ; create pixel data from color value in
; leftmost pixel data bits (31-28) ; leftmost pixel data bits (31-28)
LOADC 0 LOADC 0
@ -775,12 +778,29 @@ PUTPIXEL_4BPP:
OR ; OR in new pixel bits OR ; OR in new pixel bits
STORE.B FB_IO ; write new pixel data word to vmem STORE.B FB_IO ; write new pixel data word to vmem
PUTPX_XT:
LOAD PUTPIXEL_BPSAV LOAD PUTPIXEL_BPSAV
STOREREG BP STOREREG BP
FPADJ PUTPIXEL_FS FPADJ PUTPIXEL_FS
RET RET
PUTPX_CLR:
LOADCP $F0000000 ; mask for leftmost pixel
STORE.B FB_SHIFTER ; shift accordingly
LOAD PUTPIXEL_X
STORE.B FB_SHIFTCOUNT
LOAD.B FB_SHIFTER ; get shifted value
NOT ; invert for real mask
LOAD.B FB_IO ; get background pixels
AND ; clear pixel with mask
STORE.B FB_IO ; no need to OR in new pixel, just store to vmem
BRANCH PUTPX_XT
; draw a line between two points ; draw a line between two points
; parameters: x0, y0, x1, y1, color ; parameters: x0, y0, x1, y1, color
.EQU DL_X0 0 .EQU DL_X0 0