diff options
| -rw-r--r-- | engines/sci/engine/features.cpp | 3 | ||||
| -rw-r--r-- | engines/sci/engine/features.h | 7 | ||||
| -rw-r--r-- | engines/sci/sound/music.cpp | 6 | 
3 files changed, 15 insertions, 1 deletions
| diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp index cad95b1c18..8a932232f8 100644 --- a/engines/sci/engine/features.cpp +++ b/engines/sci/engine/features.cpp @@ -45,6 +45,7 @@ GameFeatures::GameFeatures(SegManager *segMan, Kernel *kernel) : _segMan(segMan)  	_usesCdTrack = Common::File::exists("cdaudio.map");  	if (!ConfMan.getBool("use_cdaudio"))  		_usesCdTrack = false; +	_forceDOSTracks = false;  }  reg_t GameFeatures::getDetectionAddr(const Common::String &objName, Selector slc, int methodNum) { @@ -642,7 +643,7 @@ MoveCountType GameFeatures::detectMoveCountType() {  }  bool GameFeatures::useAltWinGMSound() { -	if (g_sci && g_sci->getPlatform() == Common::kPlatformWindows && g_sci->isCD()) { +	if (g_sci && g_sci->getPlatform() == Common::kPlatformWindows && g_sci->isCD() && !_forceDOSTracks) {  		SciGameId id = g_sci->getGameId();  		return (id == GID_ECOQUEST ||  				id == GID_JONES || diff --git a/engines/sci/engine/features.h b/engines/sci/engine/features.h index 4592c5be9c..f6bb0b5759 100644 --- a/engines/sci/engine/features.h +++ b/engines/sci/engine/features.h @@ -117,6 +117,12 @@ public:  	 */  	bool useAltWinGMSound(); +	/** +	 * Forces DOS soundtracks in Windows CD versions when the user hasn't +	 * selected a MIDI output device +	 */ +	void forceDOSTracks() { _forceDOSTracks = true; } +  private:  	reg_t getDetectionAddr(const Common::String &objName, Selector slc, int methodNum = -1); @@ -137,6 +143,7 @@ private:  	MoveCountType _moveCountType;  	bool _usesCdTrack; +	bool _forceDOSTracks;  	SegManager *_segMan;  	Kernel *_kernel; diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index 09cab75c39..918b045cb9 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -88,6 +88,12 @@ void SciMusic::init() {  	uint32 dev = MidiDriver::detectDevice(deviceFlags);  	_musicType = MidiDriver::getMusicType(dev); +	if (g_sci->_features->useAltWinGMSound() && _musicType != MT_GM) { +		warning("A Windows CD version with an alternate MIDI soundtrack has been chosen, " +				"but no MIDI music device has been selected. Reverting to the DOS soundtrack"); +		g_sci->_features->forceDOSTracks(); +	} +  	switch (_musicType) {  	case MT_ADLIB:  		// FIXME: There's no Amiga sound option, so we hook it up to AdLib | 
