aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2008-04-12 23:26:13 +0000
committerJohannes Schickel2008-04-12 23:26:13 +0000
commitd54eaa39a14bc9ec81ffee09ed2c8f25348286df (patch)
tree4f836c97ea4f8b957cb7fb4980e93e9ab78661a5 /engines
parent1f91dc03846caecc0651101f54ad25f1864ae132 (diff)
downloadscummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.tar.gz
scummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.tar.bz2
scummvm-rg350-d54eaa39a14bc9ec81ffee09ed2c8f25348286df.zip
Added fade out time parameter for digital sounds.
svn-id: r31489
Diffstat (limited to 'engines')
-rw-r--r--engines/kyra/kyra_v3.cpp6
-rw-r--r--engines/kyra/sound.h3
-rw-r--r--engines/kyra/sound_digital.cpp26
3 files changed, 18 insertions, 17 deletions
diff --git a/engines/kyra/kyra_v3.cpp b/engines/kyra/kyra_v3.cpp
index 0d6b1934d9..d281da3bb8 100644
--- a/engines/kyra/kyra_v3.cpp
+++ b/engines/kyra/kyra_v3.cpp
@@ -167,11 +167,11 @@ int KyraEngine_v3::go() {
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 @@ void KyraEngine_v3::playVQA(const char *name) {
_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);
diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h
index c6f416db5b..456a1096ac 100644
--- a/engines/kyra/sound.h
+++ b/engines/kyra/sound.h
@@ -541,8 +541,9 @@ public:
* 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;
diff --git a/engines/kyra/sound_digital.cpp b/engines/kyra/sound_digital.cpp
index 0f59e0664d..ab36423df6 100644
--- a/engines/kyra/sound_digital.cpp
+++ b/engines/kyra/sound_digital.cpp
@@ -46,8 +46,8 @@ public:
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 @@ AUDStream::AUDStream(Common::SeekableReadStream *stream, bool loop) : _stream(st
_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 @@ AUDStream::AUDStream(Common::SeekableReadStream *stream, bool loop) : _stream(st
_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 @@ AUDStream::~AUDStream() {
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 @@ int SoundDigital::playSound(Common::SeekableReadStream *stream, bool loop, bool
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 @@ void SoundDigital::stopSound(int channel) {
_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