diff options
author | athrxx | 2011-04-30 15:56:18 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-05-17 20:24:30 +0200 |
commit | 6845f25f541707786f81dded25485c4ff5c8d62d (patch) | |
tree | b05635eb1aa414353e29c72483d448b9278d1b92 | |
parent | 63a78593516dc428f77ac01d90bc228fcf01de5d (diff) | |
download | scummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.tar.gz scummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.tar.bz2 scummvm-rg350-6845f25f541707786f81dded25485c4ff5c8d62d.zip |
SCUMM: Adapt code to latest FM-TOWNS audio driver changes
-rw-r--r-- | audio/softsynth/fmtowns_pc98/towns_midi.h | 2 | ||||
-rw-r--r-- | engines/scumm/player_towns.cpp | 9 | ||||
-rw-r--r-- | engines/scumm/player_towns.h | 6 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 15 |
4 files changed, 15 insertions, 17 deletions
diff --git a/audio/softsynth/fmtowns_pc98/towns_midi.h b/audio/softsynth/fmtowns_pc98/towns_midi.h index 658c5a456b..cc390a260b 100644 --- a/audio/softsynth/fmtowns_pc98/towns_midi.h +++ b/audio/softsynth/fmtowns_pc98/towns_midi.h @@ -25,8 +25,8 @@ #ifndef TOWNS_MIDI_H #define TOWNS_MIDI_H -#include "audio/mididrv.h" #include "audio/softsynth/fmtowns_pc98/towns_audio.h" +#include "audio/mididrv.h" class MidiChannel_TOWNS; class MidiDriver_TOWNS : public MidiDriver, public TownsAudioInterfacePluginDriver { 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 |