diff options
Diffstat (limited to 'engines')
-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() { |