diff options
| author | Paweł Kołodziejski | 2003-04-21 10:20:12 +0000 | 
|---|---|---|
| committer | Paweł Kołodziejski | 2003-04-21 10:20:12 +0000 | 
| commit | d7deee507a8a08283ecc1e7d195923e88d213ae7 (patch) | |
| tree | dd7f9cc2c2498c22aa4b63d8e44542102c165810 | |
| parent | 39aa43dc8393283cda534fa1dfd5d7a68eecefde (diff) | |
| download | scummvm-rg350-d7deee507a8a08283ecc1e7d195923e88d213ae7.tar.gz scummvm-rg350-d7deee507a8a08283ecc1e7d195923e88d213ae7.tar.bz2 scummvm-rg350-d7deee507a8a08283ecc1e7d195923e88d213ae7.zip  | |
some changes in v2 variables
svn-id: r7052
| -rw-r--r-- | scumm/intern.h | 3 | ||||
| -rw-r--r-- | scumm/script_v2.cpp | 25 | 
2 files changed, 25 insertions, 3 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 3abe5a9373..911c69a381 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -194,6 +194,9 @@ protected:  	virtual const char *getOpcodeDesc(int i);  	virtual void getResultPos();  	virtual void getResultPosDirect(); +	virtual int getVar(); +	virtual int getVarOrDirectByte(byte mask); +	virtual int getVarOrDirectWord(byte mask);  	virtual void ifStateCommon(byte type);  	virtual void ifNotStateCommon(byte type);  	virtual void setStateCommon(byte type); diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index b75f49a942..47c0bec11f 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -366,6 +366,25 @@ const char *Scumm_v2::getOpcodeDesc(int i) {  	return _opcodesV2[i].desc;  } +int Scumm_v2::getVar() { +	int var_id = fetchScriptByte(); +	if ((var_id >= 14) && (var_id <= 16)) +		return _vars[_vars[var_id]]; +	return _vars[var_id]; +} + +int Scumm_v2::getVarOrDirectByte(byte mask) { +	if (_opcode & mask) +		return getVar(); +	return fetchScriptByte(); +} + +int Scumm_v2::getVarOrDirectWord(byte mask) { +	if (_opcode & mask) +		return getVar(); +	return fetchScriptWord(); +} +  void Scumm_v2::setStateCommon(byte type) {  	int obj = getVarOrDirectWord(0x80);  	putState(obj, getState(obj) | type); @@ -473,9 +492,9 @@ void Scumm_v2::o2_setBitVar() {    bit_var >>= 4;  	if (getVarOrDirectByte(0x80)) -		_bitVars[bit_var >> 3] |= (1 << bit_offset); +		_vars[bit_var] |= (1 << bit_offset);  	else -		_bitVars[bit_var >> 3] &= ~(1 << bit_offset); +		_vars[bit_var] &= ~(1 << bit_offset);  }  void Scumm_v2::o2_getBitVar() { @@ -488,7 +507,7 @@ void Scumm_v2::o2_getBitVar() {  	int bit_offset = bit_var & 0x0f;    bit_var >>= 4; -	_vars[_resultVarNumber] = (_bitVars[bit_var >> 3] & (1 << bit_offset)) ? 1 : 0; +	_vars[_resultVarNumber] = (_vars[bit_var] & (1 << bit_offset)) ? 1 : 0;  }  void Scumm_v2::ifStateCommon(byte type) {  | 
