diff options
author | Max Horn | 2003-05-04 02:27:22 +0000 |
---|---|---|
committer | Max Horn | 2003-05-04 02:27:22 +0000 |
commit | aa74ea1d5ca4c553f882b288d1ecb1cc74e88b7e (patch) | |
tree | f519f8b132397ac1a5e803b1e1ab047453d420a1 | |
parent | 488d5fe351d4546023770cfee3e2bd76973614c7 (diff) | |
download | scummvm-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.h | 10 | ||||
-rw-r--r-- | scumm/script.cpp | 11 | ||||
-rw-r--r-- | scumm/script_v2.cpp | 42 | ||||
-rw-r--r-- | scumm/scumm.h | 3 |
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(); |