diff options
| -rw-r--r-- | scumm/script.cpp | 4 | ||||
| -rw-r--r-- | scumm/script_v5.cpp | 8 | 
2 files changed, 7 insertions, 5 deletions
| diff --git a/scumm/script.cpp b/scumm/script.cpp index 53fa2988d8..7d501d8ce6 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -355,7 +355,7 @@ int Scumm::readVar(uint var) {  		return _vars[var];  	if (var & 0x8000) { -		if ((_gameId == GID_ZAK256) || (_gameId == GID_LOOM)) { +		if ((_gameId == GID_ZAK256) || (_features & GF_OLD_BUNDLE)) {  			// Emulate a wierd hack in Zak256 to read individual  			// bits of a normal global  			int b = (var & 0x000F); @@ -405,7 +405,7 @@ void Scumm::writeVar(uint var, int value) {  	}  	if (var & 0x8000) { -		if ((_gameId == GID_ZAK256) || (_gameId == GID_LOOM)) { +		if ((_gameId == GID_ZAK256) || (_features & GF_OLD_BUNDLE)) {  			// Emulate a wierd hack in Zak256 to read individual  			// bits of a normal global  			int b = (var & 0x000F); diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp index 12b86cfdc5..1d383492c5 100644 --- a/scumm/script_v5.cpp +++ b/scumm/script_v5.cpp @@ -954,7 +954,7 @@ void Scumm_v5::o5_getActorScale() {  		return;  	// INDY3 uses this opcode as a wait_for_actor(); -	if ((_gameId == GID_INDY3_256) || (_features & GF_OLD_BUNDLE)) { +	if ((_gameId == GID_INDY3_256) || (_gameId == GID_INDY3)) {  		byte *oldaddr = _scriptPointer - 1;  		if (derefActorSafe(getVarOrDirectByte(0x80), "o5_wait")->moving) {  			_scriptPointer = oldaddr; @@ -986,7 +986,7 @@ void Scumm_v5::o5_getActorX() {  	int a;  	getResultPos(); -	if (_gameId == GID_INDY3_256) +	if ((_gameId == GID_INDY3_256) || (_gameId == GID_INDY3))  		a = getVarOrDirectByte(0x80);  	else  		a = getVarOrDirectWord(0x80); @@ -998,7 +998,9 @@ void Scumm_v5::o5_getActorY() {  	int a;  	getResultPos(); -	if (_gameId == GID_INDY3_256) { +	if (_gameId == GID_INDY3) +		a = getVarOrDirectByte(0x80); +	else if (_gameId == GID_INDY3_256) {  		a = getVarOrDirectByte(0x80);  		// Indy3 hack to cheat the 'Leap of Faith' grail test | 
