diff --git a/src/emu/dimemory.c b/src/emu/dimemory.c index 9b793f9d45f..8e1f43a0b08 100644 --- a/src/emu/dimemory.c +++ b/src/emu/dimemory.c @@ -318,7 +318,11 @@ bool device_memory_interface::interface_validity_check(emu_options &options, con { astring fulltag; astring regiontag; - device().siblingtag(regiontag, entry->m_region); + if (strchr(entry->m_region,':')) { + regiontag = entry->m_region; + } else { + device().siblingtag(regiontag, entry->m_region); + } rom_region_name(fulltag, &driver, source, romp); if (fulltag.cmp(regiontag) == 0) { diff --git a/src/emu/memory.c b/src/emu/memory.c index 5d0b10bc3b0..2f19d82bfa3 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -2136,7 +2136,11 @@ void address_space::prepare_map() if (entry->m_region != NULL && entry->m_share == NULL && entry->m_baseptr == NULL) { astring regiontag; - m_device.siblingtag(regiontag, entry->m_region); + if (strchr(entry->m_region,':')) { + regiontag = entry->m_region; + } else { + m_device.siblingtag(regiontag, entry->m_region); + } const memory_region *region = machine().region(regiontag.cstr()); if (region == NULL) fatalerror("Error: device '%s' %s space memory map entry %X-%X references non-existant region \"%s\"", m_device.tag(), m_name, entry->m_addrstart, entry->m_addrend, entry->m_region); @@ -2149,7 +2153,11 @@ void address_space::prepare_map() // convert any region-relative entries to their memory pointers if (entry->m_region != NULL) { astring regiontag; - m_device.siblingtag(regiontag, entry->m_region); + if (strchr(entry->m_region,':')) { + regiontag = entry->m_region; + } else { + m_device.siblingtag(regiontag, entry->m_region); + } entry->m_memory = machine().region(regiontag.cstr())->base() + entry->m_rgnoffs; } }