diff options
-rw-r--r-- | src/emu/romload.c | 11 | ||||
-rw-r--r-- | src/emu/romload.h | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/emu/romload.c b/src/emu/romload.c index caebebc8d6a..0381a8fc579 100644 --- a/src/emu/romload.c +++ b/src/emu/romload.c @@ -291,9 +291,16 @@ static void CLIB_DECL ATTR_PRINTF(1,2) debugload(const char *string, ...) static int determine_bios_rom(rom_load_data *romdata, const rom_entry *romp) { const char *specbios = options_get_string(mame_options(), OPTION_BIOS); + const char *defaultname = NULL; const rom_entry *rom; + int default_no = 1; int bios_count = 0; int bios_no = 0; + + /* first determine the default BIOS name */ + for (rom = romp; !ROMENTRY_ISEND(rom); rom++) + if (ROMENTRY_ISDEFAULT_BIOS(rom)) + defaultname = ROM_GETNAME(rom); /* look for a BIOS with a matching name */ for (rom = romp; !ROMENTRY_ISEND(rom); rom++) @@ -307,6 +314,8 @@ static int determine_bios_rom(rom_load_data *romdata, const rom_entry *romp) sprintf(bios_number, "%d", bios_flags - 1); if (strcmp(bios_number, specbios) == 0 || strcmp(biosname, specbios) == 0) bios_no = bios_flags; + if (defaultname != NULL && strcmp(biosname, defaultname) == 0) + default_no = bios_flags; bios_count++; } @@ -321,7 +330,7 @@ static int determine_bios_rom(rom_load_data *romdata, const rom_entry *romp) } /* set to default */ - bios_no = 1; + bios_no = default_no; } LOG(("Using System BIOS: %d\n", bios_no)); diff --git a/src/emu/romload.h b/src/emu/romload.h index 398b58b6a2c..de139ed81d4 100644 --- a/src/emu/romload.h +++ b/src/emu/romload.h @@ -38,6 +38,7 @@ enum ROMENTRYTYPE_CARTRIDGE, /* this entry specifies a cartridge (MESS) */ ROMENTRYTYPE_IGNORE, /* this entry continues loading the previous ROM but throws the data away */ ROMENTRYTYPE_SYSTEM_BIOS, /* this entry specifies a bios */ + ROMENTRYTYPE_DEFAULT_BIOS, /* this entry specifies a default bios */ ROMENTRYTYPE_COUNT }; @@ -176,6 +177,7 @@ struct _rom_load_data #define ROMENTRY_ISCOPY(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_COPY) #define ROMENTRY_ISIGNORE(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_IGNORE) #define ROMENTRY_ISSYSTEM_BIOS(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_SYSTEM_BIOS) +#define ROMENTRY_ISDEFAULT_BIOS(r) (ROMENTRY_GETTYPE(r) == ROMENTRYTYPE_DEFAULT_BIOS) #define ROMENTRY_ISREGIONEND(r) (ROMENTRY_ISREGION(r) || ROMENTRY_ISEND(r)) /* ----- per-region macros ----- */ @@ -265,6 +267,7 @@ struct _rom_load_data /* ----- system BIOS macros ----- */ #define ROM_SYSTEM_BIOS(value,name,description) { name, description, 0, 0, ROMENTRYTYPE_SYSTEM_BIOS | ROM_BIOS(value+1) }, +#define ROM_DEFAULT_BIOS(name) { name, NULL, 0, 0, ROMENTRYTYPE_DEFAULT_BIOS }, /* ----- disk loading macros ----- */ |