diff options
author | Paul Gilbert | 2014-08-13 20:56:06 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-08-13 20:56:06 -0400 |
commit | 146f6b5df40d2800432866389f549838921203d2 (patch) | |
tree | 1dfe09bbe92c0685da2e071c3b6c2dcded44c55a | |
parent | 89772d55a5c97b3c58bdf685e2419e78335ba02d (diff) | |
download | scummvm-rg350-146f6b5df40d2800432866389f549838921203d2.tar.gz scummvm-rg350-146f6b5df40d2800432866389f549838921203d2.tar.bz2 scummvm-rg350-146f6b5df40d2800432866389f549838921203d2.zip |
ACCESS: Fix rendering of scene background
-rw-r--r-- | engines/access/access.cpp | 7 | ||||
-rw-r--r-- | engines/access/room.cpp | 12 | ||||
-rw-r--r-- | engines/access/room.h | 3 |
3 files changed, 15 insertions, 7 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp index 9c0df1ac30..9b10e4f8c3 100644 --- a/engines/access/access.cpp +++ b/engines/access/access.cpp @@ -159,7 +159,7 @@ void AccessEngine::initialize() { _screen = new Screen(this); _sound = new SoundManager(this, _mixer); - _buffer1.create(g_system->getWidth(), g_system->getHeight(), Graphics::PixelFormat::createFormatCLUT8()); + _buffer1.create(g_system->getWidth() + TILE_WIDTH, g_system->getHeight(), Graphics::PixelFormat::createFormatCLUT8()); _buffer2.create(g_system->getWidth(), g_system->getHeight(), Graphics::PixelFormat::createFormatCLUT8()); } @@ -316,7 +316,10 @@ void AccessEngine::copyRects() { } void AccessEngine::copyBF1BF2() { - _buffer2.copyFrom(_buffer1); + _buffer2.copyRectToSurface(_buffer1, 0, 0, + Common::Rect(_buffer1._scrollX, _buffer1._scrollY, + _buffer1._scrollX + _screen->_vWindowBytesWide, + _buffer1._scrollY + _screen->_vWindowLinesTall)); } void AccessEngine::copyBF2Vid() { diff --git a/engines/access/room.cpp b/engines/access/room.cpp index c258e076d8..cd39109e63 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -26,9 +26,6 @@ #include "access/resources.h" #include "access/room.h" -#define TILE_WIDTH 16 -#define TILE_HEIGHT 16 - namespace Access { Room::Room(AccessEngine *vm) : Manager(vm) { @@ -309,15 +306,18 @@ void Room::buildScreen() { void Room::buildColumn(int playX, int screenX) { const byte *pSrc = _playField + _vm->_screen->_scrollRow * _playFieldWidth + playX; - byte *pDest = (byte *)_vm->_buffer1.getPixels(); for (int y = 0; y <= _vm->_screen->_vWindowHeight; ++y) { byte *pTile = _tile + (*pSrc << 8); + byte *pDest = (byte *)_vm->_buffer1.getBasePtr(screenX, y * TILE_HEIGHT); for (int tileY = 0; tileY < TILE_HEIGHT; ++tileY) { Common::copy(pTile, pTile + TILE_WIDTH, pDest); - pDest += _vm->_screen->_vWindowWidth; + pTile += TILE_WIDTH; + pDest += _vm->_buffer1.pitch; } + + pSrc += _playFieldWidth; } } @@ -348,6 +348,8 @@ void Room::loadPlayField(int fileNum, int subfile) { int numBlocks = playData[8]; _plotter.load(&stream, numWalls, numBlocks); + _playFieldWidth = playData[0]; + _playFieldHeight = playData[1]; screen._vWindowWidth = playData[3]; screen._vWindowBytesWide = screen._vWindowWidth << 4; screen._bufferBytesWide = screen._vWindowBytesWide + 16; diff --git a/engines/access/room.h b/engines/access/room.h index ce3c4dc36e..18637e4283 100644 --- a/engines/access/room.h +++ b/engines/access/room.h @@ -28,6 +28,9 @@ #include "common/rect.h" #include "access/data.h" +#define TILE_WIDTH 16 +#define TILE_HEIGHT 16 + namespace Access { class Plotter { |