diff options
author | khokh2001 | 2014-10-29 01:37:42 +0900 |
---|---|---|
committer | khokh2001 | 2014-10-29 01:37:42 +0900 |
commit | 98e1771a832f0843d1a8be344894c0c77bd5f8fd (patch) | |
tree | 0b4bb4dc03945b10d449c837333806762bea1b64 | |
parent | 5e064562c09ceb5b93a4ddafe734cdb6c7b081c6 (diff) | |
download | chocolate-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.c | 18 |
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. |