aboutsummaryrefslogtreecommitdiff
path: root/audio/softsynth/fmtowns_pc98
diff options
context:
space:
mode:
authorathrxx2011-06-03 13:59:21 +0200
committerathrxx2011-06-03 22:08:22 +0200
commit85f7a01d2a229da7523d5b6e01359c564dd1d912 (patch)
treeb2b146107ee722fe0424109e5b448ac111c68945 /audio/softsynth/fmtowns_pc98
parent6287426db0933bc8569407cde7b01c4883a80fca (diff)
downloadscummvm-rg350-85f7a01d2a229da7523d5b6e01359c564dd1d912.tar.gz
scummvm-rg350-85f7a01d2a229da7523d5b6e01359c564dd1d912.tar.bz2
scummvm-rg350-85f7a01d2a229da7523d5b6e01359c564dd1d912.zip
FM-TOWNS AUDIO: some cleanup in midi driver code
Diffstat (limited to 'audio/softsynth/fmtowns_pc98')
-rw-r--r--audio/softsynth/fmtowns_pc98/towns_midi.cpp19
-rw-r--r--audio/softsynth/fmtowns_pc98/towns_midi.h5
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 4617b0555c..071a697615 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 a98bb1b59c..9aa7c93b35 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