diff options
author | Filippos Karapetis | 2010-12-01 00:40:52 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-12-01 00:40:52 +0000 |
commit | 94801fcea3f7bbcb74a4d8ca8c5d80fe1f5795d0 (patch) | |
tree | 97f991eb84bcf3d4cedc02c54360240f06b60678 /engines | |
parent | e4fa2855b610d5667bd6a68147db7818212100e7 (diff) | |
download | scummvm-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')
-rw-r--r-- | engines/sci/graphics/picture.cpp | 22 |
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; |