diff options
author | Jamieson Christian | 2003-08-13 14:08:21 +0000 |
---|---|---|
committer | Jamieson Christian | 2003-08-13 14:08:21 +0000 |
commit | fb62ba61cab0d4e2e2c0b8f4c7b44c081313f1e7 (patch) | |
tree | 53cac47fb954fe67d5fc2fe4bc6c6d4f0acd66c9 | |
parent | 124650e0739ca5c3697ec30cfbb31e227228bade (diff) | |
download | scummvm-rg350-fb62ba61cab0d4e2e2c0b8f4c7b44c081313f1e7.tar.gz scummvm-rg350-fb62ba61cab0d4e2e2c0b8f4c7b44c081313f1e7.tar.bz2 scummvm-rg350-fb62ba61cab0d4e2e2c0b8f4c7b44c081313f1e7.zip |
Added PC Speaker and PCjr command line options,
in preparation for Kirben's addition of WA support
for games that already have AD tracks.
svn-id: r9656
-rw-r--r-- | common/gameDetector.cpp | 34 | ||||
-rw-r--r-- | common/gameDetector.h | 2 | ||||
-rw-r--r-- | scumm/resource.cpp | 10 | ||||
-rw-r--r-- | scumm/scumm.h | 2 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 17 | ||||
-rw-r--r-- | sound/mididrv.h | 2 |
6 files changed, 39 insertions, 28 deletions
diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp index b2c371ab5d..7f211a0487 100644 --- a/common/gameDetector.cpp +++ b/common/gameDetector.cpp @@ -150,6 +150,8 @@ static const struct MusicDriver music_drivers[] = { {"etude", "Etude", MD_ETUDE}, {"alsa", "ALSA", MD_ALSA}, {"adlib", "Adlib", MD_ADLIB}, + {"pcspk", "PC Speaker", MD_PCSPK}, + {"pcjr", "IBM PCjr", MD_PCJR}, #else {"ypa1", "Yamaha Pa1", MD_YPA1}, #endif @@ -167,8 +169,6 @@ GameDetector::GameDetector() { _fullScreen = false; _aspectRatio = false; - _use_adlib = false; - _master_volume = kDefaultMasterVolume; _music_volume = kDefaultMusicVolume; _sfx_volume = kDefaultSFXVolume; @@ -605,7 +605,9 @@ bool GameDetector::isMusicDriverAvailable(int drv) { case MD_AUTO: case MD_NULL: return true; #ifndef __PALM_OS__ // don't show it on palmos - case MD_ADLIB: return true; + case MD_ADLIB: + case MD_PCSPK: + case MD_PCJR: return true; #else case MD_YPA1: return true; #endif @@ -640,7 +642,6 @@ bool GameDetector::parseMusicDriver(const char *s) { while (md->name) { if (!scumm_stricmp(md->name, s)) { - _use_adlib = (md->id == MD_ADLIB); _midi_driver = md->id; return true; } @@ -706,7 +707,6 @@ int GameDetector::detectMain() { if ((_game.adlib & VersionSettings::ADLIB_ALWAYS) && _midi_driver != MD_NULL || (_game.adlib & VersionSettings::ADLIB_PREFERRED) && _midi_driver == MD_AUTO) { _midi_driver = MD_ADLIB; - _use_adlib = true; } if (!_gameDataPath) { @@ -781,32 +781,38 @@ MidiDriver *GameDetector::createMidi() { int drv = getMidiDriverType(); switch(drv) { - case MD_NULL: return MidiDriver_NULL_create(); + case MD_NULL: return MidiDriver_NULL_create(); // In the case of Adlib, we won't specify anything. // IMuse is designed to set up its own Adlib driver // if need be, and we only have to specify a native // driver. - case MD_ADLIB: _use_adlib = true; return NULL; + case MD_ADLIB: return NULL; + + // Right now PC Speaker and PCjr are handled + // outside the MidiDriver architecture, so + // don't create anything for now. + case MD_PCSPK: + case MD_PCJR: return NULL; #if defined(__PALM_OS__) - case MD_YPA1: return MidiDriver_YamahaPa1_create(); + case MD_YPA1: return MidiDriver_YamahaPa1_create(); #endif #if defined(WIN32) && !defined(_WIN32_WCE) - case MD_WINDOWS: return MidiDriver_WIN_create(); + case MD_WINDOWS: return MidiDriver_WIN_create(); #endif #if defined(__MORPHOS__) - case MD_ETUDE: return MidiDriver_ETUDE_create(); + case MD_ETUDE: return MidiDriver_ETUDE_create(); #endif #if defined(UNIX) && !defined(__BEOS__) && !defined(MACOSX) - case MD_SEQ: return MidiDriver_SEQ_create(); + case MD_SEQ: return MidiDriver_SEQ_create(); #endif #if (defined(MACOSX) || defined(macintosh)) && !defined(__PALM_OS__) - case MD_QTMUSIC: return MidiDriver_QT_create(); + case MD_QTMUSIC: return MidiDriver_QT_create(); #endif #if defined(MACOSX) - case MD_COREAUDIO: return MidiDriver_CORE_create(); + case MD_COREAUDIO: return MidiDriver_CORE_create(); #endif #if defined(UNIX) && defined(USE_ALSA) - case MD_ALSA: return MidiDriver_ALSA_create(); + case MD_ALSA: return MidiDriver_ALSA_create(); #endif } diff --git a/common/gameDetector.h b/common/gameDetector.h index d0e04cde7f..dbf5d1299b 100644 --- a/common/gameDetector.h +++ b/common/gameDetector.h @@ -114,8 +114,6 @@ public: bool _fullScreen; bool _aspectRatio; - bool _use_adlib; - int _master_volume; int _music_volume; int _sfx_volume; diff --git a/scumm/resource.cpp b/scumm/resource.cpp index d95ba55d9d..60930b7c13 100644 --- a/scumm/resource.cpp +++ b/scumm/resource.cpp @@ -29,6 +29,7 @@ #include "scumm/sound.h" #include "common/map.h" #include "common/str.h" +#include "sound/mididrv.h" // Need MD_ enum values #include "gui/message.h" #include "dialogs.h" @@ -727,7 +728,7 @@ int Scumm::readSoundResource(int type, int idx) { break; case MKID('ADL '): pri = 1; - if (_use_adlib) + if (_midiDriver == MD_ADLIB) pri = 10; break; case MKID('AMI '): @@ -744,11 +745,14 @@ int Scumm::readSoundResource(int type, int idx) { break; case MKID('SPK '): pri = -1; -// if (!_use_adlib) -// pri = 0; +// if (_midiDriver == MD_PCSPK) +// pri = 11; break; } + if ((_midiDriver == MD_PCSPK || _midiDriver == MD_PCJR) && pri != 11) + pri = -1; + debug(8, " tag: %c%c%c%c, total_size=%d, pri=%d", (char)((tag >> 24) & 0xff), (char)((tag >> 16) & 0xff), (char)((tag >> 8) & 0xff), (char)(tag & 0xff), size, pri); diff --git a/scumm/scumm.h b/scumm/scumm.h index c7d1c23a24..a8ee2cfebe 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -1011,7 +1011,7 @@ protected: byte _haveMsg; bool _useTalkAnims; uint16 _defaultTalkDelay; - bool _use_adlib; + int _midiDriver; // Use the MD_ values from mididrv.h int tempMusic; int _saveSound; public: diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index 9b15d07b29..29cfe19125 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -379,7 +379,7 @@ Scumm::Scumm (GameDetector *detector, OSystem *syst) _haveMsg = 0; _useTalkAnims = false; _defaultTalkDelay = 0; - _use_adlib = false; + _midiDriver = MD_NULL; tempMusic = 0; _silentDigitalImuse = 0; _noDigitalSamples = 0; @@ -549,7 +549,7 @@ Scumm::Scumm (GameDetector *detector, OSystem *syst) _noSubtitles = detector->_noSubtitles; _confirmExit = detector->_confirmExit; _defaultTalkDelay = detector->_talkSpeed; - _use_adlib = detector->_use_adlib; + _midiDriver = detector->_midi_driver; _language = detector->_language; memset(&res, 0, sizeof(res)); _hexdumpScripts = false; @@ -598,12 +598,13 @@ Scumm::Scumm (GameDetector *detector, OSystem *syst) * automatically when samples need to be generated */ _silentDigitalImuse = false; if (!_mixer->bindToSystem(syst)) { - warning("Sound initialization failed"); - if (detector->_use_adlib) { - _use_adlib = false; - detector->_use_adlib = false; - detector->_midi_driver = MD_NULL; - warning("Adlib music was selected, switching to midi null driver"); + warning("Sound mixer initialization failed"); + if (detector->_midi_driver == MD_ADLIB || + detector->_midi_driver == MD_PCSPK || + detector->_midi_driver == MD_PCJR) + { + _midiDriver = detector->_midi_driver = MD_NULL; + warning("MIDI driver depends on sound mixer, switching to null MIDI driver"); } _silentDigitalImuse = true; _noDigitalSamples = true; diff --git a/sound/mididrv.h b/sound/mididrv.h index 49d532e530..ff8583b0f5 100644 --- a/sound/mididrv.h +++ b/sound/mididrv.h @@ -129,6 +129,8 @@ enum { MD_MIDIEMU = 8, MD_ALSA = 9, MD_ADLIB = 10, + MD_PCSPK = 11, + MD_PCJR = 12, MD_YPA1 = 100 // palmos }; |