1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Code cleanup: cleanup CRC.h and CRC.cpp

This commit is contained in:
Sergey Lipskiy 2014-09-03 12:08:04 +07:00
parent 23f7f24d35
commit 1a43c89db3
2 changed files with 30 additions and 33 deletions

59
CRC.cpp
View File

@ -6,58 +6,55 @@ unsigned int CRCTable[ 256 ];
u32 Reflect( u32 ref, char ch ) u32 Reflect( u32 ref, char ch )
{ {
u32 value = 0; u32 value = 0;
// Swap bit 0 for bit 7 // Swap bit 0 for bit 7
// bit 1 for bit 6, etc. // bit 1 for bit 6, etc.
for (int i = 1; i < (ch + 1); i++) for (int i = 1; i < (ch + 1); ++i) {
{ if(ref & 1)
if(ref & 1) value |= 1 << (ch - i);
value |= 1 << (ch - i); ref >>= 1;
ref >>= 1; }
} return value;
return value;
} }
void CRC_BuildTable() void CRC_BuildTable()
{ {
u32 crc; u32 crc;
for (int i = 0; i < 256; i++) for (int i = 0; i < 256; ++i) {
{ crc = Reflect( i, 8 ) << 24;
crc = Reflect( i, 8 ) << 24; for (int j = 0; j < 8; ++j)
for (int j = 0; j < 8; j++)
crc = (crc << 1) ^ (crc & (1 << 31) ? CRC32_POLYNOMIAL : 0); crc = (crc << 1) ^ (crc & (1 << 31) ? CRC32_POLYNOMIAL : 0);
CRCTable[i] = Reflect( crc, 32 ); CRCTable[i] = Reflect( crc, 32 );
} }
} }
u32 CRC_Calculate( u32 crc, void *buffer, u32 count ) u32 CRC_Calculate( u32 crc, const void * buffer, u32 count )
{ {
u8 *p; u8 *p;
u32 orig = crc; u32 orig = crc;
p = (u8*) buffer; p = (u8*) buffer;
while (count--) while (count--)
crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++]; crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++];
return crc ^ orig; return crc ^ orig;
} }
u32 CRC_CalculatePalette( u32 crc, void *buffer, u32 count ) u32 CRC_CalculatePalette(u32 crc, const void * buffer, u32 count )
{ {
u8 *p; u8 *p;
u32 orig = crc; u32 orig = crc;
p = (u8*) buffer; p = (u8*) buffer;
while (count--) while (count--) {
{
crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++]; crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++];
crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++]; crc = (crc >> 8) ^ CRCTable[(crc & 0xFF) ^ *p++];
p += 6; p += 6;
} }
return crc ^ orig; return crc ^ orig;
} }

4
CRC.h
View File

@ -2,5 +2,5 @@
void CRC_BuildTable(); void CRC_BuildTable();
u32 CRC_Calculate( u32 crc, void *buffer, u32 count ); u32 CRC_Calculate( u32 crc, const void *buffer, u32 count );
u32 CRC_CalculatePalette( u32 crc, void *buffer, u32 count ); u32 CRC_CalculatePalette( u32 crc, const void *buffer, u32 count );