diff options
author | Travis Howell | 2006-06-01 12:06:53 +0000 |
---|---|---|
committer | Travis Howell | 2006-06-01 12:06:53 +0000 |
commit | d64ea1ad87066aae2fae5f06b70d7b0358b78af9 (patch) | |
tree | 28b4ae9f586162a243bb8c6b65c7ed8784c000e5 /engines/simon/simon.cpp | |
parent | 4c9b3ce5e3e6997f20e662ce61ded442edfa84e4 (diff) | |
download | scummvm-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.cpp | 15 |
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)) { |