diff options
author | Johannes Schickel | 2006-03-12 15:38:59 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-03-12 15:38:59 +0000 |
commit | cb085df0f554354e9fb811a8490a954b0820e83a (patch) | |
tree | d0fbb634227cac0513d88fcc859b1c1f15f807b4 /engines/kyra | |
parent | cd28f28d3248d1186a797fcb77a512efaaf31ad3 (diff) | |
download | scummvm-rg350-cb085df0f554354e9fb811a8490a954b0820e83a.tar.gz scummvm-rg350-cb085df0f554354e9fb811a8490a954b0820e83a.tar.bz2 scummvm-rg350-cb085df0f554354e9fb811a8490a954b0820e83a.zip |
Fixes non looping tracks and a fading bug, which silenced the music, with mt-32.
svn-id: r21236
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/sound.cpp | 20 | ||||
-rw-r--r-- | engines/kyra/sound.h | 2 |
2 files changed, 18 insertions, 4 deletions
diff --git a/engines/kyra/sound.cpp b/engines/kyra/sound.cpp index 9e0434da8f..bd1c3d464c 100644 --- a/engines/kyra/sound.cpp +++ b/engines/kyra/sound.cpp @@ -250,7 +250,7 @@ void SoundMidiPC::playMusic(uint8 *data, uint32 size) { _parser->setTrack(0); _parser->setMidiDriver(this); _parser->setTimerRate(getBaseTempo()); - _parser->property(MidiParser::mpAutoLoop, false); + _parser->property(MidiParser::mpAutoLoop, true); } void SoundMidiPC::loadSoundEffectFile(const char *file) { @@ -323,7 +323,7 @@ void SoundMidiPC::onTimer(void *refCon) { if (music->_fadeMusicOut && music->_fadeStartTime + musicFadeTime > music->_engine->_system->getMillis()) { byte volume = (byte)((musicFadeTime - (music->_engine->_system->getMillis() - music->_fadeStartTime)) * 255 / musicFadeTime); music->setVolume(volume); - } else if(music->_fadeStartTime) { + } else if (music->_fadeStartTime) { music->setVolume(255); music->_fadeStartTime = 0; music->_fadeMusicOut = false; @@ -359,12 +359,27 @@ void SoundMidiPC::onTimer(void *refCon) { void SoundMidiPC::playTrack(uint8 track) { if (_parser) { _isPlaying = true; + _fadeMusicOut = false; + _fadeStartTime = 0; + setVolume(255); _parser->setTrack(track); _parser->jumpToTick(0); _parser->setTempo(1); } } +void SoundMidiPC::haltTrack() { + if (_parser) { + _isPlaying = false; + _fadeMusicOut = false; + _fadeStartTime = 0; + setVolume(255); + _parser->setTrack(0); + _parser->jumpToTick(0); + _parser->setTempo(1); + } +} + void SoundMidiPC::playSoundEffect(uint8 track) { if (_soundEffect) { _sfxIsPlaying = true; @@ -375,7 +390,6 @@ void SoundMidiPC::playSoundEffect(uint8 track) { } void SoundMidiPC::beginFadeOut() { - // this should be something like fade out... _fadeMusicOut = true; _fadeStartTime = _engine->_system->getMillis(); } diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h index 1d90d24335..348f1768e4 100644 --- a/engines/kyra/sound.h +++ b/engines/kyra/sound.h @@ -130,7 +130,7 @@ public: void loadMusicFile(const char *file); void playTrack(uint8 track); - void haltTrack() { _isPlaying = false; } + void haltTrack(); void playSoundEffect(uint8 track); |