[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