[Scummvm-cvs-logs] SF.net SVN: scummvm:[53544] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Sat Oct 16 19:25:08 CEST 2010


Revision: 53544
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53544&view=rev
Author:   drmccoy
Date:     2010-10-16 17:25:08 +0000 (Sat, 16 Oct 2010)

Log Message:
-----------
GOB: Extend debug console variable command a bit

...So that it's actually useful

Modified Paths:
--------------
    scummvm/trunk/engines/gob/console.cpp
    scummvm/trunk/engines/gob/console.h

Modified: scummvm/trunk/engines/gob/console.cpp
===================================================================
--- scummvm/trunk/engines/gob/console.cpp	2010-10-16 17:06:10 UTC (rev 53543)
+++ scummvm/trunk/engines/gob/console.cpp	2010-10-16 17:25:08 UTC (rev 53544)
@@ -30,7 +30,11 @@
 namespace Gob {
 
 GobConsole::GobConsole(GobEngine *vm) : GUI::Debugger(), _vm(vm) {
-	DCmd_Register("var",				WRAP_METHOD(GobConsole, Cmd_Var));
+	DCmd_Register("varSize",   WRAP_METHOD(GobConsole, cmd_varSize));
+	DCmd_Register("var8",      WRAP_METHOD(GobConsole, cmd_var8));
+	DCmd_Register("var16",     WRAP_METHOD(GobConsole, cmd_var16));
+	DCmd_Register("var32",     WRAP_METHOD(GobConsole, cmd_var32));
+	DCmd_Register("varString", WRAP_METHOD(GobConsole, cmd_varString));
 }
 
 GobConsole::~GobConsole() {
@@ -42,22 +46,102 @@
 void GobConsole::postEnter() {
 }
 
-bool GobConsole::Cmd_Var(int argc, const char **argv) {
+bool GobConsole::cmd_varSize(int argc, const char **argv) {
+	DebugPrintf("Size of the variable space: %d bytes\n", _vm->_inter->_variables->getSize());
+	return true;
+}
+
+bool GobConsole::cmd_var8(int argc, const char **argv) {
 	if (argc == 1) {
-		DebugPrintf("Usage: var <var> (<value>)\n");
+		DebugPrintf("Usage: var8 <var offset> (<value>)\n");
 		return true;
 	}
 
 	uint32 varNum = atoi(argv[1]);
 
+	if (varNum >= _vm->_inter->_variables->getSize()) {
+		DebugPrintf("Variable offset out of range\n");
+		return true;
+	}
+
 	if (argc > 2) {
 		uint32 varVal = atoi(argv[2]);
-		_vm->_inter->_variables->writeVar32(varNum, varVal);
+		_vm->_inter->_variables->writeOff8(varNum, varVal);
 	}
 
-	DebugPrintf("%d = %d\n", varNum, _vm->_inter->_variables->readVar32(varNum));
+	DebugPrintf("var8_%d = %d\n", varNum, _vm->_inter->_variables->readOff8(varNum));
 
 	return true;
 }
 
+bool GobConsole::cmd_var16(int argc, const char **argv) {
+	if (argc == 1) {
+		DebugPrintf("Usage: var16 <var offset> (<value>)\n");
+		return true;
+	}
+
+	uint32 varNum = atoi(argv[1]);
+
+	if ((varNum + 1) >= _vm->_inter->_variables->getSize()) {
+		DebugPrintf("Variable offset out of range\n");
+		return true;
+	}
+
+	if (argc > 2) {
+		uint32 varVal = atoi(argv[2]);
+		_vm->_inter->_variables->writeOff16(varNum, varVal);
+	}
+
+	DebugPrintf("var16_%d = %d\n", varNum, _vm->_inter->_variables->readOff16(varNum));
+
+	return true;
+}
+
+bool GobConsole::cmd_var32(int argc, const char **argv) {
+	if (argc == 1) {
+		DebugPrintf("Usage: var32 <var offset> (<value>)\n");
+		return true;
+	}
+
+	uint32 varNum = atoi(argv[1]);
+
+	if ((varNum + 3) >= _vm->_inter->_variables->getSize()) {
+		DebugPrintf("Variable offset out of range\n");
+		return true;
+	}
+
+	if (argc > 2) {
+		uint32 varVal = atoi(argv[2]);
+		_vm->_inter->_variables->writeOff32(varNum, varVal);
+	}
+
+	DebugPrintf("var8_%d = %d\n", varNum, _vm->_inter->_variables->readOff32(varNum));
+
+	return true;
+}
+
+bool GobConsole::cmd_varString(int argc, const char **argv) {
+	if (argc == 1) {
+		DebugPrintf("Usage: varString <var offset> (<value>)\n");
+		return true;
+	}
+
+	uint32 varNum = atoi(argv[1]);
+
+	if (varNum >= _vm->_inter->_variables->getSize()) {
+		DebugPrintf("Variable offset out of range\n");
+		return true;
+	}
+
+	if (argc > 2) {
+		uint32 maxLength = _vm->_inter->_variables->getSize() - varNum;
+
+		Common::strlcpy(_vm->_inter->_variables->getAddressOffString(varNum), argv[2], maxLength);
+	}
+
+	DebugPrintf("varString_%d = \"%s\"\n", varNum, _vm->_inter->_variables->getAddressOffString(varNum));
+
+	return true;
+}
+
 } // End of namespace Gob

Modified: scummvm/trunk/engines/gob/console.h
===================================================================
--- scummvm/trunk/engines/gob/console.h	2010-10-16 17:06:10 UTC (rev 53543)
+++ scummvm/trunk/engines/gob/console.h	2010-10-16 17:25:08 UTC (rev 53544)
@@ -44,7 +44,11 @@
 private:
 	GobEngine *_vm;
 
-	bool Cmd_Var(int argc, const char **argv);
+	bool cmd_varSize(int argc, const char **argv);
+	bool cmd_var8(int argc, const char **argv);
+	bool cmd_var16(int argc, const char **argv);
+	bool cmd_var32(int argc, const char **argv);
+	bool cmd_varString(int argc, const char **argv);
 };
 
 } // End of namespace Mohawk


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