[Scummvm-cvs-logs] scummvm master -> 66d0a907c10c88d0663bc876d59a30be8686f619
m-kiewitz
m_kiewitz at users.sourceforge.net
Sun May 31 00:59:39 CEST 2015
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
66d0a907c1 SHERLOCK: adlib: in-use timer, thx LordHoto
Commit: 66d0a907c10c88d0663bc876d59a30be8686f619
https://github.com/scummvm/scummvm/commit/66d0a907c10c88d0663bc876d59a30be8686f619
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-05-31T00:58:49+02:00
Commit Message:
SHERLOCK: adlib: in-use timer, thx LordHoto
Changed paths:
engines/sherlock/scalpel/drivers/adlib.cpp
diff --git a/engines/sherlock/scalpel/drivers/adlib.cpp b/engines/sherlock/scalpel/drivers/adlib.cpp
index c1dbddb..8dee501 100644
--- a/engines/sherlock/scalpel/drivers/adlib.cpp
+++ b/engines/sherlock/scalpel/drivers/adlib.cpp
@@ -269,8 +269,10 @@ private:
// stores information about all FM voice channels
adlib_ChannelEntry _channels[SHERLOCK_ADLIB_VOICES_COUNT];
- void updateChannelInUseTimers();
+protected:
+ void onTimer();
+private:
void resetAdLib();
void resetAdLib_OperatorRegisters(byte baseRegister, byte value);
void resetAdLib_FMVoiceChannelRegisters(byte baseRegister, byte value);
@@ -337,10 +339,10 @@ void MidiDriver_AdLib::setVolume(byte volume) {
//renewNotes(-1, true);
}
-// this should normally get called per tick
-// but calling it per send() shouldn't be a problem
-// TODO: maybe change inUseTimer to a 32-bit integer to make sure there are no overruns?!?!
-void MidiDriver_AdLib::updateChannelInUseTimers() {
+// this should/must get called per tick
+// original driver did this before MIDI data processing on each tick
+// we do it atm after MIDI data processing
+void MidiDriver_AdLib::onTimer() {
for (byte FMvoiceChannel = 0; FMvoiceChannel < SHERLOCK_ADLIB_VOICES_COUNT; FMvoiceChannel++) {
if (_channels[FMvoiceChannel].inUse) {
_channels[FMvoiceChannel].inUseTimer++;
@@ -411,8 +413,6 @@ void MidiDriver_AdLib::send(uint32 b) {
byte op1 = (b >> 8) & 0xff;
byte op2 = (b >> 16) & 0xff;
- updateChannelInUseTimers();
-
switch (command) {
case 0x80:
noteOff(channel, op1);
More information about the Scummvm-git-logs
mailing list