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_TRUNCATE 0x10L
|
||||||
#define OPTF_QUIET 0x20L
|
#define OPTF_QUIET 0x20L
|
||||||
#define OPTF_RAMSIZE 0x40L
|
#define OPTF_RAMSIZE 0x40L
|
||||||
|
#define OPTF_MBCTYPE 0x80L
|
||||||
|
|
||||||
unsigned long ulOptions;
|
unsigned long ulOptions;
|
||||||
|
|
||||||
@@ -142,6 +143,7 @@ main(int argc, char *argv[])
|
|||||||
FILE *f;
|
FILE *f;
|
||||||
int pad_value = 0;
|
int pad_value = 0;
|
||||||
int ram_size = 0;
|
int ram_size = 0;
|
||||||
|
int mbc_type = 0;
|
||||||
|
|
||||||
ulOptions = 0;
|
ulOptions = 0;
|
||||||
|
|
||||||
@@ -172,6 +174,20 @@ main(int argc, char *argv[])
|
|||||||
FatalError("Invalid argument for option 'm'");
|
FatalError("Invalid argument for option 'm'");
|
||||||
}
|
}
|
||||||
break;
|
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':
|
case 'p':
|
||||||
ulOptions |= OPTF_PAD;
|
ulOptions |= OPTF_PAD;
|
||||||
if (strlen(argv[argn] + 2) > 0 && strlen(argv[argn] + 2) <= 2) {
|
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);
|
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
|
* -v (Validate header) option code
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user