diff options
author | Johannes Schickel | 2008-07-31 10:47:15 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-07-31 10:47:15 +0000 |
commit | 5e0df8ad8e9755e1fcf11d8433052dc11c74e988 (patch) | |
tree | b9bb5f1ce9df8d6db959923099beb04dbd75751f /engines/kyra/sound_adlib.cpp | |
parent | 278a5fbb57f5707cbb2d0b3688c37d4bce946fc6 (diff) | |
download | scummvm-rg350-5e0df8ad8e9755e1fcf11d8433052dc11c74e988.tar.gz scummvm-rg350-5e0df8ad8e9755e1fcf11d8433052dc11c74e988.tar.bz2 scummvm-rg350-5e0df8ad8e9755e1fcf11d8433052dc11c74e988.zip |
Committed slightly modified patch #2029395 "KYRA: Lands of Lore Intro + Character selection".
svn-id: r33463
Diffstat (limited to 'engines/kyra/sound_adlib.cpp')
-rw-r--r-- | engines/kyra/sound_adlib.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 68a2f0be9c..0ceb288b8a 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -235,6 +235,10 @@ private: // * One for instruments, starting at offset 500. uint8 *getProgram(int progId) { + uint16 offset = READ_LE_UINT16(_soundData + 2 * progId); + //TODO: Check in LoL CD Adlib driver + if (offset == 0xFFFF) + return 0; return _soundData + READ_LE_UINT16(_soundData + 2 * progId); } @@ -1282,6 +1286,9 @@ int AdlibDriver::update_setupProgram(uint8 *&dataptr, Channel &channel, uint8 va return 0; uint8 *ptr = getProgram(value); + //TODO: Check in LoL CD Adlib driver + if (!ptr) + return 0; uint8 chan = *ptr++; uint8 priority = *ptr++; @@ -2213,7 +2220,7 @@ const int SoundAdlibPC::_kyra1NumSoundTriggers = ARRAYSIZE(SoundAdlibPC::_kyra1S SoundAdlibPC::SoundAdlibPC(KyraEngine_v1 *vm, Audio::Mixer *mixer) : Sound(vm, mixer), _driver(0), _trackEntries(), _soundDataPtr(0) { memset(_trackEntries, 0, sizeof(_trackEntries)); - _v2 = (_vm->gameFlags().gameID == GI_KYRA2); + _v2 = (_vm->gameFlags().gameID == GI_KYRA2) || (_vm->gameFlags().gameID == GI_LOL); _driver = new AdlibDriver(mixer, _v2); assert(_driver); |