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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Jul 26 07:40:58 CEST 2010


Revision: 51293
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51293&view=rev
Author:   thebluegr
Date:     2010-07-26 05:40:58 +0000 (Mon, 26 Jul 2010)

Log Message:
-----------
SCI: Fixed bug #3034464, "ECOQUEST2: Crash near beginning"

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/vm.cpp
    scummvm/trunk/engines/sci/engine/workarounds.cpp
    scummvm/trunk/engines/sci/engine/workarounds.h

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2010-07-26 04:40:00 UTC (rev 51292)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2010-07-26 05:40:58 UTC (rev 51293)
@@ -1101,7 +1101,7 @@
 			if (validate_unsignedInteger(r_temp, value1) && validate_unsignedInteger(s->r_acc, value2))
 				s->r_acc = make_reg(0, value1 | value2);
 			else
-				s->r_acc = arithmetic_lookForWorkaround(opcode, NULL, r_temp, s->r_acc);
+				s->r_acc = arithmetic_lookForWorkaround(opcode, opcodeOrWorkarounds, r_temp, s->r_acc);
 			break;
 		}
 

Modified: scummvm/trunk/engines/sci/engine/workarounds.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/workarounds.cpp	2010-07-26 04:40:00 UTC (rev 51292)
+++ scummvm/trunk/engines/sci/engine/workarounds.cpp	2010-07-26 05:40:58 UTC (rev 51293)
@@ -38,6 +38,12 @@
     SCI_WORKAROUNDENTRY_TERMINATOR
 };
 
+//    gameID,           room,script,lvl,          object-name, method-name,    call,index,             workaround
+const SciWorkaroundEntry opcodeOrWorkarounds[] = {
+    { GID_ECOQUEST2,       100,   0,  0,              "Rain", "points",       0xcc6,    0, { WORKAROUND_FAKE,   0 } }, // when giving the papers to the customs officer, gets called against a pointer instead of a number
+    SCI_WORKAROUNDENTRY_TERMINATOR
+};
+
 //    gameID,           room,script,lvl,          object-name, method-name,    call, index,            workaround
 const SciWorkaroundEntry opcodeDptoaWorkarounds[] = {
     { GID_LSL6,           360,  938,  0,               "ROsc", "cycleDone",      -1,    0, { WORKAROUND_FAKE,   1 } }, // when looking through tile in the shower room initial cycles get set to an object instead of 2, we fix this by setting 1 after decrease

Modified: scummvm/trunk/engines/sci/engine/workarounds.h
===================================================================
--- scummvm/trunk/engines/sci/engine/workarounds.h	2010-07-26 04:40:00 UTC (rev 51292)
+++ scummvm/trunk/engines/sci/engine/workarounds.h	2010-07-26 05:40:58 UTC (rev 51293)
@@ -69,6 +69,7 @@
 };
 
 extern const SciWorkaroundEntry opcodeDivWorkarounds[];
+extern const SciWorkaroundEntry opcodeOrWorkarounds[];
 extern const SciWorkaroundEntry opcodeDptoaWorkarounds[];
 extern const SciWorkaroundEntry uninitializedReadWorkarounds[];
 extern const SciWorkaroundEntry kAbs_workarounds[];


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