Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int main(int argc, char **argv)
- {
- FILE *input = fopen("d:\\mame\\mame\\nvram\\indigo4k\\eeprom", "rb");
- unsigned short eeprom[0x80];
- for (int i = 0; i < 0x80; i++)
- {
- unsigned char upper = 0;
- unsigned char lower = 0;
- fread(&lower, 1, 1, input);
- fread(&upper, 1, 1, input);
- eeprom[i] = (upper << 8) | lower;
- }
- fclose(input);
- printf("EEPROM %02x: %04x\n", 0, eeprom[0]);
- int s3 = (int)0xffffffa5;
- s3 ^= eeprom[0] & 0x00ff;
- s3 <<= 24;
- s3 >>= 24;
- int t3 = s3 << 1;
- int t4 = (s3 < 0) ? 1 : 0;
- s3 = (s3 << 1) | t4;
- s3 <<= 24;
- s3 >>= 24;
- for (int i = 1; i < 0x80; i++)
- {
- printf("EEPROM %02x: %04x\n", (unsigned char)i, eeprom[i]);
- unsigned char upper = eeprom[i] >> 8;
- unsigned char lower = eeprom[i] & 0x00ff;
- unsigned char xorval = upper ^ lower;
- s3 ^= xorval;
- s3 <<= 24;
- s3 >>= 24;
- t4 = (s3 < 0) ? 1 : 0;
- s3 = (s3 << 1) | t4;
- s3 <<= 24;
- s3 >>= 24;
- }
- printf("Checksum: %08x\n", s3);
- return 0;
- }
Add Comment
Please, Sign In to add comment