diff options
author | Max Horn | 2007-12-16 21:46:34 +0000 |
---|---|---|
committer | Max Horn | 2007-12-16 21:46:34 +0000 |
commit | 4e94b3273c1c126e6c5ad33071f1144302061c01 (patch) | |
tree | 32f0cf5683e08ed9d50a238161009282bf8710ab /engines | |
parent | 7599b2cb960b972570948a0541fc30cfbb6385e5 (diff) | |
download | scummvm-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.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); |