[Scummvm-cvs-logs] SF.net SVN: scummvm: [28603] scummvm/trunk/engines/parallaction
peres001 at users.sourceforge.net
peres001 at users.sourceforge.net
Tue Aug 14 01:58:17 CEST 2007
Revision: 28603
http://scummvm.svn.sourceforge.net/scummvm/?rev=28603&view=rev
Author: peres001
Date: 2007-08-13 16:58:17 -0700 (Mon, 13 Aug 2007)
Log Message:
-----------
Added invalid opcode entries in slot 0 of opcode lists, and adjusted indices to avoid small decrements.
Modified Paths:
--------------
scummvm/trunk/engines/parallaction/animation.cpp
scummvm/trunk/engines/parallaction/commands.cpp
scummvm/trunk/engines/parallaction/parallaction.cpp
scummvm/trunk/engines/parallaction/parallaction.h
Modified: scummvm/trunk/engines/parallaction/animation.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/animation.cpp 2007-08-13 23:49:38 UTC (rev 28602)
+++ scummvm/trunk/engines/parallaction/animation.cpp 2007-08-13 23:58:17 UTC (rev 28603)
@@ -574,6 +574,10 @@
}
+DECLARE_INSTRUCTION_OPCODE(invalid) {
+ error("Can't execute invalid opcode %i", (*_instRunCtxt.inst)->_index);
+}
+
DECLARE_INSTRUCTION_OPCODE(call) {
callFunction((*_instRunCtxt.inst)->_opBase._index, 0);
}
@@ -637,7 +641,7 @@
_vm->_instRunCtxt.modCounter = modCounter;
_vm->_instRunCtxt.suspend = false;
- (_vm->*(_vm->_instructionOpcodes)[(*inst)->_index - 1])();
+ (_vm->*(_vm->_instructionOpcodes)[(*inst)->_index])();
inst = _vm->_instRunCtxt.inst; // handles endloop correctly
Modified: scummvm/trunk/engines/parallaction/commands.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/commands.cpp 2007-08-13 23:49:38 UTC (rev 28602)
+++ scummvm/trunk/engines/parallaction/commands.cpp 2007-08-13 23:58:17 UTC (rev 28603)
@@ -114,9 +114,10 @@
_cmdParseCtxt.nextToken++;
}
+DECLARE_COMMAND_PARSER(Invalid) {
+ error("Can't parse unknown command '%s'", _tokens[0]);
+}
-
-
void Parallaction::parseCommands(Script &script, CommandList& list) {
fillBuffers(script, true);
@@ -130,7 +131,7 @@
_cmdParseCtxt.nextToken = 1;
_cmdParseCtxt.cmd = cmd;
- (this->*_commandParsers[cmd->_id - 1])();
+ (this->*_commandParsers[cmd->_id])();
int _si = _cmdParseCtxt.nextToken;
@@ -194,6 +195,9 @@
}
}
+DECLARE_COMMAND_OPCODE(invalid) {
+ error("Can't execute invalid command '%i'", _cmdRunCtxt.cmd->_id);
+}
DECLARE_COMMAND_OPCODE(set) {
if (_cmdRunCtxt.cmd->u._flags & kFlagsGlobal) {
@@ -345,7 +349,7 @@
_cmdRunCtxt.z = z;
_cmdRunCtxt.cmd = cmd;
- (this->*_commandOpcodes[cmd->_id - 1])();
+ (this->*_commandOpcodes[cmd->_id])();
}
debugC(1, kDebugLocation, "runCommands completed");
Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp 2007-08-13 23:49:38 UTC (rev 28602)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp 2007-08-13 23:58:17 UTC (rev 28603)
@@ -851,7 +851,7 @@
void Parallaction::initOpcodes() {
static const Opcode op0[] = {
- INSTRUCTION_PARSER(defLocal), // unknown opcode -> local definition
+ INSTRUCTION_PARSER(defLocal), // invalid opcode -> local definition
INSTRUCTION_PARSER(animation), // on
INSTRUCTION_PARSER(animation), // off
INSTRUCTION_PARSER(x),
@@ -876,6 +876,7 @@
static const Opcode op1[] = {
+ INSTRUCTION_OPCODE(invalid),
INSTRUCTION_OPCODE(on),
INSTRUCTION_OPCODE(off),
INSTRUCTION_OPCODE(set), // x
@@ -900,6 +901,7 @@
_vm->_instructionOpcodes = op1;
static const Opcode op2[] = {
+ COMMAND_PARSER(Invalid),
COMMAND_PARSER(Flags), // set
COMMAND_PARSER(Flags), // clear
COMMAND_PARSER(Animation), // start
@@ -921,6 +923,7 @@
_commandParsers = op2;
static const Opcode op3[] = {
+ COMMAND_OPCODE(invalid),
COMMAND_OPCODE(set),
COMMAND_OPCODE(clear),
COMMAND_OPCODE(start),
Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h 2007-08-13 23:49:38 UTC (rev 28602)
+++ scummvm/trunk/engines/parallaction/parallaction.h 2007-08-13 23:58:17 UTC (rev 28603)
@@ -336,6 +336,7 @@
int nextToken;
} _cmdParseCtxt;
+ DECLARE_COMMAND_PARSER(Invalid);
DECLARE_COMMAND_PARSER(Flags);
DECLARE_COMMAND_PARSER(Animation);
DECLARE_COMMAND_PARSER(Zone);
@@ -352,6 +353,7 @@
Zone *z;
} _cmdRunCtxt;
+ DECLARE_COMMAND_OPCODE(invalid);
DECLARE_COMMAND_OPCODE(set);
DECLARE_COMMAND_OPCODE(clear);
DECLARE_COMMAND_OPCODE(start);
@@ -377,6 +379,7 @@
LocalVariable *locals;
} _instParseCtxt;
+ DECLARE_INSTRUCTION_PARSER(defLocal);
DECLARE_INSTRUCTION_PARSER(animation);
DECLARE_INSTRUCTION_PARSER(loop);
DECLARE_INSTRUCTION_PARSER(x);
@@ -390,7 +393,6 @@
DECLARE_INSTRUCTION_PARSER(call);
DECLARE_INSTRUCTION_PARSER(sound);
DECLARE_INSTRUCTION_PARSER(null);
- DECLARE_INSTRUCTION_PARSER(defLocal);
const Opcode *_instructionOpcodes;
@@ -401,6 +403,7 @@
bool suspend;
} _instRunCtxt;
+ DECLARE_INSTRUCTION_OPCODE(invalid);
DECLARE_INSTRUCTION_OPCODE(on);
DECLARE_INSTRUCTION_OPCODE(off);
DECLARE_INSTRUCTION_OPCODE(loop);
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