[Scummvm-cvs-logs] SF.net SVN: scummvm:[50212] scummvm/trunk/engines/sci/engine/vm.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Thu Jun 24 14:25:48 CEST 2010


Revision: 50212
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50212&view=rev
Author:   m_kiewitz
Date:     2010-06-24 12:25:47 +0000 (Thu, 24 Jun 2010)

Log Message:
-----------
SCI: added objectname and method name printed out when uninitialized temps are read

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

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-24 11:54:33 UTC (rev 50211)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-24 12:25:47 UTC (rev 50212)
@@ -190,17 +190,32 @@
 			//  We need to find correct replacements for each situation manually
 			// FIXME: this should use a table which contains workarounds for gameId, scriptnumber and temp index and
 			//         a replacement value
-			Script *local_script = g_sci->getEngineState()->_segMan->getScriptIfLoaded(g_sci->getEngineState()->xs->local_segment);
+			EngineState *engine = g_sci->getEngineState();
+			Script *local_script = engine->_segMan->getScriptIfLoaded(engine->xs->local_segment);
 			int currentScriptNr = local_script->_nr;
-			warning("uninitialized read for temp %d, script %d", index, currentScriptNr);
+
+			Common::List<ExecStack>::iterator callIterator = engine->_executionStack.begin();
+			ExecStack call = *callIterator;
+			while (callIterator != engine->_executionStack.end()) {
+				call = *callIterator;
+				callIterator++;
+			}
+
+			const char *objName = engine->_segMan->getObjectName(call.sendp);
+			const char *selectorName = "";
+			if (call.type == EXEC_STACK_TYPE_CALL) {
+				selectorName = g_sci->getKernel()->getSelectorName(call.selector).c_str();
+			}
+			warning("uninitialized read for temp %d from method %s::%s (script %d)", index, objName, selectorName, currentScriptNr);
+
 			Common::String gameId = g_sci->getGameId();
 			if ((gameId == "laurabow2") && (currentScriptNr == 24) && (index == 5))
 				return make_reg(0, 0xf); // priority replacement for menu
 			if ((gameId == "freddypharkas") && (currentScriptNr == 24) && (index == 5))
 				return make_reg(0, 0xf); // priority replacement for menu
 			if ((gameId == "islandbrain") && (currentScriptNr == 140) && (index == 3)) {
-				r[index] = make_reg(0, 255);
-				return r[index];
+				//r[index] = make_reg(0, 255);
+				//return r[index];
 			}
 			error("uninitialized read!");
 		}


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