[Scummvm-cvs-logs] SF.net SVN: scummvm: [22888] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sat Jun 3 17:13:27 CEST 2006


Revision: 22888
Author:   lordhoto
Date:     2006-06-03 08:13:18 -0700 (Sat, 03 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=22888&view=rev

Log Message:
-----------
Implements cmd_fadeEntirePalette, should fix some missing palette fades.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/scene.cpp
    scummvm/trunk/engines/kyra/screen.cpp
    scummvm/trunk/engines/kyra/script_v1.cpp
    scummvm/trunk/engines/kyra/sprites.cpp
Modified: scummvm/trunk/engines/kyra/scene.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene.cpp	2006-06-03 15:07:26 UTC (rev 22887)
+++ scummvm/trunk/engines/kyra/scene.cpp	2006-06-03 15:13:18 UTC (rev 22888)
@@ -460,8 +460,6 @@
 	_screen->loadBitmap(fileNameBuffer, 3, 3, 0);
 	_sprites->loadSceneShapes();
 	_exitListPtr = 0;
-
-	_screen->setScreenPalette(_screen->_currentPalette);
 	
 	_scaleMode = 1;	
 	for (int i = 0; i < 145; ++i) {

Modified: scummvm/trunk/engines/kyra/screen.cpp
===================================================================
--- scummvm/trunk/engines/kyra/screen.cpp	2006-06-03 15:07:26 UTC (rev 22887)
+++ scummvm/trunk/engines/kyra/screen.cpp	2006-06-03 15:13:18 UTC (rev 22888)
@@ -49,7 +49,7 @@
 	free(_screenPalette);
 	free(_decodeShapeBuffer);
 	free(_animBlockPtr);
-	for (int i = 0; i < 3; ++i) {
+	for (int i = 0; i < ARRAYSIZE(_palettes); ++i) {
 		free(_palettes[i]);
 	}
 	delete [] _bitBlitRects;
@@ -92,7 +92,7 @@
 	if (_screenPalette) {
 		memset(_screenPalette, 0, 768);
 	}
-	for (int i = 0; i < 3; ++i) {
+	for (int i = 0; i < ARRAYSIZE(_palettes); ++i) {
 		_palettes[i] = (uint8 *)malloc(768);
 		if (_palettes[i]) {
 			memset(_palettes[i], 0, 768);
@@ -1928,7 +1928,7 @@
 
 uint8 *Screen::getPalette(int num) {
 	debugC(9, kDebugLevelScreen, "Screen::getPalette(%d)", num);
-	assert(num >= 0 && num < 4);
+	assert(num >= 0 && num < ARRAYSIZE(_palettes)+1);
 	if (num == 0) {
 		return _screenPalette;
 	}

Modified: scummvm/trunk/engines/kyra/script_v1.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_v1.cpp	2006-06-03 15:07:26 UTC (rev 22887)
+++ scummvm/trunk/engines/kyra/script_v1.cpp	2006-06-03 15:13:18 UTC (rev 22888)
@@ -1504,7 +1504,28 @@
 }
 
 int KyraEngine::cmd_fadeEntirePalette(ScriptState *script) {
-	warning("STUB: cmd_fadeEntirePalette");
+	debugC(3, kDebugLevelScriptFuncs, "cmd_fadeEntirePalette(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+	int cmd = stackPos(0);
+	uint8 *fadePal = 0;
+	if (cmd == 0) {
+		fadePal = _screen->getPalette(2);
+		uint8 *screenPal = _screen->getPalette(0);
+		uint8 *backUpPal = _screen->getPalette(3);
+		
+		memcpy(backUpPal, screenPal, sizeof(uint8)*768);
+		memset(fadePal, 0, sizeof(uint8)*768);
+	} else if (cmd == 1) {
+		//fadePal = _screen->getPalette(3);
+		warning("unimplemented cmd_fadeEntirePalette function");
+		return 0;
+	} else if (cmd == 2) {
+		// HACK
+		uint8 *clearPal = _screen->getPalette(0);
+		fadePal = _screen->getPalette(1);		
+		memset(clearPal, 0, sizeof(uint8)*768);
+	}
+	
+	_screen->fadePalette(fadePal, stackPos(1));
 	return 0;
 }
 

Modified: scummvm/trunk/engines/kyra/sprites.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sprites.cpp	2006-06-03 15:07:26 UTC (rev 22887)
+++ scummvm/trunk/engines/kyra/sprites.cpp	2006-06-03 15:13:18 UTC (rev 22888)
@@ -412,6 +412,8 @@
 		_engine->_northExitHeight += 1;
 	// XXX
 	memcpy(_screen->_currentPalette + 744 - 60, _dat + 0x17, 60);
+	_engine->_paletteChanged = 1;
+	memcpy(_screen->getPalette(1), _screen->_currentPalette, sizeof(uint8)*768);
 	uint8 *data = _dat + 0x6B;
 
 	uint16 length = READ_LE_UINT16(data);


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