diff options
| -rw-r--r-- | engines/groovie/groovie.cpp | 12 | ||||
| -rw-r--r-- | engines/groovie/groovie.h | 2 | ||||
| -rw-r--r-- | engines/groovie/music.cpp | 14 | 
3 files changed, 24 insertions, 4 deletions
| diff --git a/engines/groovie/groovie.cpp b/engines/groovie/groovie.cpp index e0760e1d41..9da413d362 100644 --- a/engines/groovie/groovie.cpp +++ b/engines/groovie/groovie.cpp @@ -110,7 +110,7 @@ Common::Error GroovieEngine::run() {  	// Prepare the font too  	switch (_gameDescription->version) {  	case kGroovieT7G: -		if (_gameDescription->desc.platform == Common::kPlatformMacintosh) { +		if (getPlatform() == Common::kPlatformMacintosh) {  			_macResFork = new Common::MacResManager();  			if (!_macResFork->open(_gameDescription->desc.filesDescriptions[0].fileName))  				error("Could not open %s as a resource fork", _gameDescription->desc.filesDescriptions[0].fileName); @@ -141,7 +141,7 @@ Common::Error GroovieEngine::run() {  	}  	// Create the music player -	if (_gameDescription->desc.platform == Common::kPlatformMacintosh) +	if (getPlatform() == Common::kPlatformMacintosh)  		_musicPlayer = new MusicPlayerMac(this);  	else  		_musicPlayer = new MusicPlayerXMI(this, _gameDescription->version == kGroovieT7G ? "fat" : "sample"); @@ -154,8 +154,8 @@ Common::Error GroovieEngine::run() {  	if (_gameDescription->version == kGroovieT7G) {  		// Run The 7th Guest's demo if requested  		if (ConfMan.hasKey("demo_mode") && ConfMan.getBool("demo_mode")) -			filename = Common::String("demo.grv"); -		else if (_gameDescription->desc.platform == Common::kPlatformMacintosh) +			filename = "demo.grv"; +		else if (getPlatform() == Common::kPlatformMacintosh)  			filename = "script.grv"; // Stored inside the executable's resource fork  	} else if (_gameDescription->version == kGroovieV2) {  		// Open the disk index @@ -307,6 +307,10 @@ Common::Error GroovieEngine::run() {  	return Common::kNoError;  } +Common::Platform GroovieEngine::getPlatform() const { +	return _gameDescription->desc.platform; +} +  bool GroovieEngine::hasFeature(EngineFeature f) const {  	return  		(f == kSupportsRTL) || diff --git a/engines/groovie/groovie.h b/engines/groovie/groovie.h index 437debfd17..8ae5f4157f 100644 --- a/engines/groovie/groovie.h +++ b/engines/groovie/groovie.h @@ -82,6 +82,8 @@ public:  	GroovieEngine(OSystem *syst, const GroovieGameDescription *gd);  	~GroovieEngine(); +	Common::Platform getPlatform() const; +  protected:  	// Engine APIs diff --git a/engines/groovie/music.cpp b/engines/groovie/music.cpp index f226ef3397..6959a6a6f1 100644 --- a/engines/groovie/music.cpp +++ b/engines/groovie/music.cpp @@ -111,6 +111,20 @@ void MusicPlayer::playCD(uint8 track) {  	// Play the track starting at the requested offset (1000ms = 75 frames)  	AudioCD.play(track - 1, 1, startms * 75 / 1000, 0); + +	// If the audio is not playing from the CD, play the "fallback" MIDI. +	// The Mac version has no CD tracks, so it will always use the MIDI. +	if (!AudioCD.isPlaying()) { +		if (track == 2) { +			// Intro MIDI fallback +			if (_vm->getPlatform() == Common::kPlatformMacintosh) +				playSong(70); +			else +				playSong((19 << 10) | 36); // XMI.GJD, file 36 +		} else if (track == 3) { +			// TODO: Credits MIDI fallback +		} +	}  }  void MusicPlayer::startBackground() { | 
