Misc. validation fixes (nw)

- Make single-driver command-line validation work again
- Correct some fruit machine driver classes
- Remove some now-redundant checks related to device name validity (including the slot test, which also made assumptions that some ti99 bus devices now break)
This commit is contained in:
AJR 2017-05-18 02:40:56 -04:00
parent e735009690
commit 38a077b1c5
4 changed files with 1091 additions and 1124 deletions

View File

@ -1816,15 +1816,7 @@ void validity_checker::validate_devices()
// look for duplicates
if (!device_map.insert(device.tag()).second)
osd_printf_error("Multiple devices with the same tag '%s' defined\n", device.tag());
// all devices must have a shortname
if (strcmp(device.shortname(), "") == 0)
osd_printf_error("Device does not have short name defined\n");
// all devices must have a source file defined
if (strcmp(device.source(), "") == 0)
osd_printf_error("Device does not have source file location defined\n");
osd_printf_error("Multiple devices with the same tag defined\n");
// check for device-specific validity check
device.validity_check(*this);
@ -1832,31 +1824,6 @@ void validity_checker::validate_devices()
// done with this device
m_current_device = nullptr;
}
// if device is slot cart device, we must have a shortname
std::unordered_set<std::string> slot_device_map;
for (const device_slot_interface &slot : slot_interface_iterator(m_current_config->root_device()))
{
for (auto &option : slot.option_list())
{
std::string temptag("_");
temptag.append(option.second->name());
device_t *dev = const_cast<machine_config &>(*m_current_config).device_add(&m_current_config->root_device(), temptag.c_str(), option.second->devtype(), 0);
// notify this device and all its subdevices that they are now configured
for (device_t &device : device_iterator(*dev))
if (!device.configured())
device.config_complete();
if (strcmp(dev->shortname(), "") == 0) {
if (slot_device_map.insert(dev->name()).second)
osd_printf_error("Device '%s' is slot cart device but does not have short name defined\n", dev->name());
}
const_cast<machine_config &>(*m_current_config).device_remove(&m_current_config->root_device(), temptag.c_str());
}
}
}

View File

@ -79,7 +79,7 @@ const options_entry cli_option_entries[] =
/* core commands */
{ nullptr, nullptr, OPTION_HEADER, "CORE COMMANDS" },
{ CLICOMMAND_HELP ";h;?", "0", OPTION_COMMAND, "show help message" },
{ CLICOMMAND_VALIDATE ";valid", "0", OPTION_COMMAND, "perform driver validation on all game drivers" },
{ CLICOMMAND_VALIDATE ";valid", "0", OPTION_COMMAND, "perform driver validation on game drivers" },
/* configuration commands */
{ nullptr, nullptr, OPTION_HEADER, "CONFIGURATION COMMANDS" },
@ -1378,8 +1378,8 @@ void cli_frontend::execute_commands(const char *exename)
{
validity_checker valid(m_options);
valid.set_validate_all(true);
const char *sysname = m_options.system_name();
bool result = valid.check_all_matching((sysname[0] == 0) ? nullptr : sysname);
const char *sysname = m_options.command_arguments().empty() ? nullptr : m_options.command_arguments()[0].c_str();
bool result = valid.check_all_matching(sysname);
if (!result)
throw emu_fatalerror(EMU_ERR_FAILED_VALIDITY, "Validity check failed (%d errors, %d warnings in total)\n", valid.errors(), valid.warnings());
return;

View File

@ -51442,11 +51442,11 @@ GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma /
/****************************************************************************************************************************************************************************************************************/
GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_FLAGS, layout_bfm_sc4 )
GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_FLAGS, layout_bfm_sc4 )
GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 ) // ^^
GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )
GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_adder4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_FLAGS, layout_bfm_sc4 )
// PR1036 CLUB COP THE LOT PR1036 CLOT SOUNDS11 COP THE LOT
// shows nothing on the VFD, but boots (to very little)
GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_FLAGS, layout_bfm_sc4 )

File diff suppressed because it is too large Load Diff