aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/kyra_v1.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2009-05-27 14:40:37 +0000
committerJohannes Schickel2009-05-27 14:40:37 +0000
commit2bcf5c0552cf0778eb2642608134c6c0e4f3028e (patch)
tree50a6e0782d9137fd9a58ae304c4d57918a603ce3 /engines/kyra/kyra_v1.cpp
parente0a059394975b0dc9c52f3152488ee3bad0594c0 (diff)
downloadscummvm-rg350-2bcf5c0552cf0778eb2642608134c6c0e4f3028e.tar.gz
scummvm-rg350-2bcf5c0552cf0778eb2642608134c6c0e4f3028e.tar.bz2
scummvm-rg350-2bcf5c0552cf0778eb2642608134c6c0e4f3028e.zip
- Moved Sound implementation declarations to the newly added file sound_intern.h
- Added support for PC Speaker sound in all Kyra1, Kyra2 and Lands of Lore - Slight cleanup svn-id: r40939
Diffstat (limited to 'engines/kyra/kyra_v1.cpp')
-rw-r--r--engines/kyra/kyra_v1.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp
index d642918667..d5e0308a09 100644
--- a/engines/kyra/kyra_v1.cpp
+++ b/engines/kyra/kyra_v1.cpp
@@ -29,7 +29,7 @@
#include "sound/mixer.h"
#include "kyra/kyra_v1.h"
-#include "kyra/sound.h"
+#include "kyra/sound_intern.h"
#include "kyra/resource.h"
#include "kyra/screen.h"
#include "kyra/text.h"
@@ -103,7 +103,7 @@ Common::Error KyraEngine_v1::init() {
if (!_flags.useDigSound) {
// We prefer AdLib over MIDI, since generally AdLib is better supported
- int midiDriver = MidiDriver::detectMusicDriver(MDT_MIDI | MDT_ADLIB);
+ int midiDriver = MidiDriver::detectMusicDriver(MDT_PCSPK | MDT_MIDI | MDT_ADLIB);
if (_flags.platform == Common::kPlatformFMTowns) {
if (_flags.gameID == GI_KYRA1)
@@ -119,17 +119,31 @@ Common::Error KyraEngine_v1::init() {
_sound = new SoundAdlibPC(this, _mixer);
assert(_sound);
} else {
- bool native_mt32 = ((midiDriver == MD_MT32) || ConfMan.getBool("native_mt32"));
+ Sound::kType type;
+
+ if (midiDriver == MD_MT32 || ConfMan.getBool("native_mt32"))
+ type = Sound::kMidiMT32;
+ else if (midiDriver == MD_PCSPK)
+ type = Sound::kPCSpkr;
+ else
+ type = Sound::kMidiGM;
+
+
+ MidiDriver *driver = 0;
+
+ if (midiDriver == MD_PCSPK) {
+ driver = new MidiDriver_PCSpeaker(_mixer);
+ } else {
+ driver = MidiDriver::createMidi(midiDriver);
+ if (type == Sound::kMidiMT32)
+ driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+ }
- MidiDriver *driver = MidiDriver::createMidi(midiDriver);
assert(driver);
- if (native_mt32)
- driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
- SoundMidiPC *soundMidiPc = new SoundMidiPC(this, _mixer, driver);
+ SoundMidiPC *soundMidiPc = new SoundMidiPC(this, _mixer, driver, type);
_sound = soundMidiPc;
assert(_sound);
- soundMidiPc->hasNativeMT32(native_mt32);
// Unlike some SCUMM games, it's not that the MIDI sounds are
// missing. It's just that at least at the time of writing they