From e74812eb87574c625a28c1fe8e35cd6708ec6c88 Mon Sep 17 00:00:00 2001 From: Javier Degirolmo Date: Tue, 8 Nov 2011 20:42:48 -0300 Subject: Cleanup and bugfixes. SFXs now restore BGM volume when unlocking, but seems still buggy. --- src-z80/core/bgm.z80 | 53 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 16 deletions(-) (limited to 'src-z80/core/bgm.z80') diff --git a/src-z80/core/bgm.z80 b/src-z80/core/bgm.z80 index f69235d..c1650f1 100644 --- a/src-z80/core/bgm.z80 +++ b/src-z80/core/bgm.z80 @@ -210,38 +210,59 @@ ClearBGM: or a call z, StopPCM - ld b, 4 ; Mute all non-locked PSG channels - ld de, RAM_PSGData+48 +;---------------------------------------------------------------------------- + + ld b, 4 ; Reset all PSG channels + ld de, RAM_PSGData+48+15 ld hl, RAM_Locked+11 .mutepsg: PollPCM - ld a, (hl) + + ld (hl), $00 ; Reset BGM volume + + ld a, e + sub 15 + ld e, a + + ld a, (hl) ; Mute PSG channel if it isn't locked or a jr nz, .nopsgmute xor a ld (de), a + .nopsgmute: PollPCM - ld a, e - sub 16 - ld e, a + + dec e dec l djnz .mutepsg - ld b, 8 ; Mute all non-locked FM channels -.mutefm: +;---------------------------------------------------------------------------- + + ld b, 8 ; Reset all FM channels + ld de, RAM_BGMFMVol+7 +.resetfm: PollPCM - ld a, (hl) + + xor a ; Reset BGM volume + ld (de), a + dec e + + ld a, (hl) ; Kill FM channel if not locked or a - jr nz, .nofmmute + jp nz, .nofmkill + PollPCM - dec b - ld (ix+0), $28 - ld (ix+1), b - inc b -.nofmmute: + + ld a, b + dec a + call KillFM + +.nofmkill: dec l - djnz .mutefm + djnz .resetfm + +;---------------------------------------------------------------------------- ret ; End of subroutine -- cgit v1.2.3