[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