[Scummvm-cvs-logs] CVS: scummvm/scumm bundle.cpp,1.32,1.33

Max Horn fingolfin at users.sourceforge.net
Sat Mar 8 15:05:01 CET 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv8578

Modified Files:
	bundle.cpp 
Log Message:
cleanup / optimization

Index: bundle.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/bundle.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- bundle.cpp	8 Mar 2003 22:55:09 -0000	1.32
+++ bundle.cpp	8 Mar 2003 23:04:24 -0000	1.33
@@ -24,7 +24,7 @@
 #include "bundle.h"
 #include "file.h"
 
-int16 imcTable[] = {
+const int16 imcTable[] = {
 	0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x0010, 0x0011,
 	0x0013, 0x0015, 0x0017, 0x0019, 0x001C, 0x001F, 0x0022, 0x0025, 0x0029, 0x002D,
 	0x0032, 0x0037, 0x003C, 0x0042, 0x0049, 0x0050, 0x0058, 0x0061, 0x006B, 0x0076,
@@ -36,57 +36,59 @@
 	0x3BB9, 0x41B2, 0x4844, 0x4F7E, 0x5771, 0x602F, 0x69CE, 0x7462, 0x7FFF
 };
 
-byte imxOtherTable1[] = {
-	0xFF, 0x04, 0xFF, 0x04
-};
-
-byte imxOtherTable2[] = {
-	0xFF, 0xFF, 0x02, 0x08, 0xFF, 0xFF, 0x02, 0x08
-};
-
-byte imxOtherTable3[] = {
-	0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x04, 0x06,
-	0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x04, 0x06
-};
-
-byte imxOtherTable4[] = {
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x04, 0x06, 0x08, 0x0C, 0x10, 0x20,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x04, 0x06, 0x08, 0x0C, 0x10, 0x20
-};
-
-byte imxOtherTable5[] = {
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
-	0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x20,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
-	0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x20
-};
-
-byte imxOtherTable6[] = {
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-	0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
-	0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
-	0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
-	0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
-	0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
-	0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20
+const byte imxOtherTable[6][128] = {
+	{
+		0xFF, 0x04, 0xFF, 0x04
+	},
+	
+	{
+		0xFF, 0xFF, 0x02, 0x08, 0xFF, 0xFF, 0x02, 0x08
+	},
+	
+	{
+		0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x04, 0x06,
+		0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x04, 0x06
+	},
+	
+	{
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x04, 0x06, 0x08, 0x0C, 0x10, 0x20,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x04, 0x06, 0x08, 0x0C, 0x10, 0x20
+	},
+	
+	{
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
+		0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x20,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
+		0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x20
+	},
+	
+	{
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+		0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
+		0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+		0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+		0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+		0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
+		0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+		0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20
+	}
 };
 
-byte imxShortTable[] = {
+const byte imxShortTable[] = {
 	0, 0, 1, 3, 7, 15, 31, 63
 };
 
@@ -867,13 +869,13 @@
 						return output_size;
 				}
 
-				do {
+				while (left--) {
 					curTableEntry = _destImcTable[curTablePos];
 					decompTable = curTableEntry - 2;
 					var3b = (1 << decompTable) << 1;
 					readPos = src + (tableEntrySum >> 3);
 					if (readPos+1 >= (comp_input+input_size)) {
-						printf("Overflow!!! %d >= %d\n", (int)readPos+1, (int)comp_input+input_size);
+						warning("Overflow!!! %d >= %d", (int)readPos+1, (int)comp_input+input_size);
 					}
 					readWord = (uint16)(READ_BE_UINT16(readPos) << (tableEntrySum & 7));
 					otherTablePos = (byte)(readWord >> (16 - curTableEntry));
@@ -892,27 +894,19 @@
 						outputWord = -0x8000;
 					dst[destPos] = ((int16)outputWord) >> 8;
 					dst[destPos + 1] = (byte)(outputWord);
-					switch (decompTable) {
-						case 0: curTablePos += (signed char)imxOtherTable1[otherTablePos];
-							break;
-						case 1: curTablePos += (signed char)imxOtherTable2[otherTablePos];
-							break;
-						case 2: curTablePos += (signed char)imxOtherTable3[otherTablePos];
-							break;
-						case 3: curTablePos += (signed char)imxOtherTable4[otherTablePos];
-							break;
-						case 4: curTablePos += (signed char)imxOtherTable5[otherTablePos];
-							break;
-						case 5: curTablePos += (signed char)imxOtherTable6[otherTablePos];
-							break;
-					}
+
+					assert(decompTable < 6);
+					curTablePos += (signed char)imxOtherTable[decompTable][otherTablePos];
+
+					// Clip data
 					if (curTablePos > 88)
 						curTablePos = 88;
 					if (curTablePos < 0)
 						curTablePos = 0;
+
 					destPos += channels << 1;
 					imcTableEntry = imcTable[curTablePos];
-				} while (--left != 0);
+				}
 			}
 		}
 		break;





More information about the Scummvm-git-logs mailing list