aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2003-05-04 02:27:22 +0000
committerMax Horn2003-05-04 02:27:22 +0000
commitaa74ea1d5ca4c553f882b288d1ecb1cc74e88b7e (patch)
treef519f8b132397ac1a5e803b1e1ab047453d420a1
parent488d5fe351d4546023770cfee3e2bd76973614c7 (diff)
downloadscummvm-rg350-aa74ea1d5ca4c553f882b288d1ecb1cc74e88b7e.tar.gz
scummvm-rg350-aa74ea1d5ca4c553f882b288d1ecb1cc74e88b7e.tar.bz2
scummvm-rg350-aa74ea1d5ca4c553f882b288d1ecb1cc74e88b7e.zip
yet more v2 fixes & cleanup
svn-id: r7302
-rw-r--r--scumm/intern.h10
-rw-r--r--scumm/script.cpp11
-rw-r--r--scumm/script_v2.cpp42
-rw-r--r--scumm/scumm.h3
4 files changed, 33 insertions, 33 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 1b6c1e805d..7a8fb88315 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -197,6 +197,8 @@ protected:
virtual void decodeParseString();
+ void getResultPosIndirect();
+ virtual void getResultPos();
virtual int readVar(uint var);
virtual void ifStateCommon(byte type);
@@ -213,16 +215,16 @@ protected:
void o2_clearState02();
void o2_setState01();
void o2_clearState01();
- void o2_assignVarByteDirect();
- void o2_assignVarWordDirect();
+ void o2_assignVarByteIndirect();
+ void o2_assignVarWordIndirect();
void o2_assignVarByte();
void o2_assignVarWord();
void o2_setObjY();
void o2_getObjY();
void o2_setBitVar();
void o2_getBitVar();
- void o2_addDirect();
- void o2_subDirect();
+ void o2_addIndirect();
+ void o2_subIndirect();
void o2_ifState08();
void o2_ifNotState08();
void o2_ifState04();
diff --git a/scumm/script.cpp b/scumm/script.cpp
index 181aad737a..e9bfd31a51 100644
--- a/scumm/script.cpp
+++ b/scumm/script.cpp
@@ -357,7 +357,7 @@ int Scumm::readVar(uint var) {
#ifdef BYPASS_COPY_PROT
static byte copyprotbypassed;
#endif
- debug(9, "readvar=%d", var);
+ debug(9, "readvar(%d)", var);
if (!(var & 0xF000)) {
#if defined(BYPASS_COPY_PROT)
if (var == 490 && _gameId == GID_MONKEY2 && !copyprotbypassed) {
@@ -486,18 +486,9 @@ void Scumm::writeVar(uint var, int value) {
error("Illegal varbits (w)");
}
-void Scumm::getResultPosDirect() {
- _resultVarNumber = _vars[fetchScriptByte()];
-}
-
void Scumm::getResultPos() {
int a;
- if (_features & GF_AFTER_V2) {
- _resultVarNumber = fetchScriptByte();
- return;
- }
-
_resultVarNumber = fetchScriptWord();
if (_resultVarNumber & 0x2000) {
a = fetchScriptWord();
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index bff981c378..dcc6549d76 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -45,7 +45,7 @@ void Scumm_v2::setupOpcodes() {
/* 08 */
OPCODE(o2_isNotEqual),
OPCODE(o5_faceActor),
- OPCODE(o2_assignVarWordDirect),
+ OPCODE(o2_assignVarWordIndirect),
OPCODE(o2_setObjY),
/* 0C */
OPCODE(o2_resourceRoutines),
@@ -85,7 +85,7 @@ void Scumm_v2::setupOpcodes() {
/* 28 */
OPCODE(o2_equalZero),
OPCODE(o2_setOwnerOf),
- OPCODE(o2_addDirect),
+ OPCODE(o2_addIndirect),
OPCODE(o2_delayVariable),
/* 2C */
OPCODE(o2_assignVarByte),
@@ -165,7 +165,7 @@ void Scumm_v2::setupOpcodes() {
/* 68 */
OPCODE(o5_isScriptRunning),
OPCODE(o2_setOwnerOf),
- OPCODE(o2_subDirect),
+ OPCODE(o2_subIndirect),
OPCODE(o2_dummy),
/* 6C */
OPCODE(o2_getObjY),
@@ -205,7 +205,7 @@ void Scumm_v2::setupOpcodes() {
/* 88 */
OPCODE(o2_isNotEqual),
OPCODE(o5_faceActor),
- OPCODE(o2_assignVarWordDirect),
+ OPCODE(o2_assignVarWordIndirect),
OPCODE(o2_setObjY),
/* 8C */
OPCODE(o2_resourceRoutines),
@@ -245,7 +245,7 @@ void Scumm_v2::setupOpcodes() {
/* A8 */
OPCODE(o2_notEqualZero),
OPCODE(o2_setOwnerOf),
- OPCODE(o2_addDirect),
+ OPCODE(o2_addIndirect),
OPCODE(o2_dummy),
/* AC */
OPCODE(o2_drawSentence),
@@ -325,7 +325,7 @@ void Scumm_v2::setupOpcodes() {
/* E8 */
OPCODE(o5_isScriptRunning),
OPCODE(o2_setOwnerOf),
- OPCODE(o2_subDirect),
+ OPCODE(o2_subIndirect),
OPCODE(o2_dummy),
/* EC */
OPCODE(o2_getObjY),
@@ -394,7 +394,7 @@ void Scumm_v2::decodeParseString() {
}
int Scumm_v2::readVar(uint var) {
- debug(6, "readvar=%d", var);
+ debug(6, "readvar(%d)", var);
if (var >= 14 && var <= 16)
var = _vars[var];
@@ -402,6 +402,14 @@ int Scumm_v2::readVar(uint var) {
return _vars[var];
}
+void Scumm_v2::getResultPosIndirect() {
+ _resultVarNumber = _vars[fetchScriptByte()];
+}
+
+void Scumm_v2::getResultPos() {
+ _resultVarNumber = fetchScriptByte();
+}
+
void Scumm_v2::setStateCommon(byte type) {
int obj = getVarOrDirectWord(0x80);
putState(obj, getState(obj) | type);
@@ -450,13 +458,13 @@ void Scumm_v2::o2_clearState01() {
clearStateCommon(0x01);
}
-void Scumm_v2::o2_assignVarByteDirect() {
- getResultPosDirect();
+void Scumm_v2::o2_assignVarByteIndirect() {
+ getResultPosIndirect();
setResult(fetchScriptByte());
}
-void Scumm_v2::o2_assignVarWordDirect() {
- getResultPosDirect();
+void Scumm_v2::o2_assignVarWordIndirect() {
+ getResultPosIndirect();
setResult(fetchScriptWord());
}
@@ -570,16 +578,16 @@ void Scumm_v2::o2_ifNotState01() {
ifNotStateCommon(0x01);
}
-void Scumm_v2::o2_addDirect() {
+void Scumm_v2::o2_addIndirect() {
int a;
- getResultPosDirect();
+ getResultPosIndirect();
a = getVarOrDirectWord(0x80);
_vars[_resultVarNumber] += a;
}
-void Scumm_v2::o2_subDirect() {
+void Scumm_v2::o2_subIndirect() {
int a;
- getResultPosDirect();
+ getResultPosIndirect();
a = getVarOrDirectWord(0x80);
_vars[_resultVarNumber] -= a;
}
@@ -902,11 +910,11 @@ void Scumm_v2::o2_putActor() {
Actor *a;
a = derefActorSafe(getVarOrDirectByte(0x80), "o2_putActor");
- if (!a)
- return;
x = getVarOrDirectByte(0x40);
y = getVarOrDirectByte(0x20);
+ if (!a)
+ return;
a->putActor(x, y, a->room);
}
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 8aa906ad9b..672b85c224 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -514,8 +514,7 @@ protected:
virtual int fetchScriptWordSigned();
void ignoreScriptWord() { fetchScriptWord(); }
void ignoreScriptByte() { fetchScriptByte(); }
- void getResultPos();
- void getResultPosDirect();
+ virtual void getResultPos();
void setResult(int result);
void push(int a);
int pop();