Files
banjo-kazooie/src/core1/code_1E6E0.c
2022-07-15 17:09:41 -05:00

48 lines
806 B
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
// transform seed (in mips3 file)
u32 func_8025C29C(u32 *seed);
void glcrc_calc_checksum(void *start, void *end, u32 checksum[2])
{
u8 *p;
u32 shift = 0;
u64 seed = 0x8F809F473108B3C1;
u32 crc1 = 0;
u32 crc2 = 0;
u32 tmp;
// CRC1: Iterate forwards over bytes
for (p = start; (void *)p < end; p++)
{
seed += *p << (shift & 15);
tmp = func_8025C29C(&seed);
shift += 7;
crc1 ^= tmp;
}
// CRC2: Iterate backwards over bytes
for (p = (u8 *)end - 1; (void *)p >= start; p--)
{
seed += *p << (shift & 15);
tmp = func_8025C29C(&seed);
shift += 3;
crc2 ^= tmp;
}
checksum[0] = crc1;
checksum[1] = crc2;
}