aboutsummaryrefslogtreecommitdiff
path: root/engines/groovie
diff options
context:
space:
mode:
authorFilippos Karapetis2014-11-04 11:52:09 +0200
committerFilippos Karapetis2014-11-04 11:52:09 +0200
commitd8e650b4cbfd76ed448e5ebc2caab3db5b1d1d55 (patch)
tree91b84853bf72ebb52e441855ded5da5ba8daa7ca /engines/groovie
parent70fe89b92d81bcdbc827c4467e508b3ad3d26051 (diff)
downloadscummvm-rg350-d8e650b4cbfd76ed448e5ebc2caab3db5b1d1d55.tar.gz
scummvm-rg350-d8e650b4cbfd76ed448e5ebc2caab3db5b1d1d55.tar.bz2
scummvm-rg350-d8e650b4cbfd76ed448e5ebc2caab3db5b1d1d55.zip
GROOVIE: Handle flag 2 for V2 games (show a whole overlay video)
Diffstat (limited to 'engines/groovie')
-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;