From cc66d8797b1282b30b72e2b3336d013ee87aa277 Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Wed, 22 Sep 2021 07:49:59 +0200 Subject: view: take into account the pre-offsetting when expanding handlers --- src/emu/emumem_hedr.ipp | 5 +++-- 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 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 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 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 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++) { -- cgit v1.2.3