[Scummvm-git-logs] scummvm master -> c2354dc862df33264eb6a1c41d4ae701cea77011

eriktorbjorn eriktorbjorn at telia.com
Wed Oct 13 06:16:19 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c2354dc862 SCUMM: Position text better in Indy 3 Mac (bug #12983)


Commit: c2354dc862df33264eb6a1c41d4ae701cea77011
    https://github.com/scummvm/scummvm/commit/c2354dc862df33264eb6a1c41d4ae701cea77011
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2021-10-13T08:16:08+02:00

Commit Message:
SCUMM: Position text better in Indy 3 Mac (bug #12983)

The text positioning seemed to be correct in all cases I checked (which
admittedly weren't all of them). The original spaces characters
differently, but I would say that the original does it wrong. I typed
the same text in ResEdit, and it came out the way ScummVM draws it.

I see no reason for being that bug compatible with the original.

Changed paths:
    engines/scumm/charset.cpp


diff --git a/engines/scumm/charset.cpp b/engines/scumm/charset.cpp
index 1b14bc439f..21816ed932 100644
--- a/engines/scumm/charset.cpp
+++ b/engines/scumm/charset.cpp
@@ -1672,12 +1672,6 @@ void CharsetRendererMac::setCurID(int32 id) {
 
 int CharsetRendererMac::getFontHeight() {
 	int height = _macFonts[_curId].getFontHeight();
-	if (_curId == 0 && _vm->_game.id == GID_INDY3) {
-		// For font 0, round up the height. It's still not quite as
-		// widely spaced as in the original, but I think it looks fine.
-		if (height & 1)
-			height++;
-	}
 
         // If we ever need the height for font 1 in Last Crusade (we don't at
 	// the moment), we need the actual height.
@@ -1864,6 +1858,11 @@ byte CharsetRendererMac::getTextShadowColor() {
 }
 
 void CharsetRendererMac::printCharInternal(int chr, int color, bool shadow, int x, int y) {
+	if (_vm->_game.id == GID_LOOM) {
+		x++;
+		y++;
+	}
+
 	if (shadow) {
 		byte shadowColor = getTextShadowColor();
 
@@ -1874,25 +1873,25 @@ void CharsetRendererMac::printCharInternal(int chr, int color, bool shadow, int
 			// particularly good anyway). This seems to match the
 			// original look for normal text.
 
-			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 2, y, 0);
-			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x, y + 2, 0);
-			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 3, y + 3, 0);
+			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 1, y - 1, 0);
+			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x - 1, y + 1, 0);
+			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 2, y + 2, 0);
 
 			if (color != -1) {
-				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 2, y, shadowColor);
-				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x, y + 2, shadowColor);
-				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 3, y + 3, shadowColor);
+				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 1, y - 1, shadowColor);
+				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x - 1, y + 1, shadowColor);
+				_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 2, y + 2, shadowColor);
 			}
 		} else {
 			// Indy 3 uses simpler shadowing, and doesn't need the
 			// "draw only on text surface" hack.
 
-			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 2, y + 2, 0);
-			_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 2, y + 2, shadowColor);
+			_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 1, y + 1, 0);
+			_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 1, y + 1, shadowColor);
 		}
 	}
 
-	_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x + 1, y + 1, 0);
+	_macFonts[_curId].drawChar(&_vm->_textSurface, chr, x, y, 0);
 
 	if (color != -1) {
 		color = getTextColor();
@@ -1902,7 +1901,7 @@ void CharsetRendererMac::printCharInternal(int chr, int color, bool shadow, int
 			_macFonts[_curId].drawChar(_glyphSurface, chr, 0, 0, 15);
 
 			byte *src = (byte *)_glyphSurface->getBasePtr(0, 0);
-			byte *dst = (byte *)_vm->_macScreen->getBasePtr(x + 1, y + 1);
+			byte *dst = (byte *)_vm->_macScreen->getBasePtr(x, y);
 
 			for (int h = 0; h < _glyphSurface->h; h++) {
 				bool pixel = ((y + h + 1) & 1) == 0;
@@ -1920,7 +1919,7 @@ void CharsetRendererMac::printCharInternal(int chr, int color, bool shadow, int
 				dst += _vm->_macScreen->pitch;
 			}
 		} else {
-			_macFonts[_curId].drawChar(_vm->_macScreen, chr, x + 1, y + 1, color);
+			_macFonts[_curId].drawChar(_vm->_macScreen, chr, x, y, color);
 		}
 	}
 }
@@ -1939,7 +1938,7 @@ void CharsetRendererMac::printCharToTextBox(int chr, int color, int x, int y) {
 	// the best way I can think of to fix that.
 
 	if (y > 0)
-		y++;
+		y = 17;
 
 	_macFonts[_curId].drawChar(_vm->_macIndy3TextBox, chr, x + 5, y + 11, color);
 }




More information about the Scummvm-git-logs mailing list