Patch #1851568: INDY3 Mac: Grail Diary Fix

svn-id: r29890
This commit is contained in:
Max Horn 2007-12-16 21:46:34 +00:00
parent 7599b2cb96
commit 4e94b3273c
2 changed files with 27 additions and 0 deletions

View File

@ -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;

View File

@ -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);