[Scummvm-cvs-logs] SF.net SVN: scummvm:[39937] scummvm/trunk/engines/saga/gfx.cpp

eriktorbjorn at users.sourceforge.net eriktorbjorn at users.sourceforge.net
Sat Apr 11 17:38:14 CEST 2009


Revision: 39937
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39937&view=rev
Author:   eriktorbjorn
Date:     2009-04-11 15:38:13 +0000 (Sat, 11 Apr 2009)

Log Message:
-----------
Committed my patch for bug #2748110 ("IHNM: Fade glitch when Benny falls
asleep"), after discussing it with [md5]. It may not be exactly like the
original, but it looks a lot closer now.

Modified Paths:
--------------
    scummvm/trunk/engines/saga/gfx.cpp

Modified: scummvm/trunk/engines/saga/gfx.cpp
===================================================================
--- scummvm/trunk/engines/saga/gfx.cpp	2009-04-11 14:44:03 UTC (rev 39936)
+++ scummvm/trunk/engines/saga/gfx.cpp	2009-04-11 15:38:13 UTC (rev 39937)
@@ -406,7 +406,6 @@
 	int new_entry;
 	byte *ppal;
 	PalEntry *palE;
-	double fpercent;
 
 	from = CLIP<int16>(from, 0, 256);
 	to   = CLIP<int16>(to,   0, 256);
@@ -420,21 +419,17 @@
 			percent += 1 / x;
 	}
 
-	// Exponential fade
 	percent = percent > 1.0 ? 1.0 : percent;
-	fpercent = percent * percent;
-
 	if (from > to)
-		fpercent = 1.0 - fpercent;
+		percent = 1.0 - percent;
 
+	byte fadePal[PAL_ENTRIES * 4];
+
 	// Use the correct percentage change per frame for each palette entry
-	for (i = 0, ppal = _currentPal; i < PAL_ENTRIES; i++, ppal += 4) {
-		if (i < start || i >= start + numColors)
-			palE = &_globalPalette[i];
-		else
-			palE = &srcPal[i];
+	for (i = start, ppal = fadePal + start * 4; i < start + numColors; i++, ppal += 4) {
+		palE = &srcPal[i];
 
-		new_entry = (int)(palE->red * fpercent);
+		new_entry = (int)(palE->red * percent);
 
 		if (new_entry < 0) {
 			ppal[0] = 0;
@@ -442,7 +437,7 @@
 			ppal[0] = (byte) new_entry;
 		}
 
-		new_entry = (int)(palE->green * fpercent);
+		new_entry = (int)(palE->green * percent);
 
 		if (new_entry < 0) {
 			ppal[1] = 0;
@@ -450,7 +445,7 @@
 			ppal[1] = (byte) new_entry;
 		}
 
-		new_entry = (int)(palE->blue * fpercent);
+		new_entry = (int)(palE->blue * percent);
 
 		if (new_entry < 0) {
 			ppal[2] = 0;
@@ -461,9 +456,9 @@
 	}
 
 	// Color 0 should always be black in IHNM
-	memset(&_currentPal[0 * 4], 0, 4);
+	memset(&fadePal[0 * 4], 0, 4);
 
-	_system->setPalette(_currentPal, 0, PAL_ENTRIES);
+	_system->setPalette(&fadePal[start * 4], start, numColors);
 }
 
 #endif


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