From e1883a6cf49ce174aadaf49b3290aa8bb59ff653 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 29 Mar 2011 10:52:11 -0400 Subject: SCI: Limit SCI32 view scaling to when we're actually scaling Fixes bug #3253208 --- engines/sci/graphics/screen.h | 7 +++++-- engines/sci/graphics/view.cpp | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'engines') 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 -- cgit v1.2.3