aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/groovie/roq.cpp9
-rw-r--r--engines/groovie/roq.h3
2 files changed, 10 insertions, 2 deletions
diff --git a/engines/groovie/roq.cpp b/engines/groovie/roq.cpp
index 34689d8aa2..1996181571 100644
--- a/engines/groovie/roq.cpp
+++ b/engines/groovie/roq.cpp
@@ -77,6 +77,10 @@ uint16 ROQPlayer::loadInternal() {
debug(1, " <- 0 ");
}
+ // Flags:
+ // - 2 For overlay videos, show the whole video
+ _flagTwo = ((_flags & (1 << 2)) != 0);
+
// Begin reading the file
debugC(1, kDebugVideo, "Groovie::ROQ: Loading video");
@@ -177,8 +181,9 @@ bool ROQPlayer::playFrameInternal() {
_dirty = false;
}
- // Return whether the video has ended
- return _file->eos();
+ // Report the end of the video if we reached the end of the file or if we
+ // just wanted to play one frame.
+ return _file->eos() || (_alpha && !_flagTwo);
}
bool ROQPlayer::readBlockHeader(ROQBlockHeader &blockHeader) {
diff --git a/engines/groovie/roq.h b/engines/groovie/roq.h
index 3a85517f59..b720e6a235 100644
--- a/engines/groovie/roq.h
+++ b/engines/groovie/roq.h
@@ -74,6 +74,9 @@ private:
uint32 _codebook2[256 * 4];
byte _codebook4[256 * 4];
+ // Flags
+ bool _flagTwo;
+
// Buffers
Graphics::Surface *_fg, *_bg;
Graphics::Surface *_currBuf, *_prevBuf;