summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/memory.c')
-rw-r--r--src/emu/memory.c56
1 files changed, 26 insertions, 30 deletions
diff --git a/src/emu/memory.c b/src/emu/memory.c
index c802d428e9a..fe38d0595b6 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -1835,8 +1835,8 @@ void address_space::prepare_map()
if (entry->m_share != NULL)
{
// if we can't find it, add it to our map
- astring fulltag;
- if (manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str()) == NULL)
+ std::string fulltag = entry->m_devbase.subtag(entry->m_share);
+ if (manager().m_sharelist.find(fulltag.c_str()) == NULL)
{
VPRINTF(("Creating share '%s' of length 0x%X\n", fulltag.c_str(), entry->m_byteend + 1 - entry->m_bytestart));
memory_share *share = global_alloc(memory_share(m_map->m_databits, entry->m_byteend + 1 - entry->m_bytestart, endianness()));
@@ -1859,8 +1859,7 @@ void address_space::prepare_map()
if (entry->m_region != NULL && entry->m_share == NULL)
{
// determine full tag
- astring fulltag;
- entry->m_devbase.subtag(fulltag, entry->m_region);
+ std::string fulltag = entry->m_devbase.subtag(entry->m_region);
// find the region
memory_region *region = machine().root_device().memregion(fulltag.c_str());
@@ -1876,8 +1875,7 @@ void address_space::prepare_map()
if (entry->m_region != NULL)
{
// determine full tag
- astring fulltag;
- entry->m_devbase.subtag(fulltag, entry->m_region);
+ std::string fulltag = entry->m_devbase.subtag(entry->m_region);
// set the memory address
entry->m_memory = machine().root_device().memregion(fulltag.c_str())->base() + entry->m_rgnoffs;
@@ -1932,7 +1930,7 @@ void address_space::populate_from_map(address_map *map)
void address_space::populate_map_entry(const address_map_entry &entry, read_or_write readorwrite)
{
const map_handler_data &data = (readorwrite == ROW_READ) ? entry.m_read : entry.m_write;
- astring fulltag;
+ std::string fulltag;
// based on the handler type, alter the bits, name, funcptr, and object
switch (data.m_type)
@@ -2153,8 +2151,8 @@ address_map_entry *address_space::block_assign_intersecting(offs_t bytestart, of
// if we haven't assigned this block yet, see if we have a mapped shared pointer for it
if (entry->m_memory == NULL && entry->m_share != NULL)
{
- astring fulltag;
- memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str());
+ std::string fulltag = entry->m_devbase.subtag(entry->m_share);
+ memory_share *share = manager().m_sharelist.find(fulltag.c_str());
if (share != NULL && share->ptr() != NULL)
{
entry->m_memory = share->ptr();
@@ -2176,8 +2174,8 @@ address_map_entry *address_space::block_assign_intersecting(offs_t bytestart, of
// if we're the first match on a shared pointer, assign it now
if (entry->m_memory != NULL && entry->m_share != NULL)
{
- astring fulltag;
- memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str());
+ std::string fulltag = entry->m_devbase.subtag(entry->m_share);
+ memory_share *share = manager().m_sharelist.find(fulltag.c_str());
if (share != NULL && share->ptr() == NULL)
{
share->set_ptr(entry->m_memory);
@@ -2292,8 +2290,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off
if (rtag != NULL)
{
// find the port
- astring fulltag;
- ioport_port *port = machine().root_device().ioport(device().siblingtag(fulltag, rtag).c_str());
+ ioport_port *port = machine().root_device().ioport(device().siblingtag(rtag).c_str());
if (port == NULL)
throw emu_fatalerror("Attempted to map non-existent port '%s' for read in space %s of device '%s'\n", rtag, m_name, m_device.tag());
@@ -2304,8 +2301,7 @@ void address_space::install_readwrite_port(offs_t addrstart, offs_t addrend, off
if (wtag != NULL)
{
// find the port
- astring fulltag;
- ioport_port *port = machine().root_device().ioport(device().siblingtag(fulltag, wtag).c_str());
+ ioport_port *port = machine().root_device().ioport(device().siblingtag(wtag).c_str());
if (port == NULL)
fatalerror("Attempted to map non-existent port '%s' for write in space %s of device '%s'\n", wtag, m_name, m_device.tag());
@@ -2333,8 +2329,7 @@ void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_
// map the read bank
if (rtag != NULL)
{
- astring fulltag;
- device().siblingtag(fulltag, rtag);
+ std::string fulltag = device().siblingtag(rtag);
memory_bank &bank = bank_find_or_allocate(fulltag.c_str(), addrstart, addrend, addrmask, addrmirror, ROW_READ);
read().map_range(addrstart, addrend, addrmask, addrmirror, bank.index());
}
@@ -2342,8 +2337,7 @@ void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_
// map the write bank
if (wtag != NULL)
{
- astring fulltag;
- device().siblingtag(fulltag, wtag);
+ std::string fulltag = device().siblingtag(wtag);
memory_bank &bank = bank_find_or_allocate(fulltag.c_str(), addrstart, addrend, addrmask, addrmirror, ROW_WRITE);
write().map_range(addrstart, addrend, addrmask, addrmirror, bank.index());
}
@@ -2612,8 +2606,8 @@ bool address_space::needs_backing_store(const address_map_entry *entry)
// if we are sharing, and we don't have a pointer yet, create one
if (entry->m_share != NULL)
{
- astring fulltag;
- memory_share *share = manager().m_sharelist.find(entry->m_devbase.subtag(fulltag, entry->m_share).c_str());
+ std::string fulltag = entry->m_devbase.subtag(entry->m_share);
+ memory_share *share = manager().m_sharelist.find(fulltag.c_str());
if (share != NULL && share->ptr() == NULL)
return true;
}
@@ -2679,9 +2673,11 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst
// if no tag, create a unique one
membank = global_alloc(memory_bank(*this, banknum, bytestart, byteend, tag));
- astring temptag;
- if (tag == NULL)
- tag = temptag.format("anon_%p", membank).c_str();
+ std::string temptag;
+ if (tag == NULL) {
+ strprintf(temptag, "anon_%p", membank);
+ tag = temptag.c_str();
+ }
manager().m_banklist.append(tag, *membank);
}
@@ -3877,8 +3873,8 @@ memory_block::memory_block(address_space &space, offs_t bytestart, offs_t byteen
if (region == NULL)
{
int bytes_per_element = space.data_width() / 8;
- astring name;
- name.printf("%08x-%08x", bytestart, byteend);
+ std::string name;
+ strprintf(name,"%08x-%08x", bytestart, byteend);
space.machine().save().save_memory(NULL, "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (UINT32)(byteend + 1 - bytestart) / bytes_per_element);
}
}
@@ -3916,13 +3912,13 @@ memory_bank::memory_bank(address_space &space, int index, offs_t bytestart, offs
// generate an internal tag if we don't have one
if (tag == NULL)
{
- m_tag.printf("~%d~", index);
- m_name.printf("Internal bank #%d", index);
+ strprintf(m_tag,"~%d~", index);
+ strprintf(m_name,"Internal bank #%d", index);
}
else
{
- m_tag.cpy(tag);
- m_name.printf("Bank '%s'", tag);
+ m_tag.assign(tag);
+ strprintf(m_name,"Bank '%s'", tag);
}
if (!m_anonymous && space.machine().save().registration_allowed())