[Scummvm-cvs-logs] CVS: scummvm/scumm script.cpp,1.73,1.74

Max Horn fingolfin at users.sourceforge.net
Sun May 4 05:05:56 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv7230

Modified Files:
	script.cpp 
Log Message:
cleanup

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- script.cpp	4 May 2003 11:21:13 -0000	1.73
+++ script.cpp	4 May 2003 12:02:37 -0000	1.74
@@ -354,10 +354,21 @@
 
 int Scumm::readVar(uint var) {
 	int a;
-#ifdef BYPASS_COPY_PROT
-	static byte copyprotbypassed;
+#if defined(BYPASS_COPY_PROT)
+	static byte copyprotbypassed = false;
 #endif
+
 	debug(9, "readvar(%d)", var);
+
+	if (var & 0x2000 && !(_features & GF_NEW_OPCODES)) {
+		a = fetchScriptWord();
+		if (a & 0x2000)
+			var += readVar(a & ~0x2000);
+		else
+			var += a & 0xFFF;
+		var &= ~0x2000;
+	}
+
 	if (!(var & 0xF000)) {
 #if defined(BYPASS_COPY_PROT)
 		if (var == 490 && _gameId == GID_MONKEY2 && !copyprotbypassed) {
@@ -368,47 +379,31 @@
 			var = 266;
 		}
 #endif
-
 		checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
-
 		return _vars[var];
 	}
 
-	if (var & 0x2000 && !(_features & GF_NEW_OPCODES)) {
-		a = fetchScriptWord();
-		if (a & 0x2000)
-			var += readVar(a & ~0x2000);
-		else
-			var += a & 0xFFF;
-		var &= ~0x2000;
-	}
-
-	if (!(var & 0xF000))
-			return _vars[var];
-
 	if (var & 0x8000) {
 		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);
-			var &= 0x0FFF;
-			var >>= 4;
-			checkRange(_numVariables - 1, 0, var, "Variable %d out of range(rzb)");
+			int bit = var & 0xF;
+			var = (var >> 4) & 0xFF;
+
 #if defined(BYPASS_COPY_PROT)
 			// INDY3 checks this during the game...
-			if (var == 94 && _gameId == GID_INDY3 && b == 4) {
+			if (_gameId == GID_INDY3 && var == 94 && bit == 4) {
 				return 0;
-			} else if (var == 214 && b == 15 && _gameId == GID_LOOM && !copyprotbypassed) {
+			} else if (_gameId == GID_LOOM && var == 214 && bit == 15 && !copyprotbypassed) {
 				copyprotbypassed = true;
 				return 0;
-			} else
+			}
 #endif
-				return (_vars[ var ] & ( 1 << b ) ) ? 1 : 0;
+			checkRange(_numVariables - 1, 0, var, "Variable %d out of range(rzb)");
+			return (_vars[ var ] & ( 1 << bit ) ) ? 1 : 0;
+		} else {
+			var &= 0x7FFF;
+			checkRange(_numBitVariables - 1, 0, var, "Bit variable %d out of range(r)");
+			return (_bitVars[var >> 3] & (1 << (var & 7))) ? 1 : 0;
 		}
-
-		var &= 0x7FFF;
-		checkRange(_numBitVariables - 1, 0, var, "Bit variable %d out of range(r)");
-		return (_bitVars[var >> 3] & (1 << (var & 7))) ? 1 : 0;
 	}
 
 	if (var & 0x4000) {
@@ -447,30 +442,29 @@
 
 	if (var & 0x8000) {
 		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);
-			var &= 0x7FFF;
-			var >>= 4;
+			// In the old games, the bit variables were using the same memory
+			// as the normal variables!
+			int bit = var & 0xF;
+			var = (var >> 4) & 0xFF;
 			checkRange(_numVariables - 1, 0, var, "Variable %d out of range(wzb)");
 			if(value)
-				_vars[ var ] |= ( 1 << b );
+				_vars[var] |= ( 1 << bit );
 			else
-				_vars[ var ] &= ~( 1 << b );
-			return;
+				_vars[var] &= ~( 1 << bit );
+		} else {
+			var &= 0x7FFF;
+			checkRange(_numBitVariables - 1, 0, var, "Bit variable %d out of range(w)");
+	
+			// FIXME: Enable Indy4 mousefighting by default. 
+			// is there a better place to put this?
+			if (_gameId == GID_INDY4 && var == 107 && vm.slot[_currentScript].number == 1)
+				value = 1;
+	
+			if (value)
+				_bitVars[var >> 3] |= (1 << (var & 7));
+			else
+				_bitVars[var >> 3] &= ~(1 << (var & 7));
 		}
-		var &= 0x7FFF;
-		checkRange(_numBitVariables - 1, 0, var, "Bit variable %d out of range(w)");
-
-		/* FIXME: Enable Indy4 mousefighting by default. 
-		   is there a better place to put this? */
-		if (_gameId == GID_INDY4 && var == 107 && vm.slot[_currentScript].number == 1)
-			value = 1;
-
-		if (value)
-			_bitVars[var >> 3] |= (1 << (var & 7));
-		else
-			_bitVars[var >> 3] &= ~(1 << (var & 7));
 		return;
 	}
 





More information about the Scummvm-git-logs mailing list