diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/graphics/compare.cpp | 37 | ||||
-rw-r--r-- | engines/sci/graphics/palette.cpp | 2 |
2 files changed, 29 insertions, 10 deletions
diff --git a/engines/sci/graphics/compare.cpp b/engines/sci/graphics/compare.cpp index 46ccd84e7f..9eda688a64 100644 --- a/engines/sci/graphics/compare.cpp +++ b/engines/sci/graphics/compare.cpp @@ -229,21 +229,38 @@ void GfxCompare::kernelBaseSetter(reg_t object) { if (viewId == 0xFFFF) // invalid view return; - GfxView *tmpView = _cache->getView(viewId); + uint16 scaleSignal = 0; + if (getSciVersion() >= SCI_VERSION_1_1) { + scaleSignal = readSelectorValue(_segMan, object, SELECTOR(scaleSignal)) & kScaleSignalDoScaling; + if (scaleSignal) { + int16 scaleY = readSelectorValue(_segMan, object, SELECTOR(scaleY)); + if (scaleY < 64) + scaleSignal = 0; + } + } + Common::Rect celRect; - if (tmpView->isSci2Hires()) - _screen->adjustToUpscaledCoordinates(y, x); + if (!scaleSignal) { + GfxView *tmpView = _cache->getView(viewId); + if (tmpView->isSci2Hires()) + _screen->adjustToUpscaledCoordinates(y, x); - tmpView->getCelRect(loopNo, celNo, x, y, z, celRect); + tmpView->getCelRect(loopNo, celNo, x, y, z, celRect); - if (tmpView->isSci2Hires()) { - _screen->adjustBackUpscaledCoordinates(celRect.top, celRect.left); - _screen->adjustBackUpscaledCoordinates(celRect.bottom, celRect.right); - } + if (tmpView->isSci2Hires()) { + _screen->adjustBackUpscaledCoordinates(celRect.top, celRect.left); + _screen->adjustBackUpscaledCoordinates(celRect.bottom, celRect.right); + } - celRect.bottom = y + 1; - celRect.top = celRect.bottom - yStep; + celRect.bottom = y + 1; + celRect.top = celRect.bottom - yStep; + } else { + celRect.left = readSelectorValue(_segMan, object, SELECTOR(nsLeft)); + celRect.right = readSelectorValue(_segMan, object, SELECTOR(nsRight)); + celRect.top = readSelectorValue(_segMan, object, SELECTOR(nsTop)); + celRect.bottom = readSelectorValue(_segMan, object, SELECTOR(nsBottom)); + } writeSelectorValue(_segMan, object, SELECTOR(brLeft), celRect.left); writeSelectorValue(_segMan, object, SELECTOR(brRight), celRect.right); diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp index 73689fe3b2..00d59c7b92 100644 --- a/engines/sci/graphics/palette.cpp +++ b/engines/sci/graphics/palette.cpp @@ -72,6 +72,8 @@ GfxPalette::GfxPalette(ResourceManager *resMan, GfxScreen *screen, bool useMergi } GfxPalette::~GfxPalette() { + if (_palVaryResourceId != -1) + palVaryRemoveTimer(); } bool GfxPalette::isMerging() { |