aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorGregory Montoir2009-07-13 22:11:54 +0000
committerGregory Montoir2009-07-13 22:11:54 +0000
commitb98fdb997da257732fcbf1098f10cc3faede73d4 (patch)
tree072f33ebdce31c3c8be7d9e2397bbce48be0b513 /engines
parent3ed4f388d7c3a8f162be2463cc12c4c52db88214 (diff)
downloadscummvm-rg350-b98fdb997da257732fcbf1098f10cc3faede73d4.tar.gz
scummvm-rg350-b98fdb997da257732fcbf1098f10cc3faede73d4.tar.bz2
scummvm-rg350-b98fdb997da257732fcbf1098f10cc3faede73d4.zip
tucker: fixed issues with dirty rects handling (tracker item #2597763)
svn-id: r42456
Diffstat (limited to 'engines')
-rw-r--r--engines/tucker/locations.cpp32
-rw-r--r--engines/tucker/resource.cpp2
-rw-r--r--engines/tucker/sequences.cpp17
-rw-r--r--engines/tucker/tucker.cpp113
-rw-r--r--engines/tucker/tucker.h4
5 files changed, 93 insertions, 75 deletions
diff --git a/engines/tucker/locations.cpp b/engines/tucker/locations.cpp
index 9faa2024a6..4117391cdf 100644
--- a/engines/tucker/locations.cpp
+++ b/engines/tucker/locations.cpp
@@ -195,8 +195,8 @@ void TuckerEngine::execData3PreUpdate_locationNum2() {
for (int j = 0; j < 2; ++j) {
const int offset = (_updateLocationYPosTable2[i] + j) * 640 + _updateLocationXPosTable2[i];
_locationBackgroundGfxBuf[offset] = 142 + j * 2;
- addDirtyRect(offset % 640, offset / 640, 1, 1);
}
+ addDirtyRect(_updateLocationXPosTable2[i], _updateLocationYPosTable2[i], 1, 2);
_updateLocationYPosTable2[i] += 2;
if (_updateLocationYPosTable2[i] > _updateLocationYMaxTable[i]) {
_updateLocationYPosTable2[i] = 0;
@@ -540,13 +540,14 @@ void TuckerEngine::execData3PreUpdate_locationNum6Helper1() {
x2 = 15 - _flagsTable[27];
}
for (int i = 0; i < x1; ++i) {
- execData3PreUpdate_locationNum6Helper2(13125 + i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
- execData3PreUpdate_locationNum6Helper2(13245 - i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper2(20 * 640 + 325 + i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper2(20 * 640 + 445 - i * 8, _data3GfxBuf + _dataTable[238].sourceOffset);
}
for (int i = 0; i < x2; ++i) {
- execData3PreUpdate_locationNum6Helper3(13125 + x1 * 8 + i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
- execData3PreUpdate_locationNum6Helper3(13249 - x1 * 8 - i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper3(20 * 640 + 325 + x1 * 8 + i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
+ execData3PreUpdate_locationNum6Helper3(20 * 640 + 449 - x1 * 8 - i * 4, _data3GfxBuf + _dataTable[238].sourceOffset);
}
+ addDirtyRect(0, 20, 640, 51);
}
void TuckerEngine::execData3PreUpdate_locationNum6Helper2(int dstOffset, const uint8 *src) {
@@ -562,7 +563,6 @@ void TuckerEngine::execData3PreUpdate_locationNum6Helper2(int dstOffset, const u
}
}
}
- addDirtyRect(dstOffset % 640, dstOffset / 640, 8, 51);
}
void TuckerEngine::execData3PreUpdate_locationNum6Helper3(int dstOffset, const uint8 *src) {
@@ -575,7 +575,6 @@ void TuckerEngine::execData3PreUpdate_locationNum6Helper3(int dstOffset, const u
}
}
}
- addDirtyRect(dstOffset % 640, dstOffset / 640, 4, 51);
}
void TuckerEngine::execData3PostUpdate_locationNum6() {
@@ -661,7 +660,7 @@ void TuckerEngine::execData3PostUpdate_locationNum8() {
_locationBackgroundGfxBuf[offset + 640 * j + i] = colorsTable[(j - 1) * 3 + i + 1];
}
}
- addDirtyRect(_updateLocationXPosTable2[0] - 1, _updateLocationYPosTable2[0], 3, 4);
+ addDirtyRect(_updateLocationXPosTable2[0] - 1, _updateLocationYPosTable2[0] + 1, 3, 4);
_updateLocationYPosTable2[0] += 2;
if (_updateLocationYPosTable2[0] > 120) {
_updateLocationYPosTable2[0] = 0;
@@ -1013,9 +1012,10 @@ void TuckerEngine::execData3PreUpdate_locationNum14() {
if (num > 0) {
const int w = _dataTable[num].xSize;
const int h = _dataTable[num].ySize;
- const int dstOffset = (_updateLocationYPosTable2[i] / 16 - h / 2) * 640 + (_updateLocationXPosTable2[i] - w / 2);
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + dstOffset, _data3GfxBuf + _dataTable[num].sourceOffset, w, h, 0, 0, false);
- addDirtyRect(dstOffset % 640, dstOffset / 640, w, h);
+ const int x = _updateLocationXPosTable2[i] - w / 2;
+ const int y = _updateLocationYPosTable2[i] / 16 - h / 2;
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + y * 640 + x, _data3GfxBuf + _dataTable[num].sourceOffset, w, h, 0, 0, false);
+ addDirtyRect(x, y, w, h);
}
}
}
@@ -3033,17 +3033,17 @@ void TuckerEngine::execData3PreUpdate_locationNum70() {
_panelState = 1;
setCursorType(2);
int pos = getPositionForLine(22, _infoBarBuf);
- int offset = (_flagsTable[143] == 0) ? 57688 : 46168;
+ int offset = (_flagsTable[143] == 0) ? 90 * 640 + 88 : 72 * 640 + 88;
drawStringAlt(offset, color, &_infoBarBuf[pos]);
- Graphics::drawStringChar(_locationBackgroundGfxBuf + offset + 5760, 62, 640, color, _charsetGfxBuf);
+ Graphics::drawStringChar(_locationBackgroundGfxBuf + offset + 9 * 640, 62, 640, color, _charsetGfxBuf);
if (_flagsTable[143] != 0) {
pos = getPositionForLine(_flagsTable[143] * 2 + 23, _infoBarBuf);
- drawStringAlt(offset + 11520, color, &_infoBarBuf[pos]);
+ drawStringAlt(offset + 18 * 640, color, &_infoBarBuf[pos]);
pos = getPositionForLine(_flagsTable[143] * 2 + 24, _infoBarBuf);
- drawStringAlt(offset + 17280, color, &_infoBarBuf[pos]);
+ drawStringAlt(offset + 27 * 640, color, &_infoBarBuf[pos]);
}
execData3PreUpdate_locationNum70Helper();
- drawStringAlt(offset + 5768, color, _updateLocation70String, _updateLocation70StringLen);
+ drawStringAlt(offset + 9 * 640 + 8, color, _updateLocation70String, _updateLocation70StringLen);
}
void TuckerEngine::execData3PreUpdate_locationNum70Helper() {
diff --git a/engines/tucker/resource.cpp b/engines/tucker/resource.cpp
index 11c1c78133..9b8304e9fd 100644
--- a/engines/tucker/resource.cpp
+++ b/engines/tucker/resource.cpp
@@ -467,7 +467,7 @@ void TuckerEngine::loadLoc() {
copyLocBitmap(filename, 0, false);
Graphics::copyRect(_quadBackgroundGfxBuf + 134400, 320, _locationBackgroundGfxBuf + 320, 640, 320, 140);
}
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
}
void TuckerEngine::loadObj() {
diff --git a/engines/tucker/sequences.cpp b/engines/tucker/sequences.cpp
index 11a535e54a..8041b95414 100644
--- a/engines/tucker/sequences.cpp
+++ b/engines/tucker/sequences.cpp
@@ -102,7 +102,7 @@ void TuckerEngine::handleCreditsSequence() {
counter2 = 0;
}
}
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
++counter3;
if (counter3 == 2) {
counter3 = 0;
@@ -172,7 +172,7 @@ void TuckerEngine::handleCongratulationsSequence() {
stopSounds();
loadImage("congrat.pcx", _loadTempBuf, 1);
Graphics::copyRect(_locationBackgroundGfxBuf, 640, _loadTempBuf, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
redrawScreen(0);
while (!_quitGame && _timerCounter2 < 450) {
while (_fadePaletteCounter < 14) {
@@ -242,7 +242,7 @@ void TuckerEngine::handleNewPartSequence() {
++_fadePaletteCounter;
}
Graphics::copyRect(_locationBackgroundGfxBuf, 640, _quadBackgroundGfxBuf, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
updateSprites();
drawSprite(0);
redrawScreen(0);
@@ -259,7 +259,7 @@ void TuckerEngine::handleNewPartSequence() {
--_fadePaletteCounter;
}
Graphics::copyRect(_locationBackgroundGfxBuf, 640, _quadBackgroundGfxBuf, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
updateSprites();
drawSprite(0);
redrawScreen(0);
@@ -294,7 +294,7 @@ void TuckerEngine::handleMeanwhileSequence() {
++_fadePaletteCounter;
}
Graphics::copyRect(_locationBackgroundGfxBuf, 640, _quadBackgroundGfxBuf + 89600, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
redrawScreen(0);
waitForTimer(3);
++i;
@@ -305,11 +305,12 @@ void TuckerEngine::handleMeanwhileSequence() {
--_fadePaletteCounter;
}
Graphics::copyRect(_locationBackgroundGfxBuf, 640, _quadBackgroundGfxBuf + 89600, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
redrawScreen(0);
waitForTimer(3);
} while (_fadePaletteCounter > 0);
memcpy(_currentPalette, backupPalette, 256 * 3);
+ _fullRedraw = true;
}
void TuckerEngine::handleMapSequence() {
@@ -337,7 +338,7 @@ void TuckerEngine::handleMapSequence() {
waitForTimer(2);
updateMouseState();
Graphics::copyRect(_locationBackgroundGfxBuf + _scrollOffset, 640, _quadBackgroundGfxBuf + 89600, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
if (_flagsTable[7] > 0 && _mousePosX > 30 && _mousePosX < 86 && _mousePosY > 36 && _mousePosY < 86) {
textNum = 13;
_nextLocationNum = (_partNum == 1) ? 3 : 65;
@@ -459,7 +460,7 @@ int TuckerEngine::handleSpecialObjectSelectionSequence() {
waitForTimer(2);
updateMouseState();
Graphics::copyRect(_locationBackgroundGfxBuf + _scrollOffset, 640, _quadBackgroundGfxBuf, 320, 320, 200);
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
if (_fadePaletteCounter < 14) {
fadeOutPalette();
++_fadePaletteCounter;
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp
index 692335d5ef..90c758c0bf 100644
--- a/engines/tucker/tucker.cpp
+++ b/engines/tucker/tucker.cpp
@@ -305,7 +305,7 @@ void TuckerEngine::restart() {
_currentGfxBackground = 0;
_fadePaletteCounter = 0;
memset(_currentPalette, 0, sizeof(_currentPalette));
- _fullRedrawCounter = 0;
+ _fullRedraw = false;
_dirtyRectsPrevCount = _dirtyRectsCount = 0;
_updateLocationFadePaletteCounter = 0;
@@ -469,7 +469,7 @@ void TuckerEngine::mainLoop() {
_mainSpritesBaseOffset = 1;
}
}
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
} else {
_currentGfxBackground = _quadBackgroundGfxBuf;
}
@@ -1460,7 +1460,7 @@ void TuckerEngine::updateScreenScrolling() {
}
}
if (scrollPrevOffset != _scrollOffset) {
- _fullRedrawCounter = 2;
+ _fullRedraw = true;
}
}
@@ -1733,34 +1733,36 @@ void TuckerEngine::drawBackgroundSprites() {
} else if (_xPosCurrent > 320 && _xPosCurrent < 640) {
srcX += 320;
}
- int offset = _backgroundSprOffset + srcY * 640 + srcX;
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + offset, _backgroundSpriteDataPtr + frameOffset + 12, srcW, srcH, 0, _locationHeightTable[_locationNum], false);
- addDirtyRect(offset % 640, offset / 640, srcW, srcH);
+ srcX += _backgroundSprOffset;
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + srcY * 640 + srcX, _backgroundSpriteDataPtr + frameOffset + 12, srcW, srcH, 0, _locationHeightTable[_locationNum], false);
+ addDirtyRect(srcX, srcY, srcW, srcH);
}
}
void TuckerEngine::drawCurrentSprite() {
SpriteFrame *chr = &_spriteFramesTable[_currentSpriteAnimationFrame];
- int offset = (_yPosCurrent + _mainSpritesBaseOffset - 54 + chr->yOffset) * 640 + _xPosCurrent;
+ int yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr->yOffset;
+ int xPos = _xPosCurrent;
if (_mirroredDrawing == 0) {
- offset += chr->xOffset - 14;
+ xPos += chr->xOffset - 14;
} else {
- offset -= chr->xSize + chr->xOffset - 14;
+ xPos -= chr->xSize + chr->xOffset - 14;
}
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + offset, _spritesGfxBuf + chr->sourceOffset, chr->xSize, chr->ySize,
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr->sourceOffset, chr->xSize, chr->ySize,
chr->yOffset, _locationHeightTable[_locationNum], _mirroredDrawing != 0);
- addDirtyRect(offset % 640, offset / 640, chr->xSize, chr->ySize);
+ addDirtyRect(xPos, yPos, chr->xSize, chr->ySize);
if (_currentSpriteAnimationLength > 1) {
SpriteFrame *chr2 = &_spriteFramesTable[_currentSpriteAnimationFrame2];
- offset = (_yPosCurrent + _mainSpritesBaseOffset - 54 + chr2->yOffset) * 640 + _xPosCurrent;
+ yPos = _yPosCurrent + _mainSpritesBaseOffset - 54 + chr2->yOffset;
+ xPos = _xPosCurrent;
if (_mirroredDrawing == 0) {
- offset += chr2->xOffset - 14;
+ xPos += chr2->xOffset - 14;
} else {
- offset -= chr2->xSize + chr2->xOffset - 14;
+ xPos -= chr2->xSize + chr2->xOffset - 14;
}
- Graphics::decodeRLE_248(_locationBackgroundGfxBuf + offset, _spritesGfxBuf + chr2->sourceOffset, chr2->xSize, chr2->ySize,
+ Graphics::decodeRLE_248(_locationBackgroundGfxBuf + yPos * 640 + xPos, _spritesGfxBuf + chr2->sourceOffset, chr2->xSize, chr2->ySize,
chr2->yOffset, _locationHeightTable[_locationNum], _mirroredDrawing != 0);
- addDirtyRect(offset % 640, offset / 640, chr2->xSize, chr2->ySize);
+ addDirtyRect(xPos, yPos, chr2->xSize, chr2->ySize);
}
}
@@ -1891,13 +1893,13 @@ void TuckerEngine::drawSprite(int num) {
int srcH = READ_LE_UINT16(p + frameOffset + 2);
int srcX = READ_LE_UINT16(p + frameOffset + 8);
int srcY = READ_LE_UINT16(p + frameOffset + 10);
- int dstOffset = s->gfxBackgroundOffset + srcX;
- if (dstOffset < 600 && (_scrollOffset + 320 < dstOffset || _scrollOffset - srcW > dstOffset)) {
+ int xPos = s->gfxBackgroundOffset + srcX;
+ if (xPos < 600 && (_scrollOffset + 320 < xPos || _scrollOffset - srcW > xPos)) {
return;
}
s->xSource = srcX;
s->gfxBackgroundOffset += s->backgroundOffset;
- uint8 *dstPtr = _locationBackgroundGfxBuf + srcY * 640 + dstOffset;
+ uint8 *dstPtr = _locationBackgroundGfxBuf + srcY * 640 + xPos;
const uint8 *srcPtr = p + frameOffset + 12;
switch (s->colorType) {
case 0:
@@ -1910,7 +1912,7 @@ void TuckerEngine::drawSprite(int num) {
Graphics::decodeRLE_248(dstPtr, srcPtr, srcW, srcH, 0, s->yMaxBackground, s->flipX != 0);
break;
}
- addDirtyRect(dstOffset % 640, dstOffset / 640 + srcY, srcW, srcH);
+ addDirtyRect(xPos, srcY, srcW, srcH);
}
}
@@ -2826,7 +2828,7 @@ void TuckerEngine::drawStringInteger(int num, int x, int y, int digits) {
Graphics::drawStringChar(_locationBackgroundGfxBuf + offset, numStr[i], 640, 102, _charsetGfxBuf);
offset += 8;
}
- addDirtyRect(x, y, Graphics::_charset.charW * 3, Graphics::_charset.charH);
+ addDirtyRect(_scrollOffset + x, y, Graphics::_charset.charW * 3, Graphics::_charset.charH);
}
void TuckerEngine::drawStringAlt(int offset, int color, const uint8 *str, int strLen) {
@@ -3740,20 +3742,20 @@ void TuckerEngine::drawSpeechText(int xStart, int y, const uint8 *dataPtr, int n
y = count * 10;
}
for (int i = 0; i < count; ++i) {
- int dstOffset = xStart - lines[i].w / 2;
- if (dstOffset < _scrollOffset) {
- dstOffset = _scrollOffset;
- } else if (dstOffset > _scrollOffset + 320 - lines[i].w) {
- dstOffset = _scrollOffset + 320 - lines[i].w;
+ int yPos, xPos = xStart - lines[i].w / 2;
+ if (xPos < _scrollOffset) {
+ xPos = _scrollOffset;
+ } else if (xPos > _scrollOffset + 320 - lines[i].w) {
+ xPos = _scrollOffset + 320 - lines[i].w;
}
if (_conversationOptionsCount != 0) {
- dstOffset = xStart + _scrollOffset;
- dstOffset += (i * 10 + y) * 640;
+ xPos = xStart + _scrollOffset;
+ yPos = i * 10 + y;
_panelItemWidth = count;
} else {
- dstOffset += (y - (count - i) * 10) * 640;
+ yPos = y - (count - i) * 10;
}
- drawSpeechTextLine(dataPtr, lines[i].offset, lines[i].count, dstOffset, color);
+ drawSpeechTextLine(dataPtr, lines[i].offset, lines[i].count, xPos, yPos, color);
}
}
@@ -3780,23 +3782,24 @@ int TuckerEngine::splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int
return ret;
}
-void TuckerEngine::drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, int dstOffset, uint8 color) {
- int startOffset = dstOffset;
+void TuckerEngine::drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, int x, int y, uint8 color) {
+ int xStart = x;
int i = 0;
for (; i < count && dataPtr[pos] != '\n'; ++i) {
- Graphics::drawStringChar(_locationBackgroundGfxBuf + dstOffset, dataPtr[pos], 640, color, _charsetGfxBuf);
- dstOffset += _charWidthTable[dataPtr[pos]];
+ Graphics::drawStringChar(_locationBackgroundGfxBuf + y * 640 + x, dataPtr[pos], 640, color, _charsetGfxBuf);
+ x += _charWidthTable[dataPtr[pos]];
++pos;
}
- addDirtyRect(startOffset % 640, startOffset / 640, Graphics::_charset.charW * i, Graphics::_charset.charH);
+ addDirtyRect(xStart, y, Graphics::_charset.charW * i, Graphics::_charset.charH);
}
void TuckerEngine::redrawScreen(int offset) {
- debug(9, "redrawScreen() _fullRedrawCounter %d offset %d _dirtyRectsCount %d", _fullRedrawCounter, offset, _dirtyRectsCount);
+ debug(9, "redrawScreen() _fullRedraw %d offset %d _dirtyRectsCount %d", _fullRedraw, offset, _dirtyRectsCount);
assert(offset <= kScreenWidth);
- if (_fullRedrawCounter > 0) {
- --_fullRedrawCounter;
+ if (_fullRedraw) {
+ _fullRedraw = false;
_system->copyRectToScreen(_locationBackgroundGfxBuf + offset, kScreenPitch, 0, 0, kScreenWidth, kScreenHeight);
+ _dirtyRectsPrevCount = _dirtyRectsCount = 0;
} else {
const int xClip = offset % kScreenPitch;
const int yClip = offset / kScreenPitch;
@@ -3806,13 +3809,11 @@ void TuckerEngine::redrawScreen(int offset) {
}
for (int i = 0; i < _dirtyRectsCount; ++i) {
redrawScreenRect(clipRect, _dirtyRectsTable[0][i]);
- }
- _dirtyRectsPrevCount = _dirtyRectsCount;
- for (int i = 0; i < _dirtyRectsCount; ++i) {
_dirtyRectsTable[1][i] = _dirtyRectsTable[0][i];
}
+ _dirtyRectsPrevCount = _dirtyRectsCount;
+ _dirtyRectsCount = 0;
}
- _dirtyRectsCount = 0;
_system->updateScreen();
}
@@ -3827,17 +3828,33 @@ void TuckerEngine::redrawScreenRect(const Common::Rect &clip, const Common::Rect
if (w <= 0 || h <= 0) {
return;
}
+#if 0
+ static const uint8 outlineColor = 0;
+ memset(_locationBackgroundGfxBuf + r.top * 640 + r.left, outlineColor, w);
+ memset(_locationBackgroundGfxBuf + (r.top + h - 1) * 640 + r.left, outlineColor, w);
+ for (int y = r.top; y < r.top + h; ++y) {
+ _locationBackgroundGfxBuf[y * 640 + r.left] = outlineColor;
+ _locationBackgroundGfxBuf[y * 640 + r.left + w - 1] = outlineColor;
+ }
+#endif
_system->copyRectToScreen(src, 640, r.left, r.top, w, h);
}
}
void TuckerEngine::addDirtyRect(int x, int y, int w, int h) {
- if (_dirtyRectsCount >= kMaxDirtyRects) {
- _fullRedrawCounter = 2;
- _dirtyRectsCount = 0;
- } else {
- _dirtyRectsTable[0][_dirtyRectsCount] = Common::Rect(x, y, x + w, y + h);
- ++_dirtyRectsCount;
+ if (!_fullRedraw) {
+ Common::Rect r(x, y, x + w, y + h);
+ for (int i = 0; i < _dirtyRectsCount; ++i) {
+ if (_dirtyRectsTable[0][i].contains(r)) {
+ return;
+ }
+ }
+ if (_dirtyRectsCount < kMaxDirtyRects) {
+ _dirtyRectsTable[0][_dirtyRectsCount] = r;
+ ++_dirtyRectsCount;
+ } else {
+ _fullRedraw = true;
+ }
}
}
diff --git a/engines/tucker/tucker.h b/engines/tucker/tucker.h
index 6afccdc4da..21d2e2d49c 100644
--- a/engines/tucker/tucker.h
+++ b/engines/tucker/tucker.h
@@ -342,7 +342,7 @@ protected:
void playSpeechForAction(int i);
void drawSpeechText(int xStart, int y, const uint8 *dataPtr, int num, int color);
int splitSpeechTextLines(const uint8 *dataPtr, int pos, int x, int &lineCharsCount, int &lineWidth);
- void drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, int dstOffset, uint8 color);
+ void drawSpeechTextLine(const uint8 *dataPtr, int pos, int count, int x, int y, uint8 color);
void redrawScreen(int offset);
void redrawScreenRect(const Common::Rect &clip, const Common::Rect &dirty);
void addDirtyRect(int x, int y, int w, int h);
@@ -801,7 +801,7 @@ protected:
uint8 *_currentGfxBackground;
int _fadePaletteCounter;
uint8 _currentPalette[768];
- int _fullRedrawCounter;
+ bool _fullRedraw;
int _dirtyRectsPrevCount, _dirtyRectsCount;
Common::Rect _dirtyRectsTable[2][kMaxDirtyRects];