From 85f7a01d2a229da7523d5b6e01359c564dd1d912 Mon Sep 17 00:00:00 2001 From: athrxx Date: Fri, 3 Jun 2011 13:59:21 +0200 Subject: [PATCH] FM-TOWNS AUDIO: some cleanup in midi driver code --- audio/softsynth/fmtowns_pc98/towns_midi.cpp | 19 ++++++------------- audio/softsynth/fmtowns_pc98/towns_midi.h | 5 +++-- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/audio/softsynth/fmtowns_pc98/towns_midi.cpp b/audio/softsynth/fmtowns_pc98/towns_midi.cpp index 4617b0555c1..071a697615c 100644 --- a/audio/softsynth/fmtowns_pc98/towns_midi.cpp +++ b/audio/softsynth/fmtowns_pc98/towns_midi.cpp @@ -833,9 +833,8 @@ const uint8 TownsMidiInputChannel::_programAdjustLevel[] = { }; MidiDriver_TOWNS::MidiDriver_TOWNS(Audio::Mixer *mixer) : _timerProc(0), _timerProcPara(0), _channels(0), _out(0), - _chanState(0), _operatorLevelTable(0), _tickCounter1(0), _tickCounter2(0), _rand(1), _allocCurPos(0), _isOpen(false) { - // We set exteral mutex handling to true, since this driver is only suitable for use with the SCUMM engine - // which has its own mutex. This causes lockups which cannot always be avoided. + _baseTempo(10080), _chanState(0), _operatorLevelTable(0), _tickCounter(0), _rand(1), _allocCurPos(0), _isOpen(false) { + // We set exteral mutex handling to true to avoid lockups in SCUMM which has its own mutex. _intf = new TownsAudioInterface(mixer, this, true); _channels = new TownsMidiInputChannel*[32]; @@ -958,7 +957,7 @@ void MidiDriver_TOWNS::setTimerCallback(void *timer_param, Common::TimerManager: } uint32 MidiDriver_TOWNS::getBaseTempo() { - return 10080; + return _baseTempo; } MidiChannel *MidiDriver_TOWNS::allocateChannel() { @@ -986,12 +985,6 @@ void MidiDriver_TOWNS::timerCallback(int timerId) { case 1: updateParser(); updateOutputChannels(); - - /*_tickCounter1 += 10000; - while (_tickCounter1 >= 4167) { - _tickCounter1 -= 4167; - unkUpdate(); - }*/ break; default: break; @@ -1004,9 +997,9 @@ void MidiDriver_TOWNS::updateParser() { } void MidiDriver_TOWNS::updateOutputChannels() { - _tickCounter2 += 10000; - while (_tickCounter2 >= 16667) { - _tickCounter2 -= 16667; + _tickCounter += _baseTempo; + while (_tickCounter >= 16667) { + _tickCounter -= 16667; for (int i = 0; i < 6; i++) { if (_out[i]->update()) return; diff --git a/audio/softsynth/fmtowns_pc98/towns_midi.h b/audio/softsynth/fmtowns_pc98/towns_midi.h index a98bb1b59c7..9aa7c93b350 100644 --- a/audio/softsynth/fmtowns_pc98/towns_midi.h +++ b/audio/softsynth/fmtowns_pc98/towns_midi.h @@ -69,14 +69,15 @@ private: TownsAudioInterface *_intf; - uint32 _tickCounter1; - uint32 _tickCounter2; + uint32 _tickCounter; uint8 _allocCurPos; uint8 _rand; bool _isOpen; uint8 *_operatorLevelTable; + + const uint16 _baseTempo; }; #endif