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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Wed Jul 14 11:00:45 CEST 2010


Revision: 50874
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50874&view=rev
Author:   m_kiewitz
Date:     2010-07-14 09:00:44 +0000 (Wed, 14 Jul 2010)

Log Message:
-----------
SCI: moving hack signature for kDoSound(play) to SCI1LATE only, adding comment about this and changing signature for SCI1EARLY back to what it was.

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-14 05:04:55 UTC (rev 50873)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2010-07-14 09:00:44 UTC (rev 50874)
@@ -341,17 +341,11 @@
     { SIG_SOUNDSCI1EARLY,  4, MAP_CALL(DoSoundUpdate),             NULL,                   NULL },
     { SIG_SOUNDSCI1EARLY,  5, MAP_CALL(DoSoundInit),               NULL,                   NULL },
     { SIG_SOUNDSCI1EARLY,  6, MAP_CALL(DoSoundDispose),            NULL,                   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,  7, MAP_CALL(DoSoundPlay),               "oi",                   NULL },
+    // ^^ FIXME: In SCI1-SCI1.1 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. It's passed on, we should find out what
+    //  it actually does internally
     { 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 },
@@ -369,7 +363,12 @@
     { SIG_SOUNDSCI1LATE,   5, MAP_CALL(DoSoundSuspend),            "i",                    NULL },
     { SIG_SOUNDSCI1LATE,   6, MAP_CALL(DoSoundInit),               NULL,                   NULL },
     { SIG_SOUNDSCI1LATE,   7, MAP_CALL(DoSoundDispose),            NULL,                   NULL },
-    { SIG_SOUNDSCI1LATE,   8, MAP_CALL(DoSoundPlay),               NULL,                   NULL },
+    { SIG_SOUNDSCI1LATE,   8, MAP_CALL(DoSoundPlay),               "o(i)",                 NULL },
+    // ^^ HACK: In SCI2, the playBed method is removed (thus the second parameter
+    //  is now meaningless, but it's still passed and needed), and in SCI2.1 the second parameter is removed
+    //  altogether. We should actually create a new sound version called SCI21 to change the signature only
+    //  for this version and above. There should be no signature here at all, so that the signature for SCI1LATE
+    //  is taken from SCI1EARLY.
     { SIG_SOUNDSCI1LATE,   9, MAP_CALL(DoSoundStop),               NULL,                   NULL },
     { SIG_SOUNDSCI1LATE,  10, MAP_CALL(DoSoundPause),              NULL,                   NULL },
     { SIG_SOUNDSCI1LATE,  11, MAP_CALL(DoSoundFade),               "oiiii(i)",             kDoSoundFade_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