GOB: Don't recalculate the AdLib frequencies table on every player reset

This commit is contained in:
Sven Hesse 2012-06-11 14:59:12 +02:00
parent b812ed50c8
commit f538b76586
2 changed files with 8 additions and 1 deletions

View File

@ -98,6 +98,8 @@ AdLib::AdLib(Audio::Mixer &mixer) : _mixer(&mixer), _opl(0),
_rate = _mixer->getOutputRate();
initFreqs();
createOPL();
initOPL();
@ -295,7 +297,7 @@ void AdLib::initOPL() {
_opl->reset();
initOperatorVolumes();
initFreqs();
resetFreqs();
setPercussionMode(false);
@ -581,6 +583,10 @@ void AdLib::initFreqs() {
for (int i = 0; i < kPitchStepCount; i++)
setFreqs(_freqs[i], i * numStep, 100);
resetFreqs();
}
void AdLib::resetFreqs() {
for (int i = 0; i < kMaxVoiceCount; i++) {
_freqPtr [i] = _freqs[0];
_halfToneOffset[i] = 0;

View File

@ -295,6 +295,7 @@ private:
void initFreqs();
void setFreqs(uint16 *freqs, int32 num, int32 denom);
int32 calcFreq(int32 deltaDemiToneNum, int32 deltaDemiToneDenom);
void resetFreqs();
void changePitch(uint8 voice, uint16 pitchBend);