aboutsummaryrefslogtreecommitdiff
path: root/simon
diff options
context:
space:
mode:
authorTravis Howell2003-07-24 14:21:56 +0000
committerTravis Howell2003-07-24 14:21:56 +0000
commit635fea9b178825a404cb6aec5a389ed3d66afc8f (patch)
treee301d6b4f030a3ca7c72e822f99237d8b7580c28 /simon
parent55c71f65c0794acb45acd4ac07854bd5b53e4429 (diff)
downloadscummvm-rg350-635fea9b178825a404cb6aec5a389ed3d66afc8f.tar.gz
scummvm-rg350-635fea9b178825a404cb6aec5a389ed3d66afc8f.tar.bz2
scummvm-rg350-635fea9b178825a404cb6aec5a389ed3d66afc8f.zip
Simon games shold only play one voice at a time.
Fixes many voice overlaps Fixes subtitles been ot of sync with voice, with simon 1 versions that had combi ned speech/subtitles. svn-id: r9167
Diffstat (limited to 'simon')
-rw-r--r--simon/simon.cpp5
-rw-r--r--simon/sound.cpp3
2 files changed, 4 insertions, 4 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp
index 7bc8ef60e2..7ed2014afb 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -2389,8 +2389,7 @@ void SimonEngine::expire_vga_timers() {
_vga_tick_counter++;
while (vte->delay) {
- // not quite ok, good enough
- if ((int16)(vte->delay -= 5) <= 0) {
+ if (!--vte->delay) {
uint16 cur_file = vte->cur_vga_file;
uint16 cur_unk = vte->sprite_id;
byte *script_ptr = vte->script_pointer;
@@ -2399,8 +2398,6 @@ void SimonEngine::expire_vga_timers() {
delete_vga_timer(vte);
if (script_ptr == NULL) {
- // special scroll timer
- scroll_timeout();
} else {
vc_resume_sprite(script_ptr, cur_file, cur_unk);
}
diff --git a/simon/sound.cpp b/simon/sound.cpp
index 9276e3a40e..18b84e86a5 100644
--- a/simon/sound.cpp
+++ b/simon/sound.cpp
@@ -450,6 +450,9 @@ void SimonSound::playVoice(uint sound) {
if (!_voice)
return;
+ if (_voice)
+ _mixer->stop(_voice_index);
+
if (_game == GAME_SIMON1CD32)
_voice_index = _voice->playSound(sound, &_voice_handle, FLAG_SIGNED);
else