[Scummvm-cvs-logs] SF.net SVN: scummvm:[41315] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sun Jun 7 02:51:19 CEST 2009


Revision: 41315
          http://scummvm.svn.sourceforge.net/scummvm/?rev=41315&view=rev
Author:   lordhoto
Date:     2009-06-07 00:51:19 +0000 (Sun, 07 Jun 2009)

Log Message:
-----------
Fix WSA v2 code, now the automap remove WSA file in Lands of Lore plays correctly.

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/wsamovie.cpp
    scummvm/trunk/engines/kyra/wsamovie.h

Modified: scummvm/trunk/engines/kyra/wsamovie.cpp
===================================================================
--- scummvm/trunk/engines/kyra/wsamovie.cpp	2009-06-07 00:37:30 UTC (rev 41314)
+++ scummvm/trunk/engines/kyra/wsamovie.cpp	2009-06-07 00:51:19 UTC (rev 41315)
@@ -416,18 +416,14 @@
 
 	for (int i = 1; i < _numFrames + 2; ++i) {
 		_frameOffsTable[i] = READ_LE_UINT32(wsaData);
+		if (_frameOffsTable[i])
+			_frameOffsTable[i] -= frameDataOffs;
 		wsaData += 4;
 	}
 
-	for (int i = 1; i < _numFrames; ++i)
-		_frameOffsTable[i] -= frameDataOffs;
+	if (!_frameOffsTable[_numFrames + 1])
+		_flags |= WF_NO_LAST_FRAME;
 
-	// WSA movies without last frame offset need special treatment
-	if (_frameOffsTable[_numFrames + 1])
-		_frameOffsTable[_numFrames] -= frameDataOffs;
-	else
-		_frameOffsTable[_numFrames] = 0;
-
 	// skip palette
 	wsaData += offsPal;
 
@@ -477,13 +473,13 @@
 	int frameCount;
 	if (_currentFrame < frameNum) {
 		frameCount = _numFrames - frameNum + _currentFrame;
-		if (diffCount > frameCount)
+		if (diffCount > frameCount && !(_flags & WF_NO_LAST_FRAME))
 			frameStep = -1;
 		else
 			frameCount = diffCount;
 	} else {
 		frameCount = _numFrames - _currentFrame + frameNum;
-		if (frameCount >= diffCount) {
+		if (frameCount >= diffCount || (_flags & WF_NO_LAST_FRAME)) {
 			frameStep = -1;
 			frameCount = diffCount;
 		}

Modified: scummvm/trunk/engines/kyra/wsamovie.h
===================================================================
--- scummvm/trunk/engines/kyra/wsamovie.h	2009-06-07 00:37:30 UTC (rev 41314)
+++ scummvm/trunk/engines/kyra/wsamovie.h	2009-06-07 00:51:19 UTC (rev 41315)
@@ -80,6 +80,7 @@
 
 	enum WSAFlags {
 		WF_OFFSCREEN_DECODE = 0x10,
+		WF_NO_LAST_FRAME = 0x20,
 		WF_NO_FIRST_FRAME = 0x40,
 		WF_HAS_PALETTE = 0x100,
 		WF_XOR = 0x200


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