diff options
author | James Brown | 2004-11-14 14:11:54 +0000 |
---|---|---|
committer | James Brown | 2004-11-14 14:11:54 +0000 |
commit | 8f1307ff6ca772b43b10ba77e9d32ddcc1c67f62 (patch) | |
tree | 8b88cd0b651667f6b026a1e00154e2095c647192 /kyra/kyra.cpp | |
parent | 61efd5ff0ea65b9e2f2d5f0ea956cc4755809bb8 (diff) | |
download | scummvm-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.cpp | 32 |
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); |