[Scummvm-cvs-logs] SF.net SVN: scummvm:[44762] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Thu Oct 8 00:03:17 CEST 2009


Revision: 44762
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44762&view=rev
Author:   m_kiewitz
Date:     2009-10-07 22:03:17 +0000 (Wed, 07 Oct 2009)

Log Message:
-----------
SCI/newgui: changed dithering logic, otherwise colors combined with black wouldnt get undithered correctly

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_palette.cpp
    scummvm/trunk/engines/sci/gui/gui_screen.cpp

Modified: scummvm/trunk/engines/sci/gui/gui_palette.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-07 21:47:34 UTC (rev 44761)
+++ scummvm/trunk/engines/sci/gui/gui_palette.cpp	2009-10-07 22:03:17 UTC (rev 44762)
@@ -144,7 +144,7 @@
 
 void SciGuiPalette::setEGA() {
 	int i;
-	byte color1, color2;
+	byte color, color1, color2;
 	_sysPalette.colors[1].r  = 0x000; _sysPalette.colors[1].g  = 0x000; _sysPalette.colors[1].b  = 0x0AA;
 	_sysPalette.colors[2].r  = 0x000; _sysPalette.colors[2].g  = 0x0AA; _sysPalette.colors[2].b  = 0x000;
 	_sysPalette.colors[3].r  = 0x000; _sysPalette.colors[3].g  = 0x0AA; _sysPalette.colors[3].b  = 0x0AA;
@@ -165,12 +165,13 @@
 	}
 	// Now setting colors 16-254 to the correct mix colors that occur when not doing a dithering run on
 	//  finished pictures
-	for (i = 16; i <= 254; i++) {
+	for (i = 0x10; i <= 0xFE; i++) {
 		_sysPalette.colors[i].used = 1;
+		color ^= i << 4;
 		color1 = i & 0x0F; color2 = i >> 4;
-		_sysPalette.colors[i].r = (_sysPalette.colors[color1].r >> 1) + (_sysPalette.colors[color2].r >> 1);
-		_sysPalette.colors[i].g = (_sysPalette.colors[color1].g >> 1) + (_sysPalette.colors[color2].g >> 1);
-		_sysPalette.colors[i].b = (_sysPalette.colors[color1].b >> 1) + (_sysPalette.colors[color2].b >> 1);
+		_sysPalette.colors[color].r = (_sysPalette.colors[color1].r >> 1) + (_sysPalette.colors[color2].r >> 1);
+		_sysPalette.colors[color].g = (_sysPalette.colors[color1].g >> 1) + (_sysPalette.colors[color2].g >> 1);
+		_sysPalette.colors[color].b = (_sysPalette.colors[color1].b >> 1) + (_sysPalette.colors[color2].b >> 1);
 	}
 	setOnScreen();
 }

Modified: scummvm/trunk/engines/sci/gui/gui_screen.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_screen.cpp	2009-10-07 21:47:34 UTC (rev 44761)
+++ scummvm/trunk/engines/sci/gui/gui_screen.cpp	2009-10-07 22:03:17 UTC (rev 44762)
@@ -224,7 +224,7 @@
 // Currently not really done, its supposed to be possible to only dither _visualScreen
 void SciGuiScreen::dither() {
 	int y, x;
-	byte color, ditheredColor;
+	byte color;
 	byte *screenPtr = _visualScreen;
 	byte *displayPtr = _displayScreen;
 
@@ -233,12 +233,10 @@
 			color = *screenPtr;
 			if (color & 0xF0) {
 				color ^= color << 4;
-				ditheredColor = ((x^y) & 1) ? color >> 4 : color & 0x0F;
-				*screenPtr = ditheredColor;
-				if (_unditherState)
+				color = ((x^y) & 1) ? color >> 4 : color & 0x0F;
+				*screenPtr = color;
+				if (!_unditherState)
 					*displayPtr = color;
-				else
-					*displayPtr = ditheredColor;
 			}
 			screenPtr++; displayPtr++;
 		}


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list