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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jul 14 01:46:17 CEST 2010


Revision: 50857
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50857&view=rev
Author:   thebluegr
Date:     2010-07-13 23:46:17 +0000 (Tue, 13 Jul 2010)

Log Message:
-----------
Fixed the signature check for DoSound (play) for SCI2.1 games, so that they start again

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

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2010-07-13 23:28:12 UTC (rev 50856)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2010-07-13 23:46:17 UTC (rev 50857)
@@ -334,7 +334,17 @@
     { SIG_SOUNDSCI1EARLY,  4, MAP_CALL(DoSoundUpdate),             NULL,                   NULL },
     { SIG_SOUNDSCI1EARLY,  5, MAP_CALL(DoSoundInit),               NULL,                   NULL },
     { SIG_SOUNDSCI1EARLY,  6, MAP_CALL(DoSoundDispose),            NULL,                   NULL },
-    { SIG_SOUNDSCI1EARLY,  7, MAP_CALL(DoSoundPlay),               "oi",                   NULL },
+	// DoSound (play) is called by 2 methods of the Sound object: play and
+	// playBed. The methods are the same, apart from the second integer
+	// parameter: it's 0 in play and 1 in playBed, to distinguish the caller.
+	// In SCI2, the playBed method is removed (thus the second parameter
+	// is now meaningless), and in SCI2.1 the second parameter is removed
+	// altogether. Thus, make the second parameter optional and check for
+	// its existence inside the function itself, so that the signature
+	// doesn't bomb out in SCI2.1 games. Another way would be to add SCI
+	// version checking here, but until then this is the only way to prevent
+	// the signature check from failing in SCI2.1 games.
+    { SIG_SOUNDSCI1EARLY,  7, MAP_CALL(DoSoundPlay),               "o(i)",                 NULL },
     { SIG_SOUNDSCI1EARLY,  8, MAP_CALL(DoSoundStop),               NULL,                   NULL },
     { SIG_SOUNDSCI1EARLY,  9, MAP_CALL(DoSoundPause),              "[o0]i",                NULL },
     { SIG_SOUNDSCI1EARLY, 10, MAP_CALL(DoSoundFade),               "oiiii",                NULL },


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