aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorathrxx2011-04-30 15:56:18 +0200
committerWillem Jan Palenstijn2011-05-17 20:24:30 +0200
commit6845f25f541707786f81dded25485c4ff5c8d62d (patch)
treeb05635eb1aa414353e29c72483d448b9278d1b92 /engines
parent63a78593516dc428f77ac01d90bc228fcf01de5d (diff)
downloadscummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.tar.gz
scummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.tar.bz2
scummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.zip
SCUMM: Adapt code to latest FM-TOWNS audio driver changes
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/player_towns.cpp9
-rw-r--r--engines/scumm/player_towns.h6
-rw-r--r--engines/scumm/scumm.cpp15
3 files changed, 14 insertions, 16 deletions
diff --git a/engines/scumm/player_towns.cpp b/engines/scumm/player_towns.cpp
index 2301b2a9b0..a100af74ca 100644
--- a/engines/scumm/player_towns.cpp
+++ b/engines/scumm/player_towns.cpp
@@ -574,16 +574,15 @@ void Player_Towns_v1::playCdaTrack(int sound, const uint8 *data, bool skipTrackV
_cdaCurrentSound = sound;
}
-Player_Towns_v2::Player_Towns_v2(ScummEngine *vm, IMuse *imuse, Audio::Mixer *mixer, MidiDriver_TOWNS *driver, bool disposeIMuse, bool disposeDriver) : Player_Towns(vm, true), _imuse(imuse), _driver(driver), _imuseDispose(disposeIMuse), _driverDispose(disposeDriver), _sblData(0) {
+Player_Towns_v2::Player_Towns_v2(ScummEngine *vm, Audio::Mixer *mixer, IMuse *imuse, bool disposeIMuse) : Player_Towns(vm, true), _imuse(imuse), _imuseDispose(disposeIMuse), _sblData(0) {
_soundOverride = new SoundOvrParameters[_numSoundMax];
memset(_soundOverride, 0, _numSoundMax * sizeof(SoundOvrParameters));
- if (_driver)
- _intf = _driver->intf();
+ _intf = new TownsAudioInterface(mixer, 0);
}
Player_Towns_v2::~Player_Towns_v2() {
- if (_driverDispose)
- delete _driver;
+ delete _intf;
+ _intf = 0;
if (_imuseDispose)
delete _imuse;
diff --git a/engines/scumm/player_towns.h b/engines/scumm/player_towns.h
index 900ea593bb..470020d621 100644
--- a/engines/scumm/player_towns.h
+++ b/engines/scumm/player_towns.h
@@ -142,7 +142,7 @@ private:
class Player_Towns_v2 : public Player_Towns {
public:
- Player_Towns_v2(ScummEngine *vm, IMuse *imuse, Audio::Mixer *mixer, MidiDriver_TOWNS *driver, bool disposeIMuse, bool disposeDriver);
+ Player_Towns_v2(ScummEngine *vm, Audio::Mixer *mixer, IMuse *imuse, bool disposeIMuse);
~Player_Towns_v2();
bool init();
@@ -170,11 +170,9 @@ private:
SoundOvrParameters *_soundOverride;
uint8 *_sblData;
+
IMuse *_imuse;
- MidiDriver_TOWNS *_driver;
-
const bool _imuseDispose;
- const bool _driverDispose;
};
} // End of namespace Scumm
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index ff51158a4c..c37ff25977 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1828,24 +1828,26 @@ void ScummEngine::setupMusic(int midi) {
MidiDriver *nativeMidiDriver = 0;
MidiDriver *adlibMidiDriver = 0;
- if (_musicType != MDT_ADLIB)
+ if (_musicType != MDT_ADLIB && _musicType != MDT_TOWNS)
nativeMidiDriver = MidiDriver::createMidi(dev);
if (nativeMidiDriver != NULL && _native_mt32)
nativeMidiDriver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
bool multi_midi = ConfMan.getBool("multi_midi") && _musicType != MDT_NONE && (midi & MDT_ADLIB);
- if (_musicType == MDT_ADLIB || (multi_midi && _musicType != MDT_TOWNS)) {
+ if (_musicType == MDT_ADLIB || multi_midi) {
adlibMidiDriver = MidiDriver::createMidi(MidiDriver::detectDevice(MDT_ADLIB));
adlibMidiDriver->property(MidiDriver::PROP_OLD_ADLIB, (_game.features & GF_SMALL_HEADER) ? 1 : 0);
}
+ if (_musicType == MDT_TOWNS) {
+ adlibMidiDriver = MidiDriver::createMidi(MidiDriver::detectDevice(MDT_TOWNS));
+ adlibMidiDriver->property(MidiDriver::PROP_OLD_ADLIB, (_game.features & GF_SMALL_HEADER) ? 1 : 0);
+ }
_imuse = IMuse::create(_system, nativeMidiDriver, adlibMidiDriver);
if (_game.platform == Common::kPlatformFMTowns) {
- MidiDriver *townsDriver = 0;
- townsDriver = (_musicType == MDT_TOWNS) ? nativeMidiDriver : MidiDriver::createMidi(MidiDriver::detectDevice(MDT_TOWNS));
- _musicEngine = _townsPlayer = new Player_Towns_v2(this, _imuse, _mixer, (MidiDriver_TOWNS*)townsDriver, true, (_musicType != MDT_TOWNS));
+ _musicEngine = _townsPlayer = new Player_Towns_v2(this, _mixer, _imuse, true);
if (!_townsPlayer->init())
- error("Failed to initialize FM-Towns audio driver");
+ error("ScummEngine::setupMusic(): Failed to initialize FM-Towns audio driver");
} else {
_musicEngine = _imuse;
}
@@ -1857,7 +1859,6 @@ void ScummEngine::setupMusic(int midi) {
_imuse->property(IMuse::PROP_GAME_ID, _game.id);
if (ConfMan.hasKey("tempo"))
_imuse->property(IMuse::PROP_TEMPO_BASE, ConfMan.getInt("tempo"));
- // YM2162 driver can't handle midi->getPercussionChannel(), NULL shouldn't init MT-32/GM/GS
if (midi != MDT_NONE) {
_imuse->property(IMuse::PROP_NATIVE_MT32, _native_mt32);
if (MidiDriver::getMusicType(dev) != MT_MT32) // MT-32 Emulation shouldn't be GM/GS initialized