aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2014-08-13 20:56:06 -0400
committerPaul Gilbert2014-08-13 20:56:06 -0400
commit146f6b5df40d2800432866389f549838921203d2 (patch)
tree1dfe09bbe92c0685da2e071c3b6c2dcded44c55a
parent89772d55a5c97b3c58bdf685e2419e78335ba02d (diff)
downloadscummvm-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.cpp7
-rw-r--r--engines/access/room.cpp12
-rw-r--r--engines/access/room.h3
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 {