[Scummvm-cvs-logs] SF.net SVN: scummvm:[35837] scummvm/trunk/engines/tinsel/music.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Jan 12 16:31:51 CET 2009


Revision: 35837
          http://scummvm.svn.sourceforge.net/scummvm/?rev=35837&view=rev
Author:   thebluegr
Date:     2009-01-12 15:31:50 +0000 (Mon, 12 Jan 2009)

Log Message:
-----------
Imitate the way the original game is playing MIDI tracks when playing enhanced ones

Modified Paths:
--------------
    scummvm/trunk/engines/tinsel/music.cpp

Modified: scummvm/trunk/engines/tinsel/music.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/music.cpp	2009-01-12 14:56:29 UTC (rev 35836)
+++ scummvm/trunk/engines/tinsel/music.cpp	2009-01-12 15:31:50 UTC (rev 35837)
@@ -181,29 +181,6 @@
 
 	if (volMusic != 0) {
 		SetMidiVolume(volMusic);
-
-		// Support for external music from the music enhancement project
-		if (_vm->getFeatures() & GF_ENHANCED_AUDIO_SUPPORT) {
-			AudioCD.stop();
-
-			int trackNumber = GetTrackNumber(dwFileOffset);
-			if (trackNumber >= 0) {
-				int track = 0;
-				if (_vm->getFeatures() & GF_SCNFILES)
-					track = enhancedAudioSCNVersion[trackNumber];
-				else
-					track = enhancedAudioGRAVersion[trackNumber];
-
-				if (track > 0)
-					AudioCD.play(track, -1, 0, 0);
-			} else {
-				warning("Unknown MIDI offset %d", dwFileOffset);
-			}
-
-			if (AudioCD.isPlaying())
-				return true;
-		}
-
 	}
 
 	// set file offset for this sequence
@@ -211,13 +188,41 @@
 
 	// the index and length of the last tune loaded
 	static uint32 dwLastMidiIndex;
-	static uint32 dwLastSeqLen;
+	//static uint32 dwLastSeqLen;
 
 	uint32 dwSeqLen = 0;	// length of the sequence
 
 	if (dwMidiIndex == 0)
 		return true;
 
+	// Support for external music from the music enhancement project
+	if (_vm->getFeatures() & GF_ENHANCED_AUDIO_SUPPORT) {
+		int trackNumber = GetTrackNumber(dwFileOffset);
+		int track = 0;
+		if (trackNumber >= 0) {
+			if (_vm->getFeatures() & GF_SCNFILES)
+				track = enhancedAudioSCNVersion[trackNumber];
+			else
+				track = enhancedAudioGRAVersion[trackNumber];
+
+			if (track > 0) {
+				StopMidi();
+
+				AudioCD.play(track, bLoop ? -1 : 0, 0, 0);
+
+				// Check if an enhanced audio track is being played.
+				// If it is, stop here and don't load a MIDI track
+				if (AudioCD.isPlaying()) {
+					// allow another sequence to play
+					dwMidiIndex = 0;
+					return true;
+				}
+			}
+		} else {
+			warning("Unknown MIDI offset %d", dwFileOffset);
+		}
+	}
+
 	if (dwMidiIndex != dwLastMidiIndex) {
 		Common::File midiStream;
 
@@ -249,7 +254,7 @@
 		_vm->_midiMusic->playXMIDI(midiBuffer.pDat, dwSeqLen, bLoop);
 
 		// Store the length
-		dwLastSeqLen = dwSeqLen;
+		//dwLastSeqLen = dwSeqLen;
 	} else {
 	  	// dwMidiIndex == dwLastMidiIndex
 		_vm->_midiMusic->stop();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list