WIP refactoring

This commit is contained in:
Brooke Vibber 2022-12-10 13:01:29 -08:00
commit 53026bbfdd
2 changed files with 91 additions and 43 deletions

View file

@ -34,7 +34,7 @@ bytes_per_line = 40
pages_per_frame = 32
lines_per_frame = 262
;scanline_offset = 31 + (40 - 24) / 2
scanline_offset = 48
scanline_offset = 40
scanline_max = (lines_per_frame - scanline_offset) / 2
.data
@ -44,14 +44,20 @@ scanline_max = (lines_per_frame - scanline_offset) / 2
.import frame1_top
.import frame1_bottom
.import frame1_palette1
.import frame1_palette2
.import frame1_palette3
.import frame1_palette1_even
.import frame1_palette1_odd
.import frame1_palette2_even
.import frame1_palette2_odd
.import frame1_palette3_even
.import frame1_palette3_odd
.import frame2_top
.import frame2_bottom
.import frame2_palette1
.import frame2_palette2
.import frame2_palette3
.import frame2_palette1_even
.import frame2_palette1_odd
.import frame2_palette2_even
.import frame2_palette2_odd
.import frame2_palette3_even
.import frame2_palette3_odd
.import displaylist
audio_high_byte:
@ -136,16 +142,17 @@ wait_loop:
sta audiotemp ; 3 cyc
.endmacro
.macro inner_scanline palette1, palette2, palette3
.macro inner_scanline frame_offset, line_offset
; Y should be VCOUNT at entry
; it'll fire on unused lines, but harmlessly
ldy scanline ; 3 cyc
inc scanline ; 5 cyc
;ldy scanline ; 3 cyc
;inc scanline ; 5 cyc
; Leisurely memory fetches
lda palette1,y ; 5 @FIXME alternate
lda frame1_palette1_even + frame_offset + line_offset - scanline_offset / 2,y ; 5 @FIXME alternate
pha ; ...3?
ldx palette2,y ; 5
lda palette3,y ; 5
ldx frame1_palette2_even + frame_offset + line_offset - scanline_offset / 2,y ; 5
lda frame1_palette3_even + frame_offset + line_offset - scanline_offset / 2,y ; 5
tay
pla
@ -159,7 +166,7 @@ wait_loop:
.endmacro
.macro audio_play_raw
ldy VCOUNT
;ldy VCOUNT ; set on entry
lda (sample_ptr),y ; 5/6 cyc
sta AUDC1 ; 4 cyc
.endmacro
@ -202,14 +209,17 @@ wait_loop:
audio_cont:
.endmacro
.macro run_frame palette1, palette2, palette3
.macro run_frame frame_offset
.scope
each_scanline_pair:
;audio_prep
inner_scanline palette1, palette2, palette3
sty scanline
inner_scanline frame_offset, 0
ldy scanline
audio_play_raw
;audio_play_lo
inner_scanline palette1, palette2, palette3
inner_scanline frame_offset, 128
;audio_play_raw
;audio_play_hi ; too slow
@ -232,9 +242,9 @@ wait_loop:
beq run_frame1
jmp run_frame2
run_frame1:
run_frame frame1_palette1, frame1_palette2, frame1_palette3
run_frame 0
run_frame2:
run_frame frame2_palette1, frame2_palette2, frame2_palette3
run_frame 8192
.endproc