diff --git a/src/emu/memory.c b/src/emu/memory.c index 1b861de383d..1ca92ac8a9d 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -2930,13 +2930,12 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst throw emu_fatalerror("Unable to allocate bank for RAM/ROM area %X-%X\n", bytestart, byteend); } - // allocate the bank + // if no tag, create a unique one membank = global_alloc(memory_bank(*this, banknum, bytestart, byteend, tag)); - manager().m_banklist.append(*membank); - - // for named banks, add to the map and register for save states - if (tag != NULL) - manager().m_bankmap.add_unique_hash(tag, membank, false); + astring temptag; + if (tag == NULL) + tag = temptag.format("anon_%p", membank); + manager().m_banklist.append(tag, *membank); } // add a reference for this space diff --git a/src/emu/memory.h b/src/emu/memory.h index a42954e2447..20b9801f3aa 100644 --- a/src/emu/memory.h +++ b/src/emu/memory.h @@ -829,7 +829,7 @@ public: private: // internal helpers memory_bank *first_bank() const { return m_banklist.first(); } - memory_bank *bank(const char *tag) const { return m_bankmap.find(tag); } + memory_bank *bank(const char *tag) const { return m_banklist.find(tag); } memory_region *region(const char *tag) { return m_regionlist.find(tag); } memory_share *shared(const char *tag) { return m_sharelist.find(tag); } void bank_reattach(); @@ -844,8 +844,7 @@ private: simple_list m_spacelist; // list of address spaces simple_list m_blocklist; // head of the list of memory blocks - simple_list m_banklist; // data gathered for each bank - tagmap_t m_bankmap; // map for fast bank lookups + tagged_list m_banklist; // data gathered for each bank UINT8 m_banknext; // next bank to allocate tagged_list m_sharelist; // map for share lookups