mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
Finish removing direct_update from the core (nw)
This commit is contained in:
parent
5a069f1c52
commit
78343b2786
@ -3915,21 +3915,10 @@ direct_read_data::~direct_read_data()
|
||||
// update the opcode base for the given address
|
||||
//-------------------------------------------------
|
||||
|
||||
bool direct_read_data::set_direct_region(offs_t &byteaddress)
|
||||
bool direct_read_data::set_direct_region(offs_t byteaddress)
|
||||
{
|
||||
// allow overrides
|
||||
offs_t overrideaddress = byteaddress;
|
||||
if (!m_directupdate.isnull())
|
||||
{
|
||||
overrideaddress = m_directupdate(*this, overrideaddress);
|
||||
if (overrideaddress == ~0)
|
||||
return true;
|
||||
|
||||
byteaddress = overrideaddress;
|
||||
}
|
||||
|
||||
// find or allocate a matching range
|
||||
direct_range *range = find_range(overrideaddress, m_entry);
|
||||
direct_range *range = find_range(byteaddress, m_entry);
|
||||
|
||||
// if we don't map to a bank, return false
|
||||
if (m_entry < STATIC_BANK1 || m_entry > STATIC_BANKMAX)
|
||||
@ -3943,7 +3932,7 @@ bool direct_read_data::set_direct_region(offs_t &byteaddress)
|
||||
u8 *base = *m_space.manager().bank_pointer_addr(m_entry);
|
||||
|
||||
// compute the adjusted base
|
||||
offs_t maskedbits = overrideaddress & ~m_space.bytemask();
|
||||
offs_t maskedbits = byteaddress & ~m_space.bytemask();
|
||||
const handler_entry_read &handler = m_space.read().handler_read(m_entry);
|
||||
m_bytemask = handler.bytemask();
|
||||
m_ptr = base - (handler.bytestart() & m_bytemask);
|
||||
|
@ -106,12 +106,6 @@ struct data_accessors
|
||||
};
|
||||
|
||||
|
||||
// ======================> direct_update_delegate
|
||||
|
||||
// direct region update handler
|
||||
typedef delegate<offs_t (direct_read_data &, offs_t)> direct_update_delegate;
|
||||
|
||||
|
||||
// ======================> read_delegate
|
||||
|
||||
// declare delegates for each width
|
||||
@ -183,7 +177,7 @@ public:
|
||||
|
||||
private:
|
||||
// internal helpers
|
||||
bool set_direct_region(offs_t &byteaddress);
|
||||
bool set_direct_region(offs_t byteaddress);
|
||||
direct_range *find_range(offs_t byteaddress, u16 &entry);
|
||||
void remove_intersecting_ranges(offs_t bytestart, offs_t byteend);
|
||||
|
||||
@ -195,7 +189,6 @@ private:
|
||||
offs_t m_byteend; // maximum valid byte address
|
||||
u16 m_entry; // live entry
|
||||
std::list<direct_range> m_rangelist[TOTAL_MEMORY_BANKS]; // list of ranges for each entry
|
||||
direct_update_delegate m_directupdate; // fast direct-access update callback
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user