aboutsummaryrefslogtreecommitdiff
path: root/engines/simon/simon.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-06-01 12:06:53 +0000
committerTravis Howell2006-06-01 12:06:53 +0000
commitd64ea1ad87066aae2fae5f06b70d7b0358b78af9 (patch)
tree28b4ae9f586162a243bb8c6b65c7ed8784c000e5 /engines/simon/simon.cpp
parent4c9b3ce5e3e6997f20e662ce61ded442edfa84e4 (diff)
downloadscummvm-rg350-d64ea1ad87066aae2fae5f06b70d7b0358b78af9.tar.gz
scummvm-rg350-d64ea1ad87066aae2fae5f06b70d7b0358b78af9.tar.bz2
scummvm-rg350-d64ea1ad87066aae2fae5f06b70d7b0358b78af9.zip
Fix wait timeout during introduction of demo version of Simon the Sorcerer 1 (With speech)
svn-id: r22815
Diffstat (limited to 'engines/simon/simon.cpp')
-rw-r--r--engines/simon/simon.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/engines/simon/simon.cpp b/engines/simon/simon.cpp
index 865a3c9765..ea8fedfc68 100644
--- a/engines/simon/simon.cpp
+++ b/engines/simon/simon.cpp
@@ -281,7 +281,10 @@ SimonEngine::SimonEngine(OSystem *syst)
_frameRate = 0;
_zoneNumber = 0;
+
_vgaWaitFor = 0;
+ _lastVgaWaitFor = 0;
+
_vgaCurZoneNum = 0;
_vgaCurSpriteId = 0;
_vgaCurSpritePriority = 0;
@@ -1571,6 +1574,15 @@ void SimonEngine::set_video_mode_internal(uint16 mode, uint16 vga_res_id) {
void SimonEngine::waitForSync(uint a) {
const uint maxCount = (getGameType() == GType_SIMON1) ? 500 : 1000;
+ if (getGameType() == GType_SIMON1 && (getFeatures() & GF_TALKIE)) {
+ if (a != 200) {
+ uint16 tmp = _lastVgaWaitFor;
+ _lastVgaWaitFor = 0;
+ if (tmp == a)
+ return;
+ }
+ }
+
_vgaWaitFor = a;
_syncCount = 0;
_exitCutscene = false;
@@ -1779,6 +1791,9 @@ void SimonEngine::loadSprite(uint windowNum, uint zoneNum, uint vgaSpriteId, uin
byte *p, *pp;
uint count;
+ if (vgaSpriteId >= 400)
+ _lastVgaWaitFor = 0;
+
_lockWord |= 0x40;
if (isSpriteLoaded(vgaSpriteId, zoneNum)) {