[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