[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