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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Sat Aug 7 15:56:31 CEST 2010


Revision: 51833
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51833&view=rev
Author:   m_kiewitz
Date:     2010-08-07 13:56:31 +0000 (Sat, 07 Aug 2010)

Log Message:
-----------
SCI: removing kDoBresen hack for sq5

adding detailed comment about sq5 scrubbing issue
not 100% fixed (waltervn should look into it), but at least it works now

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

Modified: scummvm/trunk/engines/sci/engine/kmovement.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmovement.cpp	2010-08-07 13:40:14 UTC (rev 51832)
+++ scummvm/trunk/engines/sci/engine/kmovement.cpp	2010-08-07 13:56:31 UTC (rev 51833)
@@ -315,14 +315,8 @@
 				))) {
 		// Whew... in short: If we have reached or passed our target position
 
-		// Sanity check: make sure that destx, desty are inside the screen coordinates.
-		// They can go off screen in some cases, e.g. in SQ5 while scrubbing the floor (bug #3037351)
-		if (destx <= g_sci->_gfxScreen->getWidth() && desty <= g_sci->_gfxScreen->getHeight()) {
-			x = destx;
-			y = desty;
-		} else {
-			warning("kDoBresen: destination x, y would be off-screen(%d, %d)", destx, desty);
-		}
+		x = destx;
+		y = desty;
 		completed = 1;
 
 		debugC(2, kDebugLevelBresen, "Finished mover %04x:%04x", PRINT_REG(mover));

Modified: scummvm/trunk/engines/sci/engine/script_patches.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/script_patches.cpp	2010-08-07 13:40:14 UTC (rev 51832)
+++ scummvm/trunk/engines/sci/engine/script_patches.cpp	2010-08-07 13:56:31 UTC (rev 51833)
@@ -166,6 +166,13 @@
     {      0, NULL,                                          0,                                            0, NULL,                       NULL }
 };
 
+// It seems to scripts warp ego outside the screen somehow (or maybe kDoBresen?)
+//  ego::mover is set to 0 and rm119::doit will crash in that case. This here
+//  fixes part of the problem and actually checks ego::mover to be 0 and skips
+//  TODO: this should get further investigated by waltervn and maybe properly
+//   patched. For now ego will shortly disappear and reappear a bit after
+//   this isn't good, but sierra sci also "crashed" (endless looped) so this
+//   is at least better than the original code
 const byte sq5SignatureScrubbing[] = {
 	19,
 	0x18,             // not


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