diff options
-rw-r--r-- | engines/composer/graphics.cpp | 4 | ||||
-rw-r--r-- | engines/composer/resource.cpp | 14 |
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++; |