summaryrefslogtreecommitdiff
path: root/audio/engine.asm
diff options
context:
space:
mode:
Diffstat (limited to 'audio/engine.asm')
-rw-r--r--audio/engine.asm337
1 files changed, 164 insertions, 173 deletions
diff --git a/audio/engine.asm b/audio/engine.asm
index c8e976cc4..2cc921bd0 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -111,7 +111,7 @@ _UpdateSound:: ; e805c
cp $2 ; 1 or 0?
jr c, .noteover
dec [hl]
- jr .asm_e8093
+ jr .continue_sound_update
.noteover
; reset vibrato delay
@@ -124,12 +124,11 @@ _UpdateSound:: ; e805c
; turn vibrato off for now
ld hl, Channel1Flags2 - Channel1
add hl, bc
- res SOUND_UNKN_09, [hl]
+ res SOUND_PITCH_WHEEL, [hl]
; get next note
call ParseMusic
-.asm_e8093
- ;
- call Functione84f9
+.continue_sound_update
+ call ApplyPitchWheel
; duty cycle
ld hl, Channel1DutyCycle - Channel1
add hl, bc
@@ -143,8 +142,8 @@ _UpdateSound:: ; e805c
ld [wCurTrackFrequency], a
ld a, [hl]
ld [wCurTrackFrequency + 1], a
- ;
- call Functione8466 ; handle vibrato and other things
+ ; vibrato, noise
+ call HandleTrackVibrato ; handle vibrato and other things
call HandleNoise
; turn off music when playing sfx?
ld a, [SFXPriority]
@@ -176,19 +175,19 @@ _UpdateSound:: ; e805c
; are we in a sfx channel right now?
ld a, [CurChannel]
cp $4 ; sfx
- jr nc, .asm_e80ee
+ jr nc, .sfx_channel
ld hl, Channel5Flags - Channel1
add hl, bc
bit SOUND_CHANNEL_ON, [hl]
- jr nz, .asm_e80fc
-.asm_e80ee
+ jr nz, .sound_channel_on
+.sfx_channel
call UpdateChannels
ld hl, Channel1Tracks - Channel1
add hl, bc
ld a, [SoundOutput]
or [hl]
ld [SoundOutput], a
-.asm_e80fc
+.sound_channel_on
; clear note flags
ld hl, Channel1NoteFlags - Channel1
add hl, bc
@@ -232,7 +231,6 @@ UpdateChannels: ; e8125
ld l, a
jp [hl]
-
.ChannelFnPtrs:
dw .Channel1
dw .Channel2
@@ -260,21 +258,21 @@ UpdateChannels: ; e8125
.asm_e8159
bit NOTE_REST, [hl] ; rest
jr nz, .ch1rest
- bit NOTE_UNKN_4, [hl]
+ bit NOTE_NOISE_SAMPLING, [hl]
jr nz, .asm_e81a2
- bit NOTE_UNKN_1, [hl]
- jr nz, .asm_e816b
- bit NOTE_UNKN_6, [hl]
+ bit NOTE_FREQ_OVERRIDE, [hl]
+ jr nz, .frequency_override
+ bit NOTE_VIBRATO_OVERRIDE, [hl]
jr nz, .asm_e8184
- jr .asm_e8175
+ jr .check_duty_override
-.asm_e816b
+.frequency_override
ld a, [wCurTrackFrequency]
ld [rNR13], a
ld a, [wCurTrackFrequency + 1]
ld [rNR14], a
-.asm_e8175
- bit NOTE_UNKN_0, [hl]
+.check_duty_override
+ bit NOTE_DUTY_OVERRIDE, [hl]
ret z
ld a, [wCurTrackDuty]
ld d, a
@@ -323,11 +321,11 @@ UpdateChannels: ; e8125
add hl, bc
bit NOTE_REST, [hl] ; rest
jr nz, .ch2rest
- bit NOTE_UNKN_4, [hl]
+ bit NOTE_NOISE_SAMPLING, [hl]
jr nz, .asm_e8204
- bit NOTE_UNKN_6, [hl]
+ bit NOTE_VIBRATO_OVERRIDE, [hl]
jr nz, .asm_e81e6
- bit NOTE_UNKN_0, [hl]
+ bit NOTE_DUTY_OVERRIDE, [hl]
ret z
ld a, [wCurTrackDuty]
ld d, a
@@ -383,9 +381,9 @@ UpdateChannels: ; e8125
add hl, bc
bit NOTE_REST, [hl] ; rest
jr nz, .ch3rest
- bit NOTE_UNKN_4, [hl]
+ bit NOTE_NOISE_SAMPLING, [hl]
jr nz, .asm_e824d
- bit NOTE_UNKN_6, [hl]
+ bit NOTE_VIBRATO_OVERRIDE, [hl]
jr nz, .asm_e823a
ret
@@ -484,7 +482,7 @@ endr
add hl, bc
bit NOTE_REST, [hl] ; rest
jr nz, .ch4rest
- bit NOTE_UNKN_4, [hl]
+ bit NOTE_NOISE_SAMPLING, [hl]
jr nz, .asm_e82d4
ret
@@ -644,7 +642,6 @@ FadeMusic: ; e8358
dec a
jr .updatevolume
-
.novolume
; make sure volume is off
xor a
@@ -719,16 +716,16 @@ FadeMusic: ; e8358
; e83d1
LoadNote: ; e83d1
- ; check mute??
+ ; wait for pitch wheel to finish
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit SOUND_UNKN_09, [hl]
+ bit SOUND_PITCH_WHEEL, [hl]
ret z
; get note duration
ld hl, Channel1NoteDuration - Channel1
add hl, bc
ld a, [hl]
- ld hl, wc297 ; ????
+ ld hl, wCurNoteDuration
sub [hl]
jr nc, .ok
ld a, 1
@@ -740,8 +737,8 @@ LoadNote: ; e83d1
ld e, [hl]
inc hl
ld d, [hl]
- ; ????
- ld hl, Channel1Field0x21 - Channel1
+ ; get direction of pitch wheel
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld a, e
sub [hl]
@@ -749,15 +746,13 @@ LoadNote: ; e83d1
ld a, d
sbc a, 0
ld d, a
- ; ????
- ld hl, Channel1Field0x22 - Channel1
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
sub [hl]
jr nc, .greater_than
- ; ????
ld hl, Channel1Flags3 - Channel1
add hl, bc
- set SOUND_UNKN_11, [hl]
+ set SOUND_PITCH_WHEEL_DIR, [hl]
; get frequency
ld hl, Channel1Frequency - Channel1
add hl, bc
@@ -765,7 +760,7 @@ LoadNote: ; e83d1
inc hl
ld d, [hl]
; ????
- ld hl, Channel1Field0x21 - Channel1
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld a, [hl]
sub e
@@ -774,7 +769,7 @@ LoadNote: ; e83d1
sbc a, 0
ld d, a
; ????
- ld hl, Channel1Field0x22 - Channel1
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
ld a, [hl]
sub d
@@ -782,18 +777,17 @@ LoadNote: ; e83d1
jr .resume
.greater_than
- ; ????
ld hl, Channel1Flags3 - Channel1
add hl, bc
- res SOUND_UNKN_11, [hl]
+ res SOUND_PITCH_WHEEL_DIR, [hl]
; get frequency
ld hl, Channel1Frequency - Channel1
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
- ; ????
- ld hl, Channel1Field0x21 - Channel1
+ ; get distance from pitch wheel target
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld a, e
sub [hl]
@@ -801,15 +795,17 @@ LoadNote: ; e83d1
ld a, d
sbc a, 0
ld d, a
- ; ????
- ld hl, Channel1Field0x22 - Channel1
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
sub [hl]
ld d, a
.resume
+ ; de = x * [wCurNoteDuration] + y
+ ; x + 1 -> d
+ ; y -> a
push bc
- ld hl, wc297
- ld b, 0; loop count
+ ld hl, wCurNoteDuration
+ ld b, 0 ; quotient
.loop
inc b
ld a, e
@@ -823,18 +819,16 @@ LoadNote: ; e83d1
jr .loop
.quit
- ld a, e ; result
+ ld a, e ; remainder
add [hl]
- ld d, b ; loop count
- ; ????
+ ld d, b ; quotient
pop bc
- ld hl, Channel1Field0x23 - Channel1
+ ld hl, Channel1PitchWheelAmount - Channel1
add hl, bc
- ld [hl], d
- ld hl, Channel1Field0x24 - Channel1
+ ld [hl], d ; quotient
+ ld hl, Channel1PitchWheelAmountFraction - Channel1
add hl, bc
- ld [hl], a
- ; clear ????
+ ld [hl], a ; remainder
ld hl, Channel1Field0x25 - Channel1
add hl, bc
xor a
@@ -843,14 +837,13 @@ LoadNote: ; e83d1
; e8466
-Functione8466: ; e8466
-; handle vibrato and other things
-; unknowns: wCurTrackDuty, wCurTrackFrequency
+HandleTrackVibrato: ; e8466
+; handle duty, cry pitch, and vibrato
ld hl, Channel1Flags2 - Channel1
add hl, bc
bit SOUND_DUTY, [hl] ; duty
jr z, .next
- ld hl, Channel1Field0x1c - Channel1
+ ld hl, Channel1SFXDutyLoop - Channel1
add hl, bc
ld a, [hl]
rlca
@@ -860,7 +853,7 @@ Functione8466: ; e8466
ld [wCurTrackDuty], a
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_0, [hl]
+ set NOTE_DUTY_OVERRIDE, [hl]
.next
ld hl, Channel1Flags2 - Channel1
add hl, bc
@@ -937,9 +930,9 @@ Functione8466: ; e8466
ld d, a
ld a, e
sub d
- jr nc, .asm_e84ef
+ jr nc, .no_carry
ld a, 0
- jr .asm_e84ef
+ jr .no_carry
.down
; vibrato up
@@ -950,24 +943,24 @@ Functione8466: ; e8466
swap a ; move it to lo
;
add e
- jr nc, .asm_e84ef
+ jr nc, .no_carry
ld a, $ff
-.asm_e84ef
+.no_carry
ld [wCurTrackFrequency], a
;
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_6, [hl]
+ set NOTE_VIBRATO_OVERRIDE, [hl]
.quit
ret
; e84f9
-Functione84f9: ; e84f9
- ; quit if ????
+ApplyPitchWheel: ; e84f9
+ ; quit if pitch wheel inactive
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit SOUND_UNKN_09, [hl]
+ bit SOUND_PITCH_WHEEL, [hl]
ret z
; de = Frequency
ld hl, Channel1Frequency - Channel1
@@ -975,24 +968,24 @@ Functione84f9: ; e84f9
ld e, [hl]
inc hl
ld d, [hl]
- ;
+ ; check whether pitch wheel is going up or down
ld hl, Channel1Flags3 - Channel1
add hl, bc
- bit SOUND_UNKN_11, [hl]
- jr z, .next
- ;
- ld hl, Channel1Field0x23 - Channel1
+ bit SOUND_PITCH_WHEEL_DIR, [hl]
+ jr z, .decreasing
+ ; frequency += [Channel*PitchWheelAmount]
+ ld hl, Channel1PitchWheelAmount - Channel1
add hl, bc
ld l, [hl]
ld h, 0
add hl, de
ld d, h
ld e, l
- ; get ????
- ld hl, Channel1Field0x24 - Channel1
+ ; [Channel*Field0x25] += [Channel*PitchWheelAmountFraction]
+ ; if rollover: Frequency += 1
+ ld hl, Channel1PitchWheelAmountFraction - Channel1
add hl, bc
ld a, [hl]
- ; add it to ????
ld hl, Channel1Field0x25 - Channel1
add hl, bc
add [hl]
@@ -1003,23 +996,26 @@ Functione84f9: ; e84f9
ld a, 0
adc d
ld d, a
- ;
- ld hl, Channel1Field0x22 - Channel1
+ ; Compare the dw at [Channel*PitchWheelTarget] to de.
+ ; If frequency is greater, we're finished.
+ ; Otherwise, load the frequency and set two flags.
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
ld a, [hl]
cp d
- jp c, .quit1
- jr nz, .quit2
- ld hl, Channel1Field0x21 - Channel1
+ jp c, .finished_pitch_wheel
+ jr nz, .continue_pitch_wheel
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld a, [hl]
cp e
- jp c, .quit1
- jr .quit2
+ jp c, .finished_pitch_wheel
+ jr .continue_pitch_wheel
-.next
+.decreasing
+ ; frequency -= [Channel*PitchWheelAmount]
ld a, e
- ld hl, Channel1Field0x23 - Channel1
+ ld hl, Channel1PitchWheelAmount - Channel1
add hl, bc
ld e, [hl]
sub e
@@ -1027,7 +1023,9 @@ Functione84f9: ; e84f9
ld a, d
sbc a, 0
ld d, a
- ld hl, Channel1Field0x24 - Channel1
+ ; [Channel*Field0x25] *= 2
+ ; if rollover: Frequency -= 1
+ ld hl, Channel1PitchWheelAmountFraction - Channel1
add hl, bc
ld a, [hl]
add a
@@ -1037,28 +1035,31 @@ Functione84f9: ; e84f9
ld e, a
ld a, d
sbc a, 0
- ld d,a
- ld hl, Channel1Field0x22 - Channel1
+ ld d, a
+ ; Compare the dw at [Channel*PitchWheelTarget] to de.
+ ; If frequency is lower, we're finished.
+ ; Otherwise, load the frequency and set two flags.
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
ld a, d
cp [hl]
- jr c, .quit1
- jr nz, .quit2
- ld hl, Channel1Field0x21 - Channel1
+ jr c, .finished_pitch_wheel
+ jr nz, .continue_pitch_wheel
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld a, e
cp [hl]
- jr nc, .quit2
-.quit1
+ jr nc, .continue_pitch_wheel
+.finished_pitch_wheel
ld hl, Channel1Flags2 - Channel1
add hl, bc
- res SOUND_UNKN_09, [hl]
+ res SOUND_PITCH_WHEEL, [hl]
ld hl, Channel1Flags3 - Channel1
add hl, bc
- res SOUND_UNKN_11, [hl]
+ res SOUND_PITCH_WHEEL_DIR, [hl]
ret
-.quit2
+.continue_pitch_wheel
ld hl, Channel1Frequency - Channel1
add hl, bc
ld [hl], e
@@ -1066,8 +1067,8 @@ Functione84f9: ; e84f9
ld [hl], d
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_1, [hl]
- set NOTE_UNKN_0, [hl]
+ set NOTE_FREQ_OVERRIDE, [hl]
+ set NOTE_DUTY_OVERRIDE, [hl]
ret
; e858c
@@ -1144,7 +1145,7 @@ ReadNoiseSample: ; e85af
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_4, [hl]
+ set NOTE_NOISE_SAMPLING, [hl]
ret
.quit
@@ -1170,9 +1171,9 @@ ParseMusic: ; e85e1
ld hl, Channel1Flags - Channel1
add hl, bc
bit SOUND_SFX, [hl]
- jp nz, Functione8698
+ jp nz, ParseSFXOrRest
bit SOUND_REST, [hl] ; rest
- jp nz, Functione8698
+ jp nz, ParseSFXOrRest
bit SOUND_NOISE, [hl] ; noise sample
jp nz, GetNoiseSample
; normal note
@@ -1205,11 +1206,9 @@ ParseMusic: ; e85e1
; ????
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_4, [hl]
+ set NOTE_NOISE_SAMPLING, [hl]
jp LoadNote
-
-
.rest
; note = rest
ld hl, Channel1NoteFlags - Channel1
@@ -1217,7 +1216,6 @@ ParseMusic: ; e85e1
set NOTE_REST, [hl] ; Rest
ret
-;
.endchannel
; $ff is reached in music data
ld hl, Channel1Flags - Channel1
@@ -1286,11 +1284,11 @@ RestoreVolume: ; e8679
; e8698
-Functione8698: ; e8698
+ParseSFXOrRest: ; e8698
; turn noise sampling on
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set NOTE_UNKN_4, [hl] ; noise sample
+ set NOTE_NOISE_SAMPLING, [hl] ; noise sample
; update note duration
ld a, [CurMusicByte]
call SetNoteDuration ; top nybble doesnt matter?
@@ -1348,9 +1346,8 @@ GetNoiseSample: ; e86c5
ld d, 0
; load ptr to noise sample set in hl
ld hl, Drumkits
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1363,9 +1360,8 @@ endr
; use 'pitch' to seek noise sample set
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
; load sample pointer into NoiseSampleAddress
ld a, [hli]
ld [NoiseSampleAddressLo], a
@@ -1387,9 +1383,8 @@ ParseMusicCommand: ; e870f
ld d, 0
; seek command pointer
ld hl, MusicCommands
-rept 2
add hl, de
-endr
+ add hl, de
; jump to the new pointer
ld a, [hli]
ld h, [hl]
@@ -1415,9 +1410,9 @@ MusicCommands: ; e8720
dw Music_DutyCycle ; duty cycle
dw Music_Intensity ; intensity
dw Music_SoundStatus ; update sound status
- dw MusicDE ; ???? + duty cycle
- dw Music_ToggleSFX ;
- dw MusicE0 ;
+ dw Music_SoundDuty ; sfx duty
+ dw Music_ToggleSFX ; sound on/off
+ dw Music_SlidePitchTo ; pitch wheel
dw Music_Vibrato ; vibrato
dw MusicE2 ; unused
dw Music_ToggleNoise ; music noise sampling
@@ -1443,8 +1438,8 @@ MusicCommands: ; e8720
dw MusicF7 ; nothing
dw MusicF8 ; nothing
dw MusicF9 ; unused
- dw Music_SetCondition ;
- dw Music_JumpIf ;
+ dw Music_SetCondition ; setcondition
+ dw Music_JumpIf ; jumpif
dw Music_JumpChannel ; jump
dw Music_LoopChannel ; loop
dw Music_CallChannel ; call
@@ -1639,9 +1634,8 @@ Music_JumpIf: ; e8817
inc hl
ld d, [hl]
; skip pointer
-rept 2
inc de
-endr
+ inc de
; update address
ld [hl], d
dec hl
@@ -1693,9 +1687,8 @@ MusicEE; e883e
inc hl
ld d, [hl]
; skip pointer
-rept 2
inc de
-endr
+ inc de
; update address
ld [hl], d
dec hl
@@ -1801,38 +1794,42 @@ Music_Vibrato: ; e8882
; e88bd
-MusicE0: ; e88bd
-; ????
+Music_SlidePitchTo: ; e88bd
+; set the target for pitch wheel
; params: 2
+; note duration
+; target note
call GetMusicByte
- ld [wc297], a
+ ld [wCurNoteDuration], a
call GetMusicByte
+ ; pitch in e
ld d, a
and $f
ld e, a
+ ; octave in d
ld a, d
swap a
and $f
ld d, a
call GetFrequency
- ld hl, Channel1Field0x21 - Channel1
+ ld hl, Channel1PitchWheelTarget - Channel1
add hl, bc
ld [hl], e
- ld hl, Channel1Field0x22 - Channel1
+ ld hl, Channel1PitchWheelTarget + 1 - Channel1
add hl, bc
ld [hl], d
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set SOUND_UNKN_09, [hl]
+ set SOUND_PITCH_WHEEL, [hl]
ret
; e88e4
Music_Tone: ; e88e4
; tone
-; params: 2
+; params: 1 (dw)
ld hl, Channel1Flags2 - Channel1
add hl, bc
set SOUND_CRY_PITCH, [hl]
@@ -1860,18 +1857,17 @@ MusicE7: ; e88f7
; e8906
-MusicDE: ; e8906
-; ???? + duty cycle
-; params: 1
- ;
+Music_SoundDuty: ; e8906
+; sequence of 4 duty cycles to be looped
+; params: 1 (4 2-bit duty cycle arguments)
ld hl, Channel1Flags2 - Channel1
add hl, bc
set SOUND_DUTY, [hl] ; duty cycle
- ;
+ ; sound duty sequence
call GetMusicByte
rrca
rrca
- ld hl, Channel1Field0x1c - Channel1
+ ld hl, Channel1SFXDutyLoop - Channel1
add hl, bc
ld [hl], a
; update duty cycle
@@ -2055,7 +2051,7 @@ Music_ForceOctave: ; e89b1
; this forces all notes up by the starting octave
; params: 1
call GetMusicByte
- ld hl, Channel1StartingOctave - Channel1
+ ld hl, Channel1PitchOffset - Channel1
add hl, bc
ld [hl], a
ret
@@ -2247,7 +2243,7 @@ GetFrequency: ; e8a5d
; get octave
; get starting octave
- ld hl, Channel1StartingOctave - Channel1
+ ld hl, Channel1PitchOffset - Channel1
add hl, bc
ld a, [hl]
swap a ; hi nybble
@@ -2256,7 +2252,7 @@ GetFrequency: ; e8a5d
add d
push af ; we'll use this later
; get starting octave
- ld hl, Channel1StartingOctave - Channel1
+ ld hl, Channel1PitchOffset - Channel1
add hl, bc
ld a, [hl]
and $f ; lo nybble
@@ -2494,9 +2490,9 @@ _PlayCryHeader:: ; e8b79
; 3-byte pointers (bank, address)
ld hl, Cries
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
ld a, [hli]
ld [MusicBank], a
@@ -2574,7 +2570,6 @@ endr
dec a
jr nz, .loop
-
; Cries play at max volume, so we save the current volume for later.
ld a, [LastVolume]
and a
@@ -2694,7 +2689,6 @@ _PlaySFX:: ; e8c04
; e8ca6
-
PlayStereoSFX:: ; e8ca6
; play sfx de
@@ -2713,9 +2707,9 @@ PlayStereoSFX:: ; e8ca6
; get sfx ptr
ld hl, SFX
-rept 3
add hl, de
-endr
+ add hl, de
+ add hl, de
; bank
ld a, [hli]
@@ -2798,7 +2792,6 @@ endr
; e8d1b
-
LoadChannel: ; e8d1b
; prep channel for use
; input:
@@ -2811,9 +2804,8 @@ LoadChannel: ; e8d1b
ld c, a
ld b, 0
ld hl, ChannelPointers
-rept 2
add hl, bc
-endr
+ add hl, bc
ld c, [hl]
inc hl
ld b, [hl] ; bc = channel pointer
@@ -2891,31 +2883,31 @@ LoadMusicByte:: ; e8d76
; e8d80
FrequencyTable: ; e8d80
- dw 0 ; filler
- dw $f82c
- dw $f89d
- dw $f907
- dw $f96b
- dw $f9ca
- dw $fa23
- dw $fa77
- dw $fac7
- dw $fb12
- dw $fb58
- dw $fb9b
- dw $fbda
- dw $fc16
- dw $fc4e
- dw $fc83
- dw $fcb5
- dw $fce5
- dw $fd11
- dw $fd3b
- dw $fd63
- dw $fd89
- dw $fdac
- dw $fdcd
- dw $fded
+ dw 0 ; __
+ dw $f82c ; C_
+ dw $f89d ; C#
+ dw $f907 ; D_
+ dw $f96b ; D#
+ dw $f9ca ; E_
+ dw $fa23 ; F_
+ dw $fa77 ; F#
+ dw $fac7 ; G_
+ dw $fb12 ; G#
+ dw $fb58 ; A_
+ dw $fb9b ; A#
+ dw $fbda ; B_
+ dw $fc16 ; C_
+ dw $fc4e ; C#
+ dw $fc83 ; D_
+ dw $fcb5 ; D#
+ dw $fce5 ; E_
+ dw $fd11 ; F_
+ dw $fd3b ; F#
+ dw $fd63 ; G_
+ dw $fd89 ; G#
+ dw $fdac ; A_
+ dw $fdcd ; A#
+ dw $fded ; B_
; e8db2
WaveSamples: ; e8db2
@@ -3282,9 +3274,8 @@ ClearChannels:: ; e8fe9
; doesn't seem to be used, but functionally identical to MapSetup_Sound_Off
ld hl, rNR50
xor a
-rept 2
ld [hli], a
-endr
+ ld [hli], a
ld a, $80
ld [hli], a
ld hl, rNR10