From 5adab03a1d09d6bac1966f697497f913758b41ac Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Mon, 28 Nov 2011 10:32:11 +0000 Subject: [PATCH] Fixed issue with get_merge_name when using slot devices (no whatsnew) --- src/emu/driver.c | 4 ++-- src/emu/driver.h | 5 +++-- src/emu/info.c | 6 ++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/emu/driver.c b/src/emu/driver.c index 9f3ef905a1f..e0e121e1d50 100644 --- a/src/emu/driver.c +++ b/src/emu/driver.c @@ -209,7 +209,7 @@ driver_enumerator::~driver_enumerator() // driver, allocating on demand if needed //------------------------------------------------- -machine_config &driver_enumerator::config(int index) const +machine_config &driver_enumerator::config(int index, emu_options &options) const { assert(index >= 0 && index < s_driver_count); @@ -225,7 +225,7 @@ machine_config &driver_enumerator::config(int index) const } // allocate the config and add it to the end of the list - machine_config *config = m_config[index] = global_alloc(machine_config(*s_drivers_sorted[index], m_options)); + machine_config *config = m_config[index] = global_alloc(machine_config(*s_drivers_sorted[index], options)); m_config_cache.append(*global_alloc(config_entry(*config, index))); } return *m_config[index]; diff --git a/src/emu/driver.h b/src/emu/driver.h index 25db865ccb3..e1c79dea130 100644 --- a/src/emu/driver.h +++ b/src/emu/driver.h @@ -170,7 +170,7 @@ public: // current item const game_driver &driver() const { return driver_list::driver(m_current); } - machine_config &config() const { return config(m_current); } + machine_config &config() const { return config(m_current, m_options); } 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); } @@ -180,7 +180,8 @@ public: // any item by index bool included(int index) const { assert(index >= 0 && index < s_driver_count); return m_included[index]; } bool excluded(int index) const { assert(index >= 0 && index < s_driver_count); return !m_included[index]; } - machine_config &config(int index) const; + machine_config &config(int index) const { return config(index,m_options); } + machine_config &config(int index, emu_options &options) const; void include(int index) { assert(index >= 0 && index < s_driver_count); if (!m_included[index]) { m_included[index] = true; m_filtered_count++; } } void exclude(int index) { assert(index >= 0 && index < s_driver_count); if (m_included[index]) { m_included[index] = false; m_filtered_count--; } } using driver_list::driver; diff --git a/src/emu/info.c b/src/emu/info.c index 77e8c6089a6..f663adf0203 100644 --- a/src/emu/info.c +++ b/src/emu/info.c @@ -38,6 +38,7 @@ ***************************************************************************/ #include "emu.h" +#include "emuopts.h" #include "machine/ram.h" #include "sound/samples.h" #include "info.h" @@ -1275,12 +1276,13 @@ void info_xml_creator::output_ramoptions() const char *info_xml_creator::get_merge_name(const hash_collection &romhashes) { const char *merge_name = NULL; - + emu_options lookup_options(m_drivlist.options()); + lookup_options.remove_device_options(); // walk the parent chain for (int clone_of = m_drivlist.find(m_drivlist.driver().parent); clone_of != -1; clone_of = m_drivlist.find(m_drivlist.driver(clone_of).parent)) // look in the parent's ROMs - for (const rom_source *psource = rom_first_source(m_drivlist.config(clone_of)); psource != NULL; psource = rom_next_source(*psource)) + for (const rom_source *psource = rom_first_source(m_drivlist.config(clone_of,lookup_options)); psource != NULL; psource = rom_next_source(*psource)) for (const rom_entry *pregion = rom_first_region(*psource); pregion != NULL; pregion = rom_next_region(pregion)) for (const rom_entry *prom = rom_first_file(pregion); prom != NULL; prom = rom_next_file(prom)) {