mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-06-15 01:29:35 +00:00
Fix bnk bug in APU STATUS register
This commit is contained in:
parent
13cc1a807e
commit
29e2cfd007
|
@ -232,22 +232,40 @@ triangle_wave
|
||||||
hex 60626466686a6c6e70727476787a7c7e
|
hex 60626466686a6c6e70727476787a7c7e
|
||||||
|
|
||||||
noise_wave
|
noise_wave
|
||||||
hex 8f968f763e6fd49ab1e564e295a9bcc9
|
; hex 8f968f763e6fd49ab1e564e295a9bcc9
|
||||||
hex 717b6629e6970b865dc0e0d840d32a96
|
; hex 717b6629e6970b865dc0e0d840d32a96
|
||||||
hex 3bd4c5d407b78923d8c9766bea128e8a
|
; hex 3bd4c5d407b78923d8c9766bea128e8a
|
||||||
hex c9ee5ddbed3119ff14b4d9a44bfbb7c4
|
; hex c9ee5ddbed3119ff14b4d9a44bfbb7c4
|
||||||
hex 7a56e26e8aac9ebf1653c0260446231b
|
; hex 7a56e26e8aac9ebf1653c0260446231b
|
||||||
hex 73431495fc585e943edacf8f5bb970e6
|
; hex 73431495fc585e943edacf8f5bb970e6
|
||||||
hex 118dc361bee99c98f32d25f06a33715a
|
; hex 118dc361bee99c98f32d25f06a33715a
|
||||||
hex 585344f7f3e2f3c36c37cfd78e40147f
|
; hex 585344f7f3e2f3c36c37cfd78e40147f
|
||||||
hex a4b20624ac633b42b3aac5407fac4ba9
|
; hex a4b20624ac633b42b3aac5407fac4ba9
|
||||||
hex a4d71a1d020a7757ea244b103f0b7a76
|
; hex a4d71a1d020a7757ea244b103f0b7a76
|
||||||
hex 9b533a60cda31e0fa2ce3491b55c4f26
|
; hex 9b533a60cda31e0fa2ce3491b55c4f26
|
||||||
hex ea47a61f661deec128129372c3471a9b
|
; hex ea47a61f661deec128129372c3471a9b
|
||||||
hex f85c3c077168d413184a139440460950
|
; hex f85c3c077168d413184a139440460950
|
||||||
hex dee3f9bdb65e162b08ed9231a72fb943
|
; hex dee3f9bdb65e162b08ed9231a72fb943
|
||||||
hex 1ba599be80dc2812afa63cc2317cdb1a
|
; hex 1ba599be80dc2812afa63cc2317cdb1a
|
||||||
hex 8d99d56327bc50dc975bee94754f561b
|
; hex 8d99d56327bc50dc975bee94754f561b
|
||||||
|
|
||||||
|
hex 01ffffff0101ffffff01ffff01ff0101
|
||||||
|
hex ffffffffffff0101ff0101ff01ffff01
|
||||||
|
hex 01ff0101ffff01ffff0101ff01ff01ff
|
||||||
|
hex ffffffff0101010101ffff0101ff0101
|
||||||
|
hex ffffff0101ff01ff010101ff01010101
|
||||||
|
hex 0101ffffff01ffff01ff01ffff01ffff
|
||||||
|
hex ff01ffff0101ffff01ffffffffff01ff
|
||||||
|
hex ffffffffffff010101ffff01ff01ffff
|
||||||
|
hex 01ffffffff0101ffffffff0101ffff01
|
||||||
|
hex ff01ff01ff01ffff0101ff01ffffffff
|
||||||
|
hex ffff010101ffffffff01010101ff0101
|
||||||
|
hex ffffffffffffff01ff0101ffffff0101
|
||||||
|
hex 01ff010101ff01ffffffffff01ffffff
|
||||||
|
hex 01ffffffff010101ff01ffff01ff01ff
|
||||||
|
hex ffffffff0101ff010101ff01ffffff01
|
||||||
|
hex 0101010101ffff01ffff01010101ffff
|
||||||
|
|
||||||
;--------------------------
|
;--------------------------
|
||||||
|
|
||||||
setup_doc_registers
|
setup_doc_registers
|
||||||
|
@ -512,10 +530,13 @@ TRIANGLE_HALT_FLAG equ $80
|
||||||
mx %11
|
mx %11
|
||||||
interrupt_handler = *
|
interrupt_handler = *
|
||||||
|
|
||||||
|
ldal show_border
|
||||||
|
beq :no_show
|
||||||
ldal $E0C034 ; save the border color
|
ldal $E0C034 ; save the border color
|
||||||
stal border_color
|
stal border_color
|
||||||
lda #1
|
lda #1
|
||||||
jsr setborder
|
jsr setborder
|
||||||
|
:no_show
|
||||||
|
|
||||||
phb
|
phb
|
||||||
phd
|
phd
|
||||||
|
@ -723,6 +744,13 @@ interrupt_handler = *
|
||||||
beq :freq_end_noise
|
beq :freq_end_noise
|
||||||
sta _apu_noise_last_period
|
sta _apu_noise_last_period
|
||||||
jsr get_pulse_freq ; return freq in 16-bic accumulator
|
jsr get_pulse_freq ; return freq in 16-bic accumulator
|
||||||
|
|
||||||
|
; Hack??
|
||||||
|
; lsr
|
||||||
|
; lsr
|
||||||
|
; lsr
|
||||||
|
; lsr ; LSFR produces 32768 values 1-bit at a time. We have byte samples
|
||||||
|
; so 32768 / 8 = 4096 / 256 byte = division factor of 16
|
||||||
sep #$30
|
sep #$30
|
||||||
ldx #$00+noise_oscillator
|
ldx #$00+noise_oscillator
|
||||||
stx sound_address
|
stx sound_address
|
||||||
|
@ -748,8 +776,11 @@ interrupt_handler = *
|
||||||
:set_volume_noise jsr set_pulse_volume
|
:set_volume_noise jsr set_pulse_volume
|
||||||
|
|
||||||
:not_timer
|
:not_timer
|
||||||
lda #0
|
ldal show_border
|
||||||
|
beq :no_show2
|
||||||
|
ldal border_color
|
||||||
jsr setborder
|
jsr setborder
|
||||||
|
:no_show2
|
||||||
|
|
||||||
pld
|
pld
|
||||||
plb
|
plb
|
||||||
|
@ -838,6 +869,7 @@ turn_off_interrupts
|
||||||
apu_frame_counter dw 0 ; frame counter, clocked at 240Hz from the interrupt handler
|
apu_frame_counter dw 0 ; frame counter, clocked at 240Hz from the interrupt handler
|
||||||
|
|
||||||
duty_cycle_page dfb $01,$02,$03,$04 ; Page of DOC RAM that holds the different duty cycle wavforms
|
duty_cycle_page dfb $01,$02,$03,$04 ; Page of DOC RAM that holds the different duty cycle wavforms
|
||||||
|
show_border dw 0
|
||||||
border_color dw 0
|
border_color dw 0
|
||||||
dividend dw 0 ; Used when converting from NES APU values to DOC values
|
dividend dw 0 ; Used when converting from NES APU values to DOC values
|
||||||
divisor dw 0
|
divisor dw 0
|
||||||
|
@ -1126,8 +1158,11 @@ NoisePeriodTable dw 4, 8, 16, 32, 64, 96, 128, 160, 202, 254, 380, 508, 762, 101
|
||||||
|
|
||||||
|
|
||||||
APU_STATUS_WRITE ENT
|
APU_STATUS_WRITE ENT
|
||||||
stal APU_STATUS
|
phb
|
||||||
|
phk
|
||||||
|
plb
|
||||||
pha
|
pha
|
||||||
|
sta APU_STATUS
|
||||||
|
|
||||||
; From NESDev Wiki: When the enabled bit is cleared (via $4015), the length counter is forced to 0
|
; From NESDev Wiki: When the enabled bit is cleared (via $4015), the length counter is forced to 0
|
||||||
; and cannot be changed until enabled is set again (the length counter's previous value is lost).
|
; and cannot be changed until enabled is set again (the length counter's previous value is lost).
|
||||||
|
@ -1158,4 +1193,5 @@ APU_STATUS_WRITE ENT
|
||||||
:noise_on
|
:noise_on
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
plb
|
||||||
rtl
|
rtl
|
||||||
|
|
Loading…
Reference in New Issue
Block a user