[Scummvm-cvs-logs] SF.net SVN: scummvm: [26501] scummvm/trunk/engines/agos

kirben at users.sourceforge.net kirben at users.sourceforge.net
Sun Apr 15 16:32:59 CEST 2007


Revision: 26501
          http://scummvm.svn.sourceforge.net/scummvm/?rev=26501&view=rev
Author:   kirben
Date:     2007-04-15 07:32:58 -0700 (Sun, 15 Apr 2007)

Log Message:
-----------
Update reporting of invalid script opcodes.

Modified Paths:
--------------
    scummvm/trunk/engines/agos/agos.cpp
    scummvm/trunk/engines/agos/agos.h
    scummvm/trunk/engines/agos/script.cpp
    scummvm/trunk/engines/agos/script_e1.cpp

Modified: scummvm/trunk/engines/agos/agos.cpp
===================================================================
--- scummvm/trunk/engines/agos/agos.cpp	2007-04-15 14:23:23 UTC (rev 26500)
+++ scummvm/trunk/engines/agos/agos.cpp	2007-04-15 14:32:58 UTC (rev 26501)
@@ -112,6 +112,7 @@
 	_keyPressed = 0;
 
 	_gameFile = 0;
+	_opcode = 0;
 
 	_itemMemSize = 0;
 	_tableMemSize = 0;

Modified: scummvm/trunk/engines/agos/agos.h
===================================================================
--- scummvm/trunk/engines/agos/agos.h	2007-04-15 14:23:23 UTC (rev 26500)
+++ scummvm/trunk/engines/agos/agos.h	2007-04-15 14:32:58 UTC (rev 26501)
@@ -141,7 +141,7 @@
 
 public:
 	virtual void setupOpcodes();
-	int _numOpcodes;
+	int _numOpcodes, _opcode;
 
 	typedef void (AGOSEngine::*VgaOpcodeProc) ();
 

Modified: scummvm/trunk/engines/agos/script.cpp
===================================================================
--- scummvm/trunk/engines/agos/script.cpp	2007-04-15 14:23:23 UTC (rev 26500)
+++ scummvm/trunk/engines/agos/script.cpp	2007-04-15 14:32:58 UTC (rev 26501)
@@ -61,8 +61,7 @@
 // -----------------------------------------------------------------------
 
 void AGOSEngine::o_invalid() {
-	// TODO: Better error reporting
-	error("Invalid opcode");
+	error("Invalid opcode %d", _opcode);
 }
 
 void AGOSEngine::o_at() {
@@ -883,7 +882,6 @@
 }
 
 int AGOSEngine::runScript() {
-	int opcode;
 	bool flag;
 
 	do {
@@ -891,12 +889,12 @@
 			dumpOpcode(_codePtr);
 
 		if (getGameType() == GType_ELVIRA1) {
-			opcode = getVarOrWord();
-			if (opcode == 10000)
+			_opcode = getVarOrWord();
+			if (_opcode == 10000)
 				return 0;
 		} else {
-			opcode = getByte();
-			if (opcode == 0xFF)
+			_opcode = getByte();
+			if (_opcode == 0xFF)
 				return 0;
 		}
 
@@ -906,17 +904,17 @@
 		/* Invert condition? */
 		flag = false;
 		if (getGameType() == GType_ELVIRA1) {
-			if (opcode == 203) {
+			if (_opcode == 203) {
 				flag = true;
-				opcode = getVarOrWord();
-				if (opcode == 10000)
+				_opcode = getVarOrWord();
+				if (_opcode == 10000)
 					return 0;
 			}
 		} else {
-			if (opcode == 0) {
+			if (_opcode == 0) {
 				flag = true;
-				opcode = getByte();
-				if (opcode == 0xFF)
+				_opcode = getByte();
+				if (_opcode == 0xFF)
 					return 0;
 			}
 		}
@@ -924,10 +922,10 @@
 		setScriptCondition(true);
 		setScriptReturn(0);
 
-		if (opcode > _numOpcodes)
-			error("Invalid opcode '%d' encountered", opcode);
+		if (_opcode > _numOpcodes)
+			error("Invalid opcode '%d' encountered", _opcode);
 
-		executeOpcode(opcode);
+		executeOpcode(_opcode);
 	} while (getScriptCondition() != flag && !getScriptReturn());
 
 	return getScriptReturn();

Modified: scummvm/trunk/engines/agos/script_e1.cpp
===================================================================
--- scummvm/trunk/engines/agos/script_e1.cpp	2007-04-15 14:23:23 UTC (rev 26500)
+++ scummvm/trunk/engines/agos/script_e1.cpp	2007-04-15 14:32:58 UTC (rev 26501)
@@ -394,8 +394,6 @@
 }
 
 void AGOSEngine_Elvira1::executeOpcode(int opcode) {
-	printf("opcode %d\n", opcode);
-
 	OpcodeProcElvira1 op = _opcodesElvira1[opcode].proc;
 	(this->*op) ();
 }


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