aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Hoops2011-03-29 10:52:11 -0400
committerMatthew Hoops2011-03-29 10:56:19 -0400
commite1883a6cf49ce174aadaf49b3290aa8bb59ff653 (patch)
tree06531c2fa8cd0a62111ae823d0758a24fce39e51 /engines
parent04cb669ff37689c78336ab5cd2e5c9c14b4202f3 (diff)
downloadscummvm-rg350-e1883a6cf49ce174aadaf49b3290aa8bb59ff653.tar.gz
scummvm-rg350-e1883a6cf49ce174aadaf49b3290aa8bb59ff653.tar.bz2
scummvm-rg350-e1883a6cf49ce174aadaf49b3290aa8bb59ff653.zip
SCI: Limit SCI32 view scaling to when we're actually scaling
Fixes bug #3253208
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/screen.h7
-rw-r--r--engines/sci/graphics/view.cpp7
2 files changed, 11 insertions, 3 deletions
diff --git a/engines/sci/graphics/screen.h b/engines/sci/graphics/screen.h
index 0bb15eddf3..93f1e5a05b 100644
--- a/engines/sci/graphics/screen.h
+++ b/engines/sci/graphics/screen.h
@@ -89,12 +89,15 @@ public:
void drawLine(int16 left, int16 top, int16 right, int16 bottom, byte color, byte prio, byte control) {
drawLine(Common::Point(left, top), Common::Point(right, bottom), color, prio, control);
}
- int getUpscaledHires() const {
+
+ GfxScreenUpscaledMode getUpscaledHires() const {
return _upscaledHires;
}
+
bool getUnditherState() const {
return _unditherState;
}
+
void putKanjiChar(Graphics::FontSJIS *commonFont, int16 x, int16 y, uint16 chr, byte color);
byte getVisual(int x, int y);
byte getPriority(int x, int y);
@@ -174,7 +177,7 @@ private:
// This variable defines, if upscaled hires is active and what upscaled mode
// is used.
- int _upscaledHires;
+ GfxScreenUpscaledMode _upscaledHires;
// This here holds a translation for vertical coordinates between native
// (visual) and actual (display) screen.
diff --git a/engines/sci/graphics/view.cpp b/engines/sci/graphics/view.cpp
index b5ab6182ad..96323063e3 100644
--- a/engines/sci/graphics/view.cpp
+++ b/engines/sci/graphics/view.cpp
@@ -202,8 +202,13 @@ void GfxView::initData(GuiResourceId resourceId) {
assert(headerSize >= 16);
_loopCount = _resourceData[2];
assert(_loopCount);
- _isSci2Hires = _resourceData[5] == 1 ? true : false;
palOffset = READ_SCI11ENDIAN_UINT32(_resourceData + 8);
+
+ // FIXME: _resourceData[5] is sometimes 2 in GK1 also denoting scaled, but somehow modified.
+ // For a good test, jump to room 720 and talk to Wolfgang. Wolfgang's head is scaled when it
+ // shouldn't be, but the positioning of his eyes and mouth is also incorrect.
+ _isSci2Hires = _resourceData[5] == 1 && _screen->getUpscaledHires() != GFX_SCREEN_UPSCALED_DISABLED;
+
// flags is actually a bit-mask
// it seems it was only used for some early sci1.1 games (or even just laura bow 2)
// later interpreters dont support it at all anymore