summaryrefslogtreecommitdiff
path: root/audio/engine.asm
diff options
context:
space:
mode:
Diffstat (limited to 'audio/engine.asm')
-rw-r--r--audio/engine.asm1125
1 files changed, 623 insertions, 502 deletions
diff --git a/audio/engine.asm b/audio/engine.asm
index f3a67e5f3..8bec632ff 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -22,14 +22,14 @@ _MapSetup_Sound_Off:: ; e8000
ld [hli], a ; ff26 ; music channels
ld hl, rNR10 ; sound channel registers
- ld e, $04 ; number of channels
+ ld e, $4 ; number of channels
.clearsound
; sound channel 1 2 3 4
xor a
ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
xor a
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
@@ -39,7 +39,7 @@ _MapSetup_Sound_Off:: ; e8000
jr nz, .clearsound
ld hl, Channel1 ; start of channel data
- ld de, $01bf ; length of area to clear (entire sound wram area)
+ ld de, $1bf ; length of area to clear (entire sound wram area)
.clearchannels ; clear Channel1-$c2bf
xor a
ld [hli], a
@@ -55,6 +55,7 @@ _MapSetup_Sound_Off:: ; e8000
pop de
pop hl
ret
+
; e803d
MusicFadeRestart: ; e803d
@@ -69,18 +70,21 @@ MusicFadeRestart: ; e803d
pop af
ld [MusicFadeIDHi], a
ret
+
; e8051
MusicOn: ; e8051
- ld a, $01
+ ld a, 1
ld [MusicPlaying], a
ret
+
; e8057
MusicOff: ; e8057
xor a
ld [MusicPlaying], a
ret
+
; e805c
_UpdateSound:: ; e805c
@@ -98,16 +102,17 @@ _UpdateSound:: ; e805c
; is the channel active?
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jp z, .nextchannel
; check time left in the current note
ld hl, Channel1NoteDuration - Channel1
add hl, bc
ld a, [hl]
- cp a, $02 ; 1 or 0?
+ cp $2 ; 1 or 0?
jr c, .noteover
dec [hl]
jr .asm_e8093
+
.noteover
; reset vibrato delay
ld hl, Channel1VibratoDelay - Channel1
@@ -119,7 +124,7 @@ _UpdateSound:: ; e805c
; turn vibrato off for now
ld hl, Channel1Flags2 - Channel1
add hl, bc
- res 1, [hl]
+ res SOUND_UNKN_09, [hl]
; get next note
call ParseMusic
.asm_e8093
@@ -129,15 +134,15 @@ _UpdateSound:: ; e805c
ld hl, Channel1DutyCycle - Channel1
add hl, bc
ld a, [hli]
- ld [wc292], a
+ ld [wCurTrackDuty], a
; intensity
ld a, [hli]
- ld [wc293], a
+ ld [wCurTrackIntensity], a
; frequency
ld a, [hli]
- ld [wc294], a
+ ld [wCurTrackFrequency], a
ld a, [hl]
- ld [wc295], a
+ ld [wCurTrackFrequency + 1], a
;
call Functione8466 ; handle vibrato and other things
call HandleNoise
@@ -147,34 +152,34 @@ _UpdateSound:: ; e805c
jr z, .next
; are we in a sfx channel right now?
ld a, [CurChannel]
- cp a, $04
+ cp $4
jr nc, .next
; are any sfx channels active?
; if so, mute
ld hl, Channel5Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .restnote
ld hl, Channel6Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .restnote
ld hl, Channel7Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .restnote
ld hl, Channel8Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr z, .next
.restnote
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 5, [hl] ; Rest
+ set NOTE_REST, [hl] ; Rest
.next
; are we in a sfx channel right now?
ld a, [CurChannel]
- cp a, $04 ; sfx
+ cp $4 ; sfx
jr nc, .asm_e80ee
- ld hl, $00cb
+ ld hl, Channel5Flags - Channel1
add hl, bc
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .asm_e80fc
.asm_e80ee
call UpdateChannels
@@ -198,7 +203,7 @@ _UpdateSound:: ; e805c
ld a, [CurChannel]
inc a
ld [CurChannel], a
- cp a, $08 ; are we done?
+ cp $8 ; are we done?
jp nz, .loop ; do it all again
call PlayDanger
@@ -211,21 +216,23 @@ _UpdateSound:: ; e805c
ld a, [SoundOutput]
ld [rNR51], a
ret
+
; e8125
UpdateChannels: ; e8125
ld hl, .ChannelFnPtrs
ld a, [CurChannel]
- and a, $07
+ and $7
add a
ld e, a
- ld d, $00
+ ld d, 0
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
+
.ChannelFnPtrs
dw .Channel1
dw .Channel2
@@ -245,64 +252,68 @@ UpdateChannels: ; e8125
.Channel5
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- bit 3, [hl]
+ bit NOTE_UNKN_3, [hl]
jr z, .asm_e8159
;
ld a, [SoundInput]
ld [rNR10], a
.asm_e8159
- bit 5, [hl] ; rest
+ bit NOTE_REST, [hl] ; rest
jr nz, .ch1rest
- bit 4, [hl]
+ bit NOTE_UNKN_4, [hl]
jr nz, .asm_e81a2
- bit 1, [hl]
+ bit NOTE_UNKN_1, [hl]
jr nz, .asm_e816b
- bit 6, [hl]
+ bit NOTE_UNKN_6, [hl]
jr nz, .asm_e8184
jr .asm_e8175
+
.asm_e816b
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR13], a
- ld a, [wc295]
+ ld a, [wCurTrackFrequency + 1]
ld [rNR14], a
.asm_e8175
- bit 0, [hl]
+ bit NOTE_UNKN_0, [hl]
ret z
- ld a, [wc292]
+ ld a, [wCurTrackDuty]
ld d, a
ld a, [rNR11]
- and a, $3f ; sound length
+ and $3f ; sound length
or d
ld [rNR11], a
ret
+
.asm_e8184
- ld a, [wc292]
+ ld a, [wCurTrackDuty]
ld d, a
ld a, [rNR11]
- and a, $3f ; sound length
+ and $3f ; sound length
or d
ld [rNR11], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR13], a
ret
+
.ch1rest
ld a, [rNR52]
- and a, %10001110 ; ch1 off
+ and %10001110 ; ch1 off
ld [rNR52], a
ld hl, rNR10
call ClearChannel
ret
+
.asm_e81a2
- ld hl, wc292
+ ld hl, wCurTrackDuty
ld a, $3f ; sound length
or [hl]
ld [rNR11], a
- ld a, [wc293]
+ ld a, [wCurTrackIntensity]
ld [rNR12], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR13], a
- ld a, [wc295]
- or a, $80
+ ld a, [wCurTrackFrequency + 1]
+ or $80
ld [rNR14], a
ret
@@ -310,55 +321,59 @@ UpdateChannels: ; e8125
.Channel6
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- bit 5, [hl] ; rest
+ bit NOTE_REST, [hl] ; rest
jr nz, .ch2rest
- bit 4, [hl]
+ bit NOTE_UNKN_4, [hl]
jr nz, .asm_e8204
- bit 6, [hl]
+ bit NOTE_UNKN_6, [hl]
jr nz, .asm_e81e6
- bit 0, [hl]
+ bit NOTE_UNKN_0, [hl]
ret z
- ld a, [wc292]
+ ld a, [wCurTrackDuty]
ld d, a
ld a, [rNR21]
- and a, $3f ; sound length
+ and $3f ; sound length
or d
ld [rNR21], a
ret
+
.asm_e81db ; unused
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR23], a
- ld a, [wc295]
+ ld a, [wCurTrackFrequency + 1]
ld [rNR24], a
ret
+
.asm_e81e6
- ld a, [wc292]
+ ld a, [wCurTrackDuty]
ld d, a
ld a, [rNR21]
- and a, $3f ; sound length
+ and $3f ; sound length
or d
ld [rNR21], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR23], a
ret
+
.ch2rest
ld a, [rNR52]
- and a, %10001101 ; ch2 off
+ and %10001101 ; ch2 off
ld [rNR52], a
ld hl, rNR20
call ClearChannel
ret
+
.asm_e8204
- ld hl, wc292
+ ld hl, wCurTrackDuty
ld a, $3f ; sound length
or [hl]
ld [rNR21], a
- ld a, [wc293]
+ ld a, [wCurTrackIntensity]
ld [rNR22], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR23], a
- ld a, [wc295]
- or a, $80 ; initial (restart)
+ ld a, [wCurTrackFrequency + 1]
+ or $80 ; initial (restart)
ld [rNR24], a
ret
@@ -366,30 +381,34 @@ UpdateChannels: ; e8125
.Channel7
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- bit 5, [hl] ; rest
+ bit NOTE_REST, [hl] ; rest
jr nz, .ch3rest
- bit 4, [hl]
+ bit NOTE_UNKN_4, [hl]
jr nz, .asm_e824d
- bit 6, [hl]
+ bit NOTE_UNKN_6, [hl]
jr nz, .asm_e823a
ret
+
.asm_e822f ; unused
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR33], a
- ld a, [wc295]
+ ld a, [wCurTrackFrequency + 1]
ld [rNR34], a
ret
+
.asm_e823a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR33], a
ret
+
.ch3rest
ld a, [rNR52]
- and a, %10001011 ; ch3 off
+ and %10001011 ; ch3 off
ld [rNR52], a
ld hl, rNR30
call ClearChannel
ret
+
.asm_e824d
ld a, $3f
ld [rNR31], a
@@ -398,20 +417,21 @@ UpdateChannels: ; e8125
call .asm_e8268
ld a, $80
ld [rNR30], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR33], a
- ld a, [wc295]
- or a, $80
+ ld a, [wCurTrackFrequency + 1]
+ or $80
ld [rNR34], a
ret
+
.asm_e8268
push hl
- ld a, [wc293]
- and a, $0f ; only 0-9 are valid
+ ld a, [wCurTrackIntensity]
+ and $f ; only 0-9 are valid
ld l, a
- ld h, $00
+ ld h, 0
; hl << 4
- ; each wavepattern is $0f bytes long
+ ; each wavepattern is $f bytes long
; so seeking is done in $10s
rept 4
add hl, hl
@@ -452,8 +472,8 @@ endr
ld a, [hli]
ld [rWave_f], a
pop hl
- ld a, [wc293]
- and a, $f0
+ ld a, [wCurTrackIntensity]
+ and $f0
sla a
ld [rNR32], a
ret
@@ -462,71 +482,79 @@ endr
.Channel8
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- bit 5, [hl] ; rest
+ bit NOTE_REST, [hl] ; rest
jr nz, .ch4rest
- bit 4, [hl]
+ bit NOTE_UNKN_4, [hl]
jr nz, .asm_e82d4
ret
+
.asm_e82c1 ; unused
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR43], a
ret
+
.ch4rest
ld a, [rNR52]
- and a, %10000111 ; ch4 off
+ and %10000111 ; ch4 off
ld [rNR52], a
ld hl, rNR40
call ClearChannel
ret
+
.asm_e82d4
ld a, $3f ; sound length
ld [rNR41], a
- ld a, [wc293]
+ ld a, [wCurTrackIntensity]
ld [rNR42], a
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld [rNR43], a
ld a, $80
ld [rNR44], a
ret
+
; e82e7
_CheckSFX: ; e82e7
; return carry if any sfx channels are active
ld hl, Channel5Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .sfxon
ld hl, Channel6Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .sfxon
ld hl, Channel7Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .sfxon
ld hl, Channel8Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .sfxon
and a
ret
+
.sfxon
scf
ret
+
; e8307
PlayDanger: ; e8307
ld a, [Danger]
bit 7, a
ret z
- and a, $7f
+ and $7f
ld d, a
call _CheckSFX
jr c, .asm_e8335
and a
jr z, .asm_e8323
- cp a, 16 ; halfway
+ cp 16 ; halfway
jr z, .asm_e831e
jr .asm_e8335
+
.asm_e831e
ld hl, Tablee8354
jr .updatehw
+
.asm_e8323
ld hl, Tablee8350
.updatehw
@@ -543,33 +571,34 @@ PlayDanger: ; e8307
.asm_e8335
ld a, d
inc a
- cp a, 30
+ cp 30
jr c, .asm_e833c
xor a
.asm_e833c
- or a, $80
+ or $80
ld [Danger], a
; is hw ch1 on?
ld a, [SoundOutput]
- and a, $11
+ and $11
ret nz
; if not, turn it on
ld a, [SoundOutput]
- or a, $11
+ or $11
ld [SoundOutput], a
ret
+
; e8350
Tablee8350: ; e8350
db $80 ; duty 50%
- db $e2 ; volume $e, envelope decrease sweep 2
+ db $e2 ; volume 14, envelope decrease sweep 2
db $50 ; frequency: $750
db $87 ; restart sound
; e8354
Tablee8354: ; e8354
db $80 ; duty 50%
- db $e2 ; volume $e, envelope decrease sweep 2
+ db $e2 ; volume 14, envelope decrease sweep 2
db $ee ; frequency: $6ee
db $86 ; restart sound
; e8358
@@ -596,15 +625,16 @@ FadeMusic: ; e8358
dec a
ld [MusicFadeCount], a
ret
+
.update
ld a, [MusicFade]
ld d, a
; get new count
- and a, $3f
+ and $3f
ld [MusicFadeCount], a
; get SO1 volume
ld a, [Volume]
- and a, $07
+ and $7
; which way are we fading?
bit 7, d
jr nz, .fadein
@@ -614,13 +644,14 @@ FadeMusic: ; e8358
dec a
jr .updatevolume
+
.novolume
; make sure volume is off
xor a
ld [Volume], a
; did we just get on a bike?
ld a, [PlayerState]
- cp a, $01 ; bicycle
+ cp $1 ; bicycle
jr z, .bicycle
push bc
; restart sound
@@ -641,6 +672,7 @@ FadeMusic: ; e8358
xor a
ld [MusicFade], a
ret
+
.bicycle
push bc
; restart sound
@@ -664,16 +696,18 @@ FadeMusic: ; e8358
.fadein
; are we done?
- cp a, $07
+ cp $7
jr nc, .maxvolume
; inc volume
inc a
jr .updatevolume
+
.maxvolume
; we're done
xor a
ld [MusicFade], a
ret
+
.updatevolume
; hi = lo
ld d, a
@@ -681,13 +715,14 @@ FadeMusic: ; e8358
or d
ld [Volume], a
ret
+
; e83d1
LoadNote: ; e83d1
; check mute??
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit 1, [hl]
+ bit SOUND_UNKN_09, [hl]
ret z
; get note duration
ld hl, Channel1NoteDuration - Channel1
@@ -696,7 +731,7 @@ LoadNote: ; e83d1
ld hl, wc297 ; ????
sub [hl]
jr nc, .ok
- ld a, $01
+ ld a, 1
.ok
ld [hl], a
; get frequency
@@ -706,23 +741,23 @@ LoadNote: ; e83d1
inc hl
ld d, [hl]
; ????
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld a, e
sub [hl]
ld e, a
ld a, d
- sbc a, $00
+ sbc a, 0
ld d, a
; ????
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
sub [hl]
- jr nc, .asm_e8420
+ jr nc, .greater_than
; ????
ld hl, Channel1Flags3 - Channel1
add hl, bc
- set 1, [hl]
+ set SOUND_UNKN_11, [hl]
; get frequency
ld hl, Channel1Frequency - Channel1
add hl, bc
@@ -730,26 +765,27 @@ LoadNote: ; e83d1
inc hl
ld d, [hl]
; ????
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld a, [hl]
sub e
ld e, a
ld a, d
- sbc a, $00
+ sbc a, 0
ld d, a
; ????
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
ld a, [hl]
sub d
ld d, a
- jr .asm_e843e
-.asm_e8420
+ jr .resume
+
+.greater_than
; ????
ld hl, Channel1Flags3 - Channel1
add hl, bc
- res 1, [hl]
+ res SOUND_UNKN_11, [hl]
; get frequency
ld hl, Channel1Frequency - Channel1
add hl, bc
@@ -757,23 +793,23 @@ LoadNote: ; e83d1
inc hl
ld d, [hl]
; ????
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld a, e
sub [hl]
ld e, a
ld a, d
- sbc a, $00
+ sbc a, 0
ld d, a
; ????
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
sub [hl]
ld d, a
-.asm_e843e
+.resume
push bc
ld hl, wc297
- ld b, $00 ; loop count
+ ld b, 0; loop count
.loop
inc b
ld a, e
@@ -785,62 +821,64 @@ LoadNote: ; e83d1
jr z, .quit
dec d
jr .loop
+
.quit
ld a, e ; result
add [hl]
ld d, b ; loop count
; ????
pop bc
- ld hl, $0023
+ ld hl, Channel1Field0x23 - Channel1
add hl, bc
ld [hl], d
- ld hl, $0024
+ ld hl, Channel1Field0x24 - Channel1
add hl, bc
ld [hl], a
; clear ????
- ld hl, $0025
+ ld hl, Channel1Field0x25 - Channel1
add hl, bc
xor a
ld [hl], a
ret
+
; e8466
Functione8466: ; e8466
; handle vibrato and other things
-; unknowns: wc292, wc294
+; unknowns: wCurTrackDuty, wCurTrackFrequency
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit 2, [hl]
+ bit SOUND_DUTY, [hl] ; duty
jr z, .next
- ld hl, $001c
+ ld hl, Channel1Field0x1c - Channel1
add hl, bc
ld a, [hl]
rlca
rlca
ld [hl], a
- and a, $c0
- ld [wc292], a
+ and $c0
+ ld [wCurTrackDuty], a
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 0, [hl]
+ set NOTE_UNKN_0, [hl]
.next
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit 4, [hl]
+ bit SOUND_CRY_PITCH, [hl]
jr z, .vibrato
ld hl, Channel1CryPitch - Channel1
add hl, bc
ld e, [hl]
inc hl
ld d, [hl]
- ld hl, wc294
+ ld hl, wCurTrackFrequency
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
ld e, l
ld d, h
- ld hl, wc294
+ ld hl, wCurTrackFrequency
ld [hl], e
inc hl
ld [hl], d
@@ -848,7 +886,7 @@ Functione8466: ; e8466
; is vibrato on?
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit 0, [hl] ; vibrato
+ bit SOUND_VIBRATO, [hl] ; vibrato
jr z, .quit
; is vibrato active for this note yet?
; is the delay over?
@@ -869,11 +907,12 @@ Functione8466: ; e8466
ld hl, Channel1VibratoRate - Channel1
add hl, bc
ld a, [hl]
- and a, $0f ; count
+ and $f ; count
jr z, .toggle
.subexit
dec [hl]
jr .quit
+
.toggle
; refresh count
ld a, [hl]
@@ -881,52 +920,54 @@ Functione8466: ; e8466
or [hl]
ld [hl], a
; ????
- ld a, [wc294]
+ ld a, [wCurTrackFrequency]
ld e, a
; toggle vibrato up/down
ld hl, Channel1Flags3 - Channel1
add hl, bc
- bit 0, [hl] ; vibrato up/down
+ bit SOUND_VIBRATO_DIR, [hl] ; vibrato up/down
jr z, .down
; up
; vibrato down
- res 0, [hl]
+ res SOUND_VIBRATO_DIR, [hl]
; get the delay
ld a, d
- and a, $0f ; lo
+ and $f ; lo
;
ld d, a
ld a, e
sub d
jr nc, .asm_e84ef
- ld a, $00
+ ld a, 0
jr .asm_e84ef
+
.down
; vibrato up
- set 0, [hl]
+ set SOUND_VIBRATO_DIR, [hl]
; get the delay
ld a, d
- and a, $f0 ; hi
+ and $f0 ; hi
swap a ; move it to lo
;
add e
jr nc, .asm_e84ef
ld a, $ff
.asm_e84ef
- ld [wc294], a
+ ld [wCurTrackFrequency], a
;
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 6, [hl]
+ set NOTE_UNKN_6, [hl]
.quit
ret
+
; e84f9
Functione84f9: ; e84f9
; quit if ????
ld hl, Channel1Flags2 - Channel1
add hl, bc
- bit 1, [hl]
+ bit SOUND_UNKN_09, [hl]
ret z
; de = Frequency
ld hl, Channel1Frequency - Channel1
@@ -937,72 +978,73 @@ Functione84f9: ; e84f9
;
ld hl, Channel1Flags3 - Channel1
add hl, bc
- bit 1, [hl]
+ bit SOUND_UNKN_11, [hl]
jr z, .next
;
- ld hl, $0023
+ ld hl, Channel1Field0x23 - Channel1
add hl, bc
ld l, [hl]
- ld h, $00
+ ld h, 0
add hl, de
ld d, h
ld e, l
; get ????
- ld hl, $0024
+ ld hl, Channel1Field0x24 - Channel1
add hl, bc
ld a, [hl]
; add it to ????
- ld hl, $0025
+ ld hl, Channel1Field0x25 - Channel1
add hl, bc
add [hl]
ld [hl], a
- ld a, $00
+ ld a, 0
adc e
ld e, a
- ld a, $00
+ ld a, 0
adc d
ld d, a
;
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
ld a, [hl]
cp d
jp c, .quit1
jr nz, .quit2
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld a, [hl]
cp e
jp c, .quit1
jr .quit2
+
.next
ld a, e
- ld hl, $0023
+ ld hl, Channel1Field0x23 - Channel1
add hl, bc
ld e, [hl]
sub e
ld e, a
ld a, d
- sbc a, $00
+ sbc a, 0
ld d, a
- ld hl, $0024
+ ld hl, Channel1Field0x24 - Channel1
add hl, bc
ld a, [hl]
add a
ld [hl], a
ld a, e
- sbc a, $00
+ sbc a, 0
ld e, a
ld a, d
- sbc a, $00
+ sbc a, 0
ld d,a
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
ld a, d
cp [hl]
jr c, .quit1
jr nz, .quit2
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld a, e
cp [hl]
@@ -1010,11 +1052,12 @@ Functione84f9: ; e84f9
.quit1
ld hl, Channel1Flags2 - Channel1
add hl, bc
- res 1, [hl]
+ res SOUND_UNKN_09, [hl]
ld hl, Channel1Flags3 - Channel1
add hl, bc
- res 1, [hl]
+ res SOUND_UNKN_11, [hl]
ret
+
.quit2
ld hl, Channel1Frequency - Channel1
add hl, bc
@@ -1023,16 +1066,17 @@ Functione84f9: ; e84f9
ld [hl], d
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 1, [hl]
- set 0, [hl]
+ set NOTE_UNKN_1, [hl]
+ set NOTE_UNKN_0, [hl]
ret
+
; e858c
HandleNoise: ; e858c
; is noise sampling on?
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 4, [hl] ; noise sampling
+ bit SOUND_NOISE, [hl] ; noise sampling
ret z
; are we in a sfx channel?
ld a, [CurChannel]
@@ -1040,19 +1084,20 @@ HandleNoise: ; e858c
jr nz, .next
; is ch8 on? (noise)
ld hl, Channel8Flags
- bit 0, [hl] ; on?
+ bit SOUND_CHANNEL_ON, [hl] ; on?
jr z, .next
; is ch8 playing noise?
- bit 4, [hl]
+ bit SOUND_NOISE, [hl]
ret nz ; quit if so
;
.next
- ld a, [wc2a2]
+ ld a, [wNoiseSampleDelay]
and a
jr z, ReadNoiseSample
dec a
- ld [wc2a2], a
+ ld [wNoiseSampleDelay], a
ret
+
; e85af
ReadNoiseSample: ; e85af
@@ -1082,15 +1127,15 @@ ReadNoiseSample: ; e85af
and $f
inc a
- ld [wc2a2], a
+ ld [wNoiseSampleDelay], a
ld a, [de]
inc de
- ld [wc293], a
+ ld [wCurTrackIntensity], a
ld a, [de]
inc de
- ld [wc294], a
+ ld [wCurTrackFrequency], a
xor a
- ld [wc295], a
+ ld [wCurTrackFrequency + 1], a
ld hl, NoiseSampleAddress
ld [hl], e
@@ -1099,18 +1144,20 @@ ReadNoiseSample: ; e85af
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 4, [hl]
+ set NOTE_UNKN_4, [hl]
ret
+
.quit
ret
+
; e85e1
ParseMusic: ; e85e1
; parses until a note is read or the song is ended
call GetMusicByte ; store next byte in a
- cp a, $ff ; is the song over?
- jr z, .readff
- cp a, $d0 ; is it a note?
+ cp $ff ; is the song over?
+ jr z, .endchannel
+ cp $d0 ; is it a note?
jr c, .readnote
; then it's a command
.readcommand
@@ -1122,22 +1169,22 @@ ParseMusic: ; e85e1
; special notes
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 3, [hl]
+ bit SOUND_SFX, [hl]
jp nz, Functione8698
- bit 5, [hl]
+ bit SOUND_REST, [hl] ; rest
jp nz, Functione8698
- bit 4, [hl] ; noise sample
+ bit SOUND_NOISE, [hl] ; noise sample
jp nz, GetNoiseSample
; normal note
; set note duration (bottom nybble)
ld a, [CurMusicByte]
- and a, $0f
+ and $f
call SetNoteDuration
; get note pitch (top nybble)
ld a, [CurMusicByte]
swap a
- and a, $0f
- jr z, .rest ; pitch $0 -> rest
+ and $f
+ jr z, .rest ; pitch 0-> rest
; update pitch
ld hl, Channel1Pitch - Channel1
add hl, bc
@@ -1158,37 +1205,41 @@ ParseMusic: ; e85e1
; ????
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 4, [hl]
+ set NOTE_UNKN_4, [hl]
jp LoadNote
+
+
+
.rest
; note = rest
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 5, [hl] ; Rest
+ set NOTE_REST, [hl] ; Rest
ret
+
;
-.readff
+.endchannel
; $ff is reached in music data
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 1, [hl] ; in a subroutine?
+ bit SOUND_SUBROUTINE, [hl] ; in a subroutine?
jr nz, .readcommand ; execute
ld a, [CurChannel]
- cp a, $04 ; channels 0-3?
- jr nc, .asm_e8651
+ cp $4 ; channels 0-3?
+ jr nc, .chan_5to8
; ????
- ld hl, $00cb
+ ld hl, Channel5Flags - Channel1
add hl, bc
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr nz, .ok
-.asm_e8651
+.chan_5to8
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 5, [hl]
+ bit SOUND_REST, [hl]
call nz, RestoreVolume
; end music
ld a, [CurChannel]
- cp a, $04 ; channel 5?
+ cp $4 ; channel 5?
jr nz, .ok
; ????
xor a
@@ -1198,11 +1249,11 @@ ParseMusic: ; e85e1
; turn channel off
ld hl, Channel1Flags - Channel1
add hl, bc
- res 0, [hl]
+ res SOUND_CHANNEL_ON, [hl]
; note = rest
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 5, [hl]
+ set NOTE_REST, [hl]
; clear music id & bank
ld hl, Channel1MusicID - Channel1
add hl, bc
@@ -1211,12 +1262,13 @@ ParseMusic: ; e85e1
ld [hli], a ; id lo
ld [hli], a ; bank
ret
+
; e8679
RestoreVolume: ; e8679
; ch5 only
ld a, [CurChannel]
- cp a, $04
+ cp $4
ret nz
xor a
ld hl, Channel6CryPitch
@@ -1231,13 +1283,14 @@ RestoreVolume: ; e8679
ld [LastVolume], a
ld [SFXPriority], a
ret
+
; e8698
Functione8698: ; e8698
; turn noise sampling on
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 4, [hl] ; noise sample
+ set NOTE_UNKN_4, [hl] ; noise sample
; update note duration
ld a, [CurMusicByte]
call SetNoteDuration ; top nybble doesnt matter?
@@ -1253,8 +1306,8 @@ Functione8698: ; e8698
ld [hl], a
; are we on the last channel? (noise sampling)
ld a, [CurChannel]
- and a, $03
- cp a, $03
+ and $3
+ cp $3
ret z
; update hi frequency from next param
call GetMusicByte
@@ -1262,35 +1315,37 @@ Functione8698: ; e8698
add hl, bc
ld [hl], a
ret
+
; e86c5
GetNoiseSample: ; e86c5
; load ptr to sample header in NoiseSampleAddress
; are we on the last channel?
ld a, [CurChannel]
- and a, $03
- cp a, $03
+ and $3
+ cp $3
; ret if not
ret nz
; update note duration
ld a, [CurMusicByte]
- and a, $0f
+ and $f
call SetNoteDuration
; check current channel
ld a, [CurChannel]
bit 2, a ; are we in a sfx channel?
jr nz, .sfx
ld hl, Channel8Flags
- bit 0, [hl] ; is ch8 on? (noise)
+ bit SOUND_CHANNEL_ON, [hl] ; is ch8 on? (noise)
ret nz
ld a, [MusicNoiseSampleSet]
jr .next
+
.sfx
ld a, [SFXNoiseSampleSet]
.next
; load noise sample set id into de
ld e, a
- ld d, $00
+ ld d, 0
; load ptr to noise sample set in hl
ld hl, Drumkits
rept 2
@@ -1303,11 +1358,11 @@ endr
ld a, [CurMusicByte]
swap a
; non-rest note?
- and a, $0f
+ and $f
ret z
; use 'pitch' to seek noise sample set
ld e, a
- ld d, $00
+ ld d, 0
rept 2
add hl, de
endr
@@ -1318,8 +1373,9 @@ endr
ld [NoiseSampleAddressHi], a
; clear ????
xor a
- ld [wc2a2], a
+ ld [wNoiseSampleDelay], a
ret
+
; e870f
ParseMusicCommand: ; e870f
@@ -1328,7 +1384,7 @@ ParseMusicCommand: ; e870f
; get command #
sub a, $d0 ; first command
ld e, a
- ld d, $00
+ ld d, 0
; seek command pointer
ld hl, MusicCommands
rept 2
@@ -1339,44 +1395,45 @@ endr
ld h, [hl]
ld l, a
jp [hl]
+
; e8720
MusicCommands: ; e8720
; pointer to each command in order
; octaves
- dw MusicD0 ; octave 8
- dw MusicD1 ; octave 7
- dw MusicD2 ; octave 6
- dw MusicD3 ; octave 5
- dw MusicD4 ; octave 4
- dw MusicD5 ; octave 3
- dw MusicD6 ; octave 2
- dw MusicD7 ; octave 1
- dw MusicD8 ; note length + intensity
- dw MusicD9 ; set starting octave
- dw MusicDA ; tempo
- dw MusicDB ; duty cycle
- dw MusicDC ; intensity
- dw MusicDD ; update sound status
+ dw Music_Octave8 ; octave 8
+ dw Music_Octave7 ; octave 7
+ dw Music_Octave6 ; octave 6
+ dw Music_Octave5 ; octave 5
+ dw Music_Octave4 ; octave 4
+ dw Music_Octave3 ; octave 3
+ dw Music_Octave2 ; octave 2
+ dw Music_Octave1 ; octave 1
+ dw Music_NoteType ; note length + intensity
+ dw Music_ForceOctave ; set starting octave
+ dw Music_Tempo ; tempo
+ dw Music_DutyCycle ; duty cycle
+ dw Music_Intensity ; intensity
+ dw Music_SoundStatus ; update sound status
dw MusicDE ; ???? + duty cycle
- dw MusicDF ;
+ dw Music_ToggleSFX ;
dw MusicE0 ;
- dw MusicE1 ; vibrato
- dw MusicE2 ;
- dw MusicE3 ; music noise sampling
- dw MusicE4 ; force panning
- dw MusicE5 ; volume
- dw MusicE6 ; tune
- dw MusicE7 ;
- dw MusicE8 ;
- dw MusicE9 ; global tempo
- dw MusicEA ; restart current channel from header
- dw MusicEB ; new song
- dw MusicEC ; sfx priority on
- dw MusicED ; sfx priority off
- dw MusicEE ;
- dw MusicEF ; stereo panning
- dw MusicF0 ; sfx noise sampling
+ dw Music_Vibrato ; vibrato
+ dw MusicE2 ; unused
+ dw Music_ToggleNoise ; music noise sampling
+ dw Music_Panning ; force panning
+ dw Music_Volume ; volume
+ dw Music_Tone ; tune
+ dw MusicE7 ; unused
+ dw MusicE8 ; unused
+ dw Music_TempoRelative ; global tempo
+ dw Music_RestartChannel ; restart current channel from header
+ dw Music_NewSong ; new song
+ dw Music_SFXPriorityOn ; sfx priority on
+ dw Music_SFXPriorityOff ; sfx priority off
+ dw MusicEE ; unused
+ dw Music_StereoPanning ; stereo panning
+ dw Music_SFXToggleNoise ; sfx noise sampling
dw MusicF1 ; nothing
dw MusicF2 ; nothing
dw MusicF3 ; nothing
@@ -1385,13 +1442,13 @@ MusicCommands: ; e8720
dw MusicF6 ; nothing
dw MusicF7 ; nothing
dw MusicF8 ; nothing
- dw MusicF9 ;
- dw MusicFA ;
- dw MusicFB ;
- dw MusicFC ; jump
- dw MusicFD ; loop
- dw MusicFE ; call
- dw MusicFF ; return
+ dw MusicF9 ; unused
+ dw Music_SetCondition ;
+ dw Music_JumpIf ;
+ dw Music_JumpChannel ; jump
+ dw Music_LoopChannel ; loop
+ dw Music_CallChannel ; call
+ dw Music_EndChannel ; return
; e8780
MusicF1: ; e8780
@@ -1403,16 +1460,17 @@ MusicF6: ; e8780
MusicF7: ; e8780
MusicF8: ; e8780
ret
+
; e8781
-MusicFF: ; e8781
+Music_EndChannel: ; e8781
; called when $ff is encountered w/ subroutine flag set
; end music stream
; return to caller of the subroutine
; reset subroutine flag
ld hl, Channel1Flags - Channel1
add hl, bc
- res 1, [hl]
+ res SOUND_SUBROUTINE, [hl]
; copy LastMusicAddress to MusicAddress
ld hl, Channel1LastMusicAddress - Channel1
add hl, bc
@@ -1425,9 +1483,10 @@ MusicFF: ; e8781
inc hl
ld [hl], d
ret
+
; e8796
-MusicFE: ; e8796
+Music_CallChannel: ; e8796
; call music stream (subroutine)
; parameters: ll hh ; pointer to subroutine
; get pointer from next 2 bytes
@@ -1457,11 +1516,12 @@ MusicFE: ; e8796
; set subroutine flag
ld hl, Channel1Flags - Channel1
add hl, bc
- set 1, [hl]
+ set SOUND_SUBROUTINE, [hl]
ret
+
; e87bc
-MusicFC: ; e87bc
+Music_JumpChannel: ; e87bc
; jump
; parameters: ll hh ; pointer
; get pointer from next 2 bytes
@@ -1475,9 +1535,10 @@ MusicFC: ; e87bc
inc hl
ld [hl], d
ret
+
; e87cc
-MusicFD: ; e87cc
+Music_LoopChannel: ; e87cc
; loops xx - 1 times
; 00: infinite
; params: 3
@@ -1489,13 +1550,13 @@ MusicFD: ; e87cc
call GetMusicByte
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 2, [hl] ; has the loop been initiated?
+ bit SOUND_LOOPING, [hl] ; has the loop been initiated?
jr nz, .checkloop
and a ; loop counter 0 = infinite
jr z, .loop
; initiate loop
dec a
- set 2, [hl] ; set loop flag
+ set SOUND_LOOPING, [hl] ; set loop flag
ld hl, Channel1LoopCount - Channel1
add hl, bc
ld [hl], a ; store loop counter
@@ -1524,7 +1585,7 @@ MusicFD: ; e87cc
; reset loop flag
ld hl, Channel1Flags - Channel1
add hl, bc
- res 2, [hl]
+ res SOUND_LOOPING, [hl]
; skip to next command
ld hl, Channel1MusicAddress - Channel1
add hl, bc
@@ -1537,9 +1598,10 @@ MusicFD: ; e87cc
dec hl
ld [hl], e
ret
+
; e880e
-MusicFA: ; e880e
+Music_SetCondition: ; e880e
; set condition for a jump
; used with FB
; params: 1
@@ -1551,9 +1613,10 @@ MusicFA: ; e880e
add hl, bc
ld [hl], a
ret
+
; e8817
-MusicFB: ; e8817
+Music_JumpIf: ; e8817
; conditional jump
; used with FA
; params: 3
@@ -1584,6 +1647,7 @@ endr
dec hl
ld [hl], e
ret
+
.jump
; jump to the new address
; get pointer
@@ -1598,6 +1662,7 @@ endr
inc hl
ld [hl], d
ret
+
; e883e
MusicEE; e883e
@@ -1610,11 +1675,11 @@ MusicEE; e883e
; if ????, jump
; get channel
ld a, [CurChannel]
- and a, $03 ; ch0-3
+ and $3 ; ch0-3
ld e, a
- ld d, $00
- ; hl = wc2b8 + channel id
- ld hl, wc2b8
+ ld d, 0
+ ; hl = Channel1JumpCondition + channel id
+ ld hl, Channel1JumpCondition
add hl, de
; if set, jump
ld a, [hl]
@@ -1636,9 +1701,10 @@ endr
dec hl
ld [hl], e
ret
+
.jump
; reset jump flag
- ld [hl], $00
+ ld [hl], 0
; de = pointer
call GetMusicByte
ld e, a
@@ -1651,31 +1717,34 @@ endr
inc hl
ld [hl], d
ret
+
; e886d
MusicF9: ; e886d
; sets some flag
; seems to be unused
; params: 0
- ld a, $01
+ ld a, 1
ld [wc2b5], a
ret
+
; e8873
MusicE2: ; e8873
; seems to have been dummied out
; params: 1
call GetMusicByte
- ld hl, $002c
+ ld hl, Channel1Field0x2c - Channel1
add hl, bc
ld [hl], a
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 3, [hl]
+ set SOUND_UNKN_0B, [hl]
ret
+
; e8882
-MusicE1: ; e8882
+Music_Vibrato: ; e8882
; vibrato
; params: 2
; 1: [xx]
@@ -1687,11 +1756,11 @@ MusicE1: ; e8882
; set vibrato flag?
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 0, [hl]
+ set SOUND_VIBRATO, [hl]
; start at lower frequency (extent is positive)
ld hl, Channel1Flags3 - Channel1
add hl, bc
- res 0, [hl]
+ res SOUND_VIBRATO_DIR, [hl]
; get delay
call GetMusicByte
; update delay
@@ -1710,11 +1779,11 @@ MusicE1: ; e8882
add hl, bc
ld d, a
; get top nybble
- and a, $f0
+ and $f0
swap a
srl a ; halve
ld e, a
- adc a, $00 ; round up
+ adc a, 0; round up
swap a
or e
ld [hl], a
@@ -1723,12 +1792,13 @@ MusicE1: ; e8882
add hl, bc
; get bottom nybble
ld a, d
- and a, $0f
+ and $f
ld d, a
swap a
or d
ld [hl], a
ret
+
; e88bd
MusicE0: ; e88bd
@@ -1736,33 +1806,36 @@ MusicE0: ; e88bd
; params: 2
call GetMusicByte
ld [wc297], a
+
call GetMusicByte
ld d, a
- and a, $0f
+ and $f
ld e, a
+
ld a, d
swap a
- and a, $0f
+ and $f
ld d, a
call GetFrequency
- ld hl, $0021
+ ld hl, Channel1Field0x21 - Channel1
add hl, bc
ld [hl], e
- ld hl, $0022
+ ld hl, Channel1Field0x22 - Channel1
add hl, bc
ld [hl], d
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 1, [hl]
+ set SOUND_UNKN_09, [hl]
ret
+
; e88e4
-MusicE6: ; e88e4
+Music_Tone: ; e88e4
; tone
; params: 2
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 4, [hl]
+ set SOUND_CRY_PITCH, [hl]
ld hl, Channel1CryPitch + 1 - Channel1
add hl, bc
call GetMusicByte
@@ -1770,19 +1843,21 @@ MusicE6: ; e88e4
call GetMusicByte
ld [hl], a
ret
+
; e88f7
MusicE7: ; e88f7
-; shrug
+; unused
; params: 1
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 6, [hl]
+ set SOUND_UNKN_0E, [hl]
call GetMusicByte
- ld hl, $0029
+ ld hl, Channel1Field0x29 - Channel1
add hl, bc
ld [hl], a
ret
+
; e8906
MusicDE: ; e8906
@@ -1791,50 +1866,54 @@ MusicDE: ; e8906
;
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 2, [hl] ; duty cycle
+ set SOUND_DUTY, [hl] ; duty cycle
;
call GetMusicByte
rrca
rrca
- ld hl, $001c
+ ld hl, Channel1Field0x1c - Channel1
add hl, bc
ld [hl], a
; update duty cycle
- and a, $c0 ; only uses top 2 bits
+ and $c0 ; only uses top 2 bits
ld hl, Channel1DutyCycle - Channel1
add hl, bc
ld [hl], a
ret
+
; e891e
MusicE8: ; e891e
-; shrug
+; unused
; params: 1
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 5, [hl]
+ set SOUND_UNKN_0D, [hl]
call GetMusicByte
- ld hl, $002a
+ ld hl, Channel1Field0x2a - Channel1
add hl, bc
ld [hl], a
ret
+
; e892d
-MusicDF: ; e892d
+Music_ToggleSFX: ; e892d
; toggle something
; params: none
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 3, [hl]
+ bit SOUND_SFX, [hl]
jr z, .on
- res 3, [hl]
+ res SOUND_SFX, [hl]
ret
+
.on
- set 3, [hl]
+ set SOUND_SFX, [hl]
ret
+
; e893b
-MusicE3: ; e893b
+Music_ToggleNoise: ; e893b
; toggle music noise sampling
; can't be used as a straight toggle since the param is not read from on->off
; params:
@@ -1843,20 +1922,22 @@ MusicE3: ; e893b
; check if noise sampling is on
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 4, [hl]
+ bit SOUND_NOISE, [hl]
jr z, .on
; turn noise sampling off
- res 4, [hl]
+ res SOUND_NOISE, [hl]
ret
+
.on
; turn noise sampling on
- set 4, [hl]
+ set SOUND_NOISE, [hl]
call GetMusicByte
ld [MusicNoiseSampleSet], a
ret
+
; e894f
-MusicF0: ; e894f
+Music_SFXToggleNoise: ; e894f
; toggle sfx noise sampling
; params:
; on: 1
@@ -1864,63 +1945,68 @@ MusicF0: ; e894f
; check if noise sampling is on
ld hl, Channel1Flags - Channel1
add hl, bc
- bit 4, [hl]
+ bit SOUND_NOISE, [hl]
jr z, .on
; turn noise sampling off
- res 4, [hl]
+ res SOUND_NOISE, [hl]
ret
+
.on
; turn noise sampling on
- set 4, [hl]
+ set SOUND_NOISE, [hl]
call GetMusicByte
ld [SFXNoiseSampleSet], a
ret
+
; e8963
-MusicD8: ; e8963
+Music_NoteType: ; e8963
; note length
; # frames per 16th note
-; intensity: see MusicDC
+; intensity: see Music_Intensity
; params: 2
; note length
call GetMusicByte
- ld hl, $002d
+ ld hl, Channel1NoteLength - Channel1
add hl, bc
ld [hl], a
ld a, [CurChannel]
- and a, $03
- cp a, $03
+ and $3
+ cp CHAN4 ; CHAN8 & $3
ret z
; intensity
- call MusicDC
+ call Music_Intensity
ret
+
; e8977
-MusicDD: ; e8977
+Music_SoundStatus: ; e8977
; update sound status
; params: 1
call GetMusicByte
ld [SoundInput], a
ld hl, Channel1NoteFlags - Channel1
add hl, bc
- set 3, [hl]
+ set NOTE_UNKN_3, [hl]
ret
+
; e8984
-MusicDB: ; e8984
+Music_DutyCycle: ; e8984
; duty cycle
; params: 1
call GetMusicByte
rrca
rrca
- and a, $c0
+ and $c0
ld hl, Channel1DutyCycle - Channel1
add hl, bc
ld [hl], a
ret
+
; e8991
-MusicDC: ; e8991
+Music_Intensity: ; e8991
; intensity
; params: 1
; hi: pressure
@@ -1930,9 +2016,10 @@ MusicDC: ; e8991
add hl, bc
ld [hl], a
ret
+
; e899a
-MusicDA: ; e899a
+Music_Tempo: ; e899a
; global tempo
; params: 2
; de: tempo
@@ -1942,16 +2029,17 @@ MusicDA: ; e899a
ld e, a
call SetGlobalTempo
ret
+
; e89a6
-MusicD0: ; e89a6
-MusicD1: ; e89a6
-MusicD2: ; e89a6
-MusicD3: ; e89a6
-MusicD4: ; e89a6
-MusicD5: ; e89a6
-MusicD6: ; e89a6
-MusicD7: ; e89a6
+Music_Octave8: ; e89a6
+Music_Octave7: ; e89a6
+Music_Octave6: ; e89a6
+Music_Octave5: ; e89a6
+Music_Octave4: ; e89a6
+Music_Octave3: ; e89a6
+Music_Octave2: ; e89a6
+Music_Octave1: ; e89a6
; set octave based on lo nybble of the command
ld hl, Channel1Octave - Channel1
add hl, bc
@@ -1959,9 +2047,10 @@ MusicD7: ; e89a6
and 7
ld [hl], a
ret
+
; e89b1
-MusicD9: ; e89b1
+Music_ForceOctave: ; e89b1
; set starting octave
; this forces all notes up by the starting octave
; params: 1
@@ -1970,21 +2059,23 @@ MusicD9: ; e89b1
add hl, bc
ld [hl], a
ret
+
; e89ba
-MusicEF: ; e89ba
+Music_StereoPanning: ; e89ba
; stereo panning
; params: 1
; stereo on?
ld a, [Options]
bit 5, a ; stereo
- jr nz, MusicE4
+ jr nz, Music_Panning
; skip param
call GetMusicByte
ret
+
; e89c5
-MusicE4: ; e89c5
+Music_Panning: ; e89c5
; force panning
; params: 1
call SetLRTracks
@@ -1994,9 +2085,10 @@ MusicE4: ; e89c5
and [hl]
ld [hl], a
ret
+
; e89d2
-MusicE5: ; e89d2
+Music_Volume: ; e89d2
; set volume
; params: 1
; see Volume
@@ -2011,21 +2103,23 @@ MusicE5: ; e89d2
; set volume
ld [Volume], a
ret
+
; e89e1
-MusicE9: ; e89e1
+Music_TempoRelative: ; e89e1
; set global tempo to current channel tempo +- param
; params: 1 signed
call GetMusicByte
ld e, a
; check sign
- cp a, $80
+ cp $80
jr nc, .negative
;positive
- ld d, $00
+ ld d, 0
jr .ok
+
.negative
- ld d, $ff
+ ld d, -1
.ok
ld hl, Channel1Tempo - Channel1
add hl, bc
@@ -2037,25 +2131,28 @@ MusicE9: ; e89e1
ld d, h
call SetGlobalTempo
ret
+
; e89fd
-MusicEC: ; e89fd
+Music_SFXPriorityOn: ; e89fd
; turn sfx priority on
; params: none
- ld a, $01
+ ld a, 1
ld [SFXPriority], a
ret
+
; e8a03
-MusicED: ; e8a03
+Music_SFXPriorityOff: ; e8a03
; turn sfx priority off
; params: none
xor a
ld [SFXPriority], a
ret
+
; e8a08
-MusicEA: ; e8a08
+Music_RestartChannel: ; e8a08
; restart current channel from channel header (same bank)
; params: 2 (5)
; ll hh: pointer to new channel header
@@ -2088,9 +2185,10 @@ MusicEA: ; e8a08
call StartChannel
pop bc ; restore current channel
ret
+
; e8a30
-MusicEB: ; e8a30
+Music_NewSong: ; e8a30
; new song
; params: 2
; de: song id
@@ -2102,6 +2200,7 @@ MusicEB: ; e8a30
call _PlayMusic
pop bc
ret
+
; e8a3e
GetMusicByte: ; e8a3e
@@ -2135,6 +2234,7 @@ GetMusicByte: ; e8a3e
; store channeldata in a
ld a, [CurMusicByte]
ret
+
; e8a5d
GetFrequency: ; e8a5d
@@ -2151,7 +2251,7 @@ GetFrequency: ; e8a5d
add hl, bc
ld a, [hl]
swap a ; hi nybble
- and a, $0f
+ and $f
; add current octave
add d
push af ; we'll use this later
@@ -2159,10 +2259,10 @@ GetFrequency: ; e8a5d
ld hl, Channel1StartingOctave - Channel1
add hl, bc
ld a, [hl]
- and a, $0f ; lo nybble
+ and $f ; lo nybble
;
ld l, a ; ok
- ld d, $00
+ ld d, 0
ld h, d
add hl, de ; add current pitch
add hl, hl ; skip 2 bytes for each
@@ -2173,20 +2273,23 @@ GetFrequency: ; e8a5d
ld d, [hl]
; get our octave
pop af
+ ; shift right by [7 - octave] bits
.loop
; [7 - octave] loops
- cp a, $07
+ cp $7
jr nc, .ok
; sra de
sra d
rr e
inc a
jr .loop
+
.ok
ld a, d
- and a, $07 ; top 3 bits for frequency (11 total)
+ and $7 ; top 3 bits for frequency (11 total)
ld d, a
ret
+
; e8a8d
SetNoteDuration: ; e8a8d
@@ -2194,14 +2297,14 @@ SetNoteDuration: ; e8a8d
; store delay units in de
inc a
ld e, a
- ld d, $00
+ ld d, 0
; store NoteLength in a
ld hl, Channel1NoteLength - Channel1
add hl, bc
ld a, [hl]
; multiply NoteLength by delay units
- ld l, $00 ; just multiply
- call MultiplySimple
+ ld l, 0; just multiply
+ call .Multiply
ld a, l ; % $100
; store Tempo in de
ld hl, Channel1Tempo - Channel1
@@ -2210,16 +2313,16 @@ SetNoteDuration: ; e8a8d
inc hl
ld d, [hl]
; add ???? to the next result
- ld hl, $0016
+ ld hl, Channel1Field0x16 - Channel1
add hl, bc
ld l, [hl]
; multiply Tempo by last result (NoteLength * delay % $100)
- call MultiplySimple
+ call .Multiply
; copy result to de
ld e, l
ld d, h
; store result in ????
- ld hl, $0016
+ ld hl, Channel1Field0x16 - Channel1
add hl, bc
ld [hl], e
; store result in NoteDuration
@@ -2227,13 +2330,14 @@ SetNoteDuration: ; e8a8d
add hl, bc
ld [hl], d
ret
+
; e8ab8
-MultiplySimple: ; e8ab8
+.Multiply: ; e8ab8
; multiplies a and de
; adds the result to l
; stores the result in hl
- ld h, $00
+ ld h, 0
.loop
; halve a
srl a
@@ -2249,38 +2353,41 @@ MultiplySimple: ; e8ab8
and a
jr nz, .loop
ret
+
; e8ac7
SetGlobalTempo: ; e8ac7
push bc ; save current channel
; are we dealing with music or sfx?
ld a, [CurChannel]
- cp a, $04
+ cp CHAN5
jr nc, .sfxchannels
ld bc, Channel1
- call SetTempo
+ call Tempo
ld bc, Channel2
- call SetTempo
+ call Tempo
ld bc, Channel3
- call SetTempo
+ call Tempo
ld bc, Channel4
- call SetTempo
+ call Tempo
jr .end
+
.sfxchannels
ld bc, Channel5
- call SetTempo
+ call Tempo
ld bc, Channel6
- call SetTempo
+ call Tempo
ld bc, Channel7
- call SetTempo
+ call Tempo
ld bc, Channel8
- call SetTempo
+ call Tempo
.end
pop bc ; restore current channel
ret
+
; e8b03
-SetTempo: ; e8b03
+Tempo: ; e8b03
; input:
; de: note length
; update Tempo
@@ -2291,18 +2398,20 @@ SetTempo: ; e8b03
ld [hl], d
; clear ????
xor a
- ld hl, $0016
+ ld hl, Channel1Field0x16 - Channel1
add hl, bc
ld [hl], a
ret
+
; e8b11
StartChannel: ; e8b11
call SetLRTracks
ld hl, Channel1Flags - Channel1
add hl, bc
- set 0, [hl] ; turn channel on
+ set SOUND_CHANNEL_ON, [hl] ; turn channel on
ret
+
; e8b1b
SetLRTracks: ; e8b1b
@@ -2311,9 +2420,9 @@ SetLRTracks: ; e8b1b
push de
; store current channel in de
ld a, [CurChannel]
- and a, $03
+ and $3
ld e, a
- ld d, $00
+ ld d, 0
; get this channel's lr tracks
call GetLRTracks
add hl, de ; de = channel 0-3
@@ -2324,6 +2433,7 @@ SetLRTracks: ; e8b1b
ld [hl], a
pop de
ret
+
; e8b30
_PlayMusic:: ; e8b30
@@ -2332,7 +2442,7 @@ _PlayMusic:: ; e8b30
ld hl, MusicID
ld [hl], e ; song number
inc hl
- ld [hl], d ; MusicIDHi (always $00)
+ ld [hl], d ; MusicIDHi (always $)
ld hl, Music
add hl, de ; three
add hl, de ; byte
@@ -2345,7 +2455,7 @@ _PlayMusic:: ; e8b30
call LoadMusicByte ; store first byte of music header in a
rlca
rlca
- and a, $03 ; get number of channels
+ and $3 ; get number of channels
inc a
.loop
; start playing channels
@@ -2357,16 +2467,17 @@ _PlayMusic:: ; e8b30
jr nz, .loop
xor a
ld [wc2b5], a
- ld [wc2b8], a
- ld [wc2b9], a
- ld [wc2ba], a
- ld [wc2bb], a
+ ld [Channel1JumpCondition], a
+ ld [Channel2JumpCondition], a
+ ld [Channel3JumpCondition], a
+ ld [Channel4JumpCondition], a
ld [NoiseSampleAddressLo], a
ld [NoiseSampleAddressHi], a
- ld [wc2a2], a
+ ld [wNoiseSampleDelay], a
ld [MusicNoiseSampleSet], a
call MusicOn
ret
+
; e8b79
_PlayCryHeader:: ; e8b79
@@ -2400,7 +2511,7 @@ endr
; Top 2 bits contain the number of channels
rlca
rlca
- and a, 3
+ and 3
; For each channel:
inc a
@@ -2410,11 +2521,11 @@ endr
ld hl, Channel1Flags - Channel1
add hl, bc
- set 5, [hl]
+ set SOUND_REST, [hl]
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 4, [hl]
+ set SOUND_CRY_PITCH, [hl]
ld hl, Channel1CryPitch - Channel1
add hl, bc
@@ -2425,7 +2536,7 @@ endr
; No tempo for channel 4
ld a, [CurChannel]
- and a, 3
+ and 3
cp 3
jr nc, .start
@@ -2438,7 +2549,7 @@ endr
ld [hl], a
.start
call StartChannel
- ld a, [wc2bc]
+ ld a, [wStereoPanningMask]
and a
jr z, .next
@@ -2454,7 +2565,7 @@ endr
add hl, bc
ld a, [hl]
ld hl, CryTracks
- and a, [hl]
+ and [hl]
ld hl, Channel1Tracks - Channel1
add hl, bc
ld [hl], a
@@ -2480,18 +2591,19 @@ endr
ld [SFXPriority], a
call MusicOn
ret
+
; e8c04
_PlaySFX:: ; e8c04
; clear channels if they aren't already
call MusicOff
ld hl, Channel5Flags
- bit 0, [hl] ; ch5 on?
+ bit SOUND_CHANNEL_ON, [hl] ; ch5 on?
jr z, .ch6
- res 0, [hl] ; turn it off
+ res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ld [rNR11], a ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [rNR12], a ; envelope = 0
xor a
ld [rNR13], a ; frequency lo = 0
@@ -2502,12 +2614,12 @@ _PlaySFX:: ; e8c04
ld [rNR10], a ; sweep = 0
.ch6
ld hl, Channel6Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr z, .ch7
- res 0, [hl] ; turn it off
+ res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ld [rNR21], a ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [rNR22], a ; envelope = 0
xor a
ld [rNR23], a ; frequency lo = 0
@@ -2515,13 +2627,13 @@ _PlaySFX:: ; e8c04
ld [rNR24], a ; restart sound (freq hi = 0)
.ch7
ld hl, Channel7Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr z, .ch8
- res 0, [hl] ; turn it off
+ res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ld [rNR30], a ; sound mode #3 off
ld [rNR31], a ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [rNR32], a ; envelope = 0
xor a
ld [rNR33], a ; frequency lo = 0
@@ -2529,12 +2641,12 @@ _PlaySFX:: ; e8c04
ld [rNR34], a ; restart sound (freq hi = 0)
.ch8
ld hl, Channel8Flags
- bit 0, [hl]
+ bit SOUND_CHANNEL_ON, [hl]
jr z, .chscleared
- res 0, [hl] ; turn it off
+ res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ld [rNR41], a ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [rNR42], a ; envelope = 0
xor a
ld [rNR43], a ; frequency lo = 0
@@ -2564,14 +2676,14 @@ _PlaySFX:: ; e8c04
call LoadMusicByte
rlca ; top 2
rlca ; bits
- and a, $03
+ and $3
inc a ; # channels -> # loops
.startchannels
push af
call LoadChannel ; bc = current channel
ld hl, Channel1Flags - Channel1
add hl, bc
- set 3, [hl]
+ set SOUND_SFX, [hl]
call StartChannel
pop af
dec a
@@ -2580,6 +2692,7 @@ _PlaySFX:: ; e8c04
xor a
ld [SFXPriority], a
ret
+
; e8ca6
@@ -2626,54 +2739,54 @@ endr
ld hl, Channel1Flags - Channel1
add hl, bc
- set 3, [hl]
+ set SOUND_SFX, [hl]
push de
; get tracks for this channel
ld a, [CurChannel]
and 3 ; ch1-4
ld e, a
- ld d, $0
+ ld d, 0
call GetLRTracks
add hl, de
ld a, [hl]
- ld hl, wc2bc
+ ld hl, wStereoPanningMask
and [hl]
ld hl, Channel1Tracks - Channel1
add hl, bc
ld [hl], a
- ld hl, $0030 ; $c131 - Channel1
+ ld hl, Channel1Field0x30 - Channel1 ; $c131 - Channel1
add hl, bc
ld [hl], a
ld a, [CryTracks]
cp 2 ; ch 1-2
- jr c, .asm_e8d0c
+ jr c, .skip
; ch3-4
- ld a, [wc2be]
+ ld a, [wSFXDuration]
- ld hl, $002e ; $c12f - Channel1
+ ld hl, Channel1Field0x2e - Channel1 ; $c12f - Channel1
add hl, bc
ld [hl], a
- ld hl, $002f ; $c130 - Channel1
+ ld hl, Channel1Field0x2f - Channel1 ; $c130 - Channel1
add hl, bc
ld [hl], a
ld hl, Channel1Flags2 - Channel1
add hl, bc
- set 7, [hl]
+ set SOUND_UNKN_0F, [hl]
-.asm_e8d0c
+.skip
pop de
; turn channel on
ld hl, Channel1Flags - Channel1
add hl, bc
- set 0, [hl] ; on
+ set SOUND_CHANNEL_ON, [hl] ; on
; done?
pop af
@@ -2683,6 +2796,7 @@ endr
; we're done
call MusicOn
ret
+
; e8d1b
@@ -2693,10 +2807,10 @@ LoadChannel: ; e8d1b
; get pointer to current channel
call LoadMusicByte
inc de
- and a, $07 ; bit 0-2 (current channel)
+ and $7 ; bit 0-2 (current channel)
ld [CurChannel], a
ld c, a
- ld b, $00
+ ld b, 0
ld hl, ChannelPointers
rept 2
add hl, bc
@@ -2706,7 +2820,7 @@ endr
ld b, [hl] ; bc = channel pointer
ld hl, Channel1Flags - Channel1
add hl, bc
- res 0, [hl] ; channel off
+ res SOUND_CHANNEL_ON, [hl] ; channel off
call ChannelInit
; load music pointer
ld hl, Channel1MusicAddress - Channel1
@@ -2730,6 +2844,7 @@ endr
ld a, [MusicBank]
ld [hl], a
ret
+
; e8d5b
ChannelInit: ; e8d5b
@@ -2755,12 +2870,13 @@ ChannelInit: ; e8d5b
ld [hli], a
inc a
ld [hl], a
- ; set note length to default ($01) (fast)
+ ; set note length to default ($1) (fast)
ld hl, Channel1NoteLength - Channel1
add hl, bc
ld [hl], a
pop de
ret
+
; e8d76
LoadMusicByte:: ; e8d76
@@ -2772,6 +2888,7 @@ LoadMusicByte:: ; e8d76
call _LoadMusicByte
ld a, [CurMusicByte]
ret
+
; e8d80
FrequencyTable: ; e8d80
@@ -2805,16 +2922,16 @@ FrequencyTable: ; e8d80
WaveSamples: ; e8db2
; these are streams of 32 4-bit values used as wavepatterns
; nothing interesting here!
- db $02, $46, $8a, $ce, $ff, $fe, $ed, $dc, $cb, $a9, $87, $65, $44, $33, $22, $11
- db $02, $46, $8a, $ce, $ef, $ff, $fe, $ee, $dd, $cb, $a9, $87, $65, $43, $22, $11
- db $13, $69, $bd, $ee, $ee, $ff, $ff, $ed, $de, $ff, $ff, $ee, $ee, $db, $96, $31
- db $02, $46, $8a, $cd, $ef, $fe, $de, $ff, $ee, $dc, $ba, $98, $76, $54, $32, $10
- db $01, $23, $45, $67, $8a, $cd, $ee, $f7, $7f, $ee, $dc, $a8, $76, $54, $32, $10
- db $00, $11, $22, $33, $44, $33, $22, $11, $ff, $ee, $cc, $aa, $88, $aa, $cc, $ee
- db $02, $46, $8a, $ce, $cb, $a9, $87, $65, $ff, $fe, $ed, $dc, $44, $33, $22, $11
- db $c0, $a9, $87, $f5, $ff, $fe, $ed, $dc, $44, $33, $22, $f1, $02, $46, $8a, $ce
- db $44, $33, $22, $1f, $00, $46, $8a, $ce, $f8, $fe, $ed, $dc, $cb, $a9, $87, $65
- db $11, $00, $00, $08, $00, $13, $57, $9a, $b4, $ba, $a9, $98, $87, $65, $43, $21
+ dn 0, 2, 4, 6, 8, 10, 12, 14, 15, 15, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1
+ dn 0, 2, 4, 6, 8, 10, 12, 14, 14, 15, 15, 15, 15, 14, 14, 14, 13, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 1, 1
+ dn 1, 3, 6, 9, 11, 13, 14, 14, 14, 14, 15, 15, 15, 15, 14, 13, 13, 14, 15, 15, 15, 15, 14, 14, 14, 14, 13, 11, 9, 6, 3, 1
+ dn 0, 2, 4, 6, 8, 10, 12, 13, 14, 15, 15, 14, 13, 14, 15, 15, 14, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
+ dn 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 14, 15, 7, 7, 15, 14, 14, 13, 12, 10, 8, 7, 6, 5, 4, 3, 2, 1, 0
+ dn 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 3, 3, 2, 2, 1, 1, 15, 15, 14, 14, 12, 12, 10, 10, 8, 8, 10, 10, 12, 12, 14, 14
+ dn 0, 2, 4, 6, 8, 10, 12, 14, 12, 11, 10, 9, 8, 7, 6, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 1, 1
+ dn 12, 0, 10, 9, 8, 7, 15, 5, 15, 15, 15, 14, 14, 13, 13, 12, 4, 4, 3, 3, 2, 2, 15, 1, 0, 2, 4, 6, 8, 10, 12, 14
+ dn 4, 4, 3, 3, 2, 2, 1, 15, 0, 0, 4, 6, 8, 10, 12, 14, 15, 8, 15, 14, 14, 13, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5
+ dn 1, 1, 0, 0, 0, 0, 0, 8, 0, 0, 1, 3, 5, 7, 9, 10, 11, 4, 11, 10, 10, 9, 9, 8, 8, 7, 6, 5, 4, 3, 2, 1
; e8e52
Drumkits: ; e8e52
@@ -2914,209 +3031,209 @@ Drumkit5: ; e8ee0
Drum00: ; e8efa
; unused
- noise $20, $11, $00
- db $ff ; end
+ noise C#, 1, $11, $00
+ endchannel
; e8efe
Snare1: ; e8efe
- noise $20, $c1, $33
- db $ff ; end
+ noise C#, 1, $c1, $33
+ endchannel
; e8f02
Snare2: ; e8f02
- noise $20, $b1, $33
- db $ff ; end
+ noise C#, 1, $b1, $33
+ endchannel
; e8f06
Snare3: ; e8f06
- noise $20, $a1, $33
- db $ff ; end
+ noise C#, 1, $a1, $33
+ endchannel
; e8f0a
Snare4: ; e8f0a
- noise $20, $81, $33
- db $ff ; end
+ noise C#, 1, $81, $33
+ endchannel
; e8f0e
Drum05: ; e8f0e
- noise $27, $84, $37
- noise $26, $84, $36
- noise $25, $83, $35
- noise $24, $83, $34
- noise $23, $82, $33
- noise $22, $81, $32
- db $ff ; end
+ noise C#, 8, $84, $37
+ noise C#, 7, $84, $36
+ noise C#, 6, $83, $35
+ noise C#, 5, $83, $34
+ noise C#, 4, $82, $33
+ noise C#, 3, $81, $32
+ endchannel
; e8f21
Triangle1: ; e8f21
- noise $20, $51, $2a
- db $ff ; end
+ noise C#, 1, $51, $2a
+ endchannel
; e8f25
Triangle2: ; e8f25
- noise $21, $41, $2b
- noise $20, $61, $2a
- db $ff ; end
+ noise C#, 2, $41, $2b
+ noise C#, 1, $61, $2a
+ endchannel
; e8f2c
HiHat1: ; e8f2c
- noise $20, $81, $10
- db $ff ; end
+ noise C#, 1, $81, $10
+ endchannel
; e8f30
Snare5: ; e8f30
- noise $20, $82, $23
- db $ff ; end
+ noise C#, 1, $82, $23
+ endchannel
; e8f34
Snare6: ; e8f34
- noise $20, $82, $25
- db $ff ; end
+ noise C#, 1, $82, $25
+ endchannel
; e8f38
Snare7: ; e8f38
- noise $20, $82, $26
- db $ff ; end
+ noise C#, 1, $82, $26
+ endchannel
; e8f3c
HiHat2: ; e8f3c
- noise $20, $a1, $10
- db $ff ; end
+ noise C#, 1, $a1, $10
+ endchannel
; e8f40
HiHat3: ; e8f40
- noise $20, $a2, $11
- db $ff ; end
+ noise C#, 1, $a2, $11
+ endchannel
; e8f44
Snare8: ; e8f44
- noise $20, $a2, $50
- db $ff ; end
+ noise C#, 1, $a2, $50
+ endchannel
; e8f48
Triangle3: ; e8f48
- noise $20, $a1, $18
- noise $20, $31, $33
- db $ff ; end
+ noise C#, 1, $a1, $18
+ noise C#, 1, $31, $33
+ endchannel
; e8f4f
Triangle4: ; e8f4f
- noise $22, $91, $28
- noise $20, $71, $18
- db $ff ; end
+ noise C#, 3, $91, $28
+ noise C#, 1, $71, $18
+ endchannel
; e8f56
Snare9: ; e8f56
- noise $20, $91, $22
- db $ff ; end
+ noise C#, 1, $91, $22
+ endchannel
; e8f5a
Snare10: ; e8f5a
- noise $20, $71, $22
- db $ff ; end
+ noise C#, 1, $71, $22
+ endchannel
; e8f5e
Snare11: ; e8f5e
- noise $20, $61, $22
- db $ff ; end
+ noise C#, 1, $61, $22
+ endchannel
; e8f62
Drum20: ; e8f62
- noise $20, $11, $11
- db $ff ; end
+ noise C#, 1, $11, $11
+ endchannel
; e8f66
Drum21: ; e8f66
- db $ff
+ endchannel
; e8f67
Snare12: ; e8f67
- noise $20, $91, $33
- db $ff ; end
+ noise C#, 1, $91, $33
+ endchannel
; e8f6b
Snare13: ; e8f6b
- noise $20, $51, $32
- db $ff ; end
+ noise C#, 1, $51, $32
+ endchannel
; e8f6f
Snare14: ; e8f6f
- noise $20, $81, $31
- db $ff ; end
+ noise C#, 1, $81, $31
+ endchannel
; e8f73
Kick1: ; e8f73
- noise $20, $88, $6b
- noise $20, $71, $00
- db $ff ; end
+ noise C#, 1, $88, $6b
+ noise C#, 1, $71, $00
+ endchannel
; e8f7a
Triangle5: ; e8f7a
- noise $30, $91, $18
- db $ff ; end
+ noise D_, 1, $91, $18
+ endchannel
; e8f7e
Drum27: ; e8f7e
- noise $27, $92, $10
- db $ff ; end
+ noise C#, 8, $92, $10
+ endchannel
; e8f82
Drum28: ; e8f82
- noise $33, $91, $00
- noise $33, $11, $00
- db $ff ; end
+ noise D_, 4, $91, $00
+ noise D_, 4, $11, $00
+ endchannel
; e8f89
Drum29: ; e8f89
- noise $33, $91, $11
- noise $33, $11, $00
- db $ff ; end
+ noise D_, 4, $91, $11
+ noise D_, 4, $11, $00
+ endchannel
; e8f90
Crash1: ; e8f90
- noise $33, $88, $15
- noise $20, $65, $12
- db $ff ; end
+ noise D_, 4, $88, $15
+ noise C#, 1, $65, $12
+ endchannel
; e8f97
Drum31: ; e8f97
- noise $33, $51, $21
- noise $33, $11, $11
- db $ff ; end
+ noise D_, 4, $51, $21
+ noise D_, 4, $11, $11
+ endchannel
; e8f9e
Drum32: ; e8f9e
- noise $33, $51, $50
- noise $33, $11, $11
- db $ff ; end
+ noise D_, 4, $51, $50
+ noise D_, 4, $11, $11
+ endchannel
; e8fa5
Drum33: ; e8fa5
- noise $20, $a1, $31
- db $ff ; end
+ noise C#, 1, $a1, $31
+ endchannel
; e8fa9
Crash2: ; e8fa9
- noise $20, $84, $12
- db $ff ; end
+ noise C#, 1, $84, $12
+ endchannel
; e8fad
Drum35: ; e8fad
- noise $33, $81, $00
- noise $33, $11, $00
- db $ff ; end
+ noise D_, 4, $81, $00
+ noise D_, 4, $11, $00
+ endchannel
; e8fb4
Drum36: ; e8fb4
- noise $33, $81, $21
- noise $33, $11, $11
- db $ff ; end
+ noise D_, 4, $81, $21
+ noise D_, 4, $11, $11
+ endchannel
; e8fbb
Kick2: ; e8fbb
- noise $20, $a8, $6b
- noise $20, $71, $00
- db $ff ; end
+ noise C#, 1, $a8, $6b
+ noise C#, 1, $71, $00
+ endchannel
; e8fc2
GetLRTracks: ; e8fc2
@@ -3128,9 +3245,11 @@ GetLRTracks: ; e8fc2
jr nz, .stereo
ld hl, MonoTracks
ret
+
.stereo
ld hl, StereoTracks
ret
+
; e8fd1
MonoTracks: ; e8fd1
@@ -3170,12 +3289,13 @@ endr
ld a, $80
ld [hli], a
ld hl, rNR10
- ld e, $04
+ ld e, $4
.loop
call ClearChannel
dec e
jr nz, .loop
ret
+
; e8ffe
ClearChannel: ; e8ffe
@@ -3187,11 +3307,12 @@ ClearChannel: ; e8ffe
ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
- ld a, $08
+ ld a, $8
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
xor a
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
ld a, $80
ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
ret
+
; e900a