From 91aca8fa08a86615b8253e4459fab968db35be05 Mon Sep 17 00:00:00 2001
From: Tarek Soliman <tarek@bashasoliman.com>
Date: Mon, 28 Feb 2011 22:39:43 -0600
Subject: [PATCH] SCI: prefer MT32 in some older SCI games
---
engines/sci/console.cpp | 2 +-
engines/sci/sound/drivers/midi.cpp | 10 +++++-----
engines/sci/sound/drivers/mididriver.h | 2 +-
engines/sci/sound/music.cpp | 5 ++++-
4 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index f3c3657..ef2acb3 100644
a
|
b
|
bool Console::cmdShowInstruments(int argc, const char **argv) {
|
898 | 898 | songNumber = atoi(argv[1]); |
899 | 899 | |
900 | 900 | SciVersion doSoundVersion = _engine->_features->detectDoSoundType(); |
901 | | MidiPlayer *player = MidiPlayer_Midi_create(doSoundVersion); |
| 901 | MidiPlayer *player = MidiPlayer_Midi_create(doSoundVersion, 0); |
902 | 902 | MidiParser_SCI *parser = new MidiParser_SCI(doSoundVersion, 0); |
903 | 903 | parser->setMidiDriver(player); |
904 | 904 | |
diff --git a/engines/sci/sound/drivers/midi.cpp b/engines/sci/sound/drivers/midi.cpp
index 65ccaec..bf87fd8 100644
a
|
b
|
public:
|
50 | 50 | kMaxSysExSize = 264 |
51 | 51 | }; |
52 | 52 | |
53 | | MidiPlayer_Midi(SciVersion version); |
| 53 | MidiPlayer_Midi(SciVersion version, int flags); |
54 | 54 | virtual ~MidiPlayer_Midi(); |
55 | 55 | |
56 | 56 | int open(ResourceManager *resMan); |
… |
… |
private:
|
130 | 130 | byte _sysExBuf[kMaxSysExSize]; |
131 | 131 | }; |
132 | 132 | |
133 | | MidiPlayer_Midi::MidiPlayer_Midi(SciVersion version) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _isMt32(false), _hasReverb(false), _useMT32Track(true) { |
134 | | MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI); |
| 133 | MidiPlayer_Midi::MidiPlayer_Midi(SciVersion version, int flags) : MidiPlayer(version), _playSwitch(true), _masterVolume(15), _isMt32(false), _hasReverb(false), _useMT32Track(true) { |
| 134 | MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | flags); |
135 | 135 | _driver = createMidi(dev); |
136 | 136 | |
137 | 137 | if (MidiDriver::getMusicType(dev) == MT_MT32 || ConfMan.getBool("native_mt32")) |
… |
… |
byte MidiPlayer_Midi::getPlayId() const {
|
1042 | 1042 | } |
1043 | 1043 | } |
1044 | 1044 | |
1045 | | MidiPlayer *MidiPlayer_Midi_create(SciVersion version) { |
1046 | | return new MidiPlayer_Midi(version); |
| 1045 | MidiPlayer *MidiPlayer_Midi_create(SciVersion version, int flags) { |
| 1046 | return new MidiPlayer_Midi(version, flags); |
1047 | 1047 | } |
1048 | 1048 | |
1049 | 1049 | } // End of namespace Sci |
diff --git a/engines/sci/sound/drivers/mididriver.h b/engines/sci/sound/drivers/mididriver.h
index f745d62..8a5f927 100644
a
|
b
|
extern MidiPlayer *MidiPlayer_AmigaMac_create(SciVersion version);
|
133 | 133 | extern MidiPlayer *MidiPlayer_PCJr_create(SciVersion version); |
134 | 134 | extern MidiPlayer *MidiPlayer_PCSpeaker_create(SciVersion version); |
135 | 135 | extern MidiPlayer *MidiPlayer_CMS_create(SciVersion version); |
136 | | extern MidiPlayer *MidiPlayer_Midi_create(SciVersion version); |
| 136 | extern MidiPlayer *MidiPlayer_Midi_create(SciVersion version, int flags); |
137 | 137 | extern MidiPlayer *MidiPlayer_Fb01_create(SciVersion version); |
138 | 138 | |
139 | 139 | } // End of namespace Sci |
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index 2331f2f..b291880 100644
a
|
b
|
void SciMusic::init() {
|
73 | 73 | |
74 | 74 | if (getSciVersion() >= SCI_VERSION_2_1) |
75 | 75 | deviceFlags |= MDT_PREFER_GM; |
| 76 | else |
| 77 | deviceFlags |= MDT_PREFER_MT32; |
| 78 | |
76 | 79 | |
77 | 80 | // Currently our CMS implementation only supports SCI1(.1) |
78 | 81 | if (getSciVersion() >= SCI_VERSION_1_EGA_ONLY && getSciVersion() <= SCI_VERSION_1_1) |
… |
… |
void SciMusic::init() {
|
102 | 105 | if (ConfMan.getBool("native_fb01")) |
103 | 106 | _pMidiDrv = MidiPlayer_Fb01_create(_soundVersion); |
104 | 107 | else |
105 | | _pMidiDrv = MidiPlayer_Midi_create(_soundVersion); |
| 108 | _pMidiDrv = MidiPlayer_Midi_create(_soundVersion, deviceFlags); |
106 | 109 | } |
107 | 110 | |
108 | 111 | if (_pMidiDrv && !_pMidiDrv->open()) { |