AUDIO/GUI: add SegaCD sound settings
This commit is contained in:
parent
f2b02a77ce
commit
5e276286ae
9 changed files with 50 additions and 10 deletions
|
@ -109,6 +109,7 @@ static const struct {
|
||||||
{ MT_APPLEIIGS, GUIO_MIDIAPPLEIIGS },
|
{ MT_APPLEIIGS, GUIO_MIDIAPPLEIIGS },
|
||||||
{ MT_TOWNS, GUIO_MIDITOWNS },
|
{ MT_TOWNS, GUIO_MIDITOWNS },
|
||||||
{ MT_PC98, GUIO_MIDIPC98 },
|
{ MT_PC98, GUIO_MIDIPC98 },
|
||||||
|
{ MT_SEGACD, GUIO_MIDISEGACD },
|
||||||
{ MT_GM, GUIO_MIDIGM },
|
{ MT_GM, GUIO_MIDIGM },
|
||||||
{ MT_MT32, GUIO_MIDIMT32 },
|
{ MT_MT32, GUIO_MIDIMT32 },
|
||||||
{ 0, 0 },
|
{ 0, 0 },
|
||||||
|
@ -229,6 +230,11 @@ MidiDriver::DeviceHandle MidiDriver::detectDevice(int flags) {
|
||||||
reslt = hdl;
|
reslt = hdl;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MT_SEGACD:
|
||||||
|
if (flags & MDT_SEGACD)
|
||||||
|
reslt = hdl;
|
||||||
|
break;
|
||||||
|
|
||||||
case MT_GM:
|
case MT_GM:
|
||||||
case MT_GS:
|
case MT_GS:
|
||||||
case MT_MT32:
|
case MT_MT32:
|
||||||
|
@ -363,6 +369,9 @@ MidiDriver::DeviceHandle MidiDriver::detectDevice(int flags) {
|
||||||
} else if (flags & MDT_PC98) {
|
} else if (flags & MDT_PC98) {
|
||||||
tp = MT_PC98;
|
tp = MT_PC98;
|
||||||
flags &= ~MDT_PC98;
|
flags &= ~MDT_PC98;
|
||||||
|
} else if (flags & MDT_SEGACD) {
|
||||||
|
tp = MT_SEGACD;
|
||||||
|
flags &= ~MDT_SEGACD;
|
||||||
} else if (flags & MDT_ADLIB) {
|
} else if (flags & MDT_ADLIB) {
|
||||||
tp = MT_ADLIB;
|
tp = MT_ADLIB;
|
||||||
flags &= ~MDT_ADLIB;
|
flags &= ~MDT_ADLIB;
|
||||||
|
|
|
@ -47,6 +47,7 @@ enum MusicType {
|
||||||
MT_APPLEIIGS, // Apple IIGS
|
MT_APPLEIIGS, // Apple IIGS
|
||||||
MT_TOWNS, // FM-TOWNS
|
MT_TOWNS, // FM-TOWNS
|
||||||
MT_PC98, // PC98
|
MT_PC98, // PC98
|
||||||
|
MT_SEGACD, // SegaCD
|
||||||
MT_GM, // General MIDI
|
MT_GM, // General MIDI
|
||||||
MT_MT32, // MT-32
|
MT_MT32, // MT-32
|
||||||
MT_GS // Roland GS
|
MT_GS // Roland GS
|
||||||
|
@ -77,11 +78,12 @@ enum MidiDriverFlags {
|
||||||
MDT_AMIGA = 1 << 5,
|
MDT_AMIGA = 1 << 5,
|
||||||
MDT_APPLEIIGS = 1 << 6,
|
MDT_APPLEIIGS = 1 << 6,
|
||||||
MDT_TOWNS = 1 << 7, // FM-TOWNS: Maps to MT_TOWNS
|
MDT_TOWNS = 1 << 7, // FM-TOWNS: Maps to MT_TOWNS
|
||||||
MDT_PC98 = 1 << 8, // FM-TOWNS: Maps to MT_PC98
|
MDT_PC98 = 1 << 8, // PC-98: Maps to MT_PC98
|
||||||
MDT_MIDI = 1 << 9, // Real MIDI
|
MDT_SEGACD = 1 << 9,
|
||||||
MDT_PREFER_MT32 = 1 << 10, // MT-32 output is preferred
|
MDT_MIDI = 1 << 10, // Real MIDI
|
||||||
MDT_PREFER_GM = 1 << 11, // GM output is preferred
|
MDT_PREFER_MT32 = 1 << 11, // MT-32 output is preferred
|
||||||
MDT_PREFER_FLUID= 1 << 12 // FluidSynth driver is preferred
|
MDT_PREFER_GM = 1 << 12, // GM output is preferred
|
||||||
|
MDT_PREFER_FLUID= 1 << 13 // FluidSynth driver is preferred
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -76,10 +76,36 @@ Common::Error PC98EmuMusicPlugin::createInstance(MidiDriver **mididriver, MidiDr
|
||||||
return Common::kUnknownError;
|
return Common::kUnknownError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class SegaCDSoundPlugin : public MusicPluginObject {
|
||||||
|
public:
|
||||||
|
const char *getName() const {
|
||||||
|
return _s("SegaCD Audio");
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *getId() const {
|
||||||
|
return "segacd";
|
||||||
|
}
|
||||||
|
|
||||||
|
MusicDevices getDevices() const;
|
||||||
|
Common::Error createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle = 0) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
MusicDevices SegaCDSoundPlugin::getDevices() const {
|
||||||
|
MusicDevices devices;
|
||||||
|
devices.push_back(MusicDevice(this, "", MT_SEGACD));
|
||||||
|
return devices;
|
||||||
|
}
|
||||||
|
|
||||||
|
Common::Error SegaCDSoundPlugin::createInstance(MidiDriver **mididriver, MidiDriver::DeviceHandle) const {
|
||||||
|
*mididriver = 0;
|
||||||
|
return Common::kUnknownError;
|
||||||
|
}
|
||||||
|
|
||||||
//#if PLUGIN_ENABLED_DYNAMIC(TOWNS)
|
//#if PLUGIN_ENABLED_DYNAMIC(TOWNS)
|
||||||
//REGISTER_PLUGIN_DYNAMIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
//REGISTER_PLUGIN_DYNAMIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
||||||
//REGISTER_PLUGIN_DYNAMIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
//REGISTER_PLUGIN_DYNAMIC(PC98, PLUGIN_TYPE_MUSIC, PC98EmuMusicPlugin);
|
||||||
//#else
|
//#else
|
||||||
REGISTER_PLUGIN_STATIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
REGISTER_PLUGIN_STATIC(TOWNS, PLUGIN_TYPE_MUSIC, TownsEmuMusicPlugin);
|
||||||
REGISTER_PLUGIN_STATIC(PC98, PLUGIN_TYPE_MUSIC, PC98EmuMusicPlugin);
|
REGISTER_PLUGIN_STATIC(PC98, PLUGIN_TYPE_MUSIC, PC98EmuMusicPlugin);
|
||||||
|
REGISTER_PLUGIN_STATIC(SEGACD, PLUGIN_TYPE_MUSIC, SegaCDSoundPlugin);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
|
@ -137,6 +137,7 @@ public:
|
||||||
LINK_PLUGIN(APPLEIIGS)
|
LINK_PLUGIN(APPLEIIGS)
|
||||||
LINK_PLUGIN(TOWNS)
|
LINK_PLUGIN(TOWNS)
|
||||||
LINK_PLUGIN(PC98)
|
LINK_PLUGIN(PC98)
|
||||||
|
LINK_PLUGIN(SEGACD)
|
||||||
#if defined(USE_TIMIDITY)
|
#if defined(USE_TIMIDITY)
|
||||||
LINK_PLUGIN(TIMIDITY)
|
LINK_PLUGIN(TIMIDITY)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,6 +53,7 @@ const struct GameOpt {
|
||||||
{ GUIO_MIDIAPPLEIIGS,"midiAppleIIgs" },
|
{ GUIO_MIDIAPPLEIIGS,"midiAppleIIgs" },
|
||||||
{ GUIO_MIDITOWNS, "midiTowns" },
|
{ GUIO_MIDITOWNS, "midiTowns" },
|
||||||
{ GUIO_MIDIPC98, "midiPC98" },
|
{ GUIO_MIDIPC98, "midiPC98" },
|
||||||
|
{ GUIO_MIDISEGACD, "midiSegaCD" },
|
||||||
{ GUIO_MIDIMT32, "midiMt32" },
|
{ GUIO_MIDIMT32, "midiMt32" },
|
||||||
{ GUIO_MIDIGM, "midiGM" },
|
{ GUIO_MIDIGM, "midiGM" },
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#define GUIO_MIDIAPPLEIIGS "\015"
|
#define GUIO_MIDIAPPLEIIGS "\015"
|
||||||
#define GUIO_MIDITOWNS "\016"
|
#define GUIO_MIDITOWNS "\016"
|
||||||
#define GUIO_MIDIPC98 "\017"
|
#define GUIO_MIDIPC98 "\017"
|
||||||
|
#define GUIO_MIDISEGACD "\018"
|
||||||
#define GUIO_MIDIMT32 "\020"
|
#define GUIO_MIDIMT32 "\020"
|
||||||
#define GUIO_MIDIGM "\021"
|
#define GUIO_MIDIGM "\021"
|
||||||
|
|
||||||
|
|
|
@ -1840,7 +1840,7 @@ const KYRAGameDescription adGameDescs[] = {
|
||||||
Common::EN_ANY,
|
Common::EN_ANY,
|
||||||
Common::kPlatformSegaCD,
|
Common::kPlatformSegaCD,
|
||||||
ADGF_NO_FLAGS,
|
ADGF_NO_FLAGS,
|
||||||
GUIO3(GUIO_NOSPEECH, GUIO_NOMIDI, GAMEOPTION_EOB_MOUSESWAP)
|
GUIO3(GUIO_NOSPEECH, GUIO_MIDISEGACD, GAMEOPTION_EOB_MOUSESWAP)
|
||||||
},
|
},
|
||||||
EOB_FLAGS
|
EOB_FLAGS
|
||||||
},
|
},
|
||||||
|
|
|
@ -434,7 +434,7 @@ Common::Error EoBCoreEngine::init() {
|
||||||
_sound = new SoundAmiga_EoB(this, _mixer);
|
_sound = new SoundAmiga_EoB(this, _mixer);
|
||||||
break;
|
break;
|
||||||
case Common::kPlatformSegaCD:
|
case Common::kPlatformSegaCD:
|
||||||
dev = MidiDriver::detectDevice(/*MDT_SEGACD*/MDT_TOWNS);
|
dev = MidiDriver::detectDevice(MDT_SEGACD);
|
||||||
_sound = new SoundSegaCD_EoB(this, _mixer);
|
_sound = new SoundSegaCD_EoB(this, _mixer);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -1284,8 +1284,8 @@ void OptionsDialog::addAudioControls(GuiObject *boss, const Common::String &pref
|
||||||
for (MusicDevices::iterator d = i.begin(); d != i.end(); ++d) {
|
for (MusicDevices::iterator d = i.begin(); d != i.end(); ++d) {
|
||||||
Common::String deviceGuiOption = MidiDriver::musicType2GUIO(d->getMusicType());
|
Common::String deviceGuiOption = MidiDriver::musicType2GUIO(d->getMusicType());
|
||||||
|
|
||||||
if ((_domain == Common::ConfigManager::kApplicationDomain && d->getMusicType() != MT_TOWNS // global dialog - skip useless FM-Towns, C64, Amiga, AppleIIGS options there
|
if ((_domain == Common::ConfigManager::kApplicationDomain && d->getMusicType() != MT_TOWNS // global dialog - skip useless FM-Towns, C64, Amiga, AppleIIGS and SegaCD options there
|
||||||
&& d->getMusicType() != MT_C64 && d->getMusicType() != MT_AMIGA && d->getMusicType() != MT_APPLEIIGS && d->getMusicType() != MT_PC98)
|
&& d->getMusicType() != MT_C64 && d->getMusicType() != MT_AMIGA && d->getMusicType() != MT_APPLEIIGS && d->getMusicType() != MT_PC98 && d->getMusicType() != MT_SEGACD)
|
||||||
|| (_domain != Common::ConfigManager::kApplicationDomain && !hasMidiDefined) // No flags are specified
|
|| (_domain != Common::ConfigManager::kApplicationDomain && !hasMidiDefined) // No flags are specified
|
||||||
|| (_guioptions.contains(deviceGuiOption)) // flag is present
|
|| (_guioptions.contains(deviceGuiOption)) // flag is present
|
||||||
// HACK/FIXME: For now we have to show GM devices, even when the game only has GUIO_MIDIMT32 set,
|
// HACK/FIXME: For now we have to show GM devices, even when the game only has GUIO_MIDIMT32 set,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue