[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.91,2.92 script_v2.cpp,2.94,2.95

Max Horn fingolfin at users.sourceforge.net
Wed May 21 07:41:07 CEST 2003


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

Modified Files:
	intern.h script_v2.cpp 
Log Message:
evil bug in V2 bitvar code fixed -> no more MM cutscene skip crash

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.91
retrieving revision 2.92
diff -u -d -r2.91 -r2.92
--- intern.h	21 May 2003 14:00:06 -0000	2.91
+++ intern.h	21 May 2003 14:25:13 -0000	2.92
@@ -205,6 +205,7 @@
 	void getResultPosIndirect();
 	virtual void getResultPos();
 	virtual int readVar(uint var);
+	virtual void writeVar(uint var, int value);
 
 	virtual void ifStateCommon(byte type);
 	virtual void ifNotStateCommon(byte type);

Index: script_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v2.cpp,v
retrieving revision 2.94
retrieving revision 2.95
diff -u -d -r2.94 -r2.95
--- script_v2.cpp	21 May 2003 14:00:07 -0000	2.94
+++ script_v2.cpp	21 May 2003 14:25:14 -0000	2.95
@@ -436,10 +436,16 @@
 		var = _scummVars[var];
 
 	checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
-	debug(6, "readvar(%d) = %d", var, _scummVars[var]);
+	debug(1, "readvar(%d) = %d", var, _scummVars[var]);
 	return _scummVars[var];
 }
 
+void Scumm_v2::writeVar(uint var, int value) {
+	checkRange(_numVariables - 1, 0, var, "Variable %d out of range(r)");
+	debug(1, "writeVar(%d) = %d", var, value);
+	_scummVars[var] = value;
+}
+
 void Scumm_v2::getResultPosIndirect() {
 	_resultVarNumber = _scummVars[fetchScriptByte()];
 }
@@ -529,7 +535,7 @@
 }
 
 void Scumm_v2::o2_setBitVar() {
-	byte var = fetchScriptWord();
+	int var = fetchScriptWord();
 	byte a = getVarOrDirectByte(0x80);
 
 	int bit_var = var + a;
@@ -540,11 +546,12 @@
 		_scummVars[bit_var] |= (1 << bit_offset);
 	else
 		_scummVars[bit_var] &= ~(1 << bit_offset);
+
 }
 
 void Scumm_v2::o2_getBitVar() {
 	getResultPos();
-	byte var = fetchScriptWord();
+	int var = fetchScriptWord();
 	byte a = getVarOrDirectByte(0x80);
 
 	int bit_var = var + a;





More information about the Scummvm-git-logs mailing list