summaryrefslogtreecommitdiff
path: root/audio/engine.asm
diff options
context:
space:
mode:
Diffstat (limited to 'audio/engine.asm')
-rw-r--r--audio/engine.asm62
1 files changed, 36 insertions, 26 deletions
diff --git a/audio/engine.asm b/audio/engine.asm
index 71a1f8829..a9143e57c 100644
--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -539,47 +539,57 @@ PlayDanger: ; e8307
ld a, [wLowHealthAlarm]
bit DANGER_ON_F, a
ret z
+
+ ; Don't do anything if SFX is being played
and $ff ^ (1 << DANGER_ON_F)
ld d, a
call _CheckSFX
- jr c, .asm_e8335
+ jr c, .increment
+
+ ; Play the high tone
and a
- jr z, .asm_e8323
- cp 16 ; halfway
- jr z, .asm_e831e
- jr .asm_e8335
-
-.asm_e831e
- ld hl, Tablee8354
- jr .updatehw
-
-.asm_e8323
- ld hl, Tablee8350
-.updatehw
+ jr z, .begin
+
+ ; Play the low tone
+ cp 16
+ jr z, .halfway
+
+ jr .increment
+
+.halfway
+ ld hl, DangerSoundLow
+ jr .applychannel
+
+.begin
+ ld hl, DangetSoundHigh
+
+.applychannel
xor a
- ld [rNR10], a ; sweep off
+ ld [rNR10], a
ld a, [hli]
- ld [rNR11], a ; sound length / duty cycle
+ ld [rNR11], a
ld a, [hli]
- ld [rNR12], a ; ch1 volume envelope
+ ld [rNR12], a
ld a, [hli]
- ld [rNR13], a ; ch1 frequency lo
+ ld [rNR13], a
ld a, [hli]
- ld [rNR14], a ; ch1 frequency hi
-.asm_e8335
+ ld [rNR14], a
+
+.increment
ld a, d
inc a
- cp 30
- jr c, .asm_e833c
+ cp 30 ; Ending frame
+ jr c, .noreset
xor a
-.asm_e833c
+.noreset
+ ; Make sure the danger sound is kept on
or 1 << DANGER_ON_F
ld [wLowHealthAlarm], a
- ; is hw ch1 on?
+
+ ; Enable channel 1 if it's off
ld a, [wSoundOutput]
and $11
ret nz
- ; if not, turn it on
ld a, [wSoundOutput]
or $11
ld [wSoundOutput], a
@@ -587,14 +597,14 @@ PlayDanger: ; e8307
; e8350
-Tablee8350: ; e8350
+DangetSoundHigh: ; e8350
db $80 ; duty 50%
db $e2 ; volume 14, envelope decrease sweep 2
db $50 ; frequency: $750
db $87 ; restart sound
; e8354
-Tablee8354: ; e8354
+DangerSoundLow: ; e8354
db $80 ; duty 50%
db $e2 ; volume 14, envelope decrease sweep 2
db $ee ; frequency: $6ee