aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/picture.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2010-12-01 00:40:52 +0000
committerFilippos Karapetis2010-12-01 00:40:52 +0000
commit94801fcea3f7bbcb74a4d8ca8c5d80fe1f5795d0 (patch)
tree97f991eb84bcf3d4cedc02c54360240f06b60678 /engines/sci/graphics/picture.cpp
parente4fa2855b610d5667bd6a68147db7818212100e7 (diff)
downloadscummvm-rg350-94801fcea3f7bbcb74a4d8ca8c5d80fe1f5795d0.tar.gz
scummvm-rg350-94801fcea3f7bbcb74a4d8ca8c5d80fe1f5795d0.tar.bz2
scummvm-rg350-94801fcea3f7bbcb74a4d8ca8c5d80fe1f5795d0.zip
SCI: Fixed bugs #3041044, #3046543 and #3046513
svn-id: r54690
Diffstat (limited to 'engines/sci/graphics/picture.cpp')
-rw-r--r--engines/sci/graphics/picture.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/engines/sci/graphics/picture.cpp b/engines/sci/graphics/picture.cpp
index 707096740a..c381e5aadb 100644
--- a/engines/sci/graphics/picture.cpp
+++ b/engines/sci/graphics/picture.cpp
@@ -498,6 +498,7 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) {
Palette palette;
int16 pattern_Code = 0, pattern_Texture = 0;
bool icemanDrawFix = false;
+ bool ignoreBrokenPriority = false;
memset(&palette, 0, sizeof(palette));
@@ -518,6 +519,22 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) {
if ((_screen->getUnditherState()) && ((_resourceId >= 53 && _resourceId <= 58) || (_resourceId == 61)))
icemanDrawFix = true;
}
+ if (g_sci->getGameId() == GID_KQ5) {
+ // WORKAROUND: ignore the seemingly broken priority of picture 48
+ // (island overview). Fixes bug #3041044.
+ if (_resourceId == 48)
+ ignoreBrokenPriority = true;
+ }
+ if (g_sci->getGameId() == GID_SQ4) {
+ // WORKAROUND: ignore the seemingly broken priority of pictures 546
+ // and 547 (Vohaul's head and Roger Jr trapped). Fixes bug #3046543.
+ if (_resourceId == 546 || _resourceId == 547)
+ ignoreBrokenPriority = true;
+ // WORKAROUND: ignore the seemingly broken priority of picture 631
+ // (SQ1 view from the cockpit). Fixes bug #3046513.
+ if (_resourceId == 631)
+ ignoreBrokenPriority = true;
+ }
}
// Drawing
@@ -537,9 +554,10 @@ void GfxPicture::drawVectorData(byte *data, int dataSize) {
case PIC_OP_SET_PRIORITY:
pic_priority = data[curPos++] & 0x0F;
- if (isEGA) {
+ if (isEGA)
pic_priority = EGApriority[pic_priority];
- }
+ if (ignoreBrokenPriority)
+ pic_priority = 255;
break;
case PIC_OP_DISABLE_PRIORITY:
pic_priority = 255;