[Scummvm-cvs-logs] SF.net SVN: scummvm: [22815] scummvm/trunk/engines/simon

kirben at users.sourceforge.net kirben at users.sourceforge.net
Thu Jun 1 05:08:05 CEST 2006


Revision: 22815
Author:   kirben
Date:     2006-06-01 05:06:53 -0700 (Thu, 01 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=22815&view=rev

Log Message:
-----------
Fix wait timeout during introduction of demo version of Simon the Sorcerer 1 (With speech)

Modified Paths:
--------------
    scummvm/trunk/engines/simon/simon.cpp
    scummvm/trunk/engines/simon/simon.h
    scummvm/trunk/engines/simon/vga.cpp
Modified: scummvm/trunk/engines/simon/simon.cpp
===================================================================
--- scummvm/trunk/engines/simon/simon.cpp	2006-06-01 09:49:56 UTC (rev 22814)
+++ scummvm/trunk/engines/simon/simon.cpp	2006-06-01 12:06:53 UTC (rev 22815)
@@ -281,7 +281,10 @@
 	_frameRate = 0;
 
 	_zoneNumber = 0;
+
 	_vgaWaitFor = 0;
+	_lastVgaWaitFor = 0;
+
 	_vgaCurZoneNum = 0;
 	_vgaCurSpriteId = 0;
 	_vgaCurSpritePriority = 0;
@@ -1571,6 +1574,15 @@
 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 @@
 	byte *p, *pp;
 	uint count;
 
+	if (vgaSpriteId >= 400)
+		_lastVgaWaitFor = 0;
+
 	_lockWord |= 0x40;
 
 	if (isSpriteLoaded(vgaSpriteId, zoneNum)) {

Modified: scummvm/trunk/engines/simon/simon.h
===================================================================
--- scummvm/trunk/engines/simon/simon.h	2006-06-01 09:49:56 UTC (rev 22814)
+++ scummvm/trunk/engines/simon/simon.h	2006-06-01 12:06:53 UTC (rev 22815)
@@ -377,8 +377,8 @@
 	uint16 _frameRate;
 
 	uint16 _zoneNumber;
-	uint16 _vgaWaitFor, _vgaCurZoneNum;
-	uint16 _vgaCurSpriteId;
+	uint16 _vgaWaitFor, _lastVgaWaitFor;
+	uint16 _vgaCurSpriteId, _vgaCurZoneNum;
 	uint16 _vgaCurSpritePriority;
 
 	int16 _baseY;

Modified: scummvm/trunk/engines/simon/vga.cpp
===================================================================
--- scummvm/trunk/engines/simon/vga.cpp	2006-06-01 09:49:56 UTC (rev 22814)
+++ scummvm/trunk/engines/simon/vga.cpp	2006-06-01 12:06:53 UTC (rev 22815)
@@ -1540,6 +1540,7 @@
 		}
 	}
 
+	_lastVgaWaitFor = id;
 	/* clear a wait event */
 	if (id == _vgaWaitFor)
 		_vgaWaitFor = 0;
@@ -1713,6 +1714,8 @@
 
 	_lockWord |= 8;
 
+	_lastVgaWaitFor = 0;
+
 	memset(&bak, 0, sizeof(bak));
 
 	vsp = _vgaSprites;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list