aboutsummaryrefslogtreecommitdiff
path: root/kyra/kyra.cpp
diff options
context:
space:
mode:
authorJames Brown2004-11-14 14:11:54 +0000
committerJames Brown2004-11-14 14:11:54 +0000
commit8f1307ff6ca772b43b10ba77e9d32ddcc1c67f62 (patch)
tree8b88cd0b651667f6b026a1e00154e2095c647192 /kyra/kyra.cpp
parent61efd5ff0ea65b9e2f2d5f0ea956cc4755809bb8 (diff)
downloadscummvm-rg350-8f1307ff6ca772b43b10ba77e9d32ddcc1c67f62.tar.gz
scummvm-rg350-8f1307ff6ca772b43b10ba77e9d32ddcc1c67f62.tar.bz2
scummvm-rg350-8f1307ff6ca772b43b10ba77e9d32ddcc1c67f62.zip
Patch #1066150 from eriktorbjorn - Enable adlib emulated midi as fallback where hardware synth is unavailable.
svn-id: r15807
Diffstat (limited to 'kyra/kyra.cpp')
-rw-r--r--kyra/kyra.cpp32
1 files changed, 19 insertions, 13 deletions
diff --git a/kyra/kyra.cpp b/kyra/kyra.cpp
index 9247c84992..3dc230e45a 100644
--- a/kyra/kyra.cpp
+++ b/kyra/kyra.cpp
@@ -121,19 +121,25 @@ KyraEngine::KyraEngine(GameDetector *detector, OSystem *syst)
} else {
error("unknown game");
}
-
- MidiDriver *driver = GameDetector::createMidi(GameDetector::detectMusicDriver(MDT_NATIVE | MDT_PREFER_NATIVE));
- if (driver) {
- if (ConfMan.getBool("native_mt32"))
- driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
- _midiDriver = new MusicPlayer(driver, this);
- assert(_midiDriver);
- _midiDriver->hasNativeMT32(ConfMan.getBool("native_mt32"));
- _midiDriver->setVolume(255);
- } else {
- warning("Couldn't create MIDI driver... No music!");
- _midiDriver = NULL;
- };
+
+ int midiDrv = GameDetector::detectMusicDriver(MDT_NATIVE | MDT_ADLIB | MDT_PREFER_NATIVE);
+ bool native_mt32 = (ConfMan.getBool("native_mt32") || (midiDrv == MD_MT32));
+
+ MidiDriver *driver = GameDetector::createMidi(midiDrv);
+ if (!driver) {
+ // In this case we should play the Adlib tracks, but for now
+ // the automagic MIDI-to-Adlib conversion will do.
+ driver = MidiDriver_ADLIB_create(_mixer);
+ } else if (native_mt32)
+ driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+
+ _midiDriver = new MusicPlayer(driver, this);
+ assert(_midiDriver);
+ _midiDriver->hasNativeMT32(native_mt32);
+ _midiDriver->setVolume(255);
+
+ if (midiDrv == MD_MT32)
+ _midiDriver->setPassThrough(true);
// Initialize backen
syst->initSize(320, 200);