summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhokh20012014-10-29 01:37:42 +0900
committerkhokh20012014-10-29 01:37:42 +0900
commit98e1771a832f0843d1a8be344894c0c77bd5f8fd (patch)
tree0b4bb4dc03945b10d449c837333806762bea1b64
parent5e064562c09ceb5b93a4ddafe734cdb6c7b081c6 (diff)
downloadchocolate-doom-98e1771a832f0843d1a8be344894c0c77bd5f8fd.tar.gz
chocolate-doom-98e1771a832f0843d1a8be344894c0c77bd5f8fd.tar.bz2
chocolate-doom-98e1771a832f0843d1a8be344894c0c77bd5f8fd.zip
opl note limitation and octave overflow fixes
-rw-r--r--src/i_oplmusic.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/i_oplmusic.c b/src/i_oplmusic.c
index a1e90506..bb9edcb4 100644
--- a/src/i_oplmusic.c
+++ b/src/i_oplmusic.c
@@ -734,9 +734,14 @@ static unsigned int FrequencyForVoice(opl_voice_t *voice)
// Avoid possible overflow due to base note offset:
- if (note > 0x7f)
+ while (note < 0)
{
- note = voice->note;
+ note += 12;
+ }
+
+ while (note > 95)
+ {
+ note -= 12;
}
freq_index = 64 + 32 * note + voice->channel->bend;
@@ -770,14 +775,7 @@ static unsigned int FrequencyForVoice(opl_voice_t *voice)
if (octave >= 7)
{
- if (sub_index < 5)
- {
- octave = 7;
- }
- else
- {
- octave = 6;
- }
+ octave = 7;
}
// Calculate the resulting register value to use for the frequency.