summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-11-26 11:54:51 +0100
committer Olivier Galibert <galibert@pobox.com>2020-11-26 11:55:00 +0100
commit3c01a994980484965664e6c3015a6abe6fa763da (patch)
tree08054796324f893431d8004afe8b11e220435fa3 /src/emu
parent09cf3c635aa05decca5453514723682a389785fc (diff)
views: Fix recursion on dup and lookup, reintroduce the correct tim100 view use, fix #7516
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/emumem_aspace.cpp2
-rw-r--r--src/emu/emumem_hedr.ipp2
-rw-r--r--src/emu/emumem_hedw.ipp6
3 files changed, 5 insertions, 5 deletions
diff --git a/src/emu/emumem_aspace.cpp b/src/emu/emumem_aspace.cpp
index f9029b9422f..8140d7cc560 100644
--- a/src/emu/emumem_aspace.cpp
+++ b/src/emu/emumem_aspace.cpp
@@ -42,7 +42,7 @@ template <typename Format, typename... Params> static void VPRINTF(Format &&fmt,
template <typename Format, typename... Params> static void VPRINTF(Format &&, Params &&...) {}
#endif
-#define VALIDATE_REFCOUNTS 0
+#define VALIDATE_REFCOUNTS 1
//**************************************************************************
// CONSTANTS
diff --git a/src/emu/emumem_hedr.ipp b/src/emu/emumem_hedr.ipp
index bdb1f971703..7c2818dc7c6 100644
--- a/src/emu/emumem_hedr.ipp
+++ b/src/emu/emumem_hedr.ipp
@@ -46,7 +46,7 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> handler_en
m_u_dispatch = m_dispatch_array[0].data();
for(unsigned int i=0; i != COUNT; i++) {
- m_u_dispatch[i] = src->m_u_dispatch[i];
+ m_u_dispatch[i] = src->m_u_dispatch[i]->dup();
m_u_ranges[i] = src->m_u_ranges[i];
}
}
diff --git a/src/emu/emumem_hedw.ipp b/src/emu/emumem_hedw.ipp
index b59a17b8f79..fba9ae3e210 100644
--- a/src/emu/emumem_hedw.ipp
+++ b/src/emu/emumem_hedw.ipp
@@ -48,7 +48,7 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> handler_en
m_u_dispatch = m_dispatch_array[0].data();
for(unsigned int i=0; i != COUNT; i++) {
- m_u_dispatch[i] = src->m_u_dispatch[i];
+ m_u_dispatch[i] = src->m_u_dispatch[i]->dup();
m_u_ranges[i] = src->m_u_ranges[i];
}
}
@@ -120,14 +120,14 @@ template<int HighBits, int Width, int AddrShift, endianness_t Endian> void *hand
template<int HighBits, int Width, int AddrShift, endianness_t Endian> std::string handler_entry_write_dispatch<HighBits, Width, AddrShift, Endian>::name() const
{
- return m_view ? "view" :"dispatch";
+ return m_view ? "view" :"dispatch";
}
template<int HighBits, int Width, int AddrShift, endianness_t Endian> void handler_entry_write_dispatch<HighBits, Width, AddrShift, Endian>::lookup(offs_t address, offs_t &start, offs_t &end, handler_entry_write<Width, AddrShift, Endian> *&handler) const
{
offs_t slot = (address >> LowBits) & BITMASK;
auto h = m_a_dispatch[slot];
- if(h->is_dispatch())
+ if(h->is_dispatch() || h->is_view())
h->lookup(address, start, end, handler);
else {
start = m_a_ranges[slot].start;