diff options
author | Bastien Bouclet | 2010-12-17 11:31:08 +0000 |
---|---|---|
committer | Bastien Bouclet | 2010-12-17 11:31:08 +0000 |
commit | c441539bb0e86a98a1dc14c1de16d7157947d611 (patch) | |
tree | 98463d029859c642f2cdd20e8b0ce7cfec70964f /engines | |
parent | 8d1f3f00adce5c755907f45cc5c304354ccea4e1 (diff) | |
download | scummvm-rg350-c441539bb0e86a98a1dc14c1de16d7157947d611.tar.gz scummvm-rg350-c441539bb0e86a98a1dc14c1de16d7157947d611.tar.bz2 scummvm-rg350-c441539bb0e86a98a1dc14c1de16d7157947d611.zip |
MOHAWK: Change resolution to 544x332 to match the original.
This fixes the vertical alignment issues, and graphic corruption on some cards.
svn-id: r54943
Diffstat (limited to 'engines')
-rw-r--r-- | engines/mohawk/graphics.cpp | 19 | ||||
-rw-r--r-- | engines/mohawk/graphics.h | 3 |
2 files changed, 16 insertions, 6 deletions
diff --git a/engines/mohawk/graphics.cpp b/engines/mohawk/graphics.cpp index c664b3574a..7906ae6182 100644 --- a/engines/mohawk/graphics.cpp +++ b/engines/mohawk/graphics.cpp @@ -210,6 +210,8 @@ void GraphicsManager::copyAnimImageSectionToScreen(uint16 image, Common::Rect sr getVM()->_system->unlockScreen(); } +const Common::Rect MystGraphics::_viewport = Common::Rect(544, 332); + MystGraphics::MystGraphics(MohawkEngine_Myst* vm) : GraphicsManager(), _vm(vm) { _bmpDecoder = new MystBitmap(); @@ -217,7 +219,7 @@ MystGraphics::MystGraphics(MohawkEngine_Myst* vm) : GraphicsManager(), _vm(vm) { // However, it dithered videos to 8bpp and they looked considerably // worse (than they already did :P). So we're not even going to // support 8bpp mode in Myst (Myst ME required >8bpp anyway). - initGraphics(544, 333, true, NULL); // What an odd screen size! + initGraphics(_viewport.width(), _viewport.height(), true, NULL); // What an odd screen size! _pixelFormat = _vm->_system->getScreenFormat(); @@ -355,6 +357,8 @@ void MystGraphics::copyImageSectionToScreen(uint16 image, Common::Rect src, Comm dest.right = CLIP<int>(dest.right, 0, _vm->_system->getWidth()); dest.bottom = CLIP<int>(dest.bottom, 0, _vm->_system->getHeight()); + src.clip(_viewport); + Graphics::Surface *surface = findImage(image)->getSurface(); debug(3, "Image Blit:"); @@ -382,6 +386,8 @@ void MystGraphics::copyImageSectionToBackBuffer(uint16 image, Common::Rect src, dest.right = CLIP<int>(dest.right, 0, _vm->_system->getWidth()); dest.bottom = CLIP<int>(dest.bottom, 0, _vm->_system->getHeight()); + src.clip(_viewport); + Graphics::Surface *surface = findImage(image)->getSurface(); debug(3, "Image Blit:"); @@ -403,14 +409,15 @@ void MystGraphics::copyImageSectionToBackBuffer(uint16 image, Common::Rect src, } void MystGraphics::copyImageToScreen(uint16 image, Common::Rect dest) { - copyImageSectionToScreen(image, Common::Rect(0, 0, 544, 333), dest); + copyImageSectionToScreen(image, _viewport, dest); } void MystGraphics::copyImageToBackBuffer(uint16 image, Common::Rect dest) { - copyImageSectionToBackBuffer(image, Common::Rect(0, 0, 544, 333), dest); + copyImageSectionToBackBuffer(image, _viewport, dest); } -void MystGraphics::copyBackBufferToScreen(const Common::Rect &r) { +void MystGraphics::copyBackBufferToScreen(Common::Rect r) { + r.clip(_viewport); _vm->_system->copyRectToScreen((byte *)_backBuffer->getBasePtr(r.left, r.top), _backBuffer->pitch, r.left, r.top, r.width(), r.height()); } @@ -519,8 +526,10 @@ void MystGraphics::runTransition(uint16 type, Common::Rect rect, uint16 steps, u } void MystGraphics::drawRect(Common::Rect rect, RectState state) { + rect.clip(_viewport); + // Useful with debugging. Shows where hotspots are on the screen and whether or not they're active. - if (rect.left < 0 || rect.top < 0 || rect.right > 544 || rect.bottom > 333 || !rect.isValidRect() || rect.width() == 0 || rect.height() == 0) + if (!rect.isValidRect() || rect.width() == 0 || rect.height() == 0) return; Graphics::Surface *screen = _vm->_system->lockScreen(); diff --git a/engines/mohawk/graphics.h b/engines/mohawk/graphics.h index 873873ccda..bf6f99af07 100644 --- a/engines/mohawk/graphics.h +++ b/engines/mohawk/graphics.h @@ -114,7 +114,7 @@ public: void copyImageSectionToBackBuffer(uint16 image, Common::Rect src, Common::Rect dest); void copyImageToScreen(uint16 image, Common::Rect dest); void copyImageToBackBuffer(uint16 image, Common::Rect dest); - void copyBackBufferToScreen(const Common::Rect &r); + void copyBackBufferToScreen(Common::Rect r); void runTransition(uint16 type, Common::Rect rect, uint16 steps, uint16 delay); void drawRect(Common::Rect rect, RectState state); void drawLine(const Common::Point &p1, const Common::Point &p2, uint32 color); @@ -145,6 +145,7 @@ private: Graphics::Surface *_backBuffer; Graphics::PixelFormat _pixelFormat; + static const Common::Rect _viewport; }; struct SFXERecord { |