[Scummvm-cvs-logs] SF.net SVN: scummvm:[52240] scummvm/trunk/engines/sci/engine/kmath.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Fri Aug 20 23:02:25 CEST 2010


Revision: 52240
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52240&view=rev
Author:   thebluegr
Date:     2010-08-20 21:02:24 +0000 (Fri, 20 Aug 2010)

Log Message:
-----------
SCI: Reverted kRandom to use unsigned integers again (used e.g. in LSL5) and added a temporary hack for the special case in Hoyle 4 (0x0, 0xFFFF), till we find out how this is handled correctly

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kmath.cpp

Modified: scummvm/trunk/engines/sci/engine/kmath.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmath.cpp	2010-08-20 20:42:13 UTC (rev 52239)
+++ scummvm/trunk/engines/sci/engine/kmath.cpp	2010-08-20 21:02:24 UTC (rev 52240)
@@ -35,9 +35,30 @@
 		return NULL_REG;
 
 	case 2: { // get random number
-		int fromNumber = argv[0].toSint16();
-		int toNumber = argv[1].toSint16();
+		// These are unsigned (e.g. in LSL5, this is used for the 5-digit
+		// door access code with Patty at k rap)
+		int fromNumber = argv[0].toUint16();
+		int toNumber = argv[1].toUint16();
 
+		// HACK: Hoyle 4 calls this with (0x0, 0xFFFF) in some dialogs for x,
+		// then it calls it with (0x0, 0x40) and puts x plus the result in y
+		// to displace view 924 in kDrawCel right afterwards and create a
+		// semi-random background in those dialogs. With the current code,
+		// this case isn't handled properly, and the dialog is drawn off-screen.
+		// -1 seems to be incorrect here, so we just return a 0 for now, till
+		// we figure out how to handle this.
+		if (fromNumber == 0 && toNumber == 0xFFFF) {
+			if (g_sci->getGameId() == GID_HOYLE4) {
+				warning("HACK: Special case for Hoyle 4 dialogs in kRandom");
+				return NULL_REG;
+			} else {
+				// Just throw a warning in other games for now, but don't modify
+				// the result...
+				warning("kRandom(0x0, 0xFFFF called - special case?");
+			}
+			
+		}
+
 		// TODO/CHECKME: It is propbably not required to check whether
 		// toNumber is greater than fromNumber, at least not when one
 		// goes by their names, but let us be on the safe side and


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