[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