diff options
author | Johannes Schickel | 2013-05-03 00:58:32 +0200 |
---|---|---|
committer | Johannes Schickel | 2013-07-24 03:28:47 +0200 |
commit | 80ab4c524295ba2cdec3a297919653eda4133ed3 (patch) | |
tree | fa334033800bd44660e7570b58c910fac6a9c1e9 /engines/scumm/scumm.cpp | |
parent | e19656464c779558a8bc201cb97b924edcf91ea1 (diff) | |
download | scummvm-rg350-80ab4c524295ba2cdec3a297919653eda4133ed3.tar.gz scummvm-rg350-80ab4c524295ba2cdec3a297919653eda4133ed3.tar.bz2 scummvm-rg350-80ab4c524295ba2cdec3a297919653eda4133ed3.zip |
SCUMM: Implement original AD AdLib output.
This implements the original AD output and enables it for Indy3 and Loom DOS.
It is not enabled for Monkey Island DOS because it would break multi MIDI
support. However, there are also drawbacks for Indy3. In the catacombs
we were able to play sfx (Indy walking around) and the background music
at once. This was not supported in the original player and thus also does
not work with this reimplementation.
This fixes bug #2027877 "INDY3: Non-Looping Sound Effects".
This fixes bug #1159581 "ADLIB: Adlib Emulation doesn't Respect Volume Settings"
for Indy3 and Loom.
Diffstat (limited to 'engines/scumm/scumm.cpp')
-rw-r--r-- | engines/scumm/scumm.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index 2a14673855..d1a3de94b8 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -52,6 +52,7 @@ #include "scumm/he/logic_he.h" #include "scumm/he/sound_he.h" #include "scumm/object.h" +#include "scumm/player_ad.h" #include "scumm/player_nes.h" #include "scumm/player_sid.h" #include "scumm/player_pce.h" @@ -1841,6 +1842,15 @@ void ScummEngine::setupMusic(int midi) { _musicEngine = _townsPlayer = new Player_Towns_v1(this, _mixer); if (!_townsPlayer->init()) error("Failed to initialize FM-Towns audio driver"); + } else if (_game.platform == Common::kPlatformDOS && (_sound->_musicType == MDT_ADLIB) && (_game.id == GID_LOOM || _game.id == GID_INDY3)) { + // For Indy3 DOS and Loom DOS we use an implementation of the original + // AD player when AdLib is selected. This fixes sound effects in those + // games (see for example bug #2027877 "INDY3: Non-Looping Sound + // Effects"). The player itself is also used in Monkey Island DOS + // EGA/VGA. However, we support multi MIDI for that game and we cannot + // support this with the Player_AD code at the moment. The reason here + // is that multi MIDI is supported internally by our iMuse output. + _musicEngine = new Player_AD(this, _mixer); } else if (_game.version >= 3 && _game.heversion <= 62) { MidiDriver *nativeMidiDriver = 0; MidiDriver *adlibMidiDriver = 0; |