[Scummvm-cvs-logs] CVS: scummvm/sky disk.cpp,1.64,1.65 disk.h,1.18,1.19 rnc_deco.cpp,1.20,1.21 rnc_deco.h,1.7,1.8

Joost Peters joostp at users.sourceforge.net
Fri Feb 11 03:16:32 CET 2005


Update of /cvsroot/scummvm/scummvm/sky
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19468/sky

Modified Files:
	disk.cpp disk.h rnc_deco.cpp rnc_deco.h 
Log Message:
Make rnc unpacker a member of Disk class so it reuses the same object, and change rnc code to only build the crc table once instead of for every unpack operation.
This should speed it up a bit.


Index: disk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/disk.cpp,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -d -r1.64 -r1.65
--- disk.cpp	1 Jan 2005 16:09:20 -0000	1.64
+++ disk.cpp	11 Feb 2005 11:14:21 -0000	1.65
@@ -153,11 +153,10 @@
 
 		uint8 *uncompDest = (uint8 *)malloc(decompSize);
 
-		RncDecoder rncDecoder;
 		int32 unpackLen;
 		if ((fileFlags >> 22) & 0x1) { //do we include the header?
 			// don't return the file's header
-			unpackLen = rncDecoder.unpackM1(fileDest + sizeof(dataFileHeader), uncompDest, 0);
+			unpackLen = _rncDecoder.unpackM1(fileDest + sizeof(dataFileHeader), uncompDest, 0);
 		} else {
 #ifdef SCUMM_BIG_ENDIAN
 			// Convert dataFileHeader to BE (it only consists of 16 bit words)
@@ -166,7 +165,7 @@
 				*(headPtr + i) = READ_LE_UINT16(headPtr + i);
 #endif
 			memcpy(uncompDest, fileDest, sizeof(dataFileHeader));
-			unpackLen = rncDecoder.unpackM1(fileDest + sizeof(dataFileHeader), uncompDest + sizeof(dataFileHeader), 0);
+			unpackLen = _rncDecoder.unpackM1(fileDest + sizeof(dataFileHeader), uncompDest + sizeof(dataFileHeader), 0);
 			if (unpackLen)
 				unpackLen += sizeof(dataFileHeader);
 		}

Index: disk.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/disk.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- disk.h	1 Jan 2005 16:09:20 -0000	1.18
+++ disk.h	11 Feb 2005 11:14:31 -0000	1.19
@@ -25,6 +25,7 @@
 #include "stdafx.h"
 #include "common/scummsys.h"
 #include "common/str.h"
+#include "sky/rnc_deco.h"
 
 class File;
 
@@ -74,7 +75,8 @@
 	uint8 *_dinnerTableArea;
 	File *_dataDiskHandle;
 	File *_dnrHandle;
-
+	RncDecoder _rncDecoder;
+	
 	uint16 _buildList[MAX_FILES_IN_LIST];
 	uint32 _loadedFilesList[MAX_FILES_IN_LIST];
 };

Index: rnc_deco.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/rnc_deco.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- rnc_deco.cpp	1 Jan 2005 16:09:21 -0000	1.20
+++ rnc_deco.cpp	11 Feb 2005 11:14:32 -0000	1.21
@@ -36,14 +36,10 @@
 #define HEADER_LEN	18
 
 RncDecoder::RncDecoder() {
-	_bitBuffl = 0;
-	_bitBuffh = 0;
-	_bitCount = 0;
+	initCrc();
 }
 
-RncDecoder::~RncDecoder() {
-
-}
+RncDecoder::~RncDecoder() { }
 
 void RncDecoder::initCrc() {
 	uint16 cnt = 0;
@@ -175,10 +171,13 @@
 	uint16 crcUnpacked = 0;
 	uint16 crcPacked = 0;
 	
-	initCrc();
+
+	_bitBuffl = 0;
+	_bitBuffh = 0;
+	_bitCount = 0;
 
 	//Check for "RNC "
-	if (READ_BE_UINT32(inputptr) != 0x524e4301)
+	if (READ_BE_UINT32(inputptr) != RNC_SIGNATURE)
 		return NOT_PACKED;
 
 	inputptr += 4;

Index: rnc_deco.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/rnc_deco.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- rnc_deco.h	1 Jan 2005 16:09:21 -0000	1.7
+++ rnc_deco.h	11 Feb 2005 11:14:33 -0000	1.8
@@ -24,6 +24,8 @@
 
 #include "stdafx.h"
 
+#define RNC_SIGNATURE   0x524E4301 // "RNC\001"
+
 namespace Sky {
 
 class RncDecoder {





More information about the Scummvm-git-logs mailing list