mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-21 10:42:07 +00:00
add -b option to change MBC type (lmod)
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#define OPTF_TRUNCATE 0x10L
|
||||
#define OPTF_QUIET 0x20L
|
||||
#define OPTF_RAMSIZE 0x40L
|
||||
#define OPTF_MBCTYPE 0x80L
|
||||
|
||||
unsigned long ulOptions;
|
||||
|
||||
@@ -142,6 +143,7 @@ main(int argc, char *argv[])
|
||||
FILE *f;
|
||||
int pad_value = 0;
|
||||
int ram_size = 0;
|
||||
int mbc_type = 0;
|
||||
|
||||
ulOptions = 0;
|
||||
|
||||
@@ -172,6 +174,20 @@ main(int argc, char *argv[])
|
||||
FatalError("Invalid argument for option 'm'");
|
||||
}
|
||||
break;
|
||||
case 'b':
|
||||
ulOptions |= OPTF_MBCTYPE;
|
||||
if (strlen(argv[argn] + 2) > 0 && strlen(argv[argn] + 2) <= 2) {
|
||||
int result;
|
||||
result = sscanf(argv[argn] + 2, "%x", &mbc_type);
|
||||
if (!((result == EOF) || (result == 1))) {
|
||||
FatalError("Invalid argument for option 'b'");
|
||||
}
|
||||
} else if (strlen(argv[argn] + 2) > 0) {
|
||||
FatalError("MBC type must be between 0 and FF");
|
||||
} else {
|
||||
FatalError("Invalid argument for option 'b'");
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
ulOptions |= OPTF_PAD;
|
||||
if (strlen(argv[argn] + 2) > 0 && strlen(argv[argn] + 2) <= 2) {
|
||||
@@ -337,6 +353,23 @@ main(int argc, char *argv[])
|
||||
printf("\tRAM size set to %#02X\n", ram_size);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* -b (Set MBC type) option code
|
||||
*/
|
||||
if (ulOptions & OPTF_MBCTYPE) {
|
||||
/* carttype byte can be anything? */
|
||||
if (!(ulOptions & OPTF_QUIET)) {
|
||||
printf("Setting MBC type\n");
|
||||
}
|
||||
fflush(f);
|
||||
fseek(f, 0x147L, SEEK_SET);
|
||||
fputc(mbc_type, f);
|
||||
fflush(f);
|
||||
|
||||
if (!(ulOptions & OPTF_QUIET)) {
|
||||
printf("\tMBC type set to %#02X\n", mbc_type);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* -v (Validate header) option code
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user