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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Mon Jan 4 00:30:24 CET 2010


Revision: 46963
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46963&view=rev
Author:   m_kiewitz
Date:     2010-01-03 23:30:23 +0000 (Sun, 03 Jan 2010)

Log Message:
-----------
SCI/newmusic: support for SCI0 fading, doesnt work yet because channels[] is currently not correctly filled out inside SoundResource class - because it wasnt previously needed

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sfx/soundcmd.cpp
    scummvm/trunk/engines/sci/sfx/soundcmd.h

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-03 23:25:54 UTC (rev 46962)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.cpp	2010-01-03 23:30:23 UTC (rev 46963)
@@ -209,6 +209,7 @@
 	reg_t obj = (argc > 1) ? argv[1] : NULL_REG;
 	int16 value = (argc > 2) ? argv[2].toSint16() : 0;
 	_acc = acc;
+	_argc = argc;
 	_argv = argv;
 
 	// cmdMuteSound and cmdMasterVolume do not operate on an object, but need the number of
@@ -655,11 +656,27 @@
 	}
 
 	int volume = musicSlot->volume;
-	musicSlot->fadeTo = CLIP<uint16>(_argv[2].toUint16(), 0, MUSIC_VOLUME_MAX);
-	musicSlot->fadeStep = volume > _argv[2].toUint16() ? -_argv[4].toUint16() : _argv[4].toUint16();
-	musicSlot->fadeTickerStep = _argv[3].toUint16() * 16667 / _music->soundGetTempo();
-	musicSlot->fadeTicker = 0;
 
+	switch (_argc) {
+	case 2: // SCI0
+		musicSlot->fadeTo = 0;
+		musicSlot->fadeStep = -5;
+		musicSlot->fadeTickerStep = 0x10 * 16667 / _music->soundGetTempo();
+		musicSlot->fadeTicker = 0;
+		break;
+
+	case 5: // Possibly SCI1?!
+	case 6: // SCI 1.1 TODO: find out what additional parameter is
+		musicSlot->fadeTo = CLIP<uint16>(_argv[2].toUint16(), 0, MUSIC_VOLUME_MAX);
+		musicSlot->fadeStep = volume > _argv[2].toUint16() ? -_argv[4].toUint16() : _argv[4].toUint16();
+		musicSlot->fadeTickerStep = _argv[3].toUint16() * 16667 / _music->soundGetTempo();
+		musicSlot->fadeTicker = 0;
+		break;
+
+	default:
+		error("cmdFadeSound: unsupported argc %d", _argc);
+	}
+
 	debugC(2, kDebugLevelSound, "cmdFadeSound: to %d, step %d, ticker %d", musicSlot->fadeTo, musicSlot->fadeStep, musicSlot->fadeTickerStep);
 #endif
 }

Modified: scummvm/trunk/engines/sci/sfx/soundcmd.h
===================================================================
--- scummvm/trunk/engines/sci/sfx/soundcmd.h	2010-01-03 23:25:54 UTC (rev 46962)
+++ scummvm/trunk/engines/sci/sfx/soundcmd.h	2010-01-03 23:30:23 UTC (rev 46963)
@@ -83,6 +83,7 @@
 #endif
 	AudioPlayer *_audio;
 	SciVersion _soundVersion;
+	int _argc;
 	reg_t *_argv;	// for cmdFadeSound
 	uint32 _midiCommand;	// for cmdSendMidi
 	reg_t _acc;


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