Browse Source

SN76489: Do not play when period is overflowing

pull/115/head
Dean Netherton 6 years ago
parent
commit
9cdbc5b981
  1. 6
      Source/Apps/Tune/Tune.asm
  2. 23
      Source/HBIOS/sn76489.asm

6
Source/Apps/Tune/Tune.asm

@ -2002,7 +2002,7 @@ PLAYVIAHBIOS:
LD C, 0
LD HL, (AYREGS+TonA)
ld a, h
AND $3F
AND $0F
LD H, A
RST 08
@ -2027,7 +2027,7 @@ PLAYVIAHBIOS:
LD C, 0
LD HL, (AYREGS+TonB)
ld a, h
AND $3F
AND $0F
LD H, A
RST 08
@ -2052,7 +2052,7 @@ PLAYVIAHBIOS:
LD C, 0
LD HL, (AYREGS+TonC)
ld a, h
AND $3F
AND $0F
LD H, A
RST 08

23
Source/HBIOS/sn76489.asm

@ -156,8 +156,12 @@ SN7_PITCH:
XOR A ; SIGNAL SUCCESS
RET
SN7_QUERY_PITCH1:
OR $FF
SN7_QUERY_PITCH1: ; REQUESTED PERIOD IS LARGER THAN THE SN76489 CAN SUPPORT
LD L, $FF
LD H, $FF
LD (PENDING_PITCH), HL
OR $FF ; SIGNAL FAILURE
RET
SN7_PLAY:
@ -165,12 +169,27 @@ SN7_PLAY:
AUDTRACE_D
AUDDEBUG("\r\n")
LD A, (PENDING_PITCH + 1)
CP $FF
JR Z, SN7_PLAY1 ; PERIOD IS TOO LARGE, UNABLE TO PLAY
CALL SN7_APPLY_VOL
CALL SN7_APPLY_PIT
XOR A ; SIGNAL SUCCESS
RET
SN7_PLAY1: ; TURN CHANNEL VOL TO OFF AND STOP PLAYING
LD A, (PENDING_VOLUME)
PUSH AF
LD A, 0
LD (PENDING_VOLUME), A
CALL SN7_APPLY_VOL
POP AF
LD (PENDING_VOLUME), A
OR $FF ; SIGNAL FAILURE
RET
SN7_QUERY:
LD A, E
CP BF_SNDQ_CHCNT

Loading…
Cancel
Save