[Scummvm-cvs-logs] SF.net SVN: scummvm:[52819] scummvm/branches/branch-1-2-0/engines/sci/ graphics

lskovlun at users.sourceforge.net lskovlun at users.sourceforge.net
Mon Sep 20 20:43:22 CEST 2010


Revision: 52819
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52819&view=rev
Author:   lskovlun
Date:     2010-09-20 18:43:21 +0000 (Mon, 20 Sep 2010)

Log Message:
-----------
SCI (BACKPORT): Handle bit 2 of scaleSignal by not updating nsRect values when
it's set. Currently game-specific for Hoyle4; fixes bug #3038424. But
other SCI1.1 games should be tested with a general version of this to
see whether it fixes relevant bugs.

Modified Paths:
--------------
    scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.cpp
    scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.h

Modified: scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.cpp	2010-09-20 18:31:59 UTC (rev 52818)
+++ scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.cpp	2010-09-20 18:43:21 UTC (rev 52819)
@@ -278,6 +278,16 @@
 		} else {
 			view->getCelRect(it->loopNo, it->celNo, it->x, it->y, it->z, it->celRect);
 		}
+
+		// This statement must be here for Hoyle4, otherwise cards are unclickable.
+		// This is probably one of the experimental features that were occasionally
+		// added to SCI interpreters; the corresponding check is absent in many SSCI
+		// versions. m_kiewitz knew about this flag before I (lskovlun) implemented it, 
+		// so it is possible that more test cases are known. Also, some presently open
+		// SCI1.1 bugs may be fixed by this and should be re-tested with this patch generalized.
+		if (g_sci->getGameId() == GID_HOYLE4 && it->scaleSignal & kScaleSignalDontSetNsrect)
+			setNsRect = false;
+
 		if (setNsRect) {
 			writeSelectorValue(_s->_segMan, curObject, SELECTOR(nsLeft), it->celRect.left);
 			writeSelectorValue(_s->_segMan, curObject, SELECTOR(nsTop), it->celRect.top);

Modified: scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.h
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.h	2010-09-20 18:31:59 UTC (rev 52818)
+++ scummvm/branches/branch-1-2-0/engines/sci/graphics/animate.h	2010-09-20 18:43:21 UTC (rev 52819)
@@ -53,7 +53,8 @@
 enum ViewScaleSignals {
 	kScaleSignalDoScaling		= 0x0001, // enables scaling when drawing that cel (involves scaleX and scaleY)
 	kScaleSignalGlobalScaling	= 0x0002, // means that global scaling shall get applied on that cel (sets scaleX/scaleY)
-	kScaleSignalUnknown2		= 0x0004 // really unknown
+	kScaleSignalDontSetNsrect	= 0x0004  // do not set nsRect inside kAnimate(); for a test case see bug #3038424 
+
 };
 
 struct AnimateEntry {


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