mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
atomiswave: more correct ROM board PIO access (fixes ggisuka, rumblef2 crash)[MetalliC, CaH4e3]
This commit is contained in:
parent
900a2e0bb6
commit
d2c736443a
@ -108,7 +108,7 @@ DEVICE_ADDRESS_MAP_START(submap, 16, aw_rom_board)
|
||||
AM_RANGE(0x08, 0x09) AM_WRITE(mpr_first_file_index_w)
|
||||
AM_RANGE(0x0a, 0x0b) AM_WRITE(mpr_file_offsetl_w)
|
||||
AM_RANGE(0x0c, 0x0d) AM_WRITE(mpr_file_offseth_w)
|
||||
AM_RANGE(0x40, 0x41) AM_READWRITE(adj_offset_r, adj_offset_w)
|
||||
AM_RANGE(0x40, 0x41) AM_READWRITE(pio_r, pio_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
aw_rom_board::aw_rom_board(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
@ -255,14 +255,23 @@ void aw_rom_board::device_reset()
|
||||
dma_limit = 0;
|
||||
}
|
||||
|
||||
READ16_MEMBER(aw_rom_board::adj_offset_r)
|
||||
READ16_MEMBER(aw_rom_board::pio_r)
|
||||
{
|
||||
return adjust_off;
|
||||
UINT16 retval;
|
||||
if (epr_offset == 0x7fffff)
|
||||
retval = adjust_off;
|
||||
else
|
||||
retval = m_region->u16(epr_offset * 2);
|
||||
epr_offset++;
|
||||
return retval;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(aw_rom_board::adj_offset_w)
|
||||
WRITE16_MEMBER(aw_rom_board::pio_w)
|
||||
{
|
||||
adjust_off = data;
|
||||
// write to ROM board address space, including FlashROM programming using CFI (TODO)
|
||||
if (epr_offset == 0x7fffff) // special register which changes ROMBD addressing
|
||||
adjust_off = data;
|
||||
epr_offset++;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(aw_rom_board::epr_offsetl_w)
|
||||
|
@ -22,8 +22,8 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(mpr_first_file_index_w); // 5f7010
|
||||
DECLARE_WRITE16_MEMBER(mpr_file_offsetl_w); // 5f7014
|
||||
DECLARE_WRITE16_MEMBER(mpr_file_offseth_w); // 5f7018
|
||||
DECLARE_READ16_MEMBER(adj_offset_r); // 5f7080
|
||||
DECLARE_WRITE16_MEMBER(adj_offset_w); // 5f7080
|
||||
DECLARE_READ16_MEMBER(pio_r); // 5f7080
|
||||
DECLARE_WRITE16_MEMBER(pio_w); // 5f7080
|
||||
|
||||
protected:
|
||||
virtual void device_start();
|
||||
|
Loading…
Reference in New Issue
Block a user