aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2006-09-29 06:58:59 +0000
committerTravis Howell2006-09-29 06:58:59 +0000
commit3d71f16b47c8af0f69c1f25af0eaa69f67a9beba (patch)
treeccbd48d4473eae492568773c08c2e275806750a7
parent2a6e1d26cf3516a6334215eecb61f4036a630575 (diff)
downloadscummvm-rg350-3d71f16b47c8af0f69c1f25af0eaa69f67a9beba.tar.gz
scummvm-rg350-3d71f16b47c8af0f69c1f25af0eaa69f67a9beba.tar.bz2
scummvm-rg350-3d71f16b47c8af0f69c1f25af0eaa69f67a9beba.zip
PP uses voice channel for looping music
svn-id: r24007
-rw-r--r--engines/simon/sound.cpp12
-rw-r--r--engines/simon/sound.h1
-rw-r--r--engines/simon/vga.cpp5
3 files changed, 15 insertions, 3 deletions
diff --git a/engines/simon/sound.cpp b/engines/simon/sound.cpp
index 36766da685..2ac4e629eb 100644
--- a/engines/simon/sound.cpp
+++ b/engines/simon/sound.cpp
@@ -484,8 +484,9 @@ void Sound::playVoice(uint sound) {
return;
_mixer->stopHandle(_voiceHandle);
- if (_vm->getGameType() == GType_FF || _vm->getGameType() == GType_PP ||
- _vm->getGameId() == GID_SIMON1CD32) {
+ if (_vm->getGameType() == GType_PP) {
+ _voice->playSound(sound, &_voiceHandle, Audio::Mixer::FLAG_LOOP);
+ } else if (_vm->getGameType() == GType_FF || _vm->getGameId() == GID_SIMON1CD32) {
_voice->playSound(sound, &_voiceHandle, 0);
} else {
_voice->playSound(sound, &_voiceHandle, Audio::Mixer::FLAG_UNSIGNED);
@@ -526,6 +527,13 @@ bool Sound::isVoiceActive() const {
return _mixer->isSoundHandleActive(_voiceHandle);
}
+void Sound::stopAllSfx() {
+ _mixer->stopHandle(_ambientHandle);
+ _mixer->stopHandle(_effectsHandle);
+ _mixer->stopHandle(_sfx5Handle);
+ _ambientPlaying = 0;
+}
+
void Sound::stopVoice() {
_mixer->stopHandle(_voiceHandle);
}
diff --git a/engines/simon/sound.h b/engines/simon/sound.h
index 5604a5d2bc..f744e18498 100644
--- a/engines/simon/sound.h
+++ b/engines/simon/sound.h
@@ -85,6 +85,7 @@ public:
bool hasVoice() const;
bool isVoiceActive() const;
+ void stopAllSfx();
void stopSfx5();
void stopVoice();
void stopAll();
diff --git a/engines/simon/vga.cpp b/engines/simon/vga.cpp
index 50b2d550fe..a91ce5ac4e 100644
--- a/engines/simon/vga.cpp
+++ b/engines/simon/vga.cpp
@@ -1796,7 +1796,10 @@ void SimonEngine::vc28_dummy_op() {
}
void SimonEngine::vc29_stopAllSounds() {
- _sound->stopAll();
+ if (getGameType() != GType_PP)
+ _sound->stopVoice();
+
+ _sound->stopAllSfx();
}
void SimonEngine::vc30_setFrameRate() {