aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2006-03-12 15:38:59 +0000
committerJohannes Schickel2006-03-12 15:38:59 +0000
commitcb085df0f554354e9fb811a8490a954b0820e83a (patch)
treed0fbb634227cac0513d88fcc859b1c1f15f807b4 /engines
parentcd28f28d3248d1186a797fcb77a512efaaf31ad3 (diff)
downloadscummvm-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')
-rw-r--r--engines/kyra/sound.cpp20
-rw-r--r--engines/kyra/sound.h2
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);