[Scummvm-cvs-logs] SF.net SVN: scummvm:[50395] scummvm/trunk/engines/sci

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sun Jun 27 22:38:41 CEST 2010


Revision: 50395
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50395&view=rev
Author:   m_kiewitz
Date:     2010-06-27 20:38:41 +0000 (Sun, 27 Jun 2010)

Log Message:
-----------
SCI: added additional output to vmvars command

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

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2010-06-27 20:38:05 UTC (rev 50394)
+++ scummvm/trunk/engines/sci/console.cpp	2010-06-27 20:38:41 UTC (rev 50395)
@@ -2054,9 +2054,11 @@
 
 	if (!setValue) {
 		if (varType == 4)
-			DebugPrintf("%s == %04x:%04x\n", varNames[varType], PRINT_REG(*curValue));
+			DebugPrintf("%s == %04x:%04x", varNames[varType], PRINT_REG(*curValue));
 		else
-			DebugPrintf("%s var %d == %04x:%04x\n", varNames[varType], varIndex, PRINT_REG(*curValue));
+			DebugPrintf("%s var %d == %04x:%04x", varNames[varType], varIndex, PRINT_REG(*curValue));
+		printBasicVarInfo(*curValue);
+		DebugPrintf("\n");
 	} else {
 		if (parse_reg_t(s, setValue, curValue, true)) {
 			DebugPrintf("Invalid value/address passed.\n");
@@ -3207,6 +3209,36 @@
 	return 0;
 }
 
+void Console::printBasicVarInfo(reg_t variable) {
+	int segType = g_sci->getKernel()->findRegType(variable);
+	SegManager *segMan = g_sci->getEngineState()->_segMan;
+
+	segType &= KSIG_ARITHMETIC | KSIG_OBJECT | KSIG_REF | KSIG_NODE | KSIG_LIST;
+
+	switch (segType) {
+	case KSIG_ARITHMETIC: {
+		uint16 content = variable.toUint16();
+		if (content >= 10)
+			DebugPrintf(" (%dd)", content);
+		break;
+	}
+	case KSIG_OBJECT:
+		DebugPrintf(" (object '%s')", segMan->getObjectName(variable));
+		break;
+	case KSIG_REF:
+		DebugPrintf(" (reference)");
+		break;
+	case KSIG_NODE:
+		DebugPrintf(" (node)");
+		break;
+	case KSIG_LIST:
+		DebugPrintf(" (list)");
+		break;
+	default:
+		DebugPrintf(" (???)");
+	}
+}
+
 void Console::printList(List *list) {
 	reg_t pos = list->first;
 	reg_t my_prev = NULL_REG;

Modified: scummvm/trunk/engines/sci/console.h
===================================================================
--- scummvm/trunk/engines/sci/console.h	2010-06-27 20:38:05 UTC (rev 50394)
+++ scummvm/trunk/engines/sci/console.h	2010-06-27 20:38:41 UTC (rev 50395)
@@ -146,6 +146,8 @@
 	bool cmdViewActiveObject(int argc, const char **argv);
 	bool cmdViewAccumulatorObject(int argc, const char **argv);
 
+	void printBasicVarInfo(reg_t variable);
+
 	bool segmentInfo(int nr);
 	void printList(List *list);
 	int printNode(reg_t addr);


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