[Scummvm-cvs-logs] scummvm master -> 6db22dde64ca00c31d99c20790063f9ba782552d

clone2727 clone2727 at gmail.com
Tue Feb 22 02:34:24 CET 2011


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

Summary:
4402153a09 SCI: Fix disabled Mac icon pseudo-shading
6db22dde64 SCI: Fixed freddy's Mac icon bar palettes


Commit: 4402153a095e152132655c13a94e1098375fe0d3
    https://github.com/scummvm/scummvm/commit/4402153a095e152132655c13a94e1098375fe0d3
Author: Matthew Hoops (clone2727 at gmail.com)
Date: 2011-02-21T17:32:24-08:00

Commit Message:
SCI: Fix disabled Mac icon pseudo-shading

Changed paths:
    engines/sci/graphics/maciconbar.cpp



diff --git a/engines/sci/graphics/maciconbar.cpp b/engines/sci/graphics/maciconbar.cpp
index ea44db6..f0931e0 100644
--- a/engines/sci/graphics/maciconbar.cpp
+++ b/engines/sci/graphics/maciconbar.cpp
@@ -110,10 +110,12 @@ void GfxMacIconBar::drawDisabledImage(Graphics::Surface *surface, const Common::
 	newSurf.copyFrom(*surface);
 
 	for (int i = 0; i < newSurf.h; i++) {
-		int startX = rect.left & 3;
+		// Start at the next four byte boundary
+		int startX = 3 - ((rect.left + 3) & 3);
 
+		// Start odd rows at two bytes past that (also properly aligned)
 		if ((i + rect.top) & 1)
-			startX += 2;
+			startX = (startX + 2) & 3;
 
 		for (int j = startX; j < newSurf.w; j += 4)
 			*((byte *)newSurf.getBasePtr(j, i)) = 0;


Commit: 6db22dde64ca00c31d99c20790063f9ba782552d
    https://github.com/scummvm/scummvm/commit/6db22dde64ca00c31d99c20790063f9ba782552d
Author: Matthew Hoops (clone2727 at gmail.com)
Date: 2011-02-21T17:32:30-08:00

Commit Message:
SCI: Fixed freddy's Mac icon bar palettes

(hopefully for good now)

Changed paths:
    engines/sci/graphics/palette.cpp



diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index 5348903..0f95a3f 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -850,21 +850,16 @@ void GfxPalette::palVaryProcess(int signal, bool setPalette) {
 byte GfxPalette::findMacIconBarColor(byte r, byte g, byte b) {
 	// Find the best color for use with the Mac icon bar
 
-	// For black, always use 0
-	if (r == 0 && g == 0 && b == 0)
-		return 0;
-
 	byte found = 0xFF;
 	uint diff = 0xFFFFFFFF;
 
-	for (uint16 i = 1; i < 255; i++) {
-		int dr = _macClut[i * 3    ] - r;
-		int dg = _macClut[i * 3 + 1] - g;
-		int db = _macClut[i * 3 + 2] - b;
+	for (uint16 i = 0; i < 256; i++) {
+		// Use the difference of the top 4 bits
+		int dr = (_macClut[i * 3    ] & 0xf0) - (r & 0xf0);
+		int dg = (_macClut[i * 3 + 1] & 0xf0) - (g & 0xf0);
+		int db = (_macClut[i * 3 + 2] & 0xf0) - (b & 0xf0);
 
-		// Use the largest difference. This is what the Mac Palette Manager does.
-		uint cdiff = MAX<int>(ABS(dr), ABS(dg));
-		cdiff = MAX<int>(cdiff, ABS(db));
+		uint cdiff = ABS(dr) + ABS(dg) + ABS(db);
 
 		if (cdiff == 0)
 			return i;
@@ -889,7 +884,9 @@ void GfxPalette::loadMacIconBarPalette() {
 	clutStream->readUint32BE(); // seed
 	clutStream->readUint16BE(); // flags
 	uint16 colorCount = clutStream->readUint16BE() + 1;
-	_macClut = new byte[colorCount * 3];
+	assert(colorCount == 256);
+
+	_macClut = new byte[256 * 3];
 
 	for (uint16 i = 0; i < colorCount; i++) {
 		clutStream->readUint16BE();
@@ -898,6 +895,19 @@ void GfxPalette::loadMacIconBarPalette() {
 		_macClut[i * 3 + 2] = clutStream->readUint16BE() >> 8;
 	}
 
+	// Adjust bounds on the KQ6 palette
+	// We don't use all of it for the icon bar
+	if (g_sci->getGameId() == GID_KQ6)
+		memset(_macClut + 32 * 3, 0, (256 - 32) * 3);
+
+	// Force black/white
+	_macClut[0x00 * 3    ] = 0;
+	_macClut[0x00 * 3 + 1] = 0;
+	_macClut[0x00 * 3 + 2] = 0;
+	_macClut[0xff * 3    ] = 0xff;
+	_macClut[0xff * 3 + 1] = 0xff;
+	_macClut[0xff * 3 + 2] = 0xff;
+
 	delete clutStream;
 }
 






More information about the Scummvm-git-logs mailing list