diff options
author | Filippos Karapetis | 2010-01-27 21:11:24 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-01-27 21:11:24 +0000 |
commit | 76ff84a62fcbec28b58ab14a157ec9fc74dd05d6 (patch) | |
tree | 5613fb6b362df23f1861782c2c3e199bd28839b8 /engines/sci | |
parent | e81ddfcdccffa431532d5e6d604d49084dd212b4 (diff) | |
download | scummvm-rg350-76ff84a62fcbec28b58ab14a157ec9fc74dd05d6.tar.gz scummvm-rg350-76ff84a62fcbec28b58ab14a157ec9fc74dd05d6.tar.bz2 scummvm-rg350-76ff84a62fcbec28b58ab14a157ec9fc74dd05d6.zip |
Fixed the demo version of Longbow - speech was not played at all with the new sound code
svn-id: r47610
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/sound/music.cpp | 16 | ||||
-rw-r--r-- | engines/sci/sound/soundcmd.cpp | 10 |
2 files changed, 13 insertions, 13 deletions
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp index 3bb3f5e8df..85088a882b 100644 --- a/engines/sci/sound/music.cpp +++ b/engines/sci/sound/music.cpp @@ -170,15 +170,15 @@ void SciMusic::soundInitSnd(MusicEntry *pSnd) { int channelFilterMask = 0; SoundResource::Track *track = pSnd->soundRes->getTrackByType(_pMidiDrv->getPlayId()); - if (track) { - // If MIDI device is selected but there is no digital track in sound resource - // try to use adlib's digital sample if possible - if (_bMultiMidi && (track->digitalChannelNr == -1)) { - SoundResource::Track *digital = pSnd->soundRes->getDigitalTrack(); - if (digital) - track = digital; - } + // If MIDI device is selected but there is no digital track in sound resource + // try to use adlib's digital sample if possible + if (_bMultiMidi && (!track || track->digitalChannelNr == -1)) { + SoundResource::Track *digital = pSnd->soundRes->getDigitalTrack(); + if (digital) + track = digital; + } + if (track) { // Play digital sample if (track->digitalChannelNr != -1) { byte *channelData = track->channels[track->digitalChannelNr].data; diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp index 7b1f108667..b9609014e7 100644 --- a/engines/sci/sound/soundcmd.cpp +++ b/engines/sci/sound/soundcmd.cpp @@ -286,6 +286,11 @@ void SoundCommandParser::cmdInitSound(reg_t obj, int16 value) { #else + // Check if a track with the same sound object is already playing + MusicEntry *oldSound = _music->getSlot(obj); + if (oldSound) + cmdDisposeSound(obj, value); + MusicEntry *newSound = new MusicEntry(); newSound->resnum = number; if (number && _resMan->testResource(ResourceId(kResourceTypeSound, number))) @@ -299,11 +304,6 @@ void SoundCommandParser::cmdInitSound(reg_t obj, int16 value) { if (_soundVersion >= SCI_VERSION_1_LATE) newSound->volume = CLIP<int>(GET_SEL32V(_segMan, obj, vol), 0, MUSIC_VOLUME_MAX); - // Check if a track with the same sound object is already playing - MusicEntry *oldSound = _music->getSlot(obj); - if (oldSound) - cmdDisposeSound(obj, value); - // In SCI1.1 games, sound effects are started from here. If we can find // a relevant audio resource, play it, otherwise switch to synthesized // effects. If the resource exists, play it using map 65535 (sound |