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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jul 8 15:08:51 CEST 2009


Revision: 42263
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42263&view=rev
Author:   thebluegr
Date:     2009-07-08 13:08:51 +0000 (Wed, 08 Jul 2009)

Log Message:
-----------
- Moved printObject inside the Console class
- Enabled the parts where disassemble() is called

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

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2009-07-08 10:44:25 UTC (rev 42262)
+++ scummvm/trunk/engines/sci/console.cpp	2009-07-08 13:08:51 UTC (rev 42263)
@@ -1927,7 +1927,7 @@
 			break;
 		case KSIG_OBJECT:
 			DebugPrintf("object\n");
-			printObject(_vm->_gamestate, reg);
+			printObject(reg);
 			break;
 		case KSIG_REF: {
 			int size;
@@ -1982,21 +1982,21 @@
 	}
 
 	DebugPrintf("Information on the object at the given address:\n");
-	printObject(_vm->_gamestate, addr);
+	printObject(addr);
 
 	return true;
 }
 
 bool Console::cmdViewActiveObject(int argc, const char **argv) {
 	DebugPrintf("Information on the currently active object or class:\n");
-	printObject(_vm->_gamestate, scriptState.xs->objp);
+	printObject(scriptState.xs->objp);
 
 	return true;
 }
 
 bool Console::cmdViewAccumulatorObject(int argc, const char **argv) {
 	DebugPrintf("Information on the currently active object or class at the address indexed by the accumulator:\n");
-	printObject(_vm->_gamestate, _vm->_gamestate->r_acc);
+	printObject(_vm->_gamestate->r_acc);
 
 	return true;
 }
@@ -2195,8 +2195,7 @@
 	}
 
 	do {
-		// TODO
-		//addr = disassemble(_vm->_gamestate, addr, 0, 0);
+		addr = disassemble(_vm->_gamestate, addr, 0, 0);
 	} while (addr.offset > 0);
 
 	return true;
@@ -2247,9 +2246,7 @@
 	}
 
 	do {
-		// TODO
-		//vpc = disassemble(_vm->_gamestate, vpc, do_bwc, do_bytes);
-
+		vpc = disassemble(_vm->_gamestate, vpc, do_bwc, do_bytes);
 	} while ((vpc.offset > 0) && (vpc.offset + 6 < size) && (--op_count));
 
 	return true;
@@ -3029,47 +3026,47 @@
 	return 0;
 }
 
-int printObject(EngineState *s, reg_t pos) {
+int Console::printObject(reg_t pos) {
+	EngineState *s = _vm->_gamestate;	// for the several defines in this function
 	Object *obj = obj_get(s, pos);
 	Object *var_container = obj;
 	int i;
-	Console *con = ((SciEngine *)g_engine)->getSciDebugger();
 
 	if (!obj) {
-		con->DebugPrintf("[%04x:%04x]: Not an object.", PRINT_REG(pos));
+		DebugPrintf("[%04x:%04x]: Not an object.", PRINT_REG(pos));
 		return 1;
 	}
 
 	// Object header
-	printf("[%04x:%04x] %s : %3d vars, %3d methods\n", PRINT_REG(pos), obj_get_name(s, pos),
+	DebugPrintf("[%04x:%04x] %s : %3d vars, %3d methods\n", PRINT_REG(pos), obj_get_name(s, pos),
 				obj->_variables.size(), obj->methods_nr);
 
 	if (!(obj->_variables[SCRIPT_INFO_SELECTOR].offset & SCRIPT_INFO_CLASS))
 		var_container = obj_get(s, obj->_variables[SCRIPT_SUPERCLASS_SELECTOR]);
-	printf("  -- member variables:\n");
+	DebugPrintf("  -- member variables:\n");
 	for (i = 0; (uint)i < obj->_variables.size(); i++) {
 		printf("    ");
 		if (i < var_container->variable_names_nr) {
-			printf("[%03x] %s = ", VM_OBJECT_GET_VARSELECTOR(var_container, i), selector_name(s, VM_OBJECT_GET_VARSELECTOR(var_container, i)));
+			DebugPrintf("[%03x] %s = ", VM_OBJECT_GET_VARSELECTOR(var_container, i), selector_name(s, VM_OBJECT_GET_VARSELECTOR(var_container, i)));
 		} else
-			printf("p#%x = ", i);
+			DebugPrintf("p#%x = ", i);
 
 		reg_t val = obj->_variables[i];
-		printf("%04x:%04x", PRINT_REG(val));
+		DebugPrintf("%04x:%04x", PRINT_REG(val));
 
 		Object *ref = obj_get(s, val);
 		if (ref)
-			printf(" (%s)", obj_get_name(s, val));
+			DebugPrintf(" (%s)", obj_get_name(s, val));
 
-		printf("\n");
+		DebugPrintf("\n");
 	}
-	printf("  -- methods:\n");
+	DebugPrintf("  -- methods:\n");
 	for (i = 0; i < obj->methods_nr; i++) {
 		reg_t fptr = VM_OBJECT_READ_FUNCTION(obj, i);
-		printf("    [%03x] %s = %04x:%04x\n", VM_OBJECT_GET_FUNCSELECTOR(obj, i), selector_name(s, VM_OBJECT_GET_FUNCSELECTOR(obj, i)), PRINT_REG(fptr));
+		DebugPrintf("    [%03x] %s = %04x:%04x\n", VM_OBJECT_GET_FUNCSELECTOR(obj, i), selector_name(s, VM_OBJECT_GET_FUNCSELECTOR(obj, i)), PRINT_REG(fptr));
 	}
 	if (s->seg_manager->_heap[pos.segment]->getType() == MEM_OBJ_SCRIPT)
-		printf("\nOwner script:\t%d\n", s->seg_manager->getScript(pos.segment)->nr);
+		DebugPrintf("\nOwner script:\t%d\n", s->seg_manager->getScript(pos.segment)->nr);
 
 	return 0;
 }

Modified: scummvm/trunk/engines/sci/console.h
===================================================================
--- scummvm/trunk/engines/sci/console.h	2009-07-08 10:44:25 UTC (rev 42262)
+++ scummvm/trunk/engines/sci/console.h	2009-07-08 13:08:51 UTC (rev 42263)
@@ -37,7 +37,7 @@
 
 // Refer to the "addresses" command on how to pass address parameters
 int parse_reg_t(EngineState *s, const char *str, reg_t *dest);
-int printObject(EngineState *s, reg_t pos);
+reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecode);
 
 class Console : public GUI::Debugger {
 public:
@@ -46,6 +46,8 @@
 	void preEnter();
 	void postEnter();
 
+	int printObject(reg_t pos);
+
 private:
 	// General
 	bool cmdHelp(int argc, const char **argv);

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2009-07-08 10:44:25 UTC (rev 42262)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2009-07-08 13:08:51 UTC (rev 42263)
@@ -1972,8 +1972,6 @@
 	return s;
 }
 
-int printObject(EngineState *s, reg_t pos);
-
 int game_run(EngineState **_s) {
 	EngineState *s = *_s;
 
@@ -1982,7 +1980,8 @@
 
 	// Now: Register the first element on the execution stack-
 	if (!send_selector(s, s->game_obj, s->game_obj, s->stack_base, 2, s->stack_base)) {
-		printObject(s, s->game_obj);
+		Console *con = ((SciEngine *)g_engine)->getSciDebugger();
+		con->printObject(s->game_obj);
 		warning("Failed to run the game! Aborting...");
 		return 1;
 	}


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