diff options
author | Sven Hesse | 2009-07-17 19:22:12 +0000 |
---|---|---|
committer | Sven Hesse | 2009-07-17 19:22:12 +0000 |
commit | df52a5d58ea5bedba031aed900e228a75eef7c58 (patch) | |
tree | 05f4481ce40090849aad6275070624dd861eec6b /engines/gob | |
parent | 53756ef1d022a959b24c041e18f55eef34e60dd3 (diff) | |
download | scummvm-rg350-df52a5d58ea5bedba031aed900e228a75eef7c58.tar.gz scummvm-rg350-df52a5d58ea5bedba031aed900e228a75eef7c58.tar.bz2 scummvm-rg350-df52a5d58ea5bedba031aed900e228a75eef7c58.zip |
Adding a workaround for the vanishing Coh Cott bug (#1972466), which is actually an error in that video file
svn-id: r42570
Diffstat (limited to 'engines/gob')
-rw-r--r-- | engines/gob/videoplayer.cpp | 15 | ||||
-rw-r--r-- | engines/gob/videoplayer.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp index da552d7202..2a385ea4d1 100644 --- a/engines/gob/videoplayer.cpp +++ b/engines/gob/videoplayer.cpp @@ -156,6 +156,7 @@ VideoPlayer::VideoPlayer(GobEngine *vm) : _vm(vm) { _backSurf = false; _needBlit = false; _noCursorSwitch = false; + _woodruffCohCottWorkaround = false; } VideoPlayer::~VideoPlayer() { @@ -248,6 +249,14 @@ bool VideoPlayer::primaryOpen(const char *videoFile, int16 x, int16 y, _noCursorSwitch = true; } + // WORKAROUND: In Woodruff, Coh Cott vanished in one video on her party. + // This is a bug in video, so we work around it. + _woodruffCohCottWorkaround = false; + if (_vm->getGameType() == kGameTypeWoodruff) { + if (!scumm_stricmp(fileName, "SQ32-03.VMD")) + _woodruffCohCottWorkaround = true; + } + _ownSurf = false; if (!(flags & kFlagNoVideo)) { @@ -657,6 +666,12 @@ void VideoPlayer::playFrame(int16 frame, int16 breakKey, Graphics::CoktelVideo::State state = video.nextFrame(); WRITE_VAR(11, frame); + if (_woodruffCohCottWorkaround && (frame == 32)) { + // WORKAROUND: This frame mistakenly masks Coh Cott, making her vanish + // To prevent that, we'll never draw that part + state.left += 50; + } + if (_needBlit) _vm->_draw->forceBlit(true); diff --git a/engines/gob/videoplayer.h b/engines/gob/videoplayer.h index ead752d446..e2e2ef6787 100644 --- a/engines/gob/videoplayer.h +++ b/engines/gob/videoplayer.h @@ -152,6 +152,8 @@ private: bool _needBlit; bool _noCursorSwitch; + bool _woodruffCohCottWorkaround; + bool findFile(char *fileName, Type &which); const Video *getVideoBySlot(int slot = -1) const; |