aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/composer/graphics.cpp4
-rw-r--r--engines/composer/resource.cpp14
2 files changed, 15 insertions, 3 deletions
diff --git a/engines/composer/graphics.cpp b/engines/composer/graphics.cpp
index dc0c99a5ff..bd3cc3afca 100644
--- a/engines/composer/graphics.cpp
+++ b/engines/composer/graphics.cpp
@@ -352,6 +352,10 @@ void ComposerEngine::processAnimFrame() {
for (Common::List<Pipe *>::iterator j = _pipes.begin(); j != _pipes.end(); j++) {
Pipe *pipe = *j;
pipe->nextFrame();
+
+ // V1 pipe audio; see OldPipe
+ if (pipe->hasResource(ID_WAVE, 0xffff))
+ playWaveForAnim(0xffff, 0, false);
}
}
diff --git a/engines/composer/resource.cpp b/engines/composer/resource.cpp
index ce2661f0d0..6d7f2f2979 100644
--- a/engines/composer/resource.cpp
+++ b/engines/composer/resource.cpp
@@ -385,9 +385,17 @@ void OldPipe::nextFrame() {
spriteResMap[spriteIds[i]].entries.push_back(entry);
}
- // FIXME
- uint32 audioDataOffset = _stream->pos();
- _stream->skip(audioSize);
+ ResourceMap &audioResMap = _types[ID_WAVE];
+ audioResMap.clear();
+
+ if (audioSize > 0) {
+ PipeResourceEntry entry;
+ entry.size = audioSize;
+ entry.offset = _stream->pos();
+ // we use 0xffff for per-frame pipe audio
+ audioResMap[0xffff].entries.push_back(entry);
+ _stream->skip(audioSize);
+ }
_offset = _stream->pos();
_currFrame++;