aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/frameout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/graphics/frameout.cpp')
-rw-r--r--engines/sci/graphics/frameout.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 220a7ed712..e251bd3dc0 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -421,7 +421,8 @@ void GfxFrameout::kernelUpdateScreenItem(reg_t object) {
itemEntry->signal = readSelectorValue(_segMan, object, SELECTOR(signal));
itemEntry->scaleSignal = readSelectorValue(_segMan, object, SELECTOR(scaleSignal));
- if (itemEntry->scaleSignal == 1) {
+
+ if (itemEntry->scaleSignal & kScaleSignalDoScaling32) {
itemEntry->scaleX = readSelectorValue(_segMan, object, SELECTOR(scaleX));
itemEntry->scaleY = readSelectorValue(_segMan, object, SELECTOR(scaleY));
} else {
@@ -743,10 +744,10 @@ void GfxFrameout::kernelFrameout() {
} else if (view) {
// Process global scaling, if needed.
// TODO: Seems like SCI32 always processes global scaling for scaled objects
- if (itemEntry->scaleSignal != 0 && itemEntry->scaleSignal != 1)
- error("Unknown scale signal: %d", itemEntry->scaleSignal);
// TODO: We can only process symmetrical scaling for now (i.e. same value for scaleX/scaleY)
- if (itemEntry->scaleSignal == 1 && itemEntry->scaleX == itemEntry->scaleY)
+ if ((itemEntry->scaleSignal & kScaleSignalDoScaling32) &&
+ !(itemEntry->scaleSignal & kScaleSignalDisableGlobalScaling32) &&
+ (itemEntry->scaleX == itemEntry->scaleY))
applyGlobalScaling(itemEntry, it->planeRect, view->getHeight(itemEntry->loopNo, itemEntry->celNo));
if ((itemEntry->scaleX == 128) && (itemEntry->scaleY == 128))