add -s flag for SGB mode

This commit is contained in:
anthony
2010-01-04 19:50:24 -07:00
parent 6752b10204
commit fb81793d9f

View File

@@ -24,6 +24,7 @@
#define OPTF_MBCTYPE 0x080L #define OPTF_MBCTYPE 0x080L
#define OPTF_GBCMODE 0x100L #define OPTF_GBCMODE 0x100L
#define OPTF_JAPAN 0x200L #define OPTF_JAPAN 0x200L
#define OPTF_SGBMODE 0x400L
unsigned long ulOptions; unsigned long ulOptions;
@@ -70,6 +71,7 @@ PrintUsage(void)
printf(" -b<hx>\tSet MBC type\n"); printf(" -b<hx>\tSet MBC type\n");
printf(" -c\t\tSet Game Boy Color compatible flag ([0x143] = 0x80)\n"); printf(" -c\t\tSet Game Boy Color compatible flag ([0x143] = 0x80)\n");
printf(" -o\t\tSet Game Boy Color only flag ([0x143] = 0xC0)\n"); printf(" -o\t\tSet Game Boy Color only flag ([0x143] = 0xC0)\n");
printf(" -s\t\tSet Super Game Boy flags\n");
printf(" -q\t\tExecute quietly (suppress all text except errors)\n"); printf(" -q\t\tExecute quietly (suppress all text except errors)\n");
exit(0); exit(0);
@@ -312,6 +314,9 @@ main(int argc, char *argv[])
ulOptions |= OPTF_GBCMODE; ulOptions |= OPTF_GBCMODE;
gbc_mode = 0x80; gbc_mode = 0x80;
break; break;
case 's':
ulOptions |= OPTF_SGBMODE;
break;
} }
} }
argn++; argn++;
@@ -512,6 +517,23 @@ main(int argc, char *argv[])
} }
} }
} }
/*
* -s (Set SGB mode) option code
*/
if (ulOptions & OPTF_SGBMODE) {
fflush(f);
// set old licensee code to 0x33
fseek(f, 0x14B, SEEK_SET);
fputc(0x33, f);
// set SGB flag to 0x03
fseek(f, 0x146, SEEK_SET);
fputc(3, f);
fflush(f);
if (!(ulOptions & OPTF_QUIET)) {
printf("Setting SGB mode flag\n");
}
}
/* /*
* -v (Validate header) option code * -v (Validate header) option code
* *