isa8_device: Provide proper unitmask for address spaces of any data width (nw)

screen_device: Guard against assert failure on partial updates starting from incomplete first line (nw)
This commit is contained in:
AJR 2017-03-30 01:44:32 -04:00
parent ced3087742
commit 01c732defa
2 changed files with 11 additions and 4 deletions

View File

@ -215,7 +215,11 @@ public:
}
void install_device(offs_t start, offs_t end, read8_delegate rhandler, write8_delegate whandler);
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits = 8, uint64_t unitmask = 0xffffffffffffffffU)
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits = 8)
{
m_iospace->install_device(addrstart, addrend, device, map, bits, 0xffffffffffffffffU >> (64 - m_iospace->data_width()));
}
template<typename T> void install_device(offs_t addrstart, offs_t addrend, T &device, void (T::*map)(class address_map &map), int bits, uint64_t unitmask)
{
m_iospace->install_device(addrstart, addrend, device, map, bits, unitmask);
}

View File

@ -1235,9 +1235,12 @@ void screen_device::update_now()
// if the line before us was incomplete, we must do it in two pieces
if (m_partial_scan_hpos > 0)
{
s32 save_scan = m_partial_scan_hpos;
update_partial(current_vpos - 2);
m_partial_scan_hpos = save_scan;
if (current_vpos > 1)
{
s32 save_scan = m_partial_scan_hpos;
update_partial(current_vpos - 2);
m_partial_scan_hpos = save_scan;
}
// now finish the previous partial scanline
int scanline = current_vpos - 1;