[Scummvm-cvs-logs] CVS: scummvm/simon simon.cpp,1.520.2.2,1.520.2.3

kirben kirben at users.sourceforge.net
Fri Nov 18 15:40:09 CET 2005


Update of /cvsroot/scummvm/scummvm/simon
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29334/simon

Modified Files:
      Tag: branch-0-8-0
	simon.cpp 
Log Message:

Palette delay at the end of Simon1 was never triggered.
Fix slowFadeIn.


Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.520.2.2
retrieving revision 1.520.2.3
diff -u -d -r1.520.2.2 -r1.520.2.3
--- simon.cpp	23 Oct 2005 13:45:10 -0000	1.520.2.2
+++ simon.cpp	18 Nov 2005 23:39:29 -0000	1.520.2.3
@@ -2548,7 +2548,7 @@
 			b += sizeof(ImageHeader_Simon);
 	}
 
-	if (!(_game & GF_SIMON2)) {
+	if ((_game & GF_SIMON1) && vga_res_id == 16300) {
 		if (num == 16300) {
 			dx_clear_attached_from_top(134);
 			_usePaletteDelay = true;
@@ -3993,74 +3993,47 @@
 }
 
 void SimonEngine::realizePalette() {
-	_videoVar9 = false;
-	memcpy(_paletteBackup, _palette, 256 * 4);
-
 	if (_paletteColorCount & 0x8000) {
 		fadeUpPalette();
 	} else {
+		_videoVar9 = false;
+		memcpy(_paletteBackup, _palette, 256 * 4);
 		_system->setPalette(_palette, 0, _paletteColorCount);
+		_paletteColorCount = 0;
 	}
-
-	_paletteColorCount = 0;
 }
 
 void SimonEngine::fadeUpPalette() {
-	bool done;
-
-	_paletteColorCount = (_paletteColorCount & 0x7fff) / 4;
-
-	memset(_videoBuf1, 0, _paletteColorCount * sizeof(uint32));
-
-	// This function is used by Simon 2 when riding the lion to the goblin
-	// camp. Note that _paletteColorCount is not 1024 in this scene, so
-	// only part of the palette is faded up. But apparently that's enough,
-	// as long as we make sure that the remaining palette colours aren't
-	// completely ignored.
+	uint8 paletteTmp[768];
+	uint8 *src, *dst;
+	int c, p;
 
-	if (_paletteColorCount < _videoNumPalColors)
-		memcpy(_videoBuf1 + _paletteColorCount * sizeof(uint32),
-			_palette + _paletteColorCount * sizeof(uint32),
-			(_videoNumPalColors - _paletteColorCount) * sizeof(uint32));
+	_paletteColorCount &= 0x7fff;
+	_videoVar9 = false;
 
-	do {
-		uint8 *src;
-		byte *dst;
-		int i;
+	memcpy(_videoBuf1, _palette, 1024); // Difference
+	memset(_videoBuf1, 0, 768);
 
-		done = true;
-		src = _palette;
-		dst = _videoBuf1;
+	memcpy(_paletteBackup, _palette, 768);
+	memcpy(paletteTmp, _palette, 768);
 
-		for (i = 0; i < _paletteColorCount; i++) {
-			if (src[0] > dst[0]) {
-				if (dst[0] > src[0] - 4)
-					dst[0] = src[0];
-				else
-					dst[0] += 4;
-				done = false;
-			}
-			if (src[1] > dst[1]) {
-				if (dst[1] > src[1] - 4)
-					dst[1] = src[1];
-				else
-					dst[1] += 4;
-				done = false;
-			}
-			if (src[2] > dst[2]) {
-				if (dst[2] > src[2] - 4)
-					dst[2] = src[2];
-				else
-					dst[2] += 4;
-				done = false;
-			}
-			dst += 4;
-			src += 4;
-		}
+	for (c = 255; c > 0; c -= 4) {
+	  	src = paletteTmp;
+ 		dst = _videoBuf1;
 
-		_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
-		delay(5);
- 	} while (!done);
+		for (p = _paletteColorCount; p !=0 ; p--) {
+			if (*src >= c)
+				*dst = *dst + 4;
+			
+			src++;
+			dst++;
+ 		}
+ 		_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
+		if (_fade)
+			_system->updateScreen();
+ 		delay(5);
+ 	}
+	_paletteColorCount = 0;
 }
 
 int SimonEngine::go() {





More information about the Scummvm-git-logs mailing list