GSCats/graphics.s

119 lines
1.9 KiB
ArmAsm
Raw Normal View History

2017-07-29 21:47:17 +00:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2017-07-28 22:11:25 +00:00
; colorFill
2017-07-29 21:47:17 +00:00
; Fills the screen with a color (or two). Pretty fast, but not fastest possible
2017-07-28 22:11:25 +00:00
; A 4:4:4:4 = Palette entries
; X = Color to fill (doubled)
2017-07-29 21:47:17 +00:00
;
; Trashes Y
2017-07-28 22:11:25 +00:00
colorFill:
2017-07-29 21:47:17 +00:00
FASTGRAPHICS
lda #$9d00-1 ; Point stack to end of VRAM
tcs
ldy #200
2017-07-28 22:11:25 +00:00
colorFillLoop:
2017-07-29 21:47:17 +00:00
; 80 PHXs, for 1 line
; We could do the entire screen with PHXs, but this is a
; balance between speed and super-verbose code
.byte $da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da
.byte $da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da
.byte $da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da
.byte $da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da,$da
dey
2017-07-28 22:11:25 +00:00
bne colorFillLoop
2017-07-29 21:47:17 +00:00
SLOWGRAPHICS
2017-07-28 22:11:25 +00:00
rts
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; initSCBs
; Initialize all scanline control bytes
;
; Trashes A,X
initSCBs:
lda #0
ldx #$0100 ;set all $100 scbs to A
initSCBsLoop:
dex
dex
2017-07-29 21:47:17 +00:00
sta $e19d00,x
2017-07-28 22:11:25 +00:00
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
2017-07-29 21:47:17 +00:00
cpx #32
2017-07-28 22:11:25 +00:00
bne setPaletteLoop
RESTORE_XY
rts
2017-07-29 21:47:17 +00:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; caches
shadowRegister:
.byte 0
stackRegister:
.byte 0
stackPtr:
.word 0