diff options
author | Oliver Kiehl | 2002-12-07 17:36:38 +0000 |
---|---|---|
committer | Oliver Kiehl | 2002-12-07 17:36:38 +0000 |
commit | a42d84f01ee8082614a4753f1649f2a67a9deac2 (patch) | |
tree | 370f5996c600fcb5bc09b03d43555359816db2d2 | |
parent | 0ecd439fe1e719e568f0bab78558aa0314f617ed (diff) | |
download | scummvm-rg350-a42d84f01ee8082614a4753f1649f2a67a9deac2.tar.gz scummvm-rg350-a42d84f01ee8082614a4753f1649f2a67a9deac2.tar.bz2 scummvm-rg350-a42d84f01ee8082614a4753f1649f2a67a9deac2.zip |
added the possibility to interrupt conversations in simon2 as in the original game
svn-id: r5870
-rw-r--r-- | simon/simon.cpp | 25 | ||||
-rw-r--r-- | simon/simon.h | 1 |
2 files changed, 22 insertions, 4 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp index bbf5978d4e..49a90019e9 100644 --- a/simon/simon.cpp +++ b/simon/simon.cpp @@ -1133,8 +1133,8 @@ void SimonState::startSubroutine170() { Subroutine *sub; - /* XXX: stop speech */ - + _sound->stopVoice(); + sub = getSubroutineByID(170); if (sub != NULL) startSubroutineEx(sub); @@ -2475,7 +2475,6 @@ get_out:; #endif } - void SimonState::o_wait_for_vga(uint a) { _vga_wait_for = a; @@ -2489,6 +2488,12 @@ void SimonState::o_wait_for_vga(uint a) startSubroutine170(); break; } + if (_game & GAME_SIMON2) { + if (_vga_wait_for == 200 && !vc_get_bit(14)) { + skip_speech(); + break; + } + } } else { processSpecialKeys(); } @@ -2509,6 +2514,18 @@ void SimonState::o_wait_for_vga(uint a) _system->show_mouse(true); } +void SimonState::skip_speech() +{ + _sound->stopVoice(); + if (!(_bit_array[1] & 0x1000)) { + _bit_array[0] |= 0x4000; + _variableArray[200] = 5; + start_vga_code(4, 1, 0x1e, 0, 0, 0); + o_wait_for_vga(0x82); + o_unk_99_simon2(2, 1); + } +} + void SimonState::timer_vga_sprites() { VgaSprite *vsp; @@ -3761,7 +3778,7 @@ void SimonState::talk_with_speech(uint speech_id, uint num_1) return; if (!(_bit_array[0] & 0x4000 || _bit_array[1] & 0x1000)) { _bit_array[0] |= 0x4000; - + _variableArray[200] = 5; start_vga_code(4, 1, 0x1e, 0, 0, 0); o_wait_for_vga(0x82); } diff --git a/simon/simon.h b/simon/simon.h index 29a3053384..52b158742c 100644 --- a/simon/simon.h +++ b/simon/simon.h @@ -452,6 +452,7 @@ public: void o_unk_114(); void o_wait_for_vga(uint a); + void skip_speech(); void o_unk_120(uint a); void o_unk_126(); void o_unk_127(); |