summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/nes/nes_slot.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/nes/nes_slot.cpp')
-rw-r--r--src/devices/bus/nes/nes_slot.cpp63
1 files changed, 36 insertions, 27 deletions
diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp
index c3d036b8493..ab8235ccc55 100644
--- a/src/devices/bus/nes/nes_slot.cpp
+++ b/src/devices/bus/nes/nes_slot.cpp
@@ -592,6 +592,12 @@ void device_nes_cart_interface::reset_cpu()
m_maincpu->set_pc(0xfffc);
}
+void device_nes_cart_interface::poke(offs_t offset, uint8_t data)
+{
+ // even worse hack
+ m_maincpu->space(AS_PROGRAM).write_byte(offset, data);
+}
+
//-------------------------------------------------
// Other helpers
//-------------------------------------------------
@@ -624,7 +630,7 @@ uint8_t device_nes_cart_interface::account_bus_conflict(uint32_t offset, uint8_t
// PPU accessors
//-------------------------------------------------
-WRITE8_MEMBER(device_nes_cart_interface::chr_w)
+void device_nes_cart_interface::chr_w(offs_t offset, uint8_t data)
{
int bank = offset >> 10;
@@ -632,14 +638,14 @@ WRITE8_MEMBER(device_nes_cart_interface::chr_w)
m_chr_access[bank][offset & 0x3ff] = data;
}
-READ8_MEMBER(device_nes_cart_interface::chr_r)
+uint8_t device_nes_cart_interface::chr_r(offs_t offset)
{
int bank = offset >> 10;
return m_chr_access[bank][offset & 0x3ff];
}
-WRITE8_MEMBER(device_nes_cart_interface::nt_w)
+void device_nes_cart_interface::nt_w(offs_t offset, uint8_t data)
{
int page = ((offset & 0xc00) >> 10);
@@ -649,7 +655,7 @@ WRITE8_MEMBER(device_nes_cart_interface::nt_w)
m_nt_access[page][offset & 0x3ff] = data;
}
-READ8_MEMBER(device_nes_cart_interface::nt_r)
+uint8_t device_nes_cart_interface::nt_r(offs_t offset)
{
int page = ((offset & 0xc00) >> 10);
return m_nt_access[page][offset & 0x3ff];
@@ -665,26 +671,26 @@ READ8_MEMBER(device_nes_cart_interface::nt_r)
// source)
//-------------------------------------------------
-READ8_MEMBER(device_nes_cart_interface::read_l)
+uint8_t device_nes_cart_interface::read_l(offs_t offset)
{
- return m_open_bus;
+ return get_open_bus();
}
-READ8_MEMBER(device_nes_cart_interface::read_m)
+uint8_t device_nes_cart_interface::read_m(offs_t offset)
{
if (!m_battery.empty())
return m_battery[offset & (m_battery.size() - 1)];
if (!m_prgram.empty())
return m_prgram[offset & (m_prgram.size() - 1)];
- return m_open_bus;
+ return get_open_bus();
}
-WRITE8_MEMBER(device_nes_cart_interface::write_l)
+void device_nes_cart_interface::write_l(offs_t offset, uint8_t data)
{
}
-WRITE8_MEMBER(device_nes_cart_interface::write_m)
+void device_nes_cart_interface::write_m(offs_t offset, uint8_t data)
{
if (!m_battery.empty())
m_battery[offset & (m_battery.size() - 1)] = data;
@@ -692,7 +698,7 @@ WRITE8_MEMBER(device_nes_cart_interface::write_m)
m_prgram[offset & (m_prgram.size() - 1)] = data;
}
-WRITE8_MEMBER(device_nes_cart_interface::write_h)
+void device_nes_cart_interface::write_h(offs_t offset, uint8_t data)
{
}
@@ -740,6 +746,9 @@ void device_nes_cart_interface::pcb_start(running_machine &machine, uint8_t *cir
device().save_item(NAME(m_vram));
if (!m_battery.empty())
device().save_item(NAME(m_battery));
+
+ // open bus
+ device().save_item(NAME(m_open_bus));
}
void device_nes_cart_interface::pcb_reg_postload(running_machine &machine)
@@ -943,11 +952,11 @@ std::string nes_cart_slot_device::get_default_card_software(get_default_card_sof
read
-------------------------------------------------*/
-READ8_MEMBER(nes_cart_slot_device::read_l)
+uint8_t nes_cart_slot_device::read_l(offs_t offset)
{
if (m_cart)
{
- uint8_t val = m_cart->read_l(space, offset);
+ uint8_t val = m_cart->read_l(offset);
// update open bus
m_cart->set_open_bus(((offset + 0x4100) & 0xff00) >> 8);
return val;
@@ -956,11 +965,11 @@ READ8_MEMBER(nes_cart_slot_device::read_l)
return 0xff;
}
-READ8_MEMBER(nes_cart_slot_device::read_m)
+uint8_t nes_cart_slot_device::read_m(offs_t offset)
{
if (m_cart)
{
- uint8_t val = m_cart->read_m(space, offset);
+ uint8_t val = m_cart->read_m(offset);
// update open bus
m_cart->set_open_bus(((offset + 0x6000) & 0xff00) >> 8);
return val;
@@ -969,11 +978,11 @@ READ8_MEMBER(nes_cart_slot_device::read_m)
return 0xff;
}
-READ8_MEMBER(nes_cart_slot_device::read_h)
+uint8_t nes_cart_slot_device::read_h(offs_t offset)
{
if (m_cart)
{
- uint8_t val = m_cart->read_h(space, offset);
+ uint8_t val = m_cart->read_h(offset);
// update open bus
m_cart->set_open_bus(((offset + 0x8000) & 0xff00) >> 8);
return val;
@@ -982,11 +991,11 @@ READ8_MEMBER(nes_cart_slot_device::read_h)
return 0xff;
}
-READ8_MEMBER(nes_cart_slot_device::read_ex)
+uint8_t nes_cart_slot_device::read_ex(offs_t offset)
{
if (m_cart)
{
- uint8_t val = m_cart->read_ex(space, offset);
+ uint8_t val = m_cart->read_ex(offset);
// update open bus
m_cart->set_open_bus(((offset + 0x4020) & 0xff00) >> 8);
return val;
@@ -1000,41 +1009,41 @@ READ8_MEMBER(nes_cart_slot_device::read_ex)
write
-------------------------------------------------*/
-WRITE8_MEMBER(nes_cart_slot_device::write_l)
+void nes_cart_slot_device::write_l(offs_t offset, uint8_t data)
{
if (m_cart)
{
- m_cart->write_l(space, offset, data);
+ m_cart->write_l(offset, data);
// update open bus
m_cart->set_open_bus(((offset + 0x4100) & 0xff00) >> 8);
}
}
-WRITE8_MEMBER(nes_cart_slot_device::write_m)
+void nes_cart_slot_device::write_m(offs_t offset, uint8_t data)
{
if (m_cart)
{
- m_cart->write_m(space, offset, data);
+ m_cart->write_m(offset, data);
// update open bus
m_cart->set_open_bus(((offset + 0x6000) & 0xff00) >> 8);
}
}
-WRITE8_MEMBER(nes_cart_slot_device::write_h)
+void nes_cart_slot_device::write_h(offs_t offset, uint8_t data)
{
if (m_cart)
{
- m_cart->write_h(space, offset, data);
+ m_cart->write_h(offset, data);
// update open bus
m_cart->set_open_bus(((offset + 0x8000) & 0xff00) >> 8);
}
}
-WRITE8_MEMBER(nes_cart_slot_device::write_ex)
+void nes_cart_slot_device::write_ex(offs_t offset, uint8_t data)
{
if (m_cart)
{
- m_cart->write_ex(space, offset, data);
+ m_cart->write_ex(offset, data);
// update open bus
m_cart->set_open_bus(((offset + 0x4020) & 0xff00) >> 8);
}