FM-TOWNS AUDIO: some cleanup in midi driver code

This commit is contained in:
athrxx 2011-06-03 13:59:21 +02:00
parent 6287426db0
commit 85f7a01d2a
2 changed files with 9 additions and 15 deletions

View File

@ -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;

View File

@ -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