aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamieson Christian2003-08-13 14:08:21 +0000
committerJamieson Christian2003-08-13 14:08:21 +0000
commitfb62ba61cab0d4e2e2c0b8f4c7b44c081313f1e7 (patch)
tree53cac47fb954fe67d5fc2fe4bc6c6d4f0acd66c9
parent124650e0739ca5c3697ec30cfbb31e227228bade (diff)
downloadscummvm-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.cpp34
-rw-r--r--common/gameDetector.h2
-rw-r--r--scumm/resource.cpp10
-rw-r--r--scumm/scumm.h2
-rw-r--r--scumm/scummvm.cpp17
-rw-r--r--sound/mididrv.h2
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
};