aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2016-05-22 22:51:26 +0200
committerMartin Kiewitz2016-05-22 22:52:11 +0200
commit018828ba90bd60c457ad8d5e699226646aaeed42 (patch)
treebddd127814aecf2c2720de438ba34bbe85976b59 /engines
parentc1aca1dce8ae1d8cf929412a6e8dc2ee356a94ca (diff)
downloadscummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.tar.gz
scummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.tar.bz2
scummvm-rg350-018828ba90bd60c457ad8d5e699226646aaeed42.zip
AGI: Fix invalid read (/crash), when shaking screen
Was a regression caused by commit e1c36a52b561463217e22687605d2f4f1dc33be6 (upscaling + hercules font support) Thanks to salty-horse for reporting this issue
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/graphics.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/engines/agi/graphics.cpp b/engines/agi/graphics.cpp
index 6d3563a451..c7d643d6a0 100644
--- a/engines/agi/graphics.cpp
+++ b/engines/agi/graphics.cpp
@@ -1178,13 +1178,17 @@ void GfxMgr::drawCharacterOnDisplay(int16 x, int16 y, const byte character, byte
#define SHAKE_HORIZONTAL_PIXELS 4
// Sierra used some EGA port trickery to do it, we have to do it by copying pixels around
+//
+// Shaking locations:
+// - Fanmade "Enclosure" right during the intro
+// - Space Quest 2 almost right at the start when getting captured (after walking into the space ship)
void GfxMgr::shakeScreen(int16 repeatCount) {
int shakeNr, shakeCount;
uint8 *blackSpace;
int16 shakeHorizontalPixels = SHAKE_HORIZONTAL_PIXELS * (2 + _displayWidthMulAdjust);
int16 shakeVerticalPixels = SHAKE_VERTICAL_PIXELS * (1 + _displayHeightMulAdjust);
- if ((blackSpace = (uint8 *)calloc(shakeVerticalPixels * _displayScreenWidth, 1)) == NULL)
+ if ((blackSpace = (uint8 *)calloc(shakeHorizontalPixels * _displayScreenWidth, 1)) == NULL)
return;
shakeCount = repeatCount * 8; // effectively 4 shakes per repeat