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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Fri Jun 5 21:04:14 CEST 2009


Revision: 41198
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41198&view=rev
Author:   thebluegr
Date:     2009-06-05 19:04:14 +0000 (Fri, 05 Jun 2009)

Log Message:
-----------
Moved some more debug commands to ScummVM's coneole and removed some unused code

Modified Paths:
--------------
    scummvm/trunk/engines/sci/console.cpp
    scummvm/trunk/engines/sci/console.h
    scummvm/trunk/engines/sci/engine/kfile.cpp
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp
    scummvm/trunk/engines/sci/engine/vm.cpp
    scummvm/trunk/engines/sci/engine/vm.h
    scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp
    scummvm/trunk/engines/sci/gfx/gfx_widgets.h

Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/console.cpp	2009-06-05 19:04:14 UTC (rev 41198)
@@ -63,6 +63,7 @@
 	DVar_Register("simulated_key",		&g_debug_simulated_key, DVAR_INT, 0);
 	DVar_Register("track_mouse_clicks",	&g_debug_track_mouse_clicks, DVAR_BOOL, 0);
 	DVar_Register("weak_validations",	&g_debug_weak_validations, DVAR_BOOL, 0);
+	DVar_Register("script_abort_flag",	&script_abort_flag, DVAR_INT, 0);
 
 	// General
 	DCmd_Register("help",				WRAP_METHOD(Console, cmdHelp));
@@ -115,6 +116,9 @@
 	DCmd_Register("dynamic_views",		WRAP_METHOD(Console, cmdDynamicViews));
 	DCmd_Register("dropped_views",		WRAP_METHOD(Console, cmdDroppedViews));
 	DCmd_Register("status_bar",			WRAP_METHOD(Console, cmdStatusBarColors));
+#ifdef GFXW_DEBUG_WIDGETS
+	DCmd_Register("print_widget",		WRAP_METHOD(Console, cmdPrintWidget));
+#endif
 	// Segments
 	DCmd_Register("segment_table",		WRAP_METHOD(Console, cmdPrintSegmentTable));
 	DCmd_Register("segment_info",		WRAP_METHOD(Console, cmdSegmentInfo));
@@ -182,6 +186,14 @@
 	_vm->_mixer->pauseAll(false);
 }
 
+
+#if 0
+// Unused
+#define LOOKUP_SPECIES(species) (\
+	(species >= 1000) ? species : *(s->_classtable[species].scriptposp) \
+		+ s->_classtable[species].class_offset)
+#endif
+
 bool Console::cmdHelp(int argc, const char **argv) {
 	DebugPrintf("\n");
 	DebugPrintf("Variables\n");
@@ -191,6 +203,7 @@
 	DebugPrintf("simulated_key: Add a key with the specified scan code to the event list\n");
 	DebugPrintf("track_mouse_clicks: Toggles mouse click tracking to the console\n");
 	DebugPrintf("weak_validations: Turns some validation errors into warnings\n");
+	DebugPrintf("script_abort_flag: Set to 1 to abort script execution. Set to 2 to force a replay afterwards\n");
 	DebugPrintf("\n");
 	DebugPrintf("Commands\n");
 	DebugPrintf("--------\n");
@@ -248,6 +261,9 @@
 	DebugPrintf(" dynamic_views - Lists active dynamic views\n");
 	DebugPrintf(" dropped_views - Lists dropped dynamic views\n");
 	DebugPrintf(" status_bar - Sets the colors of the status bar\n");
+#ifdef GFXW_DEBUG_WIDGETS
+	DebugPrintf(" print_widget - Shows active widgets (no params) or information on the specified widget indices\n");
+#endif
 	DebugPrintf("\n");
 	DebugPrintf("Segments:\n");
 	DebugPrintf(" segment_table - Lists all segments\n");
@@ -667,7 +683,7 @@
 	if (newstate) {
 		g_EngineState->successor = newstate; // Set successor
 
-		script_abort_flag = SCRIPT_ABORT_WITH_REPLAY; // Abort current game
+		script_abort_flag = 2; // Abort current game with replay
 		g_debugstate_valid = 0;
 
 		shrink_execution_stack(g_EngineState, g_EngineState->execution_stack_base + 1);
@@ -2678,4 +2694,225 @@
 	return 0;
 }
 
+#define GETRECT(ll, rr, tt, bb) \
+	ll = GET_SELECTOR(pos, ll); \
+	rr = GET_SELECTOR(pos, rr); \
+	tt = GET_SELECTOR(pos, tt); \
+	bb = GET_SELECTOR(pos, bb);
+
+#if 0
+// TODO Re-implement this
+static void viewobjinfo(EngineState *s, HeapPtr pos) {
+	char *signals[16] = {
+		"stop_update",
+		"updated",
+		"no_update",
+		"hidden",
+		"fixed_priority",
+		"always_update",
+		"force_update",
+		"remove",
+		"frozen",
+		"is_extra",
+		"hit_obstacle",
+		"doesnt_turn",
+		"no_cycler",
+		"ignore_horizon",
+		"ignore_actor",
+		"dispose!"
+	};
+
+	int x, y, z, priority;
+	int cel, loop, view, signal;
+	int nsLeft, nsRight, nsBottom, nsTop;
+	int lsLeft, lsRight, lsBottom, lsTop;
+	int brLeft, brRight, brBottom, brTop;
+	int i;
+	int have_rects = 0;
+	Common::Rect nsrect, nsrect_clipped, brrect;
+
+	if (lookup_selector(s, pos, s->_kernel->_selectorMap.nsBottom, NULL) == kSelectorVariable) {
+		GETRECT(nsLeft, nsRight, nsBottom, nsTop);
+		GETRECT(lsLeft, lsRight, lsBottom, lsTop);
+		GETRECT(brLeft, brRight, brBottom, brTop);
+		have_rects = 1;
+	}
+
+	GETRECT(view, loop, signal, cel);
+
+	sciprintf("\n-- View information:\ncel %d/%d/%d at ", view, loop, cel);
+
+	x = GET_SELECTOR(pos, x);
+	y = GET_SELECTOR(pos, y);
+	priority = GET_SELECTOR(pos, priority);
+	if (s->_kernel->_selectorMap.z > 0) {
+		z = GET_SELECTOR(pos, z);
+		sciprintf("(%d,%d,%d)\n", x, y, z);
+	} else
+		sciprintf("(%d,%d)\n", x, y);
+
+	if (priority == -1)
+		sciprintf("No priority.\n\n");
+	else
+		sciprintf("Priority = %d (band starts at %d)\n\n", priority, PRIORITY_BAND_FIRST(priority));
+
+	if (have_rects) {
+		sciprintf("nsRect: [%d..%d]x[%d..%d]\n", nsLeft, nsRight, nsTop, nsBottom);
+		sciprintf("lsRect: [%d..%d]x[%d..%d]\n", lsLeft, lsRight, lsTop, lsBottom);
+		sciprintf("brRect: [%d..%d]x[%d..%d]\n", brLeft, brRight, brTop, brBottom);
+	}
+
+	nsrect = get_nsrect(s, pos, 0);
+	nsrect_clipped = get_nsrect(s, pos, 1);
+	brrect = set_base(s, pos);
+	sciprintf("new nsRect: [%d..%d]x[%d..%d]\n", nsrect.x, nsrect.xend, nsrect.y, nsrect.yend);
+	sciprintf("new clipped nsRect: [%d..%d]x[%d..%d]\n", nsrect_clipped.x, nsrect_clipped.xend, nsrect_clipped.y, nsrect_clipped.yend);
+	sciprintf("new brRect: [%d..%d]x[%d..%d]\n", brrect.x, brrect.xend, brrect.y, brrect.yend);
+	sciprintf("\n signals = %04x:\n", signal);
+
+	for (i = 0; i < 16; i++)
+		if (signal & (1 << i))
+			sciprintf("  %04x: %s\n", 1 << i, signals[i]);
+}
+#endif
+#undef GETRECT
+
+#define GETRECT(ll, rr, tt, bb) \
+	ll = GET_SELECTOR(pos, ll); \
+	rr = GET_SELECTOR(pos, rr); \
+	tt = GET_SELECTOR(pos, tt); \
+	bb = GET_SELECTOR(pos, bb);
+
+#if 0
+// Draws the nsRect and brRect of a dynview object. nsRect is green, brRect is blue.
+// TODO: Re-implement this
+static int c_gfx_draw_viewobj(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
+	HeapPtr pos = (HeapPtr)(cmdParams[0].val);
+	int is_view;
+	int x, y, priority;
+	int nsLeft, nsRight, nsBottom, nsTop;
+	int brLeft, brRight, brBottom, brTop;
+
+	if (!s) {
+		sciprintf("Not in debug state!\n");
+		return 1;
+	}
+
+	if ((pos < 4) || (pos > 0xfff0)) {
+		sciprintf("Invalid address.\n");
+		return 1;
+	}
+
+	if (((int16)READ_LE_UINT16(s->heap + pos + SCRIPT_OBJECT_MAGIC_OFFSET)) != SCRIPT_OBJECT_MAGIC_NUMBER) {
+		sciprintf("Not an object.\n");
+		return 0;
+	}
+
+
+	is_view = (lookup_selector(s, pos, s->_kernel->_selectorMap.x, NULL) == kSelectorVariable) &&
+	    (lookup_selector(s, pos, s->_kernel->_selectorMap.brLeft, NULL) == kSelectorVariable) &&
+	    (lookup_selector(s, pos, s->_kernel->_selectorMap.signal, NULL) == kSelectorVariable) &&
+	    (lookup_selector(s, pos, s->_kernel->_selectorMap.nsTop, NULL) == kSelectorVariable);
+
+	if (!is_view) {
+		sciprintf("Not a dynamic View object.\n");
+		return 0;
+	}
+
+	x = GET_SELECTOR(pos, x);
+	y = GET_SELECTOR(pos, y);
+	priority = GET_SELECTOR(pos, priority);
+	GETRECT(brLeft, brRight, brBottom, brTop);
+	GETRECT(nsLeft, nsRight, nsBottom, nsTop);
+	gfxop_set_clip_zone(s->gfx_state, gfx_rect_fullscreen);
+
+	brTop += 10;
+	brBottom += 10;
+	nsTop += 10;
+	nsBottom += 10;
+
+	gfxop_fill_box(s->gfx_state, gfx_rect(nsLeft, nsTop, nsRight - nsLeft + 1, nsBottom - nsTop + 1), s->ega_colors[2]);
+	gfxop_fill_box(s->gfx_state, gfx_rect(brLeft, brTop, brRight - brLeft + 1, brBottom - brTop + 1), s->ega_colors[1]);
+	gfxop_fill_box(s->gfx_state, gfx_rect(x - 1, y - 1, 3, 3), s->ega_colors[0]);
+	gfxop_fill_box(s->gfx_state, gfx_rect(x - 1, y, 3, 1), s->ega_colors[priority]);
+	gfxop_fill_box(s->gfx_state, gfx_rect(x, y - 1, 1, 3), s->ega_colors[priority]);
+	gfxop_update(s->gfx_state);
+
+	return 0;
+}
+#endif
+#undef GETRECT
+
+#if 0
+// Executes one operation skipping over sends
+// TODO Re-implement this
+int c_stepover(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
+	int opcode, opnumber;
+
+	if (!g_debugstate_valid) {
+		sciprintf("Not in debug state\n");
+		return 1;
+	}
+
+	g_debugstate_valid = 0;
+	opcode = s->_heap[*p_pc];
+	opnumber = opcode >> 1;
+	if (opnumber == 0x22 /* callb */ || opnumber == 0x23 /* calle */ ||
+	        opnumber == 0x25 /* send */ || opnumber == 0x2a /* self */ || opnumber == 0x2b /* super */) {
+		g_debug_seeking = _DEBUG_SEEK_SO;
+		s_debug_seek_level = s->_executionStack.size()-1;
+		// Store in s_debug_seek_special the offset of the next command after send
+		switch (opcode) {
+		case 0x46: // calle W
+			s_debug_seek_special = *p_pc + 5;
+			break;
+
+		case 0x44: // callb W
+		case 0x47: // calle B
+		case 0x56: // super W
+			s_debug_seek_special = *p_pc + 4;
+			break;
+
+		case 0x45: // callb B
+		case 0x57: // super B
+		case 0x4A: // send W
+		case 0x54: // self W
+			s_debug_seek_special = *p_pc + 3;
+			break;
+
+		default:
+			s_debug_seek_special = *p_pc + 2;
+		}
+	}
+
+	return 0;
+}
+#endif
+
+#ifdef GFXW_DEBUG_WIDGETS
+extern GfxWidget *debug_widgets[];
+extern int debug_widget_pos;
+
+// If called with no parameters, it shows which widgets are active
+// With parameters, it lists the widget corresponding to the numerical index specified (for each parameter).
+bool Console::cmdPrintWidget(int argc, const char **argv) {
+	if (argc > 1) {
+		for (int i = 0; i < argc; i++) {
+			int widget_nr = atoi(argv[1]);
+
+			DebugPrintf("===== Widget #%d:\n", widget_nr);
+			debug_widgets[widget_nr]->print(0);
+		}
+	} else if (debug_widget_pos > 1) {
+		DebugPrintf("Widgets 0-%d are active\n", debug_widget_pos - 1);
+	} else if (debug_widget_pos == 1) {
+		DebugPrintf("Widget 0 is active\n");
+	} else {
+		DebugPrintf("No widgets are active\n");
+	}
+
+	return true;
+}
+#endif
+
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/console.h
===================================================================
--- scummvm/trunk/engines/sci/console.h	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/console.h	2009-06-05 19:04:14 UTC (rev 41198)
@@ -98,6 +98,7 @@
 	bool cmdDynamicViews(int argc, const char **argv);
 	bool cmdDroppedViews(int argc, const char **argv);
 	bool cmdStatusBarColors(int argc, const char **argv);
+	bool cmdPrintWidget(int argc, const char **argv);
 	// Segments
 	bool cmdPrintSegmentTable(int argc, const char **argv);
 	bool cmdSegmentInfo(int argc, const char **argv);

Modified: scummvm/trunk/engines/sci/engine/kfile.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kfile.cpp	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/engine/kfile.cpp	2009-06-05 19:04:14 UTC (rev 41198)
@@ -654,7 +654,7 @@
 
 			if (newstate) {
 				s->successor = newstate;
-				script_abort_flag = SCRIPT_ABORT_WITH_REPLAY; // Abort current game
+				script_abort_flag = 2; // Abort current game with replay
 				shrink_execution_stack(s, s->execution_stack_base + 1);
 			} else {
 				s->r_acc = make_reg(0, 1);

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-06-05 19:04:14 UTC (rev 41198)
@@ -53,7 +53,6 @@
 int g_debug_seeking = 0; // Stepping forward until some special condition is met
 static int s_debug_seek_level = 0; // Used for seekers that want to check their exec stack depth
 static int s_debug_seek_special = 0;  // Used for special seeks(1)
-static reg_t s_debug_seek_reg = NULL_REG;  // Used for special seeks(2)
 
 #define _DEBUG_SEEK_NOTHING 0
 #define _DEBUG_SEEK_CALLK 1 // Step forward until callk is found
@@ -92,35 +91,12 @@
 	const char *param;
 };
 
-#if 0
-// Unused
-#define LOOKUP_SPECIES(species) (\
-	(species >= 1000) ? species : *(s->_classtable[species].scriptposp) \
-		+ s->_classtable[species].class_offset)
-#endif
-
 // Dummy function, so that it compiles
 int con_hook_command(ConCommand command, const char *name, const char *param, const char *description) {
 
 	return 0;
 }
 
-static const char *_debug_get_input() {
-	char newinpbuf[256];
-
-	printf("> ");
-	if (!fgets(newinpbuf, 254, stdin))
-		return NULL;
-
-	size_t l = strlen(newinpbuf);
-	if (l > 0 && newinpbuf[0] != '\n') {
-		if (newinpbuf[l-1] == '\n') newinpbuf[l-1] = 0;
-		memcpy(inputbuf, newinpbuf, 256);
-	}
-
-	return inputbuf;
-}
-
 int c_step(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
 	g_debugstate_valid = 0;
 	if (cmdParams.size() && (cmdParams[0].val > 0))
@@ -129,51 +105,6 @@
 	return 0;
 }
 
-#if 0
-// TODO Re-implement con:so
-int c_stepover(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
-	int opcode, opnumber;
-
-	if (!g_debugstate_valid) {
-		sciprintf("Not in debug state\n");
-		return 1;
-	}
-
-	g_debugstate_valid = 0;
-	opcode = s->_heap[*p_pc];
-	opnumber = opcode >> 1;
-	if (opnumber == 0x22 /* callb */ || opnumber == 0x23 /* calle */ ||
-	        opnumber == 0x25 /* send */ || opnumber == 0x2a /* self */ || opnumber == 0x2b /* super */) {
-		g_debug_seeking = _DEBUG_SEEK_SO;
-		s_debug_seek_level = s->_executionStack.size()-1;
-		// Store in s_debug_seek_special the offset of the next command after send
-		switch (opcode) {
-		case 0x46: // calle W
-			s_debug_seek_special = *p_pc + 5;
-			break;
-
-		case 0x44: // callb W
-		case 0x47: // calle B
-		case 0x56: // super W
-			s_debug_seek_special = *p_pc + 4;
-			break;
-
-		case 0x45: // callb B
-		case 0x57: // super B
-		case 0x4A: // send W
-		case 0x54: // self W
-			s_debug_seek_special = *p_pc + 3;
-			break;
-
-		default:
-			s_debug_seek_special = *p_pc + 2;
-		}
-	}
-
-	return 0;
-}
-#endif
-
 enum {
 	_parse_eoi,
 	_parse_token_pareno,
@@ -536,103 +467,6 @@
 	return retval;
 }
 
-#ifdef GFXW_DEBUG_WIDGETS
-extern GfxWidget *debug_widgets[];
-extern int debug_widget_pos;
-
-static int c_gfx_print_widget(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
-	if (!g_debugstate_valid) {
-		sciprintf("Not in debug state\n");
-		return 1;
-	}
-
-	if (cmdParams.size()) {
-		unsigned int i;
-		for (i = 0; i < cmdParams.size() ; i++) {
-			int widget_nr = cmdParams[i].val;
-
-			sciprintf("===== Widget #%d:\n", widget_nr);
-			debug_widgets[widget_nr]->print(0);
-		}
-
-	} else if (debug_widget_pos > 1)
-		sciprintf("Widgets 0-%d are active\n", debug_widget_pos - 1);
-	else if (debug_widget_pos == 1)
-		sciprintf("Widget 0 is active\n");
-	else
-		sciprintf("No widgets are active\n");
-
-	return 0;
-}
-#endif
-
-#define GETRECT(ll, rr, tt, bb) \
-	ll = GET_SELECTOR(pos, ll); \
-	rr = GET_SELECTOR(pos, rr); \
-	tt = GET_SELECTOR(pos, tt); \
-	bb = GET_SELECTOR(pos, bb);
-
-#if 0
-// Unreferenced - removed
-static int c_gfx_draw_viewobj(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
-// TODO: Re-implement gfx_draw_viewobj
-#if 0
-	HeapPtr pos = (HeapPtr)(cmdParams[0].val);
-	int is_view;
-	int x, y, priority;
-	int nsLeft, nsRight, nsBottom, nsTop;
-	int brLeft, brRight, brBottom, brTop;
-
-	if (!s) {
-		sciprintf("Not in debug state!\n");
-		return 1;
-	}
-
-	if ((pos < 4) || (pos > 0xfff0)) {
-		sciprintf("Invalid address.\n");
-		return 1;
-	}
-
-	if (((int16)READ_LE_UINT16(s->heap + pos + SCRIPT_OBJECT_MAGIC_OFFSET)) != SCRIPT_OBJECT_MAGIC_NUMBER) {
-		sciprintf("Not an object.\n");
-		return 0;
-	}
-
-
-	is_view = (lookup_selector(s, pos, s->_kernel->_selectorMap.x, NULL) == kSelectorVariable) &&
-	    (lookup_selector(s, pos, s->_kernel->_selectorMap.brLeft, NULL) == kSelectorVariable) &&
-	    (lookup_selector(s, pos, s->_kernel->_selectorMap.signal, NULL) == kSelectorVariable) &&
-	    (lookup_selector(s, pos, s->_kernel->_selectorMap.nsTop, NULL) == kSelectorVariable);
-
-	if (!is_view) {
-		sciprintf("Not a dynamic View object.\n");
-		return 0;
-	}
-
-	x = GET_SELECTOR(pos, x);
-	y = GET_SELECTOR(pos, y);
-	priority = GET_SELECTOR(pos, priority);
-	GETRECT(brLeft, brRight, brBottom, brTop);
-	GETRECT(nsLeft, nsRight, nsBottom, nsTop);
-	gfxop_set_clip_zone(s->gfx_state, gfx_rect_fullscreen);
-
-	brTop += 10;
-	brBottom += 10;
-	nsTop += 10;
-	nsBottom += 10;
-
-	gfxop_fill_box(s->gfx_state, gfx_rect(nsLeft, nsTop, nsRight - nsLeft + 1, nsBottom - nsTop + 1), s->ega_colors[2]);
-	gfxop_fill_box(s->gfx_state, gfx_rect(brLeft, brTop, brRight - brLeft + 1, brBottom - brTop + 1), s->ega_colors[1]);
-	gfxop_fill_box(s->gfx_state, gfx_rect(x - 1, y - 1, 3, 3), s->ega_colors[0]);
-	gfxop_fill_box(s->gfx_state, gfx_rect(x - 1, y, 3, 1), s->ega_colors[priority]);
-	gfxop_fill_box(s->gfx_state, gfx_rect(x, y - 1, 1, 3), s->ega_colors[priority]);
-	gfxop_update(s->gfx_state);
-
-	return 0;
-#endif
-}
-#endif
-
 static int c_disasm_addr(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
 	reg_t vpc = cmdParams[0].reg;
 	int op_count = 1;
@@ -811,92 +645,6 @@
 	return 0;
 }
 
-
-#define GETRECT(ll, rr, tt, bb) \
-	ll = GET_SELECTOR(pos, ll); \
-	rr = GET_SELECTOR(pos, rr); \
-	tt = GET_SELECTOR(pos, tt); \
-	bb = GET_SELECTOR(pos, bb);
-
-#if 0
-#ifdef __GNUC__
-#warning "Re-implement viewobjinfo"
-#endif
-static void viewobjinfo(EngineState *s, HeapPtr pos) {
-	char *signals[16] = {
-		"stop_update",
-		"updated",
-		"no_update",
-		"hidden",
-		"fixed_priority",
-		"always_update",
-		"force_update",
-		"remove",
-		"frozen",
-		"is_extra",
-		"hit_obstacle",
-		"doesnt_turn",
-		"no_cycler",
-		"ignore_horizon",
-		"ignore_actor",
-		"dispose!"
-	};
-
-	int x, y, z, priority;
-	int cel, loop, view, signal;
-	int nsLeft, nsRight, nsBottom, nsTop;
-	int lsLeft, lsRight, lsBottom, lsTop;
-	int brLeft, brRight, brBottom, brTop;
-	int i;
-	int have_rects = 0;
-	Common::Rect nsrect, nsrect_clipped, brrect;
-
-	if (lookup_selector(s, pos, s->_kernel->_selectorMap.nsBottom, NULL) == kSelectorVariable) {
-		GETRECT(nsLeft, nsRight, nsBottom, nsTop);
-		GETRECT(lsLeft, lsRight, lsBottom, lsTop);
-		GETRECT(brLeft, brRight, brBottom, brTop);
-		have_rects = 1;
-	}
-
-	GETRECT(view, loop, signal, cel);
-
-	sciprintf("\n-- View information:\ncel %d/%d/%d at ", view, loop, cel);
-
-	x = GET_SELECTOR(pos, x);
-	y = GET_SELECTOR(pos, y);
-	priority = GET_SELECTOR(pos, priority);
-	if (s->_kernel->_selectorMap.z > 0) {
-		z = GET_SELECTOR(pos, z);
-		sciprintf("(%d,%d,%d)\n", x, y, z);
-	} else
-		sciprintf("(%d,%d)\n", x, y);
-
-	if (priority == -1)
-		sciprintf("No priority.\n\n");
-	else
-		sciprintf("Priority = %d (band starts at %d)\n\n", priority, PRIORITY_BAND_FIRST(priority));
-
-	if (have_rects) {
-		sciprintf("nsRect: [%d..%d]x[%d..%d]\n", nsLeft, nsRight, nsTop, nsBottom);
-		sciprintf("lsRect: [%d..%d]x[%d..%d]\n", lsLeft, lsRight, lsTop, lsBottom);
-		sciprintf("brRect: [%d..%d]x[%d..%d]\n", brLeft, brRight, brTop, brBottom);
-	}
-
-	nsrect = get_nsrect(s, pos, 0);
-	nsrect_clipped = get_nsrect(s, pos, 1);
-	brrect = set_base(s, pos);
-	sciprintf("new nsRect: [%d..%d]x[%d..%d]\n", nsrect.x, nsrect.xend, nsrect.y, nsrect.yend);
-	sciprintf("new clipped nsRect: [%d..%d]x[%d..%d]\n", nsrect_clipped.x, nsrect_clipped.xend, nsrect_clipped.y, nsrect_clipped.yend);
-	sciprintf("new brRect: [%d..%d]x[%d..%d]\n", brrect.x, brrect.xend, brrect.y, brrect.yend);
-	sciprintf("\n signals = %04x:\n", signal);
-
-	for (i = 0; i < 16; i++)
-		if (signal & (1 << i))
-			sciprintf("  %04x: %s\n", 1 << i, signals[i]);
-}
-#endif
-#undef GETRECT
-
 // Breakpoint commands
 
 int c_se(EngineState *s, const Common::Array<cmd_param_t> &cmdParams) {
@@ -959,13 +707,7 @@
 				break;
 			}
 
-			case _DEBUG_SEEK_SO:
-				if ((*pc != s_debug_seek_reg) || (int)s->_executionStack.size()-1 != s_debug_seek_level)
-					return;
-				break;
-
 			case _DEBUG_SEEK_GLOBAL:
-
 				if (op < op_sag)
 					return;
 				if ((op & 0x3) > 1)
@@ -1004,10 +746,6 @@
 
 			con_hook_command(c_step, "s", "i*", "Executes one or several operations\n\nEXAMPLES\n\n"
 			                 "    s 4\n\n  Execute 4 commands\n\n    s\n\n  Execute next command");
-#if 0
-			// TODO Re-implement con:so
-			con_hook_command(c_stepover, "so", "", "Executes one operation skipping over sends");
-#endif
 			con_hook_command(c_disasm_addr, "disasm-addr", "!as*", "Disassembles one or more commands\n\n"
 			                 "USAGE\n\n  disasm-addr [startaddr] <options>\n\n"
 			                 "  Valid options are:\n"
@@ -1023,50 +761,15 @@
 			con_hook_command(c_go, "go", "", "Executes the script.\n");
 			con_hook_command(c_set_parse_nodes, "set_parse_nodes", "s*", "Sets the contents of all parse nodes.\n"
 			                 "  Input token must be separated by\n  blanks.");
-
-#ifdef GFXW_DEBUG_WIDGETS
-			con_hook_command(c_gfx_print_widget, "gfx_print_widget", "i*", "If called with no parameters, it\n  shows which widgets are active.\n"
-			                 "  With parameters, it lists the\n  widget corresponding to the\n  numerical index specified (for\n  each parameter).");
-#endif
-
-#if 0
-			// TODO: Re-enable con:draw_viewobj
-			con_hook_command(c_gfx_draw_viewobj, "draw_viewobj", "i", "Draws the nsRect and brRect of a\n  dynview object.\n\n  nsRect is green, brRect\n"
-			                 "  is blue.\n");
-#endif
 			con_hook_command(c_sg, "sg", "!i",
 			                 "Steps until the global variable with the\n"
 			                 "specified index is modified.\n\nSEE ALSO\n\n"
 			                 "  s.1, snk.1, so.1, bpx.1");
-/*
-			con_hook_int(&script_abort_flag, "script_abort_flag", "Set != 0 to abort execution\n");
-*/
 		} // If commands were not hooked up
 	}
 
 	if (g_debug_step_running)
 		g_debug_step_running--;
-
-	while (g_debugstate_valid) {
-		int skipfirst = 0;
-		const char *commandstring;
-
-		// Suspend music playing
-		s->_sound.sfx_suspend(true);
-
-		commandstring = _debug_get_input();
-
-		// Check if a specific destination has been given
-		if (commandstring && (commandstring[0] == '.' || commandstring[0] == ':'))
-			skipfirst = 1;
-
-		//if (commandstring && commandstring[0] != ':')
-		//	con_parse(s, commandstring + skipfirst);
-		sciprintf("\n");
-
-		// Resume music playing
-		s->_sound.sfx_suspend(false);
-	}
 }
 
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2009-06-05 19:04:14 UTC (rev 41198)
@@ -46,7 +46,7 @@
 #undef STRICT_READ // Disallows reading from out-of-bounds parameters and locals
 
 
-int script_abort_flag = 0; // Set to 1 to abort execution	// FIXME: Avoid non-const global vars
+int script_abort_flag = 0; // Set to 1 to abort execution. Set to 2 to force a replay afterwards	// FIXME: Avoid non-const global vars
 int script_step_counter = 0; // Counts the number of steps executed	// FIXME: Avoid non-const global vars
 int script_gc_interval = GC_INTERVAL; // Number of steps in between gcs	// FIXME: Avoid non-const global vars
 
@@ -1978,7 +1978,7 @@
 				s = successor;
 				g_EngineState = s;
 
-				if (script_abort_flag == SCRIPT_ABORT_WITH_REPLAY) {
+				if (script_abort_flag == 2) {
 					sciprintf("Restarting with replay()\n");
 					s->_executionStack.clear(); // Restart with replay
 

Modified: scummvm/trunk/engines/sci/engine/vm.h
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.h	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/engine/vm.h	2009-06-05 19:04:14 UTC (rev 41198)
@@ -272,12 +272,10 @@
 	Breakpoint *next;
 };
 
-#define SCRIPT_ABORT_WITH_REPLAY 1025
-
 /**
  * Set this to 1 to abort script execution immediately. Aborting will leave the
  * debug exec stack intact.
- * Set it to SCRIPT_ABORT_WITH_REPLAY to force a replay afterwards.
+ * Set it to 2 to force a replay afterwards.
  */
 extern int script_abort_flag;
 

Modified: scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp	2009-06-05 19:04:14 UTC (rev 41198)
@@ -49,10 +49,8 @@
 int debug_widget_pos = 0;
 
 static void _gfxw_debug_add_widget(GfxWidget *widget) {
-	if (debug_widget_pos == GFXW_DEBUG_WIDGETS) {
-		GFXERROR("WIDGET DEBUG: Allocated the maximum number of %d widgets- Aborting!\n", GFXW_DEBUG_WIDGETS);
-		BREAKPOINT();
-	}
+	if (debug_widget_pos == GFXW_DEBUG_WIDGETS)
+		error("WIDGET DEBUG: Allocated the maximum number of %d widgets- Aborting!\n", GFXW_DEBUG_WIDGETS);
 	debug_widgets[debug_widget_pos++] = widget;
 }
 
@@ -68,13 +66,11 @@
 	}
 
 	if (found > 1) {
-		GFXERROR("While removing widget: Found it %d times!\n", found);
-		BREAKPOINT();
+		error("While removing widget: Found it %d times!\n", found);
 	}
 
 	if (found == 0) {
-		GFXERROR("Attempted removal of unregistered widget!\n");
-		BREAKPOINT();
+		error("Attempted removal of unregistered widget!\n");
 	}
 }
 #else // !GFXW_DEBUG_WIDGETS

Modified: scummvm/trunk/engines/sci/gfx/gfx_widgets.h
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_widgets.h	2009-06-05 18:05:45 UTC (rev 41197)
+++ scummvm/trunk/engines/sci/gfx/gfx_widgets.h	2009-06-05 19:04:14 UTC (rev 41198)
@@ -51,7 +51,7 @@
 
 /* Enable the next line to keep a list of pointers to all widgets, with up to the specified amount
 ** of members (/SLOW/) */
-/* #define GFXW_DEBUG_WIDGETS 2048 */
+//#define GFXW_DEBUG_WIDGETS 2048
 
 /* Our strategy for dirty rectangle management */
 #define GFXW_DIRTY_STRATEGY GFXOP_DIRTY_FRAMES_CLUSTERS


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