[Scummvm-cvs-logs] SF.net SVN: scummvm: [31489] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Apr 13 01:26:13 CEST 2008


Revision: 31489
          http://scummvm.svn.sourceforge.net/scummvm/?rev=31489&view=rev
Author:   lordhoto
Date:     2008-04-12 16:26:13 -0700 (Sat, 12 Apr 2008)

Log Message:
-----------
Added fade out time parameter for digital sounds.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/kyra_v3.cpp
    scummvm/trunk/engines/kyra/sound.h
    scummvm/trunk/engines/kyra/sound_digital.cpp

Modified: scummvm/trunk/engines/kyra/kyra_v3.cpp
===================================================================
--- scummvm/trunk/engines/kyra/kyra_v3.cpp	2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/kyra_v3.cpp	2008-04-12 23:26:13 UTC (rev 31489)
@@ -167,11 +167,11 @@
 			break;
 
 		case 3:
-			uninitMainMenu();
-			_soundDigital->beginFadeOut(_musicSoundChannel);
+			_soundDigital->beginFadeOut(_musicSoundChannel, 60);
 			_screen->fadeToBlack();
 			_soundDigital->stopSound(_musicSoundChannel);
 			_musicSoundChannel = -1;
+			uninitMainMenu();
 			running = false;
 			break;
 
@@ -231,7 +231,7 @@
 			_screen->copyRegion(0, 0, 0, 0, 320, 200, 0, 3);
 
 		_screen->hideMouse();
-		_soundDigital->beginFadeOut(_musicSoundChannel);
+		_soundDigital->beginFadeOut(_musicSoundChannel, 60);
 		_musicSoundChannel = -1;
 		_screen->fadeToBlack();
 		vqa.setDrawPage(0);

Modified: scummvm/trunk/engines/kyra/sound.h
===================================================================
--- scummvm/trunk/engines/kyra/sound.h	2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/sound.h	2008-04-12 23:26:13 UTC (rev 31489)
@@ -541,8 +541,9 @@
 	 * fading out.
 	 *
 	 * @param channel	channel number
+	 * @param ticks		fadeout time
 	 */
-	void beginFadeOut(int channel);
+	void beginFadeOut(int channel, int ticks);
 private:
 	KyraEngine *_vm;
 	Audio::Mixer *_mixer;

Modified: scummvm/trunk/engines/kyra/sound_digital.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_digital.cpp	2008-04-12 23:17:21 UTC (rev 31488)
+++ scummvm/trunk/engines/kyra/sound_digital.cpp	2008-04-12 23:26:13 UTC (rev 31489)
@@ -46,8 +46,8 @@
 
 	int getRate() const { return _rate; }
 
-	void beginFadeIn();
-	void beginFadeOut();
+	void beginFadeIn(uint32 millis);
+	void beginFadeOut(uint32 millis);
 private:
 	Common::SeekableReadStream *_stream;
 	bool _loop;
@@ -90,10 +90,7 @@
 	_totalSize = _stream->readUint32LE();
 	_loop = loop;
 
-	// TODO: Find the correct number of samples for a fade-in/out. Should
-	//       probably take the same amount of time as a palette fade.
-
-	_fadeSamples = 2 * getRate();
+	_fadeSamples = 0;
 	_fading = 0;
 
 	// TODO?: add checks
@@ -102,9 +99,9 @@
 
 	_loopStart = stream->pos();
 
-	if (type == 1 && !flags) {
+	if (type == 1 && !flags)
 		_endOfData = false;
-	} else
+	else
 		warning("No AUD file (rate: %d, size: %d, flags: 0x%X, type: %d)", _rate, _totalSize, flags, type);
 }
 
@@ -114,13 +111,15 @@
 	delete _stream;
 }
 
-void AUDStream::beginFadeIn() {
+void AUDStream::beginFadeIn(uint32 millis) {
+	_fadeSamples = (millis * getRate()) / 1000;
 	if (_fading == 0)
 		_fadeCount = 0;
 	_fading = 1;
 }
 
-void AUDStream::beginFadeOut() {
+void AUDStream::beginFadeOut(uint32 millis) {
+	_fadeSamples = (millis * getRate()) / 1000;
 	if (_fading == 0)
 		_fadeCount = _fadeSamples;
 	_fading = -1;
@@ -356,8 +355,9 @@
 		return -1;
 	}
 
+	// Just guessed
 	if (fadeIn)
-		use->stream->beginFadeIn();
+		use->stream->beginFadeIn(60 * _vm->tickLength());
 
 	// TODO: set correct sound type from channel id
 	_mixer->playInputStream(Audio::Mixer::kPlainSoundType, &use->handle, use->stream);
@@ -380,9 +380,9 @@
 	_sounds[channel].stream = 0;
 }
 
-void SoundDigital::beginFadeOut(int channel) {
+void SoundDigital::beginFadeOut(int channel, int ticks) {
 	if (isPlaying(channel))
-		_sounds[channel].stream->beginFadeOut();
+		_sounds[channel].stream->beginFadeOut(ticks * _vm->tickLength());
 }
 
 } // end of namespace Kyra


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