diff options
-rw-r--r-- | engines/scumm/charset.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/string.cpp | 21 |
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); |