Skip to content

Instantly share code, notes, and snippets.

@ughman
Created June 9, 2019 23:19
Show Gist options
  • Save ughman/da5a607f3c5ef316573c6ee48edf3f05 to your computer and use it in GitHub Desktop.
Save ughman/da5a607f3c5ef316573c6ee48edf3f05 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdint.h>
const unsigned char data[128] = {
0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x66, 0x54, 0x11
};
// Crash 1 save sector checksum calculator; based on NSF Chunk Checksum Calculator
uint32_t nsfChecksum(const unsigned char *data)
{
uint32_t checksum = 0x12345678;
for (int i = 0;i < 128 /*65536*/;i++)
{
/*if (i < 12 || i >= 16)*/
if (i < 124)
checksum += data[i];
checksum = checksum << 3 | checksum >> 29;
}
return checksum;
}
int main(void)
{
printf("CHECKSUM: %llX\n", (long long)nsfChecksum(data));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment