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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Nov 1 00:38:33 CET 2010


Revision: 53994
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53994&view=rev
Author:   thebluegr
Date:     2010-10-31 23:38:33 +0000 (Sun, 31 Oct 2010)

Log Message:
-----------
SCI: Fix for bug #3100292 - "QFG2: signature mismatch at the WIT" (backport)

Modified Paths:
--------------
    scummvm/branches/branch-1-2-0/engines/sci/engine/kernel_tables.h
    scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.cpp
    scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.h

Modified: scummvm/branches/branch-1-2-0/engines/sci/engine/kernel_tables.h
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/engine/kernel_tables.h	2010-10-31 23:34:36 UTC (rev 53993)
+++ scummvm/branches/branch-1-2-0/engines/sci/engine/kernel_tables.h	2010-10-31 23:38:33 UTC (rev 53994)
@@ -437,7 +437,7 @@
     { MAP_CALL(StrCmp),            SIG_EVERYWHERE,           "rr(i)",                 NULL,            NULL },
     { MAP_CALL(StrCpy),            SIG_EVERYWHERE,           "r[r0](i)",              NULL,            NULL },
     { MAP_CALL(StrEnd),            SIG_EVERYWHERE,           "r",                     NULL,            NULL },
-    { MAP_CALL(StrLen),            SIG_EVERYWHERE,           "[r0]",                  NULL,            NULL },
+    { MAP_CALL(StrLen),            SIG_EVERYWHERE,           "[r0]",                  NULL,            kStrLen_workarounds },
     { MAP_CALL(StrSplit),          SIG_EVERYWHERE,           "rr[r0]",                NULL,            NULL },
     { MAP_CALL(TextColors),        SIG_EVERYWHERE,           "(i*)",                  NULL,            NULL },
     { MAP_CALL(TextFonts),         SIG_EVERYWHERE,           "(i*)",                  NULL,            NULL },

Modified: scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.cpp	2010-10-31 23:34:36 UTC (rev 53993)
+++ scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.cpp	2010-10-31 23:38:33 UTC (rev 53994)
@@ -406,6 +406,12 @@
 };
 
 //    gameID,           room,script,lvl,          object-name, method-name,    call,index,                workaround
+const SciWorkaroundEntry kStrLen_workarounds[] = {
+	{ GID_QFG2,          210,     2,  0,                   "", "export 21",   0xdeb,    0, { WORKAROUND_FAKE,      0 } }, // When saying something incorrect at the WIT, an integer is passed instead of a reference - bug #3100292
+	SCI_WORKAROUNDENTRY_TERMINATOR
+};
+
+//    gameID,           room,script,lvl,          object-name, method-name,    call,index,                workaround
 const SciWorkaroundEntry kUnLoad_workarounds[] = {
 	{ GID_CAMELOT,       921,   921,  1,             "Script", "changeState",  0x36,    0, { WORKAROUND_IGNORE, 0 } }, // DEMO: While showing Camelot (and other places), the reference is invalid - bug #3035000
 	{ GID_CAMELOT,       921,   921,  1,             "Script", "init",         0x36,    0, { WORKAROUND_IGNORE, 0 } }, // DEMO: When being attacked by the boar (and other places), the reference is invalid - bug #3035000

Modified: scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.h
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.h	2010-10-31 23:34:36 UTC (rev 53993)
+++ scummvm/branches/branch-1-2-0/engines/sci/engine/workarounds.h	2010-10-31 23:38:33 UTC (rev 53994)
@@ -104,6 +104,7 @@
 extern const SciWorkaroundEntry kSetPort_workarounds[];
 extern const SciWorkaroundEntry kStrAt_workarounds[];
 extern const SciWorkaroundEntry kStrCat_workarounds[];
+extern const SciWorkaroundEntry kStrLen_workarounds[];
 extern const SciWorkaroundEntry kUnLoad_workarounds[];
 
 extern SciWorkaroundSolution trackOriginAndFindWorkaround(int index, const SciWorkaroundEntry *workaroundList, SciTrackOriginReply *trackOrigin);


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