GSCats/graphics.s

95 lines
1.2 KiB
ArmAsm

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; colorFill
; Fills the screen with a color (or two). Not very fast.
; A 4:4:4:4 = Palette entries
colorFill:
phx
ldx #32000
colorFillLoop:
sta $e11ffe,x
dex
dex
bne colorFillLoop
plx
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; initSCBs
; Initialize all scanline control bytes
;
; Trashes A,X
initSCBs:
lda #0
ldx #$0100 ;set all $100 scbs to A
initSCBsLoop:
dex
dex
sta $e19cfe,x
bne initSCBsLoop
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; setPaletteColor
; Set a single color in a palette
; PARAML0 = 0:Color index
; PARAML1 = 0:R:G:B
; A = Palette index
;
; Trashes X
setPaletteColor:
asl
asl
asl
asl
asl
sta SCRATCHL
lda PARAML0
asl
clc
adc SCRATCHL
tax
lda PARAML1
sta $e19e00,x
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; setPalette
; Set a single color in a palette
; PARAML0 = Pointer to 32 color bytes
; A = Palette index
;
setPalette:
SAVE_XY
asl
asl
asl
asl
asl
tax
ldy #0
setPaletteLoop:
lda (PARAML0),y
sta $e19e00,x
iny
iny
inx
inx
cmp #16
bne setPaletteLoop
RESTORE_XY
rts