aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/imuse_digi/dimuse_track.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/imuse_digi/dimuse_track.cpp')
-rw-r--r--engines/scumm/imuse_digi/dimuse_track.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/engines/scumm/imuse_digi/dimuse_track.cpp b/engines/scumm/imuse_digi/dimuse_track.cpp
index aaf41fca7d..cebf104a14 100644
--- a/engines/scumm/imuse_digi/dimuse_track.cpp
+++ b/engines/scumm/imuse_digi/dimuse_track.cpp
@@ -155,9 +155,15 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
if (otherTrack && otherTrack->used && !otherTrack->toBeRemoved) {
track->curRegion = otherTrack->curRegion;
- track->regionOffset = otherTrack->regionOffset;
- track->dataOffset = otherTrack->dataOffset;
- track->dataMod12Bit = otherTrack->dataMod12Bit;
+ if (track->sndDataExtComp) {
+ track->dataOffset = _sound->getRegionOffset(track->soundDesc, track->curRegion);
+ track->regionOffset = 0;
+ track->dataMod12Bit = 0;
+ } else {
+ track->dataOffset = otherTrack->dataOffset;
+ track->regionOffset = otherTrack->regionOffset;
+ track->dataMod12Bit = otherTrack->dataMod12Bit;
+ }
}
track->stream = Audio::makeAppendableAudioStream(freq, makeMixerFlags(track->mixerFlags));
@@ -282,7 +288,7 @@ void IMuseDigital::fadeOutMusicAndStartNew(int fadeDelay, const char *filename,
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
startMusicWithOtherPos(filename, soundId, 0, 127, track);
- cloneToFadeOutTrack(track, fadeDelay);
+ Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
flushTrack(track);
break;
}
@@ -296,7 +302,7 @@ void IMuseDigital::fadeOutMusic(int fadeDelay) {
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
Track *track = _track[l];
if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
- cloneToFadeOutTrack(track, fadeDelay);
+ Track *fadeTrack = cloneToFadeOutTrack(track, fadeDelay);
flushTrack(track);
break;
}
@@ -342,7 +348,7 @@ IMuseDigital::Track *IMuseDigital::cloneToFadeOutTrack(Track *track, int fadeDel
fadeTrack->trackId = track->trackId + MAX_DIGITAL_TRACKS;
// Clone the sound.
- // leaving bug number for now #1635361
+ // leaving bug number for now #1635361, we need implement seek in compressed stream
fadeTrack->soundDesc = soundDesc;
// Set the volume fading parameters to indicate a fade out