mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
view: take into account the pre-offsetting when expanding handlers
This commit is contained in:
parent
c83fb1b2fa
commit
cc66d8797b
@ -593,10 +593,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc
|
|||||||
} else if(lowbits != LowBits) {
|
} else if(lowbits != LowBits) {
|
||||||
u32 dt = lowbits - LowBits;
|
u32 dt = lowbits - LowBits;
|
||||||
u32 ne = 1 << dt;
|
u32 ne = 1 << dt;
|
||||||
|
u32 ee = end_entry - start_entry;
|
||||||
if(m_view) {
|
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; };
|
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);
|
dispatch[entry]->ref(ne);
|
||||||
u32 e0 = (entry << dt) & BITMASK;
|
u32 e0 = (entry << dt) & BITMASK;
|
||||||
for(offs_t e = 0; e != ne; e++) {
|
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 {
|
} else {
|
||||||
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
|
for(offs_t entry = 0; entry <= ee; entry++) {
|
||||||
dispatch[entry]->ref(ne);
|
dispatch[entry]->ref(ne);
|
||||||
u32 e0 = (entry << dt) & BITMASK;
|
u32 e0 = (entry << dt) & BITMASK;
|
||||||
for(offs_t e = 0; e != ne; e++) {
|
for(offs_t e = 0; e != ne; e++) {
|
||||||
|
@ -592,10 +592,11 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat
|
|||||||
} else if(lowbits != LowBits) {
|
} else if(lowbits != LowBits) {
|
||||||
u32 dt = lowbits - LowBits;
|
u32 dt = lowbits - LowBits;
|
||||||
u32 ne = 1 << dt;
|
u32 ne = 1 << dt;
|
||||||
|
u32 ee = end_entry - start_entry;
|
||||||
if(m_view) {
|
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; };
|
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);
|
dispatch[entry]->ref(ne);
|
||||||
u32 e0 = (entry << dt) & BITMASK;
|
u32 e0 = (entry << dt) & BITMASK;
|
||||||
for(offs_t e = 0; e != ne; e++) {
|
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 {
|
} else {
|
||||||
for(offs_t entry = start_entry; entry <= end_entry; entry++) {
|
for(offs_t entry = 0; entry <= ee; entry++) {
|
||||||
dispatch[entry]->ref(ne);
|
dispatch[entry]->ref(ne);
|
||||||
u32 e0 = (entry << dt) & BITMASK;
|
u32 e0 = (entry << dt) & BITMASK;
|
||||||
for(offs_t e = 0; e != ne; e++) {
|
for(offs_t e = 0; e != ne; e++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user