aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2007-07-05 21:19:47 +0000
committerFilippos Karapetis2007-07-05 21:19:47 +0000
commit51458026fe8dfeea337994914a13bbcc7981f129 (patch)
tree598b7c6ced59d15d8d0526eef8d21dc8d8c651ac
parent8e35049c9eff4eb1dc326e9d7f9c2805bc1e4a4c (diff)
downloadscummvm-rg350-51458026fe8dfeea337994914a13bbcc7981f129.tar.gz
scummvm-rg350-51458026fe8dfeea337994914a13bbcc7981f129.tar.bz2
scummvm-rg350-51458026fe8dfeea337994914a13bbcc7981f129.zip
The prisoners at the entrance of the prison in Nimdok's chapter are displayed correctly now
svn-id: r27931
-rw-r--r--engines/saga/animation.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/engines/saga/animation.cpp b/engines/saga/animation.cpp
index 59c3339c9b..d29fc6ebe6 100644
--- a/engines/saga/animation.cpp
+++ b/engines/saga/animation.cpp
@@ -445,6 +445,18 @@ void Anim::play(uint16 animId, int vectorTime, bool playing) {
if (anim->completed < anim->cycles) {
frame = anim->currentFrame;
+
+ // WORKAROUND for a buggy animation in IHNM. Animation 0 in scene 67 (the mob of angry prisoners) should
+ // start from frame 0, not frame 1. Frame 0 is the background of the animation (the mob of prisoners), whereas
+ // the rest of the frames are their animated arms. Therefore, in order for the prisoners to appear correctly,
+ // frame 0 should be displayed as the first frame, but anim->currentframe is set to 1, which means that the
+ // prisoners will never be shown. In the original, the prisoners (first frame in the animation) are shown a
+ // bit after the animation is started (which is wrong again, but not that apparent), whereas in ScummVM the
+ // first frame is never shown. Therefore, make sure that for this animation, frame 0 is shown first
+ if (_vm->getGameType() == GType_IHNM && _vm->_scene->currentChapterNumber() == 4 &&
+ _vm->_scene->currentSceneNumber() == 67 && animId == 0 && anim->completed == 1)
+ frame = 0;
+
// FIXME: if start > 0, then this works incorrectly
decodeFrame(anim, anim->frameOffsets[frame], displayBuffer, _vm->getDisplayWidth() * _vm->getDisplayHeight());
_vm->_frameCount++;