aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/vga_ww.cpp
diff options
context:
space:
mode:
authorTravis Howell2009-07-06 06:21:59 +0000
committerTravis Howell2009-07-06 06:21:59 +0000
commitdc0f6dce7698ce383ad7ca82f8ae1dcba984a044 (patch)
tree91bd92cb5835a456efa42361d5b9fd5a8bf619db /engines/agos/vga_ww.cpp
parent08df8dc2721808c7019f49d9051e2eebfe8dad9c (diff)
downloadscummvm-rg350-dc0f6dce7698ce383ad7ca82f8ae1dcba984a044.tar.gz
scummvm-rg350-dc0f6dce7698ce383ad7ca82f8ae1dcba984a044.tar.bz2
scummvm-rg350-dc0f6dce7698ce383ad7ca82f8ae1dcba984a044.zip
Use graphics surfaces for screen buffers, and always use correct pitch when writing to the frameBuffer.
svn-id: r42163
Diffstat (limited to 'engines/agos/vga_ww.cpp')
-rw-r--r--engines/agos/vga_ww.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/engines/agos/vga_ww.cpp b/engines/agos/vga_ww.cpp
index 4f6d510fbf..97c31b299c 100644
--- a/engines/agos/vga_ww.cpp
+++ b/engines/agos/vga_ww.cpp
@@ -145,14 +145,19 @@ void AGOSEngine::vc61() {
uint h, tmp;
Graphics::Surface *screen = _system->lockScreen();
+ dstPtr = (byte *)screen->pixels;
if (a == 6) {
src = _curVgaFile2 + 800;
- dstPtr = (byte *)screen->pixels;
- memcpy(dstPtr, src, 64000);
+
+ for (int i = 0; i < _screenHeight; i++) {
+ memcpy(dst, src, _screenWidth);
+ src += 320;
+ dst += screen->pitch;
+ }
+
tmp = 4 - 1;
} else {
- dstPtr = (byte *)screen->pixels;
tmp = a - 1;
}
@@ -160,15 +165,14 @@ void AGOSEngine::vc61() {
while (tmp--)
src += 1536 * 16 + 1712;
-
src += 800;
if (a != 5) {
- dst = dstPtr + 7448;
+ dst = dstPtr + 23 * screen->pitch + 88;
for (h = 0; h < 177; h++) {
memcpy(dst, src, 144);
src += 144;
- dst += _screenWidth;
+ dst += screen->pitch;
}
if (a != 6) {
@@ -179,11 +183,11 @@ void AGOSEngine::vc61() {
src = _curVgaFile2 + 9984 * 16 + 15344;
}
- dst = dstPtr + 50296;
+ dst = dstPtr + 157 * screen->pitch + 56;
for (h = 0; h < 17; h++) {
memcpy(dst, src, 208);
src += 208;
- dst += _screenWidth;
+ dst += screen->pitch;
}
_system->unlockScreen();