(MESS) saturn: added missing mem_mask and removed direct access to the cart device. nw.

This commit is contained in:
Fabio Priuli 2013-03-20 06:07:22 +00:00
parent 34e7258077
commit fad3b74c73
5 changed files with 25 additions and 82 deletions

View File

@ -632,27 +632,27 @@ MACHINE_START_MEMBER(sat_console_state,saturn)
case 0x22:
case 0x23:
case 0x24:
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_bram), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_bram), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_bram), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_bram), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp));
break;
case 0x5a: // Data RAM cart
case 0x5c:
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram0), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram0), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram1), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram1), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram0), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram0), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(device_sat_cart_interface::read_ext_dram1), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(device_sat_cart_interface::write_ext_dram1), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp));
break;
case 0: // ROM cart + mirror
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(device_sat_cart_interface::read_rom), m_exp->m_cart));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp));
machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp));
machine().device("slave")->memory().space(AS_PROGRAM).install_read_handler(0x22000000, 0x24ffffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp));
break;
}
}

View File

@ -98,26 +98,3 @@ WRITE32_MEMBER(saturn_bram_device::write_ext_bram)
else
mame_printf_error("Battery RAM write beyond its boundary! offs: %X data: %X\n", offset, data);
}
#if 0
READ8_MEMBER(saturn_bram_device::read_ext_bram)
{
if (offset < m_size)
return m_ext_bram[offset];
else
{
mame_printf_error("Battery RAM read beyond its boundary! offs: %X\n", offset);
return 0xff;
}
}
WRITE8_MEMBER(saturn_bram_device::write_ext_bram)
{
if (offset < m_size)
{
m_ext_bram[offset] = data;
}
else
mame_printf_error("Battery RAM write beyond its boundary! offs: %X data: %X\n", offset, data);
}
#endif

View File

@ -27,10 +27,6 @@ public:
// reading and writing
virtual DECLARE_READ32_MEMBER(read_ext_bram);
virtual DECLARE_WRITE32_MEMBER(write_ext_bram);
#if 0
virtual DECLARE_READ8_MEMBER(read_ext_bram);
virtual DECLARE_WRITE8_MEMBER(write_ext_bram);
#endif
UINT32 m_size; // this is the size of Battery RAM in bytes
};

View File

@ -208,7 +208,7 @@ int sat_cart_slot_device::get_cart_type()
READ32_MEMBER(sat_cart_slot_device::read_rom)
{
if (m_cart)
return m_cart->read_rom(space, offset);
return m_cart->read_rom(space, offset, mem_mask);
else
return 0xffffffff;
}
@ -216,7 +216,7 @@ READ32_MEMBER(sat_cart_slot_device::read_rom)
READ32_MEMBER(sat_cart_slot_device::read_ext_dram0)
{
if (m_cart)
return m_cart->read_ext_dram0(space, offset);
return m_cart->read_ext_dram0(space, offset, mem_mask);
else
return 0xffffffff;
}
@ -224,7 +224,7 @@ READ32_MEMBER(sat_cart_slot_device::read_ext_dram0)
READ32_MEMBER(sat_cart_slot_device::read_ext_dram1)
{
if (m_cart)
return m_cart->read_ext_dram1(space, offset);
return m_cart->read_ext_dram1(space, offset, mem_mask);
else
return 0xffffffff;
}
@ -232,24 +232,11 @@ READ32_MEMBER(sat_cart_slot_device::read_ext_dram1)
READ32_MEMBER(sat_cart_slot_device::read_ext_bram)
{
if (m_cart)
return m_cart->read_ext_bram(space, offset);
return m_cart->read_ext_bram(space, offset, mem_mask);
else
return 0xffffffff;
}
#if 0
READ32_MEMBER(sat_cart_slot_device::read_ext_bram)
{
if (m_cart)
{
return (m_cart->read_ext_bram(space, offset * 2) << 16)
| m_cart->read_ext_bram(space, offset * 2 + 1);
}
else
return 0xffffffff;
}
#endif
/*-------------------------------------------------
write
-------------------------------------------------*/
@ -257,30 +244,17 @@ READ32_MEMBER(sat_cart_slot_device::read_ext_bram)
WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram0)
{
if (m_cart)
m_cart->write_ext_dram0(space, offset, data);
m_cart->write_ext_dram0(space, offset, data, mem_mask);
}
WRITE32_MEMBER(sat_cart_slot_device::write_ext_dram1)
{
if (m_cart)
m_cart->write_ext_dram1(space, offset, data);
m_cart->write_ext_dram1(space, offset, data, mem_mask);
}
WRITE32_MEMBER(sat_cart_slot_device::write_ext_bram)
{
if (m_cart)
m_cart->write_ext_bram(space, offset, data);
m_cart->write_ext_bram(space, offset, data, mem_mask);
}
#if 0
WRITE32_MEMBER(sat_cart_slot_device::write_ext_bram)
{
if (m_cart)
{
if (ACCESSING_BITS_16_23)
m_cart->write_ext_bram(space, offset * 2 + 0, (data & 0x00ff0000) >> 16);
if (ACCESSING_BITS_0_7)
m_cart->write_ext_bram(space, offset * 2 + 1, (data & 0x000000ff) >> 0);
}
}
#endif

View File

@ -25,10 +25,6 @@ public:
// reading and writing to Extended BRAM chip
virtual DECLARE_READ32_MEMBER(read_ext_bram) { return 0xffffffff; }
virtual DECLARE_WRITE32_MEMBER(write_ext_bram) {}
#if 0
virtual DECLARE_READ8_MEMBER(read_ext_bram) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write_ext_bram) {}
#endif
virtual int get_cart_type() { return m_cart_type; };
@ -43,7 +39,7 @@ public:
UINT32 get_ext_dram1_size() { return m_ext_dram1_size; }
UINT32 get_ext_bram_size() { return m_ext_bram_size; }
//protected:
protected:
int m_cart_type;
// internal state
@ -102,7 +98,7 @@ public:
virtual DECLARE_READ32_MEMBER(read_ext_bram);
virtual DECLARE_WRITE32_MEMBER(write_ext_bram);
//protected:
private:
device_sat_cart_interface* m_cart;
};