From 6f05a9bbd057d0a3d7bfc963e2817117ad5463f5 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 18 Aug 2024 21:06:30 -0700 Subject: [PATCH] basic palette cycling --- mandel.s | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/mandel.s b/mandel.s index 8cbd770..5976b73 100644 --- a/mandel.s +++ b/mandel.s @@ -32,6 +32,7 @@ pixel_mask = $b9 ; u8 pixel_shift = $ba ; u8 pixel_offset = $bb ; u8 fill_level = $bc ; u8 +palette_offset = $bd ; u8 ; FP registers in zero page FR0 = $d4 ; float48 @@ -87,6 +88,12 @@ SYSVBV = $E45F XITVBV = $E462 SETVBV = $E45C +COLOR0 = $2C4 +COLOR1 = $2C5 +COLOR2 = $2C6 +COLOR3 = $2C7 +COLOR4 = $2C8 + ; Keycodes! KEY_PLUS = $06 KEY_MINUS = $0e @@ -205,6 +212,11 @@ color_map: .byte 3 .endrepeat +palette: + .byte $00 + .byte $36 + .byte $88 + .byte $d4 .code z_buffer_len = 16 @@ -809,9 +821,33 @@ done: .proc vblank_handler inc count_frames + inc palette_offset jmp XITVBV .endproc +.proc update_palette + lda palette + sta COLOR4 + + clc + lda palette_offset + and #$f0 + adc palette + 1 + sta COLOR0 + + clc + lda palette_offset + and #$f0 + adc palette + 2 + sta COLOR1 + + clc + lda palette_offset + and #$f0 + adc palette + 3 + sta COLOR2 +.endproc + .proc update_speed ; convert frames (u16) to fp ; add to frames_total @@ -971,6 +1007,11 @@ copy_byte_loop: lda #$22 sta DMACTL + ; Initialize the palette + lda #0 + sta palette_offset + jsr update_palette + ; install the vblank handler lda #7 ; deferred ldx #.hibyte(vblank_handler) @@ -1122,6 +1163,8 @@ update_status: draw_text_indirect speed_start, speed_precision, INBUFF draw_text speed_start + speed_precision, str_speed_len, str_speed + jsr update_palette + skipped: clc