[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