aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2007-12-16 21:46:34 +0000
committerMax Horn2007-12-16 21:46:34 +0000
commit4e94b3273c1c126e6c5ad33071f1144302061c01 (patch)
tree32f0cf5683e08ed9d50a238161009282bf8710ab /engines
parent7599b2cb960b972570948a0541fc30cfbb6385e5 (diff)
downloadscummvm-rg350-4e94b3273c1c126e6c5ad33071f1144302061c01.tar.gz
scummvm-rg350-4e94b3273c1c126e6c5ad33071f1144302061c01.tar.bz2
scummvm-rg350-4e94b3273c1c126e6c5ad33071f1144302061c01.zip
Patch #1851568: INDY3 Mac: Grail Diary Fix
svn-id: r29890
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/charset.cpp6
-rw-r--r--engines/scumm/string.cpp21
2 files changed, 27 insertions, 0 deletions
diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp
index db59c58a2f..6c1e556448 100644
--- a/engines/scumm/charset.cpp
+++ b/engines/scumm/charset.cpp
@@ -1509,6 +1509,12 @@ void CharsetRendererCommon::enableShadow(bool enable) {
void CharsetRendererV3::printChar(int chr, bool ignoreCharsetMask) {
+ // WORKAROUND for bug #1509509: Indy3 Mac does not show black
+ // characters (such as in the grail diary) if ignoreCharsetMask
+ // is true. See also patch #1851568.
+ if (_vm->_game.id == GID_INDY3 && _vm->_game.platform == Common::kPlatformMacintosh && _color == 0)
+ ignoreCharsetMask = false;
+
// Indy3 / Zak256 / Loom
int width, height, origWidth = 0, origHeight;
VirtScreen *vs;
diff --git a/engines/scumm/string.cpp b/engines/scumm/string.cpp
index 993c8e93e0..ec692c7853 100644
--- a/engines/scumm/string.cpp
+++ b/engines/scumm/string.cpp
@@ -856,6 +856,27 @@ void ScummEngine::drawString(int a, const byte *msg) {
_charset->_disableOffsX = _charset->_firstChar = true;
_charset->setCurID(_string[a].charset);
+ // HACK: Correct positions of text in the grail diary in Indy3 Mac.
+ // See also patch #1851568.
+ if (_game.id == GID_INDY3 && _game.platform == Common::kPlatformMacintosh && a == 1) {
+ if (_currentRoom == 75) {
+ if (_charset->_startLeft < 160)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 22;
+ else if (_charset->_startLeft < 200)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 10;
+ } else if (_currentRoom == 69) {
+ if (_charset->_startLeft < 160)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 15;
+ else if (_charset->_startLeft < 200)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 10;
+ } else if (_currentRoom == 90) {
+ if (_charset->_startLeft < 160)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 21;
+ else if (_charset->_startLeft < 200)
+ _charset->_startLeft = _charset->_left = _string[a].xpos - 15;
+ }
+ }
+
if (_game.version >= 5)
memcpy(_charsetColorMap, _charsetData[_charset->getCurID()], 4);