Label hw registers
This commit is contained in:
180
audio/engine.asm
180
audio/engine.asm
@@ -16,27 +16,27 @@ SoundRestart: ; e8000
|
||||
push bc
|
||||
push af
|
||||
call MusicOff
|
||||
ld hl, $ff24 ; channel control registers
|
||||
ld hl, rNR50 ; channel control registers
|
||||
xor a
|
||||
ld [hli], a ; ff24 ; volume/vin
|
||||
ld [hli], a ; ff25 ; sfx channels
|
||||
ld [hli], a ; rNR50 ; volume/vin
|
||||
ld [hli], a ; rNR51 ; sfx channels
|
||||
ld a, $80 ; all channels on
|
||||
ld [hli], a ; ff26 ; music channels
|
||||
|
||||
ld hl, $ff10 ; sound channel registers
|
||||
ld hl, rNR10 ; sound channel registers
|
||||
ld e, $04 ; number of channels
|
||||
.clearsound
|
||||
; sound channel 1 2 3 4
|
||||
xor a
|
||||
ld [hli], a ; $ff10, $ff15, $ff1a, $ff1f ; sweep = 0
|
||||
ld [hli], a ; rNR10, $ff15, rNR30, $ff1f ; sweep = 0
|
||||
|
||||
ld [hli], a ; $ff11, $ff16, $ff1b, $ff20 ; length/wavepattern = 0
|
||||
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [hli], a ; $ff12, $ff17, $ff1c, $ff21 ; envelope = 0
|
||||
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
|
||||
xor a
|
||||
ld [hli], a ; $ff13, $ff18, $ff1d, $ff22 ; frequency lo = 0
|
||||
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [hli], a ; $ff14, $ff19, $ff1e, $ff23 ; restart sound (freq hi = 0)
|
||||
ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
|
||||
dec e
|
||||
jr nz, .clearsound
|
||||
|
||||
@@ -208,10 +208,10 @@ UpdateSound: ; e805c
|
||||
call FadeMusic
|
||||
; write volume to hardware register
|
||||
ld a, [Volume]
|
||||
ld [$ff24], a
|
||||
ld [rNR50], a
|
||||
; write SO on/off to hardware register
|
||||
ld a, [SoundOutput]
|
||||
ld [$ff25], a
|
||||
ld [rNR51], a
|
||||
ret
|
||||
; e8125
|
||||
|
||||
@@ -251,7 +251,7 @@ UpdateChannels: ; e8125
|
||||
jr z, .asm_e8159
|
||||
;
|
||||
ld a, [SoundInput]
|
||||
ld [$ff10], a
|
||||
ld [rNR10], a
|
||||
.asm_e8159
|
||||
bit 5, [hl] ; rest
|
||||
jr nz, .ch1rest
|
||||
@@ -264,48 +264,48 @@ UpdateChannels: ; e8125
|
||||
jr .asm_e8175
|
||||
.asm_e816b
|
||||
ld a, [$c294]
|
||||
ld [$ff13], a
|
||||
ld [rNR13], a
|
||||
ld a, [$c295]
|
||||
ld [$ff14], a
|
||||
ld [rNR14], a
|
||||
.asm_e8175
|
||||
bit 0, [hl]
|
||||
ret z
|
||||
ld a, [$c292]
|
||||
ld d, a
|
||||
ld a, [$ff11]
|
||||
ld a, [rNR11]
|
||||
and a, $3f ; sound length
|
||||
or d
|
||||
ld [$ff11], a
|
||||
ld [rNR11], a
|
||||
ret
|
||||
.asm_e8184
|
||||
ld a, [$c292]
|
||||
ld d, a
|
||||
ld a, [$ff11]
|
||||
ld a, [rNR11]
|
||||
and a, $3f ; sound length
|
||||
or d
|
||||
ld [$ff11], a
|
||||
ld [rNR11], a
|
||||
ld a, [$c294]
|
||||
ld [$ff13], a
|
||||
ld [rNR13], a
|
||||
ret
|
||||
.ch1rest
|
||||
ld a, [$ff26]
|
||||
ld a, [rNR52]
|
||||
and a, %10001110 ; ch1 off
|
||||
ld [$ff26], a
|
||||
ld hl, $ff10
|
||||
ld [rNR52], a
|
||||
ld hl, rNR10
|
||||
call ClearChannel
|
||||
ret
|
||||
.asm_e81a2
|
||||
ld hl, $c292
|
||||
ld a, $3f ; sound length
|
||||
or [hl]
|
||||
ld [$ff11], a
|
||||
ld [rNR11], a
|
||||
ld a, [$c293]
|
||||
ld [$ff12], a
|
||||
ld [rNR12], a
|
||||
ld a, [$c294]
|
||||
ld [$ff13], a
|
||||
ld [rNR13], a
|
||||
ld a, [$c295]
|
||||
or a, $80
|
||||
ld [$ff14], a
|
||||
ld [rNR14], a
|
||||
ret
|
||||
|
||||
.Channel2
|
||||
@@ -322,31 +322,31 @@ UpdateChannels: ; e8125
|
||||
ret z
|
||||
ld a, [$c292]
|
||||
ld d, a
|
||||
ld a, [$ff16]
|
||||
ld a, [rNR21]
|
||||
and a, $3f ; sound length
|
||||
or d
|
||||
ld [$ff16], a
|
||||
ld [rNR21], a
|
||||
ret
|
||||
.asm_e81db ; unused
|
||||
ld a, [$c294]
|
||||
ld [$ff18], a
|
||||
ld [rNR23], a
|
||||
ld a, [$c295]
|
||||
ld [$ff19], a
|
||||
ld [rNR24], a
|
||||
ret
|
||||
.asm_e81e6
|
||||
ld a, [$c292]
|
||||
ld d, a
|
||||
ld a, [$ff16]
|
||||
ld a, [rNR21]
|
||||
and a, $3f ; sound length
|
||||
or d
|
||||
ld [$ff16], a
|
||||
ld [rNR21], a
|
||||
ld a, [$c294]
|
||||
ld [$ff18], a
|
||||
ld [rNR23], a
|
||||
ret
|
||||
.ch2rest
|
||||
ld a, [$ff26]
|
||||
ld a, [rNR52]
|
||||
and a, %10001101 ; ch2 off
|
||||
ld [$ff26], a
|
||||
ld [rNR52], a
|
||||
ld hl, $ff15
|
||||
call ClearChannel
|
||||
ret
|
||||
@@ -354,14 +354,14 @@ UpdateChannels: ; e8125
|
||||
ld hl, $c292
|
||||
ld a, $3f ; sound length
|
||||
or [hl]
|
||||
ld [$ff16], a
|
||||
ld [rNR21], a
|
||||
ld a, [$c293]
|
||||
ld [$ff17], a
|
||||
ld [rNR22], a
|
||||
ld a, [$c294]
|
||||
ld [$ff18], a
|
||||
ld [rNR23], a
|
||||
ld a, [$c295]
|
||||
or a, $80 ; initial (restart)
|
||||
ld [$ff19], a
|
||||
ld [rNR24], a
|
||||
ret
|
||||
|
||||
.Channel3
|
||||
@@ -377,34 +377,34 @@ UpdateChannels: ; e8125
|
||||
ret
|
||||
.asm_e822f ; unused
|
||||
ld a, [$c294]
|
||||
ld [$ff1d], a
|
||||
ld [rNR33], a
|
||||
ld a, [$c295]
|
||||
ld [$ff1e], a
|
||||
ld [rNR34], a
|
||||
ret
|
||||
.asm_e823a
|
||||
ld a, [$c294]
|
||||
ld [$ff1d], a
|
||||
ld [rNR33], a
|
||||
ret
|
||||
.ch3rest
|
||||
ld a, [$ff26]
|
||||
ld a, [rNR52]
|
||||
and a, %10001011 ; ch3 off
|
||||
ld [$ff26], a
|
||||
ld hl, $ff1a
|
||||
ld [rNR52], a
|
||||
ld hl, rNR30
|
||||
call ClearChannel
|
||||
ret
|
||||
.asm_e824d
|
||||
ld a, $3f
|
||||
ld [$ff1b], a
|
||||
ld [rNR31], a
|
||||
xor a
|
||||
ld [$ff1a], a
|
||||
ld [rNR30], a
|
||||
call .asm_e8268
|
||||
ld a, $80
|
||||
ld [$ff1a], a
|
||||
ld [rNR30], a
|
||||
ld a, [$c294]
|
||||
ld [$ff1d], a
|
||||
ld [rNR33], a
|
||||
ld a, [$c295]
|
||||
or a, $80
|
||||
ld [$ff1e], a
|
||||
ld [rNR34], a
|
||||
ret
|
||||
.asm_e8268
|
||||
push hl
|
||||
@@ -458,7 +458,7 @@ UpdateChannels: ; e8125
|
||||
ld a, [$c293]
|
||||
and a, $f0
|
||||
sla a
|
||||
ld [$ff1c], a
|
||||
ld [rNR32], a
|
||||
ret
|
||||
|
||||
.Channel4
|
||||
@@ -472,24 +472,24 @@ UpdateChannels: ; e8125
|
||||
ret
|
||||
.asm_e82c1 ; unused
|
||||
ld a, [$c294]
|
||||
ld [$ff22], a
|
||||
ld [rNR43], a
|
||||
ret
|
||||
.ch4rest
|
||||
ld a, [$ff26]
|
||||
ld a, [rNR52]
|
||||
and a, %10000111 ; ch4 off
|
||||
ld [$ff26], a
|
||||
ld [rNR52], a
|
||||
ld hl, $ff1f
|
||||
call ClearChannel
|
||||
ret
|
||||
.asm_e82d4
|
||||
ld a, $3f ; sound length
|
||||
ld [$ff20], a
|
||||
ld [rNR41], a
|
||||
ld a, [$c293]
|
||||
ld [$ff21], a
|
||||
ld [rNR42], a
|
||||
ld a, [$c294]
|
||||
ld [$ff22], a
|
||||
ld [rNR43], a
|
||||
ld a, $80
|
||||
ld [$ff23], a
|
||||
ld [rNR44], a
|
||||
ret
|
||||
; e82e7
|
||||
|
||||
@@ -535,15 +535,15 @@ Functione8307: ; e8307
|
||||
ld hl, Tablee8350
|
||||
.updatehw
|
||||
xor a
|
||||
ld [$ff10], a ; sweep off
|
||||
ld [rNR10], a ; sweep off
|
||||
ld a, [hli]
|
||||
ld [$ff11], a ; sound length / duty cycle
|
||||
ld [rNR11], a ; sound length / duty cycle
|
||||
ld a, [hli]
|
||||
ld [$ff12], a ; ch1 volume envelope
|
||||
ld [rNR12], a ; ch1 volume envelope
|
||||
ld a, [hli]
|
||||
ld [$ff13], a ; ch1 frequency lo
|
||||
ld [rNR13], a ; ch1 frequency lo
|
||||
ld a, [hli]
|
||||
ld [$ff14], a ; ch1 frequency hi
|
||||
ld [rNR14], a ; ch1 frequency hi
|
||||
.asm_e8335
|
||||
ld a, d
|
||||
inc a
|
||||
@@ -1192,7 +1192,7 @@ ParseMusic: ; e85e1
|
||||
jr nz, .ok
|
||||
; ????
|
||||
xor a
|
||||
ld [$ff10], a ; sweep = 0
|
||||
ld [rNR10], a ; sweep = 0
|
||||
.ok
|
||||
; stop playing
|
||||
; turn channel off
|
||||
@@ -2454,56 +2454,56 @@ LoadSFX: ; e8c04
|
||||
jr z, .ch6
|
||||
res 0, [hl] ; turn it off
|
||||
xor a
|
||||
ld [$ff11], a ; length/wavepattern = 0
|
||||
ld [rNR11], a ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [$ff12], a ; envelope = 0
|
||||
ld [rNR12], a ; envelope = 0
|
||||
xor a
|
||||
ld [$ff13], a ; frequency lo = 0
|
||||
ld [rNR13], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [$ff14], a ; restart sound (freq hi = 0)
|
||||
ld [rNR14], a ; restart sound (freq hi = 0)
|
||||
xor a
|
||||
ld [SoundInput], a ; global sound off
|
||||
ld [$ff10], a ; sweep = 0
|
||||
ld [rNR10], a ; sweep = 0
|
||||
.ch6
|
||||
ld hl, $c1fe ; ch6 on?
|
||||
bit 0, [hl]
|
||||
jr z, .ch7
|
||||
res 0, [hl] ; turn it off
|
||||
xor a
|
||||
ld [$ff16], a ; length/wavepattern = 0
|
||||
ld [rNR21], a ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [$ff17], a ; envelope = 0
|
||||
ld [rNR22], a ; envelope = 0
|
||||
xor a
|
||||
ld [$ff18], a ; frequency lo = 0
|
||||
ld [rNR23], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [$ff19], a ; restart sound (freq hi = 0)
|
||||
ld [rNR24], a ; restart sound (freq hi = 0)
|
||||
.ch7
|
||||
ld hl, $c230 ; ch7 on?
|
||||
bit 0, [hl]
|
||||
jr z, .ch8
|
||||
res 0, [hl] ; turn it off
|
||||
xor a
|
||||
ld [$ff1a], a ; sound mode #3 off
|
||||
ld [$ff1b], a ; length/wavepattern = 0
|
||||
ld [rNR30], a ; sound mode #3 off
|
||||
ld [rNR31], a ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [$ff1c], a ; envelope = 0
|
||||
ld [rNR32], a ; envelope = 0
|
||||
xor a
|
||||
ld [$ff1d], a ; frequency lo = 0
|
||||
ld [rNR33], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [$ff1e], a ; restart sound (freq hi = 0)
|
||||
ld [rNR34], a ; restart sound (freq hi = 0)
|
||||
.ch8
|
||||
ld hl, $c262 ; ch8 on?
|
||||
bit 0, [hl]
|
||||
jr z, .chscleared
|
||||
res 0, [hl] ; turn it off
|
||||
xor a
|
||||
ld [$ff20], a ; length/wavepattern = 0
|
||||
ld [rNR41], a ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [$ff21], a ; envelope = 0
|
||||
ld [rNR42], a ; envelope = 0
|
||||
xor a
|
||||
ld [$ff22], a ; frequency lo = 0
|
||||
ld [rNR43], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [$ff23], a ; restart sound (freq hi = 0)
|
||||
ld [rNR44], a ; restart sound (freq hi = 0)
|
||||
xor a
|
||||
ld [NoiseSampleAddressLo], a
|
||||
ld [NoiseSampleAddressHi], a
|
||||
@@ -3126,13 +3126,13 @@ ChannelPointers: ; e8fd9
|
||||
ClearChannels: ; e8fe9
|
||||
; runs ClearChannel for all 4 channels
|
||||
; doesn't seem to be used, but functionally identical to SoundRestart
|
||||
ld hl, $ff24
|
||||
ld hl, rNR50
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld a, $80
|
||||
ld [hli], a
|
||||
ld hl, $ff10
|
||||
ld hl, rNR10
|
||||
ld e, $04
|
||||
.loop
|
||||
call ClearChannel
|
||||
@@ -3142,19 +3142,19 @@ ClearChannels: ; e8fe9
|
||||
; e8ffe
|
||||
|
||||
ClearChannel: ; e8ffe
|
||||
; input: hl = beginning hw sound register ($ff10, $ff15, $ff1a, $ff1f)
|
||||
; input: hl = beginning hw sound register (rNR10, $ff15, rNR30, $ff1f)
|
||||
; output: 00 00 80 00 80
|
||||
|
||||
; sound channel 1 2 3 4
|
||||
xor a
|
||||
ld [hli], a ; $ff10, $ff15, $ff1a, $ff1f ; sweep = 0
|
||||
ld [hli], a ; rNR10, $ff15, rNR30, $ff1f ; sweep = 0
|
||||
|
||||
ld [hli], a ; $ff11, $ff16, $ff1b, $ff20 ; length/wavepattern = 0
|
||||
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
|
||||
ld a, $08
|
||||
ld [hli], a ; $ff12, $ff17, $ff1c, $ff21 ; envelope = 0
|
||||
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
|
||||
xor a
|
||||
ld [hli], a ; $ff13, $ff18, $ff1d, $ff22 ; frequency lo = 0
|
||||
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
|
||||
ld a, $80
|
||||
ld [hli], a ; $ff14, $ff19, $ff1e, $ff23 ; restart sound (freq hi = 0)
|
||||
ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
|
||||
ret
|
||||
; e900a
|
||||
|
Reference in New Issue
Block a user