summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/clifront.cpp259
-rw-r--r--src/emu/clifront.h1
-rw-r--r--src/emu/cliopts.cpp1
-rw-r--r--src/emu/cliopts.h1
-rw-r--r--src/emu/drivenum.cpp46
-rw-r--r--src/emu/drivenum.h26
-rw-r--r--src/emu/ui/imgcntrl.cpp1
-rw-r--r--src/emu/ui/imgcntrl.h2
-rw-r--r--src/emu/ui/inputmap.h2
-rw-r--r--src/emu/ui/mainmenu.h2
-rw-r--r--src/emu/ui/menu.cpp1
-rw-r--r--src/emu/ui/miscmenu.h1
-rw-r--r--src/emu/ui/selgame.cpp1
-rw-r--r--src/emu/ui/selgame.h1
-rw-r--r--src/emu/ui/simpleselgame.cpp1
-rw-r--r--src/emu/ui/simpleselgame.h3
-rw-r--r--src/emu/ui/slotopt.h2
-rw-r--r--src/emu/ui/ui.cpp1
-rw-r--r--src/emu/validity.cpp2
-rw-r--r--src/osd/sdl/man/mame.621
-rw-r--r--src/osd/sdl/man/mess.625
21 files changed, 64 insertions, 336 deletions
diff --git a/src/emu/clifront.cpp b/src/emu/clifront.cpp
index f0e26fa7ffa..8967e4c0343 100644
--- a/src/emu/clifront.cpp
+++ b/src/emu/clifront.cpp
@@ -231,7 +231,7 @@ int cli_frontend::execute(int argc, char **argv)
// if a game was specified, wasn't a wildcard, and our error indicates this was the
// reason for failure, offer some suggestions
- if (m_result == MAMERR_NO_SUCH_GAME && *(m_options.system_name()) != 0 && strchr(m_options.system_name(), '*') == nullptr)
+ if (m_result == MAMERR_NO_SUCH_GAME && *(m_options.system_name()) != 0 && strchr(m_options.system_name(), '*') == nullptr && m_options.system() == nullptr)
{
// get the top 16 approximate matches
driver_enumerator drivlist(m_options);
@@ -328,16 +328,7 @@ void cli_frontend::listsource(const char *gamename)
// iterate through drivers and output the info
while (drivlist.next())
- {
- osd_printf_info("%-16s @%s", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str());
- int bios = drivlist.bios_root();
- if (bios != -1)
- osd_printf_info(" :%s", drivlist.driver(bios).name);
- int parent = drivlist.non_bios_clone();
- if (parent != -1)
- osd_printf_info(" ^%s", drivlist.driver(parent).name);
- osd_printf_info("\n");
- }
+ osd_printf_info("%-16s %s\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str());
}
@@ -350,123 +341,39 @@ void cli_frontend::listclones(const char *gamename)
{
// start with a filtered list of drivers
driver_enumerator drivlist(m_options, gamename);
-
- // return an error if none found
- if (drivlist.count() == 0)
- throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename);
-
- // find the parent sets and BIOSes of the matching drivers
- driver_enumerator parentlist(m_options);
- driver_enumerator bioslist(m_options);
- parentlist.exclude_all();
- bioslist.exclude_all();
- while (drivlist.next())
- {
- // check if we have a non-bios clone
- int clone_of = drivlist.non_bios_clone();
- if (clone_of != -1)
- {
- // add the parent to the list
- drivlist.include(clone_of);
- parentlist.include(clone_of);
- }
-
- // add BIOS roots to a separate list
- int bios = drivlist.bios_root();
- if (bios != -1)
- bioslist.include(bios);
- }
+ int original_count = drivlist.count();
// iterate through the remaining ones to see if their parent matches
- drivlist.reset();
while (drivlist.next_excluded())
{
// if we have a non-bios clone and it matches, keep it
- int clone_of = drivlist.non_bios_clone();
- if (clone_of != -1 && drivlist.included(clone_of))
- {
- drivlist.include();
- parentlist.include(clone_of);
- }
+ int clone_of = drivlist.clone();
+ if (clone_of != -1 && (drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT) == 0)
+ if (drivlist.matches(gamename, drivlist.driver(clone_of).name))
+ drivlist.include();
}
- if (parentlist.count() == 0)
- osd_printf_info("No clones found for games matching '%s'\n", gamename);
- else
+ // return an error if none found
+ if (drivlist.count() == 0)
{
- // iterate through the list of parents
- parentlist.reset();
- bool first = true;
- while (parentlist.next())
- {
- int bios = parentlist.bios_root();
-
- // print a separate header for each parent
- if (!first)
- osd_printf_info("\n");
- first = false;
- if (bios == -1)
- osd_printf_info("Clones of \"%s\" (%s):\n", parentlist.driver().description, parentlist.driver().name);
- else
- {
- osd_printf_info("Clones of \"%s\" (%s, %s BIOS):\n", parentlist.driver().description, parentlist.driver().name, parentlist.driver(bios).name);
- drivlist.exclude(bios);
- }
-
- // prevent further output about parent
- drivlist.exclude(parentlist.current());
-
- // iterate through drivers
- drivlist.reset();
- while (drivlist.next())
- {
- // keep clones of the same parent together
- if (drivlist.is_clone_of(parentlist.current()))
- {
- // output the info and remove the driver from the list
- osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().description);
- drivlist.exclude();
- }
- }
- }
+ // see if we match but just weren't a clone
+ if (original_count == 0)
+ throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename);
+ else
+ osd_printf_info("Found %d matches for '%s' but none were clones\n", drivlist.count(), gamename);
+ return;
}
- // sort non-clone sets by BIOS, if any
- bioslist.reset();
- while (bioslist.next() && drivlist.count() != 0)
- {
- // iterate over the remaining drivers
- bool first = true;
- drivlist.reset();
- while (drivlist.next())
- {
- if (drivlist.bios_root() == bioslist.current())
- {
- // print a header for the BIOS
- if (first)
- {
- osd_printf_info("\nOther sets (%s BIOS):\n", bioslist.driver().name);
- drivlist.exclude(bioslist.current());
- first = false;
- }
-
- // output the info and remove the driver from the list
- osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().description);
- drivlist.exclude();
- }
- }
- }
+ // print the header
+ osd_printf_info("Name: Clone of:\n");
- // finally list any remaining matching drivers that have no clones
- if (drivlist.count() != 0)
+ // iterate through drivers and output the info
+ drivlist.reset();
+ while (drivlist.next())
{
- // print a header
- osd_printf_info("\nUnique sets:\n");
-
- // iterate and output the info
- drivlist.reset();
- while (drivlist.next())
- osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().description);
+ int clone_of = drivlist.clone();
+ if (clone_of != -1 && (drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT) == 0)
+ osd_printf_info("%-16s %-8s\n", drivlist.driver().name, drivlist.driver(clone_of).name);
}
}
@@ -516,125 +423,6 @@ void cli_frontend::listbrothers(const char *gamename)
//-------------------------------------------------
-// listtree - output a tree of matching games,
-// their parents and BIOS roots, separated by
-// source file
-//-------------------------------------------------
-
-void cli_frontend::listtree(const char *gamename)
-{
- // start with a filtered list of drivers; return an error if none found
- driver_enumerator initial_drivlist(m_options, gamename);
- if (initial_drivlist.count() == 0)
- throw emu_fatalerror(MAMERR_NO_SUCH_GAME, "No matching games found for '%s'", gamename);
-
- // scan through the initially-selected drivers
- bool first = true;
- while (initial_drivlist.next())
- {
- // get the source file and print the header
- if (!first)
- osd_printf_info("\n");
- first = false;
- const char *source = initial_drivlist.driver().source_file;
- osd_printf_info("Drivers in source file %s:\n", core_filename_extract_base(source).c_str());
-
- // build a new brother list for each source file
- driver_enumerator drivlist(m_options);
- driver_enumerator brotherlist(m_options);
- driver_enumerator bioslist(m_options);
- drivlist.exclude_all();
- brotherlist.exclude_all();
- bioslist.exclude_all();
-
- // walk the initial driver list and mark those with the same source
- initial_drivlist.reset();
- while (initial_drivlist.next())
- {
- if (strcmp(initial_drivlist.driver().source_file, source) == 0)
- {
- brotherlist.include(initial_drivlist.current());
- int parent = initial_drivlist.non_bios_clone();
- drivlist.include(parent != -1 ? parent : initial_drivlist.current());
- int bios = initial_drivlist.bios_root();
- if (bios != -1)
- bioslist.include(bios);
- initial_drivlist.exclude();
- }
- }
-
- // output the entries found for each source file (with BIOS root)
- bioslist.reset();
- while (bioslist.next())
- {
- if (strcmp(bioslist.driver().source_file, source) != 0)
- osd_printf_info("%-16s (BIOS root in %s)\n", bioslist.driver().name, core_filename_extract_base(bioslist.driver().source_file).c_str());
- else
- {
- osd_printf_info("%-16s %s\n", bioslist.driver().name, bioslist.driver().description);
- brotherlist.exclude(bioslist.current());
- drivlist.exclude(bioslist.current());
- }
- drivlist.reset();
- while (drivlist.next())
- {
- // drivers with this BIOS
- if (drivlist.bios_root() != bioslist.current())
- continue;
-
- // print the parent
- if (strcmp(drivlist.driver().source_file, source) != 0)
- osd_printf_info(" %-16s (parent set in %s)\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str());
- else
- {
- osd_printf_info(" %-16s %s\n", drivlist.driver().name, drivlist.driver().description);
- brotherlist.exclude(drivlist.current());
- }
-
- // print the clones
- brotherlist.reset();
- while (brotherlist.next())
- {
- if (!brotherlist.is_clone_of(drivlist.current()))
- continue;
- osd_printf_info(" %-16s %s\n", brotherlist.driver().name, brotherlist.driver().description);
- brotherlist.exclude();
- }
- drivlist.exclude();
- }
- }
-
- // output the entries found for each source file (no BIOS root)
- drivlist.reset();
- while (drivlist.next())
- {
- // print the parent
- if (strcmp(drivlist.driver().source_file, source) != 0)
- osd_printf_info("%-16s (parent set in %s)\n", drivlist.driver().name, core_filename_extract_base(drivlist.driver().source_file).c_str());
- else
- {
- osd_printf_info("%-16s %s\n", drivlist.driver().name, drivlist.driver().description);
- brotherlist.exclude(drivlist.current());
- }
-
- // print the clones
- brotherlist.reset();
- while (brotherlist.next())
- {
- if (!brotherlist.is_clone_of(drivlist.current()))
- continue;
- osd_printf_info(" %-16s %s\n", brotherlist.driver().name, brotherlist.driver().description);
- brotherlist.exclude();
- }
- }
-
- // reset for next source
- initial_drivlist.reset();
- }
-}
-
-
-//-------------------------------------------------
// listcrc - output the CRC and name of all ROMs
// referenced by the emulator
//-------------------------------------------------
@@ -1868,7 +1656,6 @@ void cli_frontend::execute_commands(const char *exename)
{ CLICOMMAND_LISTSOURCE, &cli_frontend::listsource },
{ CLICOMMAND_LISTCLONES, &cli_frontend::listclones },
{ CLICOMMAND_LISTBROTHERS, &cli_frontend::listbrothers },
- { CLICOMMAND_LISTTREE, &cli_frontend::listtree },
{ CLICOMMAND_LISTCRC, &cli_frontend::listcrc },
{ CLICOMMAND_LISTDEVICES, &cli_frontend::listdevices },
{ CLICOMMAND_LISTSLOTS, &cli_frontend::listslots },
diff --git a/src/emu/clifront.h b/src/emu/clifront.h
index 52000c47c29..584261660db 100644
--- a/src/emu/clifront.h
+++ b/src/emu/clifront.h
@@ -41,7 +41,6 @@ public:
void listsource(const char *gamename = "*");
void listclones(const char *gamename = "*");
void listbrothers(const char *gamename = "*");
- void listtree(const char *gamename = "*");
void listcrc(const char *gamename = "*");
void listroms(const char *gamename = "*");
void listsamples(const char *gamename = "*");
diff --git a/src/emu/cliopts.cpp b/src/emu/cliopts.cpp
index 5c72fe4fbe8..ba2cb33afe9 100644
--- a/src/emu/cliopts.cpp
+++ b/src/emu/cliopts.cpp
@@ -33,7 +33,6 @@ const options_entry cli_options::s_option_entries[] =
{ CLICOMMAND_LISTSOURCE ";ls", "0", OPTION_COMMAND, "driver sourcefile" },
{ CLICOMMAND_LISTCLONES ";lc", "0", OPTION_COMMAND, "show clones" },
{ CLICOMMAND_LISTBROTHERS ";lb", "0", OPTION_COMMAND, "show \"brothers\", or other drivers from same sourcefile" },
- { CLICOMMAND_LISTTREE ";lt", "0", OPTION_COMMAND, "show drivers in tree format" },
{ CLICOMMAND_LISTCRC, "0", OPTION_COMMAND, "CRC-32s" },
{ CLICOMMAND_LISTROMS ";lr", "0", OPTION_COMMAND, "list required roms for a driver" },
{ CLICOMMAND_LISTSAMPLES, "0", OPTION_COMMAND, "list optional samples for a driver" },
diff --git a/src/emu/cliopts.h b/src/emu/cliopts.h
index 2165b0c385a..ce0cb7a9c58 100644
--- a/src/emu/cliopts.h
+++ b/src/emu/cliopts.h
@@ -34,7 +34,6 @@
#define CLICOMMAND_LISTSOURCE "listsource"
#define CLICOMMAND_LISTCLONES "listclones"
#define CLICOMMAND_LISTBROTHERS "listbrothers"
-#define CLICOMMAND_LISTTREE "listtree"
#define CLICOMMAND_LISTCRC "listcrc"
#define CLICOMMAND_LISTROMS "listroms"
#define CLICOMMAND_LISTSAMPLES "listsamples"
diff --git a/src/emu/drivenum.cpp b/src/emu/drivenum.cpp
index 20bf37570c2..99d3498c6a4 100644
--- a/src/emu/drivenum.cpp
+++ b/src/emu/drivenum.cpp
@@ -54,42 +54,14 @@ int driver_list::find(const char *name)
// account wildcards in the wildstring
//-------------------------------------------------
-bool driver_list::matches(const char *wildstring, const game_driver &driver)
+bool driver_list::matches(const char *wildstring, const char *string)
{
// can only match internal drivers if the wildstring starts with an underscore
- if (driver.name[0] == '_' && (wildstring == nullptr || wildstring[0] != '_'))
+ if (string[0] == '_' && (wildstring == nullptr || wildstring[0] != '_'))
return false;
- // null matches any normal driver
- if (wildstring == nullptr)
- return true;
-
- // special case: match on parent name
- if (wildstring[0] == '^')
- {
- int clone_index = non_bios_clone(driver);
- if (clone_index == -1)
- return (wildstring[1] == '\0') || (core_stricmp(wildstring+1, driver.name) == 0);
- else
- return (core_stricmp(wildstring+1, s_drivers_sorted[clone_index]->name) == 0);
- }
-
- // special case: match on BIOS name
- if (wildstring[0] == ':')
- {
- int bios_index = bios_root(driver);
- if (bios_index == -1)
- return (driver.flags & MACHINE_IS_BIOS_ROOT) && ((wildstring[1] == '\0') || (core_stricmp(wildstring+1, driver.name) == 0));
- else
- return (core_stricmp(wildstring+1, s_drivers_sorted[bios_index]->name) == 0);
- }
-
- // special case: match on source filename
- if (wildstring[0] == '@')
- return (core_stricmp(wildstring+1, core_filename_extract_base(driver.source_file).c_str()) == 0);
-
// match everything else normally
- return (core_strwildcmp(wildstring, driver.name) == 0);
+ return (wildstring == nullptr || core_strwildcmp(wildstring, string) == 0);
}
@@ -243,7 +215,7 @@ int driver_enumerator::filter(const char *filterstring)
// match name against each driver in the list
for (int index = 0; index < s_driver_count; index++)
- if (matches(filterstring, *s_drivers_sorted[index]))
+ if (matches(filterstring, s_drivers_sorted[index]->name))
include(index);
return m_filtered_count;
@@ -281,7 +253,7 @@ void driver_enumerator::include_all()
// always exclude the empty driver
int empty = find("___empty");
assert(empty != -1);
- exclude(empty);
+ m_included[empty] = 0;
}
@@ -341,15 +313,9 @@ bool driver_enumerator::next_excluded()
void driver_enumerator::find_approximate_matches(const char *string, int count, int *results)
{
#undef rand
- // skip leading nonalphanumeric characters
- if (string != nullptr)
- {
- while (string[0] != '\0' && !isalnum(string[0]))
- string++;
- }
// if no name, pick random entries
- if (string == nullptr || string[0] == '\0')
+ if (string == nullptr || string[0] == 0)
{
// seed the RNG first
srand(osd_ticks());
diff --git a/src/emu/drivenum.h b/src/emu/drivenum.h
index 1f9d23e5c65..faaf685304a 100644
--- a/src/emu/drivenum.h
+++ b/src/emu/drivenum.h
@@ -35,23 +35,21 @@ public:
// any item by index
static const game_driver &driver(int index) { assert(index >= 0 && index < s_driver_count); return *s_drivers_sorted[index]; }
- static int clone(int index) { return clone(driver(index)); }
- static int non_bios_clone(int index) { return non_bios_clone(driver(index)); }
- static int bios_root(int index) { return bios_root(driver(index)); }
- static int compatible_with(int index) { return compatible_with(driver(index)); }
+ static int clone(int index) { return find(driver(index).parent); }
+ static int non_bios_clone(int index) { int result = find(driver(index).parent); return (result != -1 && (driver(result).flags & MACHINE_IS_BIOS_ROOT) == 0) ? result : -1; }
+ static int compatible_with(int index) { return find(driver(index).compatible_with); }
// any item by driver
- static int clone(const game_driver &driver) { return find(driver.parent); }
- static int non_bios_clone(const game_driver &driver) { int result = find(driver.parent); return (result != -1 && (driver_list::driver(result).flags & MACHINE_IS_BIOS_ROOT) == 0) ? result : -1; }
- static int bios_root(const game_driver &driver) { int result = find(driver.parent); return (result == -1) ? -1 : ((driver_list::driver(result).flags & MACHINE_IS_BIOS_ROOT) == 0) ? bios_root(result) : result; }
- static int compatible_with(const game_driver &driver) { return find(driver.compatible_with); }
+ static int clone(const game_driver &driver) { int index = find(driver); assert(index != -1); return clone(index); }
+ static int non_bios_clone(const game_driver &driver) { int index = find(driver); assert(index != -1); return non_bios_clone(index); }
+ static int compatible_with(const game_driver &driver) { int index = find(driver); assert(index != -1); return compatible_with(index); }
// general helpers
static int find(const char *name);
static int find(const game_driver &driver) { return find(driver.name); }
// static helpers
- static bool matches(const char *wildstring, const game_driver &driver);
+ static bool matches(const char *wildstring, const char *string);
static int penalty_compare(const char *source, const char *target);
protected:
@@ -86,12 +84,9 @@ public:
// current item
const game_driver &driver() const { return driver_list::driver(m_current); }
machine_config &config() const { return config(m_current, m_options); }
- int clone() const { return driver_list::clone(m_current); }
- int non_bios_clone() const { return driver_list::non_bios_clone(m_current); }
- int bios_root() const { return driver_list::bios_root(m_current); }
- int compatible_with() const { return driver_list::compatible_with(m_current); }
- bool is_clone_of(int index) const { return strcmp(driver_list::driver(index).name, driver_list::driver(m_current).parent) == 0; }
- bool is_clone_of(const game_driver &driver) const { return strcmp(driver.name, driver_list::driver(m_current).parent) == 0; }
+ int clone() { return driver_list::clone(m_current); }
+ int non_bios_clone() { return driver_list::non_bios_clone(m_current); }
+ int compatible_with() { return driver_list::compatible_with(m_current); }
void include() { include(m_current); }
void exclude() { exclude(m_current); }
@@ -105,7 +100,6 @@ public:
using driver_list::driver;
using driver_list::clone;
using driver_list::non_bios_clone;
- using driver_list::bios_root;
using driver_list::compatible_with;
// filtering/iterating
diff --git a/src/emu/ui/imgcntrl.cpp b/src/emu/ui/imgcntrl.cpp
index 8fd709ede00..8f3dbeca75b 100644
--- a/src/emu/ui/imgcntrl.cpp
+++ b/src/emu/ui/imgcntrl.cpp
@@ -9,7 +9,6 @@
***************************************************************************/
#include "emu.h"
-#include "drivenum.h"
#include "ui/ui.h"
#include "ui/menu.h"
#include "ui/imgcntrl.h"
diff --git a/src/emu/ui/imgcntrl.h b/src/emu/ui/imgcntrl.h
index 669098a4306..3d978ed617c 100644
--- a/src/emu/ui/imgcntrl.h
+++ b/src/emu/ui/imgcntrl.h
@@ -13,6 +13,8 @@
#ifndef __UI_IMGCNTRL_H__
#define __UI_IMGCNTRL_H__
+#include "drivenum.h"
+
// ======================> ui_menu_control_device_image
class ui_menu_control_device_image : public ui_menu {
diff --git a/src/emu/ui/inputmap.h b/src/emu/ui/inputmap.h
index f49df47b892..32ad48092ea 100644
--- a/src/emu/ui/inputmap.h
+++ b/src/emu/ui/inputmap.h
@@ -13,6 +13,8 @@
#ifndef __UI_INPUTMAP_H__
#define __UI_INPUTMAP_H__
+//#include "drivenum.h"
+
class ui_menu_input_groups : public ui_menu {
public:
ui_menu_input_groups(running_machine &machine, render_container *container);
diff --git a/src/emu/ui/mainmenu.h b/src/emu/ui/mainmenu.h
index 1a734e706bc..0684e230ad8 100644
--- a/src/emu/ui/mainmenu.h
+++ b/src/emu/ui/mainmenu.h
@@ -13,6 +13,8 @@
#ifndef __UI_MAINMENU_H__
#define __UI_MAINMENU_H__
+#include "drivenum.h"
+
class ui_menu_main : public ui_menu {
public:
ui_menu_main(running_machine &machine, render_container *container);
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp
index e570b672bb0..4772b39e6fd 100644
--- a/src/emu/ui/menu.cpp
+++ b/src/emu/ui/menu.cpp
@@ -9,7 +9,6 @@
*********************************************************************/
#include "emu.h"
-#include "drivenum.h"
#include "rendutil.h"
#include "cheat.h"
#include "uiinput.h"
diff --git a/src/emu/ui/miscmenu.h b/src/emu/ui/miscmenu.h
index 49ef7355bca..f43c4a6b2ba 100644
--- a/src/emu/ui/miscmenu.h
+++ b/src/emu/ui/miscmenu.h
@@ -13,6 +13,7 @@
#ifndef __UI_MISCMENU_H__
#define __UI_MISCMENU_H__
+#include "drivenum.h"
#include "crsshair.h"
class ui_menu_keyboard_mode : public ui_menu {
diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp
index bbcbc33f25c..8aebd63772b 100644
--- a/src/emu/ui/selgame.cpp
+++ b/src/emu/ui/selgame.cpp
@@ -10,7 +10,6 @@
#include "emu.h"
#include "emuopts.h"
-#include "drivenum.h"
#include "ui/ui.h"
#include "ui/menu.h"
#include "uiinput.h"
diff --git a/src/emu/ui/selgame.h b/src/emu/ui/selgame.h
index f0c8f5fd6c5..4c1cf548d60 100644
--- a/src/emu/ui/selgame.h
+++ b/src/emu/ui/selgame.h
@@ -13,6 +13,7 @@
#ifndef __UI_MAIN_H__
#define __UI_MAIN_H__
+#include "drivenum.h"
#include "ui/menu.h"
class ui_menu_select_game : public ui_menu
diff --git a/src/emu/ui/simpleselgame.cpp b/src/emu/ui/simpleselgame.cpp
index f651880ac1e..429ea61c9b7 100644
--- a/src/emu/ui/simpleselgame.cpp
+++ b/src/emu/ui/simpleselgame.cpp
@@ -10,7 +10,6 @@
#include "emu.h"
#include "emuopts.h"
-#include "drivenum.h"
#include "ui/ui.h"
#include "ui/menu.h"
#include "uiinput.h"
diff --git a/src/emu/ui/simpleselgame.h b/src/emu/ui/simpleselgame.h
index 2106fc54638..316e3747b2f 100644
--- a/src/emu/ui/simpleselgame.h
+++ b/src/emu/ui/simpleselgame.h
@@ -13,10 +13,9 @@
#ifndef __UI_SIMPLESELGAME_H__
#define __UI_SIMPLESELGAME_H__
+#include "drivenum.h"
#include "menu.h"
-class driver_enumerator;
-
class ui_simple_menu_select_game : public ui_menu {
public:
ui_simple_menu_select_game(running_machine &machine, render_container *container, const char *gamename);
diff --git a/src/emu/ui/slotopt.h b/src/emu/ui/slotopt.h
index 665ad7ceedf..86cf75102de 100644
--- a/src/emu/ui/slotopt.h
+++ b/src/emu/ui/slotopt.h
@@ -13,6 +13,8 @@
#ifndef __UI_SLOTOPT_H__
#define __UI_SLOTOPT_H__
+//#include "drivenum.h"
+
class ui_menu_slot_devices : public ui_menu {
public:
ui_menu_slot_devices(running_machine &machine, render_container *container);
diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp
index e597b6b49e9..b474c7c61f6 100644
--- a/src/emu/ui/ui.cpp
+++ b/src/emu/ui/ui.cpp
@@ -10,7 +10,6 @@
#include "emu.h"
#include "emuopts.h"
-#include "drivenum.h"
#include "video/vector.h"
#include "machine/laserdsc.h"
#include "render.h"
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index 6c41213c1df..4acc8d991ad 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -211,7 +211,7 @@ bool validity_checker::check_all_matching(const char *string)
// then iterate over all drivers and check them
m_drivlist.reset();
while (m_drivlist.next())
- if (m_drivlist.matches(string, m_drivlist.driver()))
+ if (m_drivlist.matches(string, m_drivlist.driver().name))
validate_one(m_drivlist.driver());
// cleanup
diff --git a/src/osd/sdl/man/mame.6 b/src/osd/sdl/man/mame.6
index a5393e9b6e5..a2449f15df3 100644
--- a/src/osd/sdl/man/mame.6
+++ b/src/osd/sdl/man/mame.6
@@ -91,31 +91,22 @@ games are listed; however, you can limit this list by specifying a
driver name or wildcard after the \-listfull command.
.TP
.B \-listsource, \-ls \fR[\fIgamename\fR|\fIwildcard\fR]
-Displays a list of drivers, the names of the source files their game
-drivers live in, and their parent sets and BIOS roots, if any. These
-are listed in the form of wildcards that will match all drivers with
-similar properties. By default all games are listed; however, you can
+Displays a list of drivers and the names of the source files their game
+drivers live in. Useful for finding which driver a game runs on in
+order to fix bugs. By default all games are listed; however, you can
limit this list by specifying a driver name or wildcard after the
\-listsource command.
.TP
.B \-listclones, \-lc \fR[\fIgamename\fR|\fIwildcard\fR]
-Displays a list of clones, sorted under their parent sets. By default
-all drivers are listed; however, you can limit this list to clones of
-certain drivers by specifying a name or wildcard after the \-listclones
-command.
+Displays a list of clones. By default all clones are listed; however,
+you can limit this list by specifying a driver name or wildcard after
+the \-listclones command.
.TP
.B \-listbrothers, \-lb \fR[\fIgamename\fR|\fIwildcard\fR]
Displays a list of "brothers" or other drivers from same sourcefile.
By default all games are listed; however, you can limit this list by
specifying a driver name or wildcard after the \-listbrothers command.
.TP
-.B \-listtree, \-lt \fR[\fIgamename\fR|\fIwildcard\fR]
-Displays a list of driver names and descriptions in tree format.
-Clones are listed under their parent sets, and drivers are grouped
-together with their "brothers" from the same sourcefile. By default
-all games are listed; however, you can limit this list by specifying a
-driver name or wildcard.
-.TP
.B \-listcrc
Displays a full list of CRCs of all ROM images referenced by all
drivers within MAME code.
diff --git a/src/osd/sdl/man/mess.6 b/src/osd/sdl/man/mess.6
index 7829153714c..1c7142080d6 100644
--- a/src/osd/sdl/man/mess.6
+++ b/src/osd/sdl/man/mess.6
@@ -113,31 +113,20 @@ systems are listed; however, you can limit this list by specifying a
driver name or wildcard.
.TP
.B \-listsource, \-ls \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of drivers, the names of the source files their system
-drivers live in, and their parent sets and BIOS roots, if any. These
-are listed in the form of wildcards that will match all drivers with
-similar properties. By default all systems are listed; however, you
-can limit this list by specifying a driver name or wildcard after the
-\-listsource command.
+Displays a list of drivers and the names of the source files their system
+drivers live in. Useful for finding which driver a system runs on in
+order to fix bugs. By default all systems are listed; however, you can
+limit this list by specifying a driver name or wildcard.
.TP
.B \-listclones, \-lc \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of clones, sorted under their parent sets. By default
-all drivers are listed; however, you can limit this list to clones of
-certain drivers by specifying a name or wildcard after the \-listclones
-command.
+Displays a list of clones. By default all clones are listed; however,
+you can limit this list by specifying a driver name or wildcard.
.TP
.B \-listbrothers, \-lb \fR[\fIsystem\fR|\fIwildcard\fR]
Displays a list of "brothers" or other drivers from same sourcefile.
By default all systems are listed; however, you can limit this list by
specifying a driver name or wildcard.
.TP
-.B \-listtree, \-lt \fR[\fIsystem\fR|\fIwildcard\fR]
-Displays a list of driver names and descriptions in tree format.
-Clones are listed under their parent sets, and drivers are grouped
-together with their "brothers" from the same sourcefile. By default
-all systems are listed; however, you can limit this list by specifying
-a driver name or wildcard.
-.TP
.B \-listcrc
Displays a full list of CRCs of all ROM images referenced by all
drivers within MESS code.
@@ -185,7 +174,7 @@ Output the list of available media for the system.
.B \-listsoftware, \-lsoft
Output the list of known software for the system.
.TP
-.B \-verifysoftware, \-vsoft \fR[\fIsystem\fR|\fIwildcard\fR]
+.B \-verifysoftware, \-vsoft \fR[\fIgamename\fR|\fIwildcard\fR]
Checks for invalid or missing ROM images in your software lists.
By default all drivers that have valid ZIP files or directories
in the rompath are verified; however, you can limit this list by