shithub: rgbds

Download patch

ref: 819615549f9691eafe613f995a1ef8fbb7c01f7a
parent: b6a50a3afc71d7f5fb17f93f5ed12af61fe8efeb
author: anthony <[email protected]>
date: Tue Dec 29 18:19:47 EST 2009

move src/rgbfix/ to src/fix/ for consistency

--- /dev/null
+++ b/src/fix/main.c
@@ -1,0 +1,469 @@
+/*
+ * RGBFix : Perform various tasks on a Gameboy image-file
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include "asmotor.h"
+
+/*
+ * Option defines
+ *
+ */
+
+#define OPTF_DEBUG	0x01L
+#define OPTF_PAD	0x02L
+#define OPTF_VALIDATE	0x04L
+#define OPTF_TITLE	0x08L
+#define OPTF_TRUNCATE	0x10L
+#define OPTF_QUIET	0x20L
+
+unsigned long ulOptions;
+
+/*
+ * Misc. variables
+ *
+ */
+
+unsigned char NintendoChar[48] = {
+	0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B,
+	0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D,
+	0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E,
+	0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99,
+	0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC,
+	0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E,
+};
+
+/*
+ * Misc. routines
+ *
+ */
+
+void PrintUsage(void)
+{
+	printf("RGBFix v" RGBFIX_VERSION
+		" (part of ASMotor " ASMOTOR_VERSION ")\n\n");
+
+	printf("Usage: rgbfix [options] image[.gb]\n");
+	printf("Options:\n");
+	printf("\t-h\t\tThis text\n");
+	printf("\t-d\t\tDebug: Don't change image\n");
+	printf("\t-p\t\tPad image to valid size\n\t\t\tPads to 32/64/128/256/512kB as appropriate\n");
+	printf("\t-r\t\ttRuncate image to valid size\n\t\t\tTruncates to 32/64/128/256/512kB as appropriate\n");
+	printf("\t-t<name>\tChange cartridge title field (16 characters)\n");
+	printf("\t-v\t\tValidate header\n\t\t\tCorrects - Nintendo Character Area (0x0104)\n\t\t\t\t - ROM type (0x0147)\n\t\t\t\t - ROM size (0x0148)\n\t\t\t\t - Checksums (0x014D-0x014F)\n");
+	printf("\t-q\t\tExecute quietly (suppress all text except errors)\n");
+
+	exit(0);
+}
+
+void vFatalError(char *s, va_list ap)
+{
+	fprintf(stderr, "*ERROR* : ");
+	vfprintf(stderr, s, ap);
+	fprintf(stderr, "\n");
+}
+
+void FatalError(char *s, ...)
+{
+	va_list ap;
+	va_start (ap, s);
+	vFatalError(s, ap);
+	va_end(ap);
+	exit(5);
+}
+
+void vWarning(char *s, va_list ap)
+{
+	fprintf(stderr, "*WARNING* : ");
+	vfprintf(stderr, s, ap);
+	fprintf(stderr, "\n");
+}
+
+void Warning(char *s, ...)
+{
+	va_list ap;
+	va_start(ap, s);
+	vWarning(s, ap);
+	va_end(ap);
+}
+
+long int FileSize(FILE * f)
+{
+	long prevpos;
+	long r;
+
+	fflush(f);
+	prevpos = ftell(f);
+	fseek(f, 0, SEEK_END);
+	r = ftell(f);
+	fseek(f, prevpos, SEEK_SET);
+	return (r);
+}
+
+int FileExists(char *s)
+{
+	FILE *f;
+
+	if ((f = fopen(s, "rb")) != NULL) {
+		fclose(f);
+		return (1);
+	} else
+		return (0);
+}
+
+/*
+ * Das main
+ *
+ */
+
+int main(int argc, char *argv[])
+{
+	int argn = 1;
+	char filename[512];
+	char cartname[32];
+	FILE *f;
+
+	ulOptions = 0;
+
+	if ((--argc) == 0)
+		PrintUsage();
+
+	while (*argv[argn] == '-') {
+		argc -= 1;
+		switch (argv[argn++][1]) {
+		case '?':
+		case 'h':
+			PrintUsage();
+			break;
+		case 'd':
+			ulOptions |= OPTF_DEBUG;
+			break;
+		case 'p':
+			ulOptions |= OPTF_PAD;
+			break;
+		case 'r':
+			ulOptions |= OPTF_TRUNCATE;
+			break;
+		case 'v':
+			ulOptions |= OPTF_VALIDATE;
+			break;
+		case 't':
+			strncpy(cartname, argv[argn - 1] + 2, 16);
+			ulOptions |= OPTF_TITLE;
+			break;
+		case 'q':
+			ulOptions|=OPTF_QUIET;
+			break;
+		}
+	}
+
+	strcpy(filename, argv[argn++]);
+
+	if (!FileExists(filename))
+		strcat(filename, ".gb");
+
+	f = fopen(filename, "rb+");
+	if (!f)
+		FatalError("Unable to open file");
+
+	/*
+	 * -d (Debug) option code
+	 *
+	 */
+
+	if ((ulOptions & OPTF_DEBUG) && !(ulOptions & OPTF_QUIET)) {
+		printf("-d (Debug) option enabled...\n");
+	}
+
+	/*
+	 * -p (Pad) option code
+	 *
+	 */
+
+	if (ulOptions & OPTF_PAD) {
+		long size, padto;
+		long bytesadded = 0;
+
+		size = FileSize(f);
+		padto = 0x8000L;
+		while (size > padto)
+			padto *= 2;
+
+		if(!(ulOptions & OPTF_QUIET)) {
+			printf("Padding to %ldkB:\n", padto / 1024);
+		}
+
+		/*
+		   if( padto<=0x80000L )
+		   {
+		   */
+		if (size != padto) {
+			fflush(stdout);
+
+			fseek(f, 0, SEEK_END);
+			while (size < padto) {
+				size += 1;
+				if ((ulOptions & OPTF_DEBUG) == 0)
+					fputc(0, f);
+				bytesadded += 1;
+			}
+			fflush(f);
+
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tAdded %ld bytes\n", bytesadded);
+			}
+		} else {
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tNo padding needed\n");
+			}
+		}
+		/*
+		   }
+		   else
+		   FatalError( "Image size exceeds 512kB" );
+		   */
+	}
+
+	/*
+	 * -r (Truncate) option code
+	 *
+	 */
+
+	if (ulOptions & OPTF_TRUNCATE) {
+		long size, padto;
+		char tempfile[] = "/tmp/rgbfix-XXXXXX";
+		FILE *tf;
+
+		size = FileSize(f);
+		padto = 256 * 32768;
+		while (size < padto)
+			padto /= 2;
+
+		if(!(ulOptions & OPTF_QUIET)) {
+			printf("Truncating to %ldkB:\n", padto / 1024);
+		}
+
+		mkstemp(tempfile);
+
+		if ((ulOptions & OPTF_DEBUG) == 0) {
+			if ((tf = fopen(tempfile, "wb")) != NULL) {
+				fseek(f, 0, SEEK_SET);
+				while (padto--) {
+					fputc(fgetc(f), tf);
+				}
+				fclose(f);
+				fclose(tf);
+				remove(filename);
+				rename(tempfile, filename);
+				f = fopen(filename, "rb+");
+			}
+		}
+	}
+
+	/*
+	 * -t (Set carttitle) option code
+	 *
+	 */
+
+	if (ulOptions & OPTF_TITLE) {
+		if(!(ulOptions & OPTF_QUIET)) {
+			printf("Setting cartridge title:\n");
+		}
+		if ((ulOptions & OPTF_DEBUG) == 0) {
+			fflush(f);
+			fseek(f, 0x0134L, SEEK_SET);
+			fwrite(cartname, 16, 1, f);
+			fflush(f);
+		}
+		if(!(ulOptions & OPTF_QUIET)) {
+			printf("\tTitle set to %s\n", cartname);
+		}
+	}
+
+	/*
+	 * -v (Validate header) option code
+	 *
+	 */
+
+	if (ulOptions & OPTF_VALIDATE) {
+		long i, byteschanged = 0;
+		long cartromsize, calcromsize = 0, filesize;
+		long carttype;
+		unsigned short cartchecksum = 0, calcchecksum = 0;
+		unsigned char cartcompchecksum = 0, calccompchecksum =
+			0;
+		int ch;
+
+		if(!(ulOptions & OPTF_VALIDATE)) {
+			printf("Validating header:\n");
+		}
+		fflush(stdout);
+
+		/* Nintendo Character Area */
+
+		fflush(f);
+		fseek(f, 0x0104L, SEEK_SET);
+
+		for (i = 0; i < 48; i += 1) {
+			int ch;
+
+			ch = fgetc(f);
+			if (ch == EOF)
+				ch = 0x00;
+			if (ch != NintendoChar[i]) {
+				byteschanged += 1;
+
+				if ((ulOptions & OPTF_DEBUG) == 0) {
+					fseek(f, -1, SEEK_CUR);
+					fputc(NintendoChar[i], f);
+					fflush(f);
+				}
+			}
+		}
+
+		fflush(f);
+
+		if(!(ulOptions & OPTF_QUIET)) {
+			if (byteschanged)
+				printf
+					("\tChanged %ld bytes in the Nintendo Character Area\n",
+					 byteschanged);
+			else
+				printf("\tNintendo Character Area is OK\n");
+		}
+
+		/* ROM size */
+
+		fflush(f);
+		fseek(f, 0x0148L, SEEK_SET);
+		cartromsize = fgetc(f);
+		if (cartromsize == EOF)
+			cartromsize = 0x00;
+		filesize = FileSize(f);
+		while (filesize > (0x8000L << calcromsize))
+			calcromsize += 1;
+
+		if (calcromsize != cartromsize) {
+			if ((ulOptions & OPTF_DEBUG) == 0) {
+				fseek(f, -1, SEEK_CUR);
+				fputc(calcromsize, f);
+				fflush(f);
+			}
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tChanged ROM size byte from 0x%02lX (%ldkB) to 0x%02lX (%ldkB)\n",
+					 cartromsize,
+					 (0x8000L << cartromsize) / 1024,
+					 calcromsize,
+					 (0x8000L << calcromsize) / 1024);
+			}
+		} else
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tROM size byte is OK\n");
+			}
+
+		/* Cartridge type */
+
+		fflush(f);
+		fseek(f, 0x0147L, SEEK_SET);
+		carttype = fgetc(f);
+		if (carttype == EOF)
+			carttype = 0x00;
+
+		if (FileSize(f) > 0x8000L) {
+			/* carttype byte must != 0x00 */
+			if (carttype == 0x00) {
+				if ((ulOptions & OPTF_DEBUG) == 0) {
+					fseek(f, -1, SEEK_CUR);
+					fputc(0x01, f);
+					fflush(f);
+				}
+				if(!(ulOptions & OPTF_QUIET)) {
+					printf
+						("\tCartridge type byte changed to 0x01\n");
+				}
+			} else
+				if(!(ulOptions & OPTF_QUIET)) {
+					printf("\tCartridge type byte is OK\n");
+				}
+		} else {
+			/* carttype byte can be anything? */
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tCartridge type byte is OK\n");
+			}
+		}
+
+		/* Checksum */
+
+		fflush(f);
+		fseek(f, 0, SEEK_SET);
+
+		for (i = 0; i < (0x8000L << calcromsize); i += 1) {
+			ch = fgetc(f);
+			if (ch == EOF)
+				ch = 0;
+
+			if (i < 0x0134L)
+				calcchecksum += ch;
+			else if (i < 0x014DL) {
+				calccompchecksum += ch;
+				calcchecksum += ch;
+			} else if (i == 0x014DL)
+				cartcompchecksum = ch;
+			else if (i == 0x014EL)
+				cartchecksum = ch << 8;
+			else if (i == 0x014FL)
+				cartchecksum |= ch;
+			else
+				calcchecksum += ch;
+		}
+
+		calccompchecksum = 0xE7 - calccompchecksum;
+		calcchecksum += calccompchecksum;
+
+		if (cartchecksum != calcchecksum) {
+			fflush(f);
+			fseek(f, 0x014EL, SEEK_SET);
+			if ((ulOptions & OPTF_DEBUG) == 0) {
+				fputc(calcchecksum >> 8, f);
+				fputc(calcchecksum & 0xFF, f);
+			}
+			fflush(f);
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf
+					("\tChecksum changed from 0x%04lX to 0x%04lX\n",
+					 (long)cartchecksum, (long)calcchecksum);
+			}
+		} else {
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tChecksum is OK\n");
+			}
+		}
+
+		if (cartcompchecksum != calccompchecksum) {
+			fflush(f);
+			fseek(f, 0x014DL, SEEK_SET);
+			if ((ulOptions & OPTF_DEBUG) == 0)
+				fputc(calccompchecksum, f);
+			fflush(f);
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf
+					("\tCompChecksum changed from 0x%02lX to 0x%02lX\n",
+					 (long)cartcompchecksum,
+					 (long)calccompchecksum);
+			}
+		} else {
+			if(!(ulOptions & OPTF_QUIET)) {
+				printf("\tCompChecksum is OK\n");
+			}
+		}
+
+	}
+
+	fclose(f);
+
+	return (0);
+}
--- a/src/rgbfix/main.c
+++ /dev/null
@@ -1,469 +1,0 @@
-/*
- * RGBFix : Perform various tasks on a Gameboy image-file
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include "asmotor.h"
-
-/*
- * Option defines
- *
- */
-
-#define OPTF_DEBUG	0x01L
-#define OPTF_PAD	0x02L
-#define OPTF_VALIDATE	0x04L
-#define OPTF_TITLE	0x08L
-#define OPTF_TRUNCATE	0x10L
-#define OPTF_QUIET	0x20L
-
-unsigned long ulOptions;
-
-/*
- * Misc. variables
- *
- */
-
-unsigned char NintendoChar[48] = {
-	0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B,
-	0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D,
-	0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E,
-	0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99,
-	0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC,
-	0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E,
-};
-
-/*
- * Misc. routines
- *
- */
-
-void PrintUsage(void)
-{
-	printf("RGBFix v" RGBFIX_VERSION
-		" (part of ASMotor " ASMOTOR_VERSION ")\n\n");
-
-	printf("Usage: rgbfix [options] image[.gb]\n");
-	printf("Options:\n");
-	printf("\t-h\t\tThis text\n");
-	printf("\t-d\t\tDebug: Don't change image\n");
-	printf("\t-p\t\tPad image to valid size\n\t\t\tPads to 32/64/128/256/512kB as appropriate\n");
-	printf("\t-r\t\ttRuncate image to valid size\n\t\t\tTruncates to 32/64/128/256/512kB as appropriate\n");
-	printf("\t-t<name>\tChange cartridge title field (16 characters)\n");
-	printf("\t-v\t\tValidate header\n\t\t\tCorrects - Nintendo Character Area (0x0104)\n\t\t\t\t - ROM type (0x0147)\n\t\t\t\t - ROM size (0x0148)\n\t\t\t\t - Checksums (0x014D-0x014F)\n");
-	printf("\t-q\t\tExecute quietly (suppress all text except errors)\n");
-
-	exit(0);
-}
-
-void vFatalError(char *s, va_list ap)
-{
-	fprintf(stderr, "*ERROR* : ");
-	vfprintf(stderr, s, ap);
-	fprintf(stderr, "\n");
-}
-
-void FatalError(char *s, ...)
-{
-	va_list ap;
-	va_start (ap, s);
-	vFatalError(s, ap);
-	va_end(ap);
-	exit(5);
-}
-
-void vWarning(char *s, va_list ap)
-{
-	fprintf(stderr, "*WARNING* : ");
-	vfprintf(stderr, s, ap);
-	fprintf(stderr, "\n");
-}
-
-void Warning(char *s, ...)
-{
-	va_list ap;
-	va_start(ap, s);
-	vWarning(s, ap);
-	va_end(ap);
-}
-
-long int FileSize(FILE * f)
-{
-	long prevpos;
-	long r;
-
-	fflush(f);
-	prevpos = ftell(f);
-	fseek(f, 0, SEEK_END);
-	r = ftell(f);
-	fseek(f, prevpos, SEEK_SET);
-	return (r);
-}
-
-int FileExists(char *s)
-{
-	FILE *f;
-
-	if ((f = fopen(s, "rb")) != NULL) {
-		fclose(f);
-		return (1);
-	} else
-		return (0);
-}
-
-/*
- * Das main
- *
- */
-
-int main(int argc, char *argv[])
-{
-	int argn = 1;
-	char filename[512];
-	char cartname[32];
-	FILE *f;
-
-	ulOptions = 0;
-
-	if ((--argc) == 0)
-		PrintUsage();
-
-	while (*argv[argn] == '-') {
-		argc -= 1;
-		switch (argv[argn++][1]) {
-		case '?':
-		case 'h':
-			PrintUsage();
-			break;
-		case 'd':
-			ulOptions |= OPTF_DEBUG;
-			break;
-		case 'p':
-			ulOptions |= OPTF_PAD;
-			break;
-		case 'r':
-			ulOptions |= OPTF_TRUNCATE;
-			break;
-		case 'v':
-			ulOptions |= OPTF_VALIDATE;
-			break;
-		case 't':
-			strncpy(cartname, argv[argn - 1] + 2, 16);
-			ulOptions |= OPTF_TITLE;
-			break;
-		case 'q':
-			ulOptions|=OPTF_QUIET;
-			break;
-		}
-	}
-
-	strcpy(filename, argv[argn++]);
-
-	if (!FileExists(filename))
-		strcat(filename, ".gb");
-
-	f = fopen(filename, "rb+");
-	if (!f)
-		FatalError("Unable to open file");
-
-	/*
-	 * -d (Debug) option code
-	 *
-	 */
-
-	if ((ulOptions & OPTF_DEBUG) && !(ulOptions & OPTF_QUIET)) {
-		printf("-d (Debug) option enabled...\n");
-	}
-
-	/*
-	 * -p (Pad) option code
-	 *
-	 */
-
-	if (ulOptions & OPTF_PAD) {
-		long size, padto;
-		long bytesadded = 0;
-
-		size = FileSize(f);
-		padto = 0x8000L;
-		while (size > padto)
-			padto *= 2;
-
-		if(!(ulOptions & OPTF_QUIET)) {
-			printf("Padding to %ldkB:\n", padto / 1024);
-		}
-
-		/*
-		   if( padto<=0x80000L )
-		   {
-		   */
-		if (size != padto) {
-			fflush(stdout);
-
-			fseek(f, 0, SEEK_END);
-			while (size < padto) {
-				size += 1;
-				if ((ulOptions & OPTF_DEBUG) == 0)
-					fputc(0, f);
-				bytesadded += 1;
-			}
-			fflush(f);
-
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tAdded %ld bytes\n", bytesadded);
-			}
-		} else {
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tNo padding needed\n");
-			}
-		}
-		/*
-		   }
-		   else
-		   FatalError( "Image size exceeds 512kB" );
-		   */
-	}
-
-	/*
-	 * -r (Truncate) option code
-	 *
-	 */
-
-	if (ulOptions & OPTF_TRUNCATE) {
-		long size, padto;
-		char tempfile[] = "/tmp/rgbfix-XXXXXX";
-		FILE *tf;
-
-		size = FileSize(f);
-		padto = 256 * 32768;
-		while (size < padto)
-			padto /= 2;
-
-		if(!(ulOptions & OPTF_QUIET)) {
-			printf("Truncating to %ldkB:\n", padto / 1024);
-		}
-
-		mkstemp(tempfile);
-
-		if ((ulOptions & OPTF_DEBUG) == 0) {
-			if ((tf = fopen(tempfile, "wb")) != NULL) {
-				fseek(f, 0, SEEK_SET);
-				while (padto--) {
-					fputc(fgetc(f), tf);
-				}
-				fclose(f);
-				fclose(tf);
-				remove(filename);
-				rename(tempfile, filename);
-				f = fopen(filename, "rb+");
-			}
-		}
-	}
-
-	/*
-	 * -t (Set carttitle) option code
-	 *
-	 */
-
-	if (ulOptions & OPTF_TITLE) {
-		if(!(ulOptions & OPTF_QUIET)) {
-			printf("Setting cartridge title:\n");
-		}
-		if ((ulOptions & OPTF_DEBUG) == 0) {
-			fflush(f);
-			fseek(f, 0x0134L, SEEK_SET);
-			fwrite(cartname, 16, 1, f);
-			fflush(f);
-		}
-		if(!(ulOptions & OPTF_QUIET)) {
-			printf("\tTitle set to %s\n", cartname);
-		}
-	}
-
-	/*
-	 * -v (Validate header) option code
-	 *
-	 */
-
-	if (ulOptions & OPTF_VALIDATE) {
-		long i, byteschanged = 0;
-		long cartromsize, calcromsize = 0, filesize;
-		long carttype;
-		unsigned short cartchecksum = 0, calcchecksum = 0;
-		unsigned char cartcompchecksum = 0, calccompchecksum =
-			0;
-		int ch;
-
-		if(!(ulOptions & OPTF_VALIDATE)) {
-			printf("Validating header:\n");
-		}
-		fflush(stdout);
-
-		/* Nintendo Character Area */
-
-		fflush(f);
-		fseek(f, 0x0104L, SEEK_SET);
-
-		for (i = 0; i < 48; i += 1) {
-			int ch;
-
-			ch = fgetc(f);
-			if (ch == EOF)
-				ch = 0x00;
-			if (ch != NintendoChar[i]) {
-				byteschanged += 1;
-
-				if ((ulOptions & OPTF_DEBUG) == 0) {
-					fseek(f, -1, SEEK_CUR);
-					fputc(NintendoChar[i], f);
-					fflush(f);
-				}
-			}
-		}
-
-		fflush(f);
-
-		if(!(ulOptions & OPTF_QUIET)) {
-			if (byteschanged)
-				printf
-					("\tChanged %ld bytes in the Nintendo Character Area\n",
-					 byteschanged);
-			else
-				printf("\tNintendo Character Area is OK\n");
-		}
-
-		/* ROM size */
-
-		fflush(f);
-		fseek(f, 0x0148L, SEEK_SET);
-		cartromsize = fgetc(f);
-		if (cartromsize == EOF)
-			cartromsize = 0x00;
-		filesize = FileSize(f);
-		while (filesize > (0x8000L << calcromsize))
-			calcromsize += 1;
-
-		if (calcromsize != cartromsize) {
-			if ((ulOptions & OPTF_DEBUG) == 0) {
-				fseek(f, -1, SEEK_CUR);
-				fputc(calcromsize, f);
-				fflush(f);
-			}
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tChanged ROM size byte from 0x%02lX (%ldkB) to 0x%02lX (%ldkB)\n",
-					 cartromsize,
-					 (0x8000L << cartromsize) / 1024,
-					 calcromsize,
-					 (0x8000L << calcromsize) / 1024);
-			}
-		} else
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tROM size byte is OK\n");
-			}
-
-		/* Cartridge type */
-
-		fflush(f);
-		fseek(f, 0x0147L, SEEK_SET);
-		carttype = fgetc(f);
-		if (carttype == EOF)
-			carttype = 0x00;
-
-		if (FileSize(f) > 0x8000L) {
-			/* carttype byte must != 0x00 */
-			if (carttype == 0x00) {
-				if ((ulOptions & OPTF_DEBUG) == 0) {
-					fseek(f, -1, SEEK_CUR);
-					fputc(0x01, f);
-					fflush(f);
-				}
-				if(!(ulOptions & OPTF_QUIET)) {
-					printf
-						("\tCartridge type byte changed to 0x01\n");
-				}
-			} else
-				if(!(ulOptions & OPTF_QUIET)) {
-					printf("\tCartridge type byte is OK\n");
-				}
-		} else {
-			/* carttype byte can be anything? */
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tCartridge type byte is OK\n");
-			}
-		}
-
-		/* Checksum */
-
-		fflush(f);
-		fseek(f, 0, SEEK_SET);
-
-		for (i = 0; i < (0x8000L << calcromsize); i += 1) {
-			ch = fgetc(f);
-			if (ch == EOF)
-				ch = 0;
-
-			if (i < 0x0134L)
-				calcchecksum += ch;
-			else if (i < 0x014DL) {
-				calccompchecksum += ch;
-				calcchecksum += ch;
-			} else if (i == 0x014DL)
-				cartcompchecksum = ch;
-			else if (i == 0x014EL)
-				cartchecksum = ch << 8;
-			else if (i == 0x014FL)
-				cartchecksum |= ch;
-			else
-				calcchecksum += ch;
-		}
-
-		calccompchecksum = 0xE7 - calccompchecksum;
-		calcchecksum += calccompchecksum;
-
-		if (cartchecksum != calcchecksum) {
-			fflush(f);
-			fseek(f, 0x014EL, SEEK_SET);
-			if ((ulOptions & OPTF_DEBUG) == 0) {
-				fputc(calcchecksum >> 8, f);
-				fputc(calcchecksum & 0xFF, f);
-			}
-			fflush(f);
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf
-					("\tChecksum changed from 0x%04lX to 0x%04lX\n",
-					 (long)cartchecksum, (long)calcchecksum);
-			}
-		} else {
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tChecksum is OK\n");
-			}
-		}
-
-		if (cartcompchecksum != calccompchecksum) {
-			fflush(f);
-			fseek(f, 0x014DL, SEEK_SET);
-			if ((ulOptions & OPTF_DEBUG) == 0)
-				fputc(calccompchecksum, f);
-			fflush(f);
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf
-					("\tCompChecksum changed from 0x%02lX to 0x%02lX\n",
-					 (long)cartcompchecksum,
-					 (long)calccompchecksum);
-			}
-		} else {
-			if(!(ulOptions & OPTF_QUIET)) {
-				printf("\tCompChecksum is OK\n");
-			}
-		}
-
-	}
-
-	fclose(f);
-
-	return (0);
-}