[Scummvm-cvs-logs] SF.net SVN: scummvm: [27918] scummvm/trunk/engines/parallaction/disk.cpp

Kirben at users.sourceforge.net Kirben at users.sourceforge.net
Thu Jul 5 09:39:54 CEST 2007


Revision: 27918
          http://scummvm.svn.sourceforge.net/scummvm/?rev=27918&view=rev
Author:   Kirben
Date:     2007-07-05 00:39:53 -0700 (Thu, 05 Jul 2007)

Log Message:
-----------
Skip DLTA frames for now, when loading character face data in the Amiga multi-lingual version. To prevent reading past the end of data.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/disk.cpp

Modified: scummvm/trunk/engines/parallaction/disk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk.cpp	2007-07-05 06:38:54 UTC (rev 27917)
+++ scummvm/trunk/engines/parallaction/disk.cpp	2007-07-05 07:39:53 UTC (rev 27918)
@@ -699,26 +699,32 @@
 	byte s0, s1, s2, s3, s4, mask, t0, t1, t2, t3, t4;
 
 	for (uint32 i = 0; i < numFrames; i++) {
-		for (uint32 j = 0; j < planeSize; j++) {
-			s0 = src[j];
-			s1 = src[j+planeSize];
-			s2 = src[j+planeSize*2];
-			s3 = src[j+planeSize*3];
-			s4 = src[j+planeSize*4];
+		if (READ_BE_UINT32(src) == MKID_BE('DLTA')) {
+			// TODO: Add support for delta encoding
+			uint32 size = READ_BE_UINT32(src + 4);
 
-			for (uint32 k = 0; k < 8; k++) {
-				mask = 1 << (7 - k);
-				t0 = (s0 & mask ? 1 << 0 : 0);
-				t1 = (s1 & mask ? 1 << 1 : 0);
-				t2 = (s2 & mask ? 1 << 2 : 0);
-				t3 = (s3 & mask ? 1 << 3 : 0);
-				t4 = (s4 & mask ? 1 << 4 : 0);
-				*dst++ = t0 | t1 | t2 | t3 | t4;
+			src += size + 8;
+		} else {
+			for (uint32 j = 0; j < planeSize; j++) {
+				s0 = src[j];
+				s1 = src[j+planeSize];
+				s2 = src[j+planeSize*2];
+				s3 = src[j+planeSize*3];
+				s4 = src[j+planeSize*4];
+
+				for (uint32 k = 0; k < 8; k++) {
+					mask = 1 << (7 - k);
+					t0 = (s0 & mask ? 1 << 0 : 0);
+					t1 = (s1 & mask ? 1 << 1 : 0);
+					t2 = (s2 & mask ? 1 << 2 : 0);
+					t3 = (s3 & mask ? 1 << 3 : 0);
+					t4 = (s4 & mask ? 1 << 4 : 0);
+					*dst++ = t0 | t1 | t2 | t3 | t4;
+				}
+
 			}
-
+			src += planeSize * NUM_PLANES;
 		}
-
-		src += planeSize * NUM_PLANES;
 	}
 }
 


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