mode7: rasterbars, all colors

This commit is contained in:
Vince Weaver 2018-01-22 23:41:43 -05:00
parent d8de617a06
commit a8422779fa

View File

@ -50,13 +50,43 @@ init_rows:
lda #COLOR_BOTH_AQUA ; aqua lda #COLOR_BOTH_AQUA ; aqua
sta COLOR sta COLOR
ldy SCREEN_Y ldy SCREEN_Y
jsr set_row_color jsr set_row_color
; lda #6 ; medium blue lda #COLOR_BOTH_MEDIUMBLUE ; medium blue
; iny sta COLOR
; jsr set_row_color iny
jsr set_row_color
lda #COLOR_BOTH_LIGHTGREEN ; light green
sta COLOR
iny
jsr set_row_color
lda #COLOR_BOTH_DARKGREEN ; green
sta COLOR
iny
jsr set_row_color
lda #COLOR_BOTH_YELLOW ; yellow
sta COLOR
iny
jsr set_row_color
lda #COLOR_BOTH_ORANGE ; orange
sta COLOR
iny
jsr set_row_color
lda #COLOR_BOTH_PINK ; pink
sta COLOR
iny
jsr set_row_color
lda #COLOR_BOTH_RED ; red
sta COLOR
iny
jsr set_row_color
;================= ;=================
; draw rows ; draw rows
@ -119,16 +149,16 @@ not_there:
; Y preserved? ; Y preserved?
set_row_color: set_row_color:
tya tya ; wrap y offset
and #(ELEMENTS-1) and #(ELEMENTS-1)
tax tax
lda fine_sine,X lda fine_sine,X ; lookup sign value
cpx #33 cpx #33 ; check if > pi and
bpl sin_negative bpl sin_negative ; need to make negative
sin_positive: sin_positive:
clc clc ; shift right by 4, zero-extend
ror ror
clc clc
ror ror
@ -137,12 +167,8 @@ sin_positive:
clc clc
ror ror
clc clc
adc #18 adc #18 ; add in 18 to center on screen
lsr lsr ; shift once more
tax
lda COLOR
sta row_color,X
jmp sin_no_more jmp sin_no_more
@ -162,12 +188,33 @@ sin_negative:
adc #18 adc #18
lsr lsr
tax
lda COLOR
sta row_color,X
sin_no_more: sin_no_more:
tax
and #$1 ; see if even or odd
beq even_line
lda COLOR
and #$f0
sta COLOR
lda row_color,X
and #$0f
jmp done_line
even_line:
lda COLOR
and #$0f
sta COLOR
lda row_color,X
and #$f0
done_line:
ora COLOR
sta row_color,X
rts rts
;=============================================== ;===============================================