diff options
author | Travis Howell | 2009-07-06 06:21:59 +0000 |
---|---|---|
committer | Travis Howell | 2009-07-06 06:21:59 +0000 |
commit | dc0f6dce7698ce383ad7ca82f8ae1dcba984a044 (patch) | |
tree | 91bd92cb5835a456efa42361d5b9fd5a8bf619db /engines/agos/vga_ww.cpp | |
parent | 08df8dc2721808c7019f49d9051e2eebfe8dad9c (diff) | |
download | scummvm-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.cpp | 20 |
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(); |