diff options
Diffstat (limited to 'engines/sci')
-rw-r--r-- | engines/sci/graphics/view.cpp | 26 | ||||
-rw-r--r-- | engines/sci/resource.cpp | 14 |
2 files changed, 10 insertions, 30 deletions
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp index 8eacecd1f9..f9bbee4ec6 100644 --- a/engines/sci/graphics/view.cpp +++ b/engines/sci/graphics/view.cpp @@ -313,25 +313,6 @@ int16 GfxView::getHeight(int16 loopNo, int16 celNo) const { const CelInfo *GfxView::getCelInfo(int16 loopNo, int16 celNo) const { assert(_loopCount); - - // WORKAROUND for the EGA version of SQ1: View 506 is the portrait of the - // skimmer buyer in room 41 in SQ1. Loop 0 is his face looking left (shown - // the first time Roger arrives in Ulence Flats) and loop 1 is his face - // looking right (shown the second time he appears, when he makes the - // second offer for the skimmer). In the VGA version, the first two loops - // have 2 cels, a valid one (cel 0) and an invalid one (cel 1). In the EGA - // version, the cels in these two loops have been swapped. The game scripts, - // however seem to get confused by this situation, and when they check loop - // 1, cel 0 via kCelHigh and kCelWide regard it as invalid and never show - // it. We just swap the two cels here in the EGA version, making it behave - // like the VGA version, thus the game scripts show the correct loop. Fixes - // bug #3044500. Note that the same workaround is in getBitmap(). - // TODO: Check if this issue happens in the original version. - if (g_sci->getGameId() == GID_SQ1 && !_resMan->isVGA() && _resourceId == 506) { - if ((loopNo == 0 || loopNo == 1) && celNo == 0) - celNo = 1; - } - loopNo = CLIP<int16>(loopNo, 0, _loopCount - 1); celNo = CLIP<int16>(celNo, 0, _loop[loopNo].celCount - 1); return &_loop[loopNo].cel[celNo]; @@ -535,13 +516,6 @@ void GfxView::unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint32 pixelCou } const byte *GfxView::getBitmap(int16 loopNo, int16 celNo) { - // WORKAROUND for the EGA version of SQ1, same as the one in getCelInfo(). - // Check getCelInfo() above for more information. - if (g_sci->getGameId() == GID_SQ1 && !_resMan->isVGA() && _resourceId == 506) { - if ((loopNo == 0 || loopNo == 1) && celNo == 0) - celNo = 1; - } - loopNo = CLIP<int16>(loopNo, 0, _loopCount -1); celNo = CLIP<int16>(celNo, 0, _loop[loopNo].celCount - 1); if (_loop[loopNo].cel[celNo].rawBitmap) diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp index 75628d3572..654c3f1d64 100644 --- a/engines/sci/resource.cpp +++ b/engines/sci/resource.cpp @@ -1535,10 +1535,16 @@ void ResourceManager::readResourcePatches() { mask += s_resourceTypeSuffixes[i]; SearchMan.listMatchingMembers(files, mask); - if (i == kResourceTypeScript && files.size() == 0) { - // SCI3 (we can't use getSciVersion() at this point) - mask = "*.csc"; - SearchMan.listMatchingMembers(files, mask); + if (i == kResourceTypeView) { + SearchMan.listMatchingMembers(files, "*.v16"); // EGA SCI1 view patches + SearchMan.listMatchingMembers(files, "*.v32"); // Amiga SCI1 view patches + } else if (i == kResourceTypePic) { + SearchMan.listMatchingMembers(files, "*.p16"); // EGA SCI1 picture patches + SearchMan.listMatchingMembers(files, "*.p32"); // Amiga SCI1 picture patches + } else if (i == kResourceTypeScript) { + if (files.size() == 0) + // SCI3 (we can't use getSciVersion() at this point) + SearchMan.listMatchingMembers(files, "*.csc"); } for (Common::ArchiveMemberList::const_iterator x = files.begin(); x != files.end(); ++x) { |