diff options
author | 2021-09-22 07:49:59 +0200 | |
---|---|---|
committer | 2021-09-22 07:50:28 +0200 | |
commit | cc66d8797b1282b30b72e2b3336d013ee87aa277 (patch) | |
tree | 70b286aa5fd7b212bebfe07d93daf7352e9185c4 /src | |
parent | c83fb1b2fa4be4c6d4664ce0ca54a388b9d32364 (diff) |
view: take into account the pre-offsetting when expanding handlers
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/emumem_hedr.ipp | 5 | ||||
-rw-r--r-- | src/emu/emumem_hedw.ipp | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/emu/emumem_hedr.ipp b/src/emu/emumem_hedr.ipp index 7be3afc6727..9e9967585aa 100644 --- a/src/emu/emumem_hedr.ipp +++ b/src/emu/emumem_hedr.ipp @@ -593,10 +593,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc } else if(lowbits != LowBits) { u32 dt = lowbits - LowBits; u32 ne = 1 << dt; + u32 ee = end_entry - start_entry; if(m_view) { auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; }; - for(offs_t entry = start_entry; entry <= end_entry; entry++) { + for(offs_t entry = 0; entry <= ee; entry++) { dispatch[entry]->ref(ne); u32 e0 = (entry << dt) & BITMASK; for(offs_t e = 0; e != ne; e++) { @@ -609,7 +610,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc } } } else { - for(offs_t entry = start_entry; entry <= end_entry; entry++) { + for(offs_t entry = 0; entry <= ee; entry++) { dispatch[entry]->ref(ne); u32 e0 = (entry << dt) & BITMASK; for(offs_t e = 0; e != ne; e++) { diff --git a/src/emu/emumem_hedw.ipp b/src/emu/emumem_hedw.ipp index dae4e91f802..a9b698147ea 100644 --- a/src/emu/emumem_hedw.ipp +++ b/src/emu/emumem_hedw.ipp @@ -592,10 +592,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat } else if(lowbits != LowBits) { u32 dt = lowbits - LowBits; u32 ne = 1 << dt; + u32 ee = end_entry - start_entry; if(m_view) { auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; }; - for(offs_t entry = start_entry; entry <= end_entry; entry++) { + for(offs_t entry = 0; entry <= ee; entry++) { dispatch[entry]->ref(ne); u32 e0 = (entry << dt) & BITMASK; for(offs_t e = 0; e != ne; e++) { @@ -608,7 +609,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat } } } else { - for(offs_t entry = start_entry; entry <= end_entry; entry++) { + for(offs_t entry = 0; entry <= ee; entry++) { dispatch[entry]->ref(ne); u32 e0 = (entry << dt) & BITMASK; for(offs_t e = 0; e != ne; e++) { |