Update README.md
[sm64pc.git] / tools / n64cksum.c
blobf377f9a30d5c1e82fbcf2259954625833bb7fa11
1 #include <stdio.h>
2 #include <stdlib.h>
4 #include "libsm64.h"
5 #include "utils.h"
7 #define N64CKSUM_VERSION "0.1"
9 static void print_usage(void)
11 ERROR("Usage: n64cksum ROM [ROM_OUT]\n"
12 "\n"
13 "n64cksum v" N64CKSUM_VERSION ": N64 ROM checksum calculator\n"
14 "\n"
15 "File arguments:\n"
16 " ROM input ROM file\n"
17 " ROM_OUT output ROM file (default: overwrites input ROM)\n");
20 int main(int argc, char *argv[])
22 unsigned char *rom_data;
23 char *file_in;
24 char *file_out;
25 long length;
26 long write_length;
27 if (argc < 2) {
28 print_usage();
29 return EXIT_FAILURE;
32 file_in = argv[1];
33 if (argc > 2) {
34 file_out = argv[2];
35 } else {
36 file_out = argv[1];
39 length = read_file(file_in, &rom_data);
40 if (length < 0) {
41 ERROR("Error reading input file \"%s\"\n", file_in);
42 return EXIT_FAILURE;
45 sm64_update_checksums(rom_data);
47 write_length = write_file(file_out, rom_data, length);
49 free(rom_data);
51 if (write_length != length) {
52 ERROR("Error writing to output file \"%s\"\n", file_out);
53 return EXIT_FAILURE;
56 return EXIT_SUCCESS;