[Scummvm-cvs-logs] SF.net SVN: scummvm: [21958] scummvm/trunk/engines/simon/simon.cpp

kirben at users.sourceforge.net kirben at users.sourceforge.net
Sun Apr 16 18:32:01 CEST 2006


Revision: 21958
Author:   kirben
Date:     2006-04-16 18:31:02 -0700 (Sun, 16 Apr 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=21958&view=rev

Log Message:
-----------
Handle unsigned variableArray reads better in FF, fixes more missing subroutines

Modified Paths:
--------------
    scummvm/trunk/engines/simon/simon.cpp
Modified: scummvm/trunk/engines/simon/simon.cpp
===================================================================
--- scummvm/trunk/engines/simon/simon.cpp	2006-04-17 01:04:08 UTC (rev 21957)
+++ scummvm/trunk/engines/simon/simon.cpp	2006-04-17 01:31:02 UTC (rev 21958)
@@ -998,10 +998,7 @@
 	uint a = READ_BE_UINT16(_codePtr);
 	_codePtr += 2;
 	if (a >= 30000 && a < 30512) {
-		if (getGameType() == GType_FF)
-			return (uint16)readVariable(a - 30000);
-		else
-			return readVariable(a - 30000);
+		return readVariable(a - 30000);
 	}
 	return a;
 }
@@ -1079,10 +1076,14 @@
 	if (variable >= 255)
 		error("Variable %d out of range in read", variable);
 
-	if (getGameType() == GType_FF && getBitFlag(83))
-		return _variableArray2[variable];
-	else
-		return _variableArray[variable];
+	if (getGameType() == GType_FF) {
+		if (getBitFlag(83))
+			return (uint16)_variableArray2[variable];
+		else
+			return (uint16)_variableArray[variable];
+	} else {
+			return _variableArray[variable];
+	}
 }
 
 void SimonEngine::writeNextVarContents(uint16 contents) {
@@ -1368,7 +1369,8 @@
 			return cur;
 	}
 
-	debug(0,"getSubroutineByID: subroutine %d not found", subroutine_id);
+	if (subroutine_id != 160)
+		debug(0,"getSubroutineByID: subroutine %d not found", subroutine_id);
 	return NULL;
 }
 
@@ -1989,7 +1991,7 @@
 	time_t cur_time;
 
 	if (getGameType() == GType_SIMON1) {
-		uint subr_id = _variableArray[254];
+		uint subr_id = (uint16)_variableArray[254];
 		if (subr_id != 0) {
 			Subroutine *sub = getSubroutineByID(subr_id);
 			if (sub != NULL) {
@@ -2018,7 +2020,7 @@
 	uint subr_id;
 	Subroutine *sub;
 
-	subr_id = _variableArray[249];
+	subr_id = (uint16)_variableArray[249];
 	if (subr_id != 0) {
 		sub = getSubroutineByID(subr_id);
 		if (sub != NULL) {
@@ -2029,7 +2031,7 @@
 		_variableArray[249] = 0;
 	}
 
-	subr_id = _variableArray[254];
+	subr_id = (uint16)_variableArray[254];
 	if (subr_id != 0) {
 		sub = getSubroutineByID(subr_id);
 		if (sub != NULL) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list