aboutsummaryrefslogtreecommitdiff
path: root/engines/parallaction
diff options
context:
space:
mode:
authorNicola Mettifogo2007-06-23 21:42:45 +0000
committerNicola Mettifogo2007-06-23 21:42:45 +0000
commit2fb22f2eea03a2e45daef5adcf35237c8e7cf923 (patch)
treeaa3eaa181ffcf08f603876e99b303bd65334f55c /engines/parallaction
parent90c2210dae8c91fa8babc6b05564e15c9d445d18 (diff)
downloadscummvm-rg350-2fb22f2eea03a2e45daef5adcf35237c8e7cf923.tar.gz
scummvm-rg350-2fb22f2eea03a2e45daef5adcf35237c8e7cf923.tar.bz2
scummvm-rg350-2fb22f2eea03a2e45daef5adcf35237c8e7cf923.zip
Now clipping frame # to avoid crashes because of bad behavior of game scripts.
svn-id: r27683
Diffstat (limited to 'engines/parallaction')
-rw-r--r--engines/parallaction/animation.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/engines/parallaction/animation.cpp b/engines/parallaction/animation.cpp
index 33caaa1b58..d4f538c451 100644
--- a/engines/parallaction/animation.cpp
+++ b/engines/parallaction/animation.cpp
@@ -166,15 +166,19 @@ void jobDisplayAnimations(void *parm, Job *j) {
if ((v18->_flags & kFlagsActive) && ((v18->_flags & kFlagsRemove) == 0)) {
v14._width = v18->width();
v14._height = v18->height();
- v14._data0 = v18->getFrameData(v18->_frame);
-// v14._data1 = v18->_cnv->field_8[v18->_frame];
+
+ int16 frame = CLIP((int)v18->_frame, 0, v18->getFrameNum()-1);
+
+ v14._data0 = v18->getFrameData(frame);
+// v14._data1 = v18->_cnv->field_8[frame];
if (v18->_flags & kFlagsNoMasked)
_si = 3;
else
_si = _vm->_gfx->queryMask(v18->_top + v18->height());
- debugC(9, kDebugLocation, "jobDisplayAnimations(%s, x:%i, y:%i, z:%i, w:%i, h:%i, %p)", v18->_label._text, v18->_left, v18->_top, _si, v14._width, v14._height, v14._data0);
+ debugC(9, kDebugLocation, "jobDisplayAnimations(%s, x:%i, y:%i, z:%i, w:%i, h:%i, f:%i/%i, %p)", v18->_label._text, v18->_left, v18->_top, _si, v14._width, v14._height,
+ frame, v18->getFrameNum(), v14._data0);
_vm->_gfx->blitCnv(&v14, v18->_left, v18->_top, _si, Gfx::kBitBack);
}