pad option now changes the ROM size at 0x148

This commit is contained in:
bentley
2010-01-12 22:40:37 -07:00
parent cba8933c11
commit d0a03bc99b

View File

@@ -284,8 +284,9 @@ main(int argc, char *argv[])
*/ */
if (ulOptions & OPTF_PAD) { if (ulOptions & OPTF_PAD) {
long size, padto; int size, padto;
long bytesadded = 0; int calcromsize, cartromsize;
int bytesadded = 0;
size = FileSize(f); size = FileSize(f);
padto = 0x8000L; padto = 0x8000L;
@@ -293,7 +294,7 @@ main(int argc, char *argv[])
padto *= 2; padto *= 2;
if (!(ulOptions & OPTF_QUIET)) { if (!(ulOptions & OPTF_QUIET)) {
printf("Padding to %ldKiB with pad value %#02x\n", padto / 1024, pad_value & 0xFF); printf("Padding to %dKiB with pad value %#02x\n", padto / 1024, pad_value & 0xFF);
} }
/* /*
if( padto<=0x80000L ) if( padto<=0x80000L )
@@ -312,13 +313,38 @@ main(int argc, char *argv[])
fflush(f); fflush(f);
if (!(ulOptions & OPTF_QUIET)) { if (!(ulOptions & OPTF_QUIET)) {
printf("\tAdded %ld bytes\n", bytesadded); printf("\tAdded %d bytes\n", bytesadded);
} }
} else { } else {
if (!(ulOptions & OPTF_QUIET)) { if (!(ulOptions & OPTF_QUIET)) {
printf("\tNo padding needed\n"); printf("\tNo padding needed\n");
} }
} }
/* ROM size byte */
calcromsize = 0;
while (size > (0x8000L << calcromsize))
calcromsize += 1;
fseek(f, 0x148, SEEK_SET);
cartromsize = fgetc(f);
if (calcromsize != cartromsize) {
if (!(ulOptions & OPTF_DEBUG)) {
fseek(f, 0x148, SEEK_SET);
fputc(calcromsize, f);
fflush(f);
}
if (!(ulOptions & OPTF_QUIET)) {
printf("\tChanged ROM size byte from %#02x (%dKiB) to %#02x (%dKiB)\n",
cartromsize,
(0x8000L << cartromsize) / 1024,
calcromsize,
(0x8000L << calcromsize) / 1024);
}
} else if (!(ulOptions & OPTF_QUIET)) {
printf("\tROM size byte is OK\n");
}
/* /*
} }
else else