dither audio
This commit is contained in:
parent
34df2b8fce
commit
ad42390cdd
2 changed files with 36 additions and 20 deletions
25
dither4.s
25
dither4.s
|
|
@ -129,17 +129,9 @@ wait_loop:
|
|||
ldy VCOUNT ; 4 cycles
|
||||
bne wait_loop ; 2 cycles
|
||||
|
||||
.macro audio_prep
|
||||
; Y is VCOUNT at entry
|
||||
lda (sample_ptr),y ; 5/6 cyc
|
||||
sta audiotemp ; 3 cyc
|
||||
.endmacro
|
||||
|
||||
.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
|
||||
|
||||
; 23-26 cycles before break
|
||||
; Leisurely memory fetches
|
||||
|
|
@ -149,6 +141,7 @@ wait_loop:
|
|||
lda frame1_palette3_even + frame_offset + line_offset - scanline_offset / 2,y ; 4/5
|
||||
tay ; 2
|
||||
pla ; 3
|
||||
|
||||
; Wait for horizontal blank
|
||||
sta WSYNC ; 4
|
||||
|
||||
|
|
@ -165,13 +158,21 @@ wait_loop:
|
|||
sta AUDC1 ; 4 cyc
|
||||
.endmacro
|
||||
|
||||
.macro audio_prep
|
||||
; Y is VCOUNT at entry
|
||||
lda (sample_ptr),y ; 5/6 cyc
|
||||
sta audiotemp ; 3 cyc
|
||||
.endmacro
|
||||
|
||||
; call with A pre-loaded to audiotemp
|
||||
.macro audio_play_lo
|
||||
lda audiotemp ; 3 cyc
|
||||
;lda audiotemp ; 3 cyc
|
||||
and #$0f ; 2 cyc
|
||||
ora #$10 ; 2 cyc
|
||||
sta AUDC1 ; 4 cyc
|
||||
.endmacro
|
||||
|
||||
; clobbers Y
|
||||
.macro audio_play_hi ; 12 cycles
|
||||
ldy audiotemp ; 3 cyc
|
||||
lda audio_high_byte,y ; 5 cyc
|
||||
|
|
@ -212,11 +213,13 @@ wait_loop:
|
|||
|
||||
each_scanline_pair:
|
||||
sty scanline ; 3 cycles
|
||||
audio_prep
|
||||
audio_play_lo
|
||||
inner_scanline frame_offset, 0 ; 23-26 cycles before break, 12 cycles after
|
||||
|
||||
ldy scanline ; 3 cycles
|
||||
audio_play_raw ; 8-10 cycles
|
||||
audio_play_hi
|
||||
|
||||
ldy scanline ; 3 cycles
|
||||
inner_scanline frame_offset, 128 ; 23-26 cycles before break, 12 cycles after
|
||||
|
||||
; pair cleanup: 6 cycles
|
||||
|
|
|
|||
Loading…
Reference in a new issue