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

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Thu Mar 27 16:27:31 CET 2008


Revision: 31265
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31265&view=rev
Author:   lordhoto
Date:     2008-03-27 08:27:31 -0700 (Thu, 27 Mar 2008)

Log Message:
-----------
Added debugger command to set screen palette.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/debugger.cpp
    scummvm/trunk/engines/kyra/debugger.h
    scummvm/trunk/engines/kyra/screen.h

Modified: scummvm/trunk/engines/kyra/debugger.cpp
===================================================================
--- scummvm/trunk/engines/kyra/debugger.cpp	2008-03-27 15:01:12 UTC (rev 31264)
+++ scummvm/trunk/engines/kyra/debugger.cpp	2008-03-27 15:27:31 UTC (rev 31265)
@@ -31,6 +31,7 @@
 #include "kyra/kyra_v2.h"
 #include "kyra/screen.h"
 #include "kyra/timer.h"
+#include "kyra/resource.h"
 
 namespace Kyra {
 
@@ -39,6 +40,7 @@
 	_vm = vm;
 
 	DCmd_Register("screen_debug_mode",	WRAP_METHOD(Debugger, cmd_setScreenDebug));
+	DCmd_Register("load_palette",		WRAP_METHOD(Debugger, cmd_loadPalette));
 	DCmd_Register("facings",			WRAP_METHOD(Debugger, cmd_showFacings));
 }
 
@@ -57,6 +59,42 @@
 	return true;
 }
 
+bool Debugger::cmd_loadPalette(int argc, const char **argv) {
+	uint8 palette[768];
+
+	if (argc <= 1) {
+		DebugPrintf("Use load_palette <file> [start_col] [end_col]");
+		return true;
+	}
+
+	if (_vm->gameFlags().gameID != GI_KYRA1 && _vm->resource()->getFileSize(argv[1]) != 768) {
+		_vm->screen()->savePageToDisk("TEMP", 5);
+		_vm->screen()->loadBitmap(argv[1], 5, 5, 0);
+		memcpy(palette, _vm->screen()->getCPagePtr(5), 768);
+		_vm->screen()->loadPageFromDisk("TEMP", 5);
+	} else if (!_vm->resource()->loadFileToBuf(argv[1], palette, 768)) {
+		DebugPrintf("Palette '%s' not found!", argv[1]);
+		return true;
+	}
+
+	int startCol = 0;
+	int endCol = 255;
+	if (argc > 2)
+		startCol = MIN(255, MAX(0, atoi(argv[2])));
+	if (argc > 3)
+		endCol = MIN(255, MAX(0, atoi(argv[3])));
+
+	if (startCol > 0)
+		memcpy(palette, _vm->screen()->getScreenPalette(), startCol*3);
+	if (endCol < 255)
+		memcpy(palette + endCol * 3, _vm->screen()->getScreenPalette() + endCol * 3, (255-endCol)*3);
+
+	_vm->screen()->setScreenPalette(palette);
+	_vm->screen()->updateScreen();
+
+	return true;
+}
+
 bool Debugger::cmd_showFacings(int argc, const char **argv) {
 	DebugPrintf("Facing directions:\n");
 	DebugPrintf("7  0  1\n");

Modified: scummvm/trunk/engines/kyra/debugger.h
===================================================================
--- scummvm/trunk/engines/kyra/debugger.h	2008-03-27 15:01:12 UTC (rev 31264)
+++ scummvm/trunk/engines/kyra/debugger.h	2008-03-27 15:27:31 UTC (rev 31265)
@@ -43,6 +43,7 @@
 	KyraEngine *_vm;
 
 	bool cmd_setScreenDebug(int argc, const char **argv);
+	bool cmd_loadPalette(int argc, const char **argv);
 	bool cmd_showFacings(int argc, const char **argv);
 };
 

Modified: scummvm/trunk/engines/kyra/screen.h
===================================================================
--- scummvm/trunk/engines/kyra/screen.h	2008-03-27 15:01:12 UTC (rev 31264)
+++ scummvm/trunk/engines/kyra/screen.h	2008-03-27 15:27:31 UTC (rev 31265)
@@ -145,6 +145,7 @@
 
 	void setPaletteIndex(uint8 index, uint8 red, uint8 green, uint8 blue);
 	void setScreenPalette(const uint8 *palData);
+	const uint8 *getScreenPalette() const { return _screenPalette; }
 	uint8 *getPalette(int num);
 
 	// gui specific (processing on _curPage)


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