From 28b74b14ec5444d9f2558c05cea67f3567322b51 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 2 Aug 2013 23:12:09 +0200 Subject: AGOS: Prefer getBasePtr over direct Surface::pixels access. --- engines/agos/animation.cpp | 8 ++--- engines/agos/charset-fontdata.cpp | 8 ++--- engines/agos/charset.cpp | 2 +- engines/agos/draw.cpp | 30 +++++++++--------- engines/agos/event.cpp | 2 +- engines/agos/gfx.cpp | 64 +++++++++++++++++++-------------------- engines/agos/icons.cpp | 16 +++++----- engines/agos/menus.cpp | 4 +-- engines/agos/verb.cpp | 2 +- engines/agos/vga.cpp | 11 ++++--- engines/agos/vga_e2.cpp | 10 +++--- engines/agos/vga_pn.cpp | 4 +-- engines/agos/vga_s2.cpp | 5 ++- engines/agos/vga_ww.cpp | 2 +- engines/agos/window.cpp | 4 +-- 15 files changed, 89 insertions(+), 83 deletions(-) diff --git a/engines/agos/animation.cpp b/engines/agos/animation.cpp index 9176412e0e..214a383680 100644 --- a/engines/agos/animation.cpp +++ b/engines/agos/animation.cpp @@ -272,7 +272,7 @@ void MoviePlayerDXA::copyFrameToBuffer(byte *dst, uint x, uint y, uint pitch) { if (!surface) return; - byte *src = (byte *)surface->pixels; + const byte *src = (const byte *)surface->getBasePtr(0, 0); dst += y * pitch + x; do { @@ -344,7 +344,7 @@ void MoviePlayerDXA::handleNextFrame() { bool MoviePlayerDXA::processFrame() { Graphics::Surface *screen = _vm->_system->lockScreen(); - copyFrameToBuffer((byte *)screen->pixels, (_vm->_screenWidth - getWidth()) / 2, (_vm->_screenHeight - getHeight()) / 2, screen->pitch); + copyFrameToBuffer((byte *)screen->getBasePtr(0, 0), (_vm->_screenWidth - getWidth()) / 2, (_vm->_screenHeight - getHeight()) / 2, screen->pitch); _vm->_system->unlockScreen(); uint32 soundTime = _mixer->getSoundElapsedTime(_bgSound); @@ -443,7 +443,7 @@ void MoviePlayerSMK::copyFrameToBuffer(byte *dst, uint x, uint y, uint pitch) { if (!surface) return; - byte *src = (byte *)surface->pixels; + const byte *src = (const byte *)surface->getBasePtr(0, 0); dst += y * pitch + x; do { @@ -495,7 +495,7 @@ void MoviePlayerSMK::nextFrame() { bool MoviePlayerSMK::processFrame() { Graphics::Surface *screen = _vm->_system->lockScreen(); - copyFrameToBuffer((byte *)screen->pixels, (_vm->_screenWidth - getWidth()) / 2, (_vm->_screenHeight - getHeight()) / 2, screen->pitch); + copyFrameToBuffer((byte *)screen->getBasePtr(0, 0), (_vm->_screenWidth - getWidth()) / 2, (_vm->_screenHeight - getHeight()) / 2, screen->pitch); _vm->_system->unlockScreen(); uint32 waitTime = getTimeToNextFrame(); diff --git a/engines/agos/charset-fontdata.cpp b/engines/agos/charset-fontdata.cpp index 262ae44f01..b67b307606 100644 --- a/engines/agos/charset-fontdata.cpp +++ b/engines/agos/charset-fontdata.cpp @@ -2924,7 +2924,7 @@ void AGOSEngine::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { Graphics::Surface *screen = _system->lockScreen(); if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) { - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dstPitch = screen->pitch; h = 8; w = 6; @@ -2961,7 +2961,7 @@ void AGOSEngine::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { error("windowDrawChar: Unknown language %d", _language); } } else if (getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) { - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dstPitch = screen->pitch; h = 8; w = 6; @@ -2986,14 +2986,14 @@ void AGOSEngine::windowDrawChar(WindowBlock *window, uint x, uint y, byte chr) { error("windowDrawChar: Unknown language %d", _language); } } else if (getGameType() == GType_ELVIRA1) { - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dstPitch = screen->pitch; h = 8; w = 6; src = english_elvira1Font + (chr - 32) * 8; } else { - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dstPitch = screen->pitch; h = 8; w = 8; diff --git a/engines/agos/charset.cpp b/engines/agos/charset.cpp index f58f4397b5..eca9728643 100644 --- a/engines/agos/charset.cpp +++ b/engines/agos/charset.cpp @@ -362,7 +362,7 @@ void AGOSEngine::windowScroll(WindowBlock *window) { w = window->width * 8; h = (window->height -1) * 8; - dst = (byte *)screen->pixels + window->y * screen->pitch + window->x * 8; + dst = (byte *)screen->getBasePtr(window->x * 8, window->y); src = dst + 8 * screen->pitch; do { diff --git a/engines/agos/draw.cpp b/engines/agos/draw.cpp index cf3a12ceb8..63bd22f65b 100644 --- a/engines/agos/draw.cpp +++ b/engines/agos/draw.cpp @@ -32,15 +32,15 @@ namespace AGOS { byte *AGOSEngine::getBackBuf() { - return (byte *)_backBuf->pixels; + return (byte *)_backBuf->getBasePtr(0, 0); } byte *AGOSEngine::getBackGround() { - return (byte *)_backGroundBuf->pixels; + return (byte *)_backGroundBuf->getBasePtr(0, 0); } byte *AGOSEngine::getScaleBuf() { - return (byte *)_scaleBuf->pixels; + return (byte *)_scaleBuf->getBasePtr(0, 0); } #ifdef ENABLE_AGOS2 @@ -226,7 +226,7 @@ void AGOSEngine::animateSprites() { debug(0, "Using special wall"); uint8 color, h, len; - byte *dst = (byte *)_window4BackScn->pixels; + byte *dst = (byte *)_window4BackScn->getBasePtr(0, 0); color = (_variableArray[293] & 1) ? 13 : 15; _wallOn = 2; @@ -256,7 +256,7 @@ void AGOSEngine::animateSprites() { } else if (getGameType() == GType_ELVIRA2 && _variableArray[71] & 2) { // Used by the Unholy Barrier spell uint8 color, h, len; - byte *dst = (byte *)_window4BackScn->pixels; + byte *dst = (byte *)_window4BackScn->getBasePtr(0, 0); color = 1; _wallOn = 2; @@ -491,7 +491,7 @@ void AGOSEngine::saveBackGround(VgaSprite *vsp) { int16 y = vsp->y - _scrollY; if (_window3Flag == 1) { - animTable->srcPtr = (const byte *)_window4BackScn->pixels; + animTable->srcPtr = (const byte *)_window4BackScn->getBasePtr(0, 0); } else { int xoffs = (_videoWindows[vsp->windowNum * 4 + 0] * 2 + x) * 8; int yoffs = (_videoWindows[vsp->windowNum * 4 + 1] + y); @@ -565,7 +565,7 @@ void AGOSEngine::displayBoxStars() { if (x_ >= 311) continue; - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += (((screen->pitch / 4) * y_) * 4) + x_; @@ -673,7 +673,7 @@ void AGOSEngine::scrollScreen() { if (getGameType() == GType_SIMON2) { src = getBackGround(); - dst = (byte *)_window4BackScn->pixels; + dst = (byte *)_window4BackScn->getBasePtr(0, 0); for (int i = 0; i < _scrollHeight; i++) { memcpy(dst, src, _screenWidth); src += _backGroundBuf->pitch; @@ -725,7 +725,7 @@ void AGOSEngine::fillBackFromBackGround(uint16 height, uint16 width) { void AGOSEngine::fillBackFromFront() { Graphics::Surface *screen = _system->lockScreen(); - byte *src = (byte *)screen->pixels; + byte *src = (byte *)screen->getBasePtr(0, 0); byte *dst = getBackBuf(); for (int i = 0; i < _screenHeight; i++) { @@ -748,7 +748,7 @@ void AGOSEngine::fillBackGroundFromBack() { void AGOSEngine::fillBackGroundFromFront() { Graphics::Surface *screen = _system->lockScreen(); - byte *src = (byte *)screen->pixels; + byte *src = (byte *)screen->getBasePtr(0, 0); byte *dst = getBackGround(); for (int i = 0; i < _screenHeight; i++) { @@ -785,7 +785,7 @@ void AGOSEngine::displayScreen() { Graphics::Surface *screen = _system->lockScreen(); if (getGameType() == GType_PP || getGameType() == GType_FF) { byte *src = getBackBuf(); - byte *dst = (byte *)screen->pixels; + byte *dst = (byte *)screen->getBasePtr(0, 0); for (int i = 0; i < _screenHeight; i++) { memcpy(dst, src, _screenWidth); src += _backBuf->pitch; @@ -798,9 +798,9 @@ void AGOSEngine::displayScreen() { _window4Flag = 0; uint16 srcWidth, width, height; - byte *dst = (byte *)screen->pixels; + byte *dst = (byte *)screen->getBasePtr(0, 0); - const byte *src = (const byte *)_window4BackScn->pixels; + const byte *src = (const byte *)_window4BackScn->getBasePtr(0, 0); if (_window3Flag == 1) { src = getBackGround(); } @@ -831,8 +831,8 @@ void AGOSEngine::displayScreen() { if (_window6Flag == 2) { _window6Flag = 0; - byte *src = (byte *)_window6BackScn->pixels; - byte *dst = (byte *)screen->pixels + 51 * screen->pitch; + byte *src = (byte *)_window6BackScn->getBasePtr(0, 0); + byte *dst = (byte *)screen->getBasePtr(0, 51); for (int i = 0; i < 80; i++) { memcpy(dst, src, _window6BackScn->w); dst += screen->pitch; diff --git a/engines/agos/event.cpp b/engines/agos/event.cpp index cc1c40c207..65c7f7fd77 100644 --- a/engines/agos/event.cpp +++ b/engines/agos/event.cpp @@ -365,7 +365,7 @@ void AGOSEngine::drawStuff(const byte *src, uint xoffs) { const uint8 y = (getPlatform() == Common::kPlatformAtariST) ? 132 : 135; Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels + y * screen->pitch + xoffs; + byte *dst = (byte *)screen->getBasePtr(xoffs, y); for (uint h = 0; h < 6; h++) { memcpy(dst, src, 4); diff --git a/engines/agos/gfx.cpp b/engines/agos/gfx.cpp index db0817250b..2808543f8e 100644 --- a/engines/agos/gfx.cpp +++ b/engines/agos/gfx.cpp @@ -649,7 +649,7 @@ void AGOSEngine_Simon1::drawImage(VC10_state *state) { state->surf2_addr = getBackGround(); state->surf2_pitch = _backGroundBuf->pitch; - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _window4BackScn->pitch; xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8; @@ -666,7 +666,7 @@ void AGOSEngine_Simon1::drawImage(VC10_state *state) { state->surf2_addr = getBackGround(); state->surf2_pitch = _backGroundBuf->pitch; - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _videoWindows[18] * 16; xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8; @@ -678,7 +678,7 @@ void AGOSEngine_Simon1::drawImage(VC10_state *state) { _window4Flag = 1; } else { - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; @@ -696,7 +696,7 @@ void AGOSEngine_Simon1::drawImage(VC10_state *state) { state->surf2_addr = getBackGround(); state->surf2_pitch = _backGroundBuf->pitch; - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _window4BackScn->pitch; } @@ -712,7 +712,7 @@ void AGOSEngine_Simon1::drawImage(VC10_state *state) { state->surf2_addr = getBackGround(); state->surf2_pitch = _backGroundBuf->pitch; - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; @@ -861,7 +861,7 @@ void AGOSEngine::drawImage(VC10_state *state) { uint16 xoffs = 0, yoffs = 0; if (getGameType() == GType_WW) { if (_windowNum == 4 || (_windowNum >= 10 && _windowNum <= 27)) { - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _videoWindows[18] * 16; xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8; @@ -873,7 +873,7 @@ void AGOSEngine::drawImage(VC10_state *state) { _window4Flag = 1; } else { - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; @@ -881,7 +881,7 @@ void AGOSEngine::drawImage(VC10_state *state) { } } else if (getGameType() == GType_ELVIRA2) { if (_windowNum == 4 || _windowNum >= 10) { - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _videoWindows[18] * 16; xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8; @@ -893,7 +893,7 @@ void AGOSEngine::drawImage(VC10_state *state) { _window4Flag = 1; } else { - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; @@ -901,19 +901,19 @@ void AGOSEngine::drawImage(VC10_state *state) { } } else if (getGameType() == GType_ELVIRA1) { if (_windowNum == 6) { - state->surf_addr = (byte *)_window6BackScn->pixels; + state->surf_addr = (byte *)_window6BackScn->getBasePtr(0, 0); state->surf_pitch = _window6BackScn->pitch; xoffs = state->x * 8; yoffs = state->y; } else if (_windowNum == 2 || _windowNum == 3) { - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; yoffs = vlut[1] + state->y; } else { - state->surf_addr = (byte *)_window4BackScn->pixels; + state->surf_addr = (byte *)_window4BackScn->getBasePtr(0, 0); state->surf_pitch = _videoWindows[18] * 16; xoffs = ((vlut[0] - _videoWindows[16]) * 2 + state->x) * 8; @@ -926,7 +926,7 @@ void AGOSEngine::drawImage(VC10_state *state) { _window4Flag = 1; } } else { - state->surf_addr = (byte *)screen->pixels; + state->surf_addr = (byte *)screen->getBasePtr(0, 0); state->surf_pitch = screen->pitch; xoffs = (vlut[0] * 2 + state->x) * 8; @@ -973,7 +973,7 @@ void AGOSEngine::horizontalScroll(VC10_state *state) { vcWriteVar(251, _scrollX); if (getGameType() == GType_SIMON2) { - dst = (byte *)_window4BackScn->pixels; + dst = (byte *)_window4BackScn->getBasePtr(0, 0); dstPitch = _window4BackScn->pitch; } else { dst = getBackBuf(); @@ -1375,10 +1375,10 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } else if (getGameType() == GType_SIMON1 && (getFeatures() & GF_DEMO)) { // The DOS Floppy demo was based off Waxworks engine if (updateWindow == 4 || updateWindow >= 10) { - src = (byte *)_window4BackScn->pixels; + src = (byte *)_window4BackScn->getBasePtr(0, 0); srcWidth = _videoWindows[18] * 16; } else if (updateWindow == 3 || updateWindow == 9) { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } else { _system->unlockScreen(); @@ -1387,13 +1387,13 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } } else if (getGameType() == GType_SIMON1) { if (updateWindow == 4) { - src = (byte *)_window4BackScn->pixels; + src = (byte *)_window4BackScn->getBasePtr(0, 0); srcWidth = _videoWindows[18] * 16; } else if (updateWindow >= 10) { - src = (byte *)_window4BackScn->pixels + xoffs + yoffs * 320; + src = (byte *)_window4BackScn->getBasePtr(xoffs, yoffs); srcWidth = _videoWindows[18] * 16; } else if (updateWindow == 0) { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } else { _system->unlockScreen(); @@ -1402,10 +1402,10 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } } else if (getGameType() == GType_WW) { if (updateWindow == 4 || updateWindow >= 10) { - src = (byte *)_window4BackScn->pixels; + src = (byte *)_window4BackScn->getBasePtr(0, 0); srcWidth = _videoWindows[18] * 16; } else if (updateWindow == 3 || updateWindow == 9) { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } else { _system->unlockScreen(); @@ -1414,10 +1414,10 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } } else if (getGameType() == GType_ELVIRA2) { if (updateWindow == 4 || updateWindow >= 10) { - src = (byte *)_window4BackScn->pixels; + src = (byte *)_window4BackScn->getBasePtr(0, 0); srcWidth = _videoWindows[18] * 16; } else if (updateWindow == 3) { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } else { _system->unlockScreen(); @@ -1427,17 +1427,17 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas } else if (getGameType() == GType_ELVIRA1) { if (updateWindow == 6) { _window6Flag = 1; - src = (byte *)_window6BackScn->pixels; + src = (byte *)_window6BackScn->getBasePtr(0, 0); srcWidth = 48; } else if (updateWindow == 2 || updateWindow == 3) { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } else { - src = (byte *)_window4BackScn->pixels; + src = (byte *)_window4BackScn->getBasePtr(0, 0); srcWidth = _videoWindows[18] * 16; } } else { - src = (byte *)screen->pixels + yoffs * screen->pitch + xoffs; + src = (byte *)screen->getBasePtr(xoffs, yoffs); srcWidth = screen->pitch; } @@ -1451,13 +1451,13 @@ void AGOSEngine::setWindowImage(uint16 mode, uint16 vgaSpriteId, bool specialCas if (getGameType() == GType_PN && !_wiped && !specialCase) { uint8 color = (getPlatform() == Common::kPlatformDOS) ? 7 : 15; - dst = (byte *)screen->pixels + 48; + dst = (byte *)screen->getBasePtr(48, 0); memset(dst, color, 224); - dst = (byte *)screen->pixels + 132 * screen->pitch + 48; + dst = (byte *)screen->getBasePtr(48, 132); memset(dst, color, 224); } else if (getGameType() == GType_ELVIRA1 && updateWindow == 3 && _bottomPalette) { - dst = (byte *)screen->pixels + 133 * screen->pitch; + dst = (byte *)screen->getBasePtr(0, 133); for (int h = 0; h < 67; h++) { for (int w = 0; w < _screenWidth; w++) @@ -1479,7 +1479,7 @@ void AGOSEngine::drawEdging() { Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels + 136 * screen->pitch; + dst = (byte *)screen->getBasePtr(0, 136); uint8 len = 52; while (len--) { @@ -1488,7 +1488,7 @@ void AGOSEngine::drawEdging() { dst += screen->pitch; } - dst = (byte *)screen->pixels + 187 * screen->pitch; + dst = (byte *)screen->getBasePtr(0, 187); memset(dst, color, _screenWidth); _system->unlockScreen(); diff --git a/engines/agos/icons.cpp b/engines/agos/icons.cpp index 0ee1d62fde..558e7f9adb 100644 --- a/engines/agos/icons.cpp +++ b/engines/agos/icons.cpp @@ -202,7 +202,7 @@ void AGOSEngine_Simon2::drawIcon(WindowBlock *window, uint icon, uint x, uint y) _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += 110; dst += x; @@ -228,7 +228,7 @@ void AGOSEngine_Simon1::drawIcon(WindowBlock *window, uint icon, uint x, uint y) _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += (x + window->x) * 8; dst += (y * 25 + window->y) * screen->pitch; @@ -256,7 +256,7 @@ void AGOSEngine_Waxworks::drawIcon(WindowBlock *window, uint icon, uint x, uint _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += (x + window->x) * 8; dst += (y * 20 + window->y) * screen->pitch; @@ -284,7 +284,7 @@ void AGOSEngine_Elvira2::drawIcon(WindowBlock *window, uint icon, uint x, uint y _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += (x + window->x) * 8; dst += (y * 8 + window->y) * screen->pitch; @@ -312,7 +312,7 @@ void AGOSEngine_Elvira1::drawIcon(WindowBlock *window, uint icon, uint x, uint y _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); dst += (x + window->x) * 8; dst += (y * 8 + window->y) * screen->pitch; @@ -339,7 +339,7 @@ void AGOSEngine::drawIcon(WindowBlock *window, uint icon, uint x, uint y) { _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels + y * screen->pitch + x * 8; + dst = (byte *)screen->getBasePtr(x * 8, y); src = _iconFilePtr + icon * 146; if (icon == 0xFF) { @@ -951,7 +951,7 @@ void AGOSEngine::drawArrow(uint16 x, uint16 y, int8 dir) { } Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels + y * screen->pitch + x * 8; + byte *dst = (byte *)screen->getBasePtr(x * 8, y); for (h = 0; h < 19; h++) { for (w = 0; w < 16; w++) { @@ -1042,7 +1042,7 @@ static const byte hitBarData[12 * 7] = { // Personal Nightmare specific void AGOSEngine_PN::drawIconHitBar() { Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels + 3 * screen->pitch + 6 * 8; + byte *dst = (byte *)screen->getBasePtr(6 * 8, 3); const byte *src = hitBarData; uint8 color = (getPlatform() == Common::kPlatformDOS) ? 7 : 15; diff --git a/engines/agos/menus.cpp b/engines/agos/menus.cpp index a0d2bdcaa0..85c50e421b 100644 --- a/engines/agos/menus.cpp +++ b/engines/agos/menus.cpp @@ -164,7 +164,7 @@ void AGOSEngine::unlightMenuStrip() { mouseOff(); Graphics::Surface *screen = _system->lockScreen(); - src = (byte *)screen->pixels + 8 * screen->pitch + 272; + src = (byte *)screen->getBasePtr(272, 8); w = 48; h = 82; @@ -192,7 +192,7 @@ void AGOSEngine::lightMenuBox(uint hitarea) { mouseOff(); Graphics::Surface *screen = _system->lockScreen(); - src = (byte *)screen->pixels + ha->y * screen->pitch + ha->x; + src = (byte *)screen->getBasePtr(ha->x, ha->y); w = ha->width; h = ha->height; diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp index 93077ed83e..f5b57a01c8 100644 --- a/engines/agos/verb.cpp +++ b/engines/agos/verb.cpp @@ -973,7 +973,7 @@ void AGOSEngine::invertBox(HitArea *ha, byte a, byte b, byte c, byte d) { _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - src = (byte *)screen->pixels + ha->y * screen->pitch + ha->x; + src = (byte *)screen->getBasePtr(ha->x, ha->y); // WORKAROUND: Hitareas for saved game names aren't adjusted for scrolling locations if (getGameType() == GType_SIMON2 && ha->id >= 208 && ha->id <= 213) { diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp index 8541f579d6..5456174f5d 100644 --- a/engines/agos/vga.cpp +++ b/engines/agos/vga.cpp @@ -1179,7 +1179,7 @@ void AGOSEngine::vc32_saveScreen() { if (getGameType() == GType_PN) { Graphics::Surface *screen = _system->lockScreen(); byte *dst = getBackGround(); - byte *src = (byte *)screen->pixels; + byte *src = (byte *)screen->getBasePtr(0, 0); for (int i = 0; i < _screenHeight; i++) { memcpy(dst, src, _screenWidth); dst += _backGroundBuf->pitch; @@ -1193,7 +1193,7 @@ void AGOSEngine::vc32_saveScreen() { uint16 height = _videoWindows[4 * 4 + 3]; byte *dst = (byte *)_backGroundBuf->getBasePtr(xoffs, yoffs); - byte *src = (byte *)_window4BackScn->pixels; + byte *src = (byte *)_window4BackScn->getBasePtr(0, 0); uint16 srcWidth = _videoWindows[4 * 4 + 2] * 16; for (; height > 0; height--) { memcpy(dst, src, width); @@ -1247,7 +1247,7 @@ void AGOSEngine::clearVideoWindow(uint16 num, uint16 color) { if (getGameType() == GType_ELVIRA1 && num == 3) { Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels; + byte *dst = (byte *)screen->getBasePtr(0, 0); for (int i = 0; i < _screenHeight; i++) { memset(dst, color, _screenWidth); dst += screen->pitch; @@ -1258,7 +1258,10 @@ void AGOSEngine::clearVideoWindow(uint16 num, uint16 color) { uint16 xoffs = (vlut[0] - _videoWindows[16]) * 16; uint16 yoffs = (vlut[1] - _videoWindows[17]); uint16 dstWidth = _videoWindows[18] * 16; - byte *dst = (byte *)_window4BackScn->pixels + xoffs + yoffs * dstWidth; + // TODO: Is there any known connection between dstWidth and the pitch + // of the _window4BackScn Surface? If so, we might be able to pass + // yoffs as proper y parameter to getBasePtr. + byte *dst = (byte *)_window4BackScn->getBasePtr(xoffs, 0) + yoffs * dstWidth; setMoveRect(0, 0, vlut[2] * 16, vlut[3]); diff --git a/engines/agos/vga_e2.cpp b/engines/agos/vga_e2.cpp index d4aafd3d7b..b335c6b18a 100644 --- a/engines/agos/vga_e2.cpp +++ b/engines/agos/vga_e2.cpp @@ -76,7 +76,7 @@ void AGOSEngine::vc45_setWindowPalette() { uint8 height = vlut[3]; if (num == 4) { - byte *dst = (byte *)_window4BackScn->pixels; + byte *dst = (byte *)_window4BackScn->getBasePtr(0, 0); for (uint8 h = 0; h < height; h++) { for (uint8 w = 0; w < width; w++) { @@ -223,11 +223,11 @@ void AGOSEngine::vc53_dissolveIn() { uint16 count = dissolveCheck * 2; while (count--) { Graphics::Surface *screen = _system->lockScreen(); - byte *dstPtr = (byte *)screen->pixels + x + y * screen->pitch; + byte *dstPtr = (byte *)screen->getBasePtr(x, y); yoffs = _rnd.getRandomNumber(dissolveY); dst = dstPtr + yoffs * screen->pitch; - src = (byte *)_window4BackScn->pixels + yoffs * _window4BackScn->pitch; + src = (byte *)_window4BackScn->getBasePtr(0, yoffs); xoffs = _rnd.getRandomNumber(dissolveX); dst += xoffs; @@ -296,7 +296,7 @@ void AGOSEngine::vc54_dissolveOut() { uint16 count = dissolveCheck * 2; while (count--) { Graphics::Surface *screen = _system->lockScreen(); - byte *dstPtr = (byte *)screen->pixels + x + y * screen->pitch; + byte *dstPtr = (byte *)screen->getBasePtr(x, y); color |= dstPtr[0] & 0xF0; yoffs = _rnd.getRandomNumber(dissolveY); @@ -378,7 +378,7 @@ void AGOSEngine::fullFade() { void AGOSEngine::vc56_fullScreen() { Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels; + byte *dst = (byte *)screen->getBasePtr(0, 0); byte *src = _curVgaFile2 + 800; for (int i = 0; i < _screenHeight; i++) { diff --git a/engines/agos/vga_pn.cpp b/engines/agos/vga_pn.cpp index 1e7b2ba060..dc364cd99b 100644 --- a/engines/agos/vga_pn.cpp +++ b/engines/agos/vga_pn.cpp @@ -155,7 +155,7 @@ void AGOSEngine::vc48_specialEffect() { if (getPlatform() == Common::kPlatformDOS) { if (num == 1) { Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels; + byte *dst = (byte *)screen->getBasePtr(0, 0); for (uint h = 0; h < _screenHeight; h++) { for (uint w = 0; w < _screenWidth; w++) { @@ -205,7 +205,7 @@ void AGOSEngine_PN::clearVideoWindow(uint16 num, uint16 color) { uint16 yoffs = vlut[1]; Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels + xoffs + yoffs * screen->pitch; + byte *dst = (byte *)screen->getBasePtr(xoffs, yoffs); for (uint h = 0; h < vlut[3]; h++) { memset(dst, color, vlut[2] * 16); dst += screen->pitch; diff --git a/engines/agos/vga_s2.cpp b/engines/agos/vga_s2.cpp index 9b9ed4e297..e0780b491a 100644 --- a/engines/agos/vga_s2.cpp +++ b/engines/agos/vga_s2.cpp @@ -213,7 +213,10 @@ void AGOSEngine_Simon2::clearVideoWindow(uint16 num, uint16 color) { uint16 xoffs = vlut[0] * 16; uint16 yoffs = vlut[1]; uint16 dstWidth = _videoWindows[18] * 16; - byte *dst = (byte *)_window4BackScn->pixels + xoffs + yoffs * dstWidth; + // TODO: Is there any known connection between dstWidth and the pitch + // of the _window4BackScn Surface? If so, we might be able to pass + // yoffs as proper y parameter to getBasePtr. + byte *dst = (byte *)_window4BackScn->getBasePtr(xoffs, 0) + yoffs * dstWidth; setMoveRect(0, 0, vlut[2] * 16, vlut[3]); diff --git a/engines/agos/vga_ww.cpp b/engines/agos/vga_ww.cpp index c74f0cf52b..f0e081182e 100644 --- a/engines/agos/vga_ww.cpp +++ b/engines/agos/vga_ww.cpp @@ -143,7 +143,7 @@ void AGOSEngine::vc61() { uint h, tmp; Graphics::Surface *screen = _system->lockScreen(); - dstPtr = (byte *)screen->pixels; + dstPtr = (byte *)screen->getBasePtr(0, 0); if (a == 6) { src = _curVgaFile2 + 800; diff --git a/engines/agos/window.cpp b/engines/agos/window.cpp index 0365c736d8..95dbabf0fd 100644 --- a/engines/agos/window.cpp +++ b/engines/agos/window.cpp @@ -170,7 +170,7 @@ void AGOSEngine::colorBlock(WindowBlock *window, uint16 x, uint16 y, uint16 w, u _videoLockOut |= 0x8000; Graphics::Surface *screen = _system->lockScreen(); - byte *dst = (byte *)screen->pixels + y * screen->pitch + x; + byte *dst = (byte *)screen->getBasePtr(x, y); uint8 color = window->fillColor; if (getGameType() == GType_ELVIRA2 || getGameType() == GType_WW) @@ -232,7 +232,7 @@ void AGOSEngine::restoreBlock(uint16 x, uint16 y, uint16 w, uint16 h) { uint i; Graphics::Surface *screen = _system->lockScreen(); - dst = (byte *)screen->pixels; + dst = (byte *)screen->getBasePtr(0, 0); src = getBackGround(); dst += y * screen->pitch; -- cgit v1.2.3