aboutsummaryrefslogtreecommitdiff
path: root/scumm/imuse_digi/dimuse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/imuse_digi/dimuse.cpp')
-rw-r--r--scumm/imuse_digi/dimuse.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/scumm/imuse_digi/dimuse.cpp b/scumm/imuse_digi/dimuse.cpp
index e606352f3a..6c001d1ac6 100644
--- a/scumm/imuse_digi/dimuse.cpp
+++ b/scumm/imuse_digi/dimuse.cpp
@@ -230,6 +230,7 @@ void IMuseDigital::switchToNextRegion(int track) {
}
debug(5, "switchToNextRegion-sound(%d) select %d region, curHookId: %d", _track[track].soundId, _track[track].curRegion, _track[track].curHookId);
+ _track[track].dataOffset += _track[track].regionOffset;
_track[track].regionOffset = 0;
}
@@ -250,6 +251,7 @@ void IMuseDigital::startSound(int soundId, const char *soundName, int soundType,
_track[l].soundGroup = soundGroup;
_track[l].curHookId = hookId;
_track[l].curRegion = -1;
+ _track[l].dataOffset = 0;
_track[l].regionOffset = 0;
_track[l].trackOffset = 0;
_track[l].mod = 0;
@@ -622,7 +624,7 @@ int32 IMuseDigital::getPosInMs(int soundId) {
for (int l = 0; l < MAX_DIGITAL_TRACKS; l++) {
_track[l].locked = true;
if ((_track[l].soundId == soundId) && _track[l].used) {
- int32 pos = 1000 * _track[l].trackOffset / _track[l].iteration;
+ int32 pos = 1000 * (_track[l].dataOffset + _track[l].regionOffset) / _track[l].iteration;
_track[l].locked = false;
return pos;
}