summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/intv/slot.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/intv/slot.h')
-rw-r--r--src/devices/bus/intv/slot.h128
1 files changed, 67 insertions, 61 deletions
diff --git a/src/devices/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index bdec54dab76..ec79b148375 100644
--- a/src/devices/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
@@ -39,36 +39,36 @@ public:
virtual ~device_intv_cart_interface();
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_rom04) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom20) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom40) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom48) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom50) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom60) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom70) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom80) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom90) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_roma0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romb0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romc0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romd0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rome0) { return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romf0) { return 0xffff; }
-
- virtual DECLARE_READ16_MEMBER(read_ram) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) {}
+ virtual uint16_t read_rom04(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom20(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom40(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom48(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom50(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom60(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom70(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom80(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rom90(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_roma0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romb0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romc0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romd0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_rome0(offs_t offset) { return 0xffff; }
+ virtual uint16_t read_romf0(offs_t offset) { return 0xffff; }
+
+ virtual uint16_t read_ram(offs_t offset) { return 0xffff; }
+ virtual void write_ram(offs_t offset, uint16_t data) {}
// Used by IntelliVoice & ECS
- virtual DECLARE_READ16_MEMBER(read_ay) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ay) {}
- virtual DECLARE_READ16_MEMBER(read_speech) { return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_speech) {}
- virtual DECLARE_WRITE16_MEMBER(write_d0) {}
- virtual DECLARE_WRITE16_MEMBER(write_88) {}
- virtual DECLARE_WRITE16_MEMBER(write_rom20) {}
- virtual DECLARE_WRITE16_MEMBER(write_rom70) {}
- virtual DECLARE_WRITE16_MEMBER(write_rome0) {}
- virtual DECLARE_WRITE16_MEMBER(write_romf0) {}
+ virtual uint16_t read_ay(offs_t offset) { return 0xffff; }
+ virtual void write_ay(offs_t offset, uint16_t data) {}
+ virtual uint16_t read_speech(offs_t offset) { return 0xffff; }
+ virtual void write_speech(offs_t offset, uint16_t data) {}
+ virtual void write_d0(offs_t offset, uint16_t data) {}
+ virtual void write_88(offs_t offset, uint16_t data) {}
+ virtual void write_rom20(offs_t offset, uint16_t data) {}
+ virtual void write_rom70(offs_t offset, uint16_t data) {}
+ virtual void write_rome0(offs_t offset, uint16_t data) {}
+ virtual void write_romf0(offs_t offset, uint16_t data) {}
void rom_alloc(uint32_t size, const char *tag);
void ram_alloc(uint32_t size);
@@ -98,7 +98,17 @@ class intv_cart_slot_device : public device_t,
{
public:
// construction/destruction
- intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <typename T>
+ intv_cart_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt)
+ : intv_cart_slot_device(mconfig, tag, owner, 0)
+ {
+ option_reset();
+ opts(*this);
+ set_default_option(dflt);
+ set_fixed(false);
+ }
+
+ intv_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~intv_cart_slot_device();
// image-level overrides
@@ -124,40 +134,40 @@ public:
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
// reading and writing
- virtual DECLARE_READ16_MEMBER(read_rom04) { if (m_cart) return m_cart->read_rom04(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom20) { if (m_cart) return m_cart->read_rom20(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom40) { if (m_cart) return m_cart->read_rom40(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom48) { if (m_cart) return m_cart->read_rom48(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom50) { if (m_cart) return m_cart->read_rom50(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom60) { if (m_cart) return m_cart->read_rom60(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom70) { if (m_cart) return m_cart->read_rom70(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom80) { if (m_cart) return m_cart->read_rom80(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rom90) { if (m_cart) return m_cart->read_rom90(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_roma0) { if (m_cart) return m_cart->read_roma0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romb0) { if (m_cart) return m_cart->read_romb0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romc0) { if (m_cart) return m_cart->read_romc0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romd0) { if (m_cart) return m_cart->read_romd0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_rome0) { if (m_cart) return m_cart->read_rome0(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_READ16_MEMBER(read_romf0) { if (m_cart) return m_cart->read_romf0(space, offset, mem_mask); else return 0xffff; }
-
- virtual DECLARE_READ16_MEMBER(read_ay);
- virtual DECLARE_WRITE16_MEMBER(write_ay);
- virtual DECLARE_READ16_MEMBER(read_speech);
- virtual DECLARE_WRITE16_MEMBER(write_speech);
- virtual DECLARE_READ16_MEMBER(read_ram) { if (m_cart) return m_cart->read_ram(space, offset, mem_mask); else return 0xffff; }
- virtual DECLARE_WRITE16_MEMBER(write_ram) { if (m_cart) m_cart->write_ram(space, offset, data, mem_mask); }
+ uint16_t read_rom04(offs_t offset) { if (m_cart) return m_cart->read_rom04(offset); else return 0xffff; }
+ uint16_t read_rom20(offs_t offset) { if (m_cart) return m_cart->read_rom20(offset); else return 0xffff; }
+ uint16_t read_rom40(offs_t offset) { if (m_cart) return m_cart->read_rom40(offset); else return 0xffff; }
+ uint16_t read_rom48(offs_t offset) { if (m_cart) return m_cart->read_rom48(offset); else return 0xffff; }
+ uint16_t read_rom50(offs_t offset) { if (m_cart) return m_cart->read_rom50(offset); else return 0xffff; }
+ uint16_t read_rom60(offs_t offset) { if (m_cart) return m_cart->read_rom60(offset); else return 0xffff; }
+ uint16_t read_rom70(offs_t offset) { if (m_cart) return m_cart->read_rom70(offset); else return 0xffff; }
+ uint16_t read_rom80(offs_t offset) { if (m_cart) return m_cart->read_rom80(offset); else return 0xffff; }
+ uint16_t read_rom90(offs_t offset) { if (m_cart) return m_cart->read_rom90(offset); else return 0xffff; }
+ uint16_t read_roma0(offs_t offset) { if (m_cart) return m_cart->read_roma0(offset); else return 0xffff; }
+ uint16_t read_romb0(offs_t offset) { if (m_cart) return m_cart->read_romb0(offset); else return 0xffff; }
+ uint16_t read_romc0(offs_t offset) { if (m_cart) return m_cart->read_romc0(offset); else return 0xffff; }
+ uint16_t read_romd0(offs_t offset) { if (m_cart) return m_cart->read_romd0(offset); else return 0xffff; }
+ uint16_t read_rome0(offs_t offset) { if (m_cart) return m_cart->read_rome0(offset); else return 0xffff; }
+ uint16_t read_romf0(offs_t offset) { if (m_cart) return m_cart->read_romf0(offset); else return 0xffff; }
+
+ uint16_t read_ay(offs_t offset);
+ void write_ay(offs_t offset, uint16_t data);
+ uint16_t read_speech(offs_t offset);
+ void write_speech(offs_t offset, uint16_t data);
+ uint16_t read_ram(offs_t offset) { if (m_cart) return m_cart->read_ram(offset); else return 0xffff; }
+ void write_ram(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_ram(offset, data); }
virtual void late_subslot_setup() { if (m_cart) return m_cart->late_subslot_setup(); }
// these RAM accessors are needed to deal with IntelliVoice and ECS mounting RAM-equipped carts
- virtual DECLARE_WRITE16_MEMBER(write_d0) { if (m_cart) m_cart->write_d0(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_88) { if (m_cart) m_cart->write_88(space, offset, data, mem_mask); }
+ void write_d0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_d0(offset, data); }
+ void write_88(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_88(offset, data); }
// ECS paged roms need these
- virtual DECLARE_WRITE16_MEMBER(write_rom20) { if (m_cart) m_cart->write_rom20(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_rom70) { if (m_cart) m_cart->write_rom70(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_rome0) { if (m_cart) m_cart->write_rome0(space, offset, data, mem_mask); }
- virtual DECLARE_WRITE16_MEMBER(write_romf0) { if (m_cart) m_cart->write_romf0(space, offset, data, mem_mask); }
+ void write_rom20(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rom20(offset, data); }
+ void write_rom70(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rom70(offset, data); }
+ void write_rome0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_rome0(offset, data); }
+ void write_romf0(offs_t offset, uint16_t data) { if (m_cart) m_cart->write_romf0(offset, data); }
protected:
// device-level overrides
@@ -179,10 +189,6 @@ DECLARE_DEVICE_TYPE(INTV_CART_SLOT, intv_cart_slot_device)
#define INTVSLOT_ROM_REGION_TAG ":cart:rom"
-#define MCFG_INTV_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \
- MCFG_DEVICE_ADD(_tag, INTV_CART_SLOT, 0) \
- MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false)
-
void intv_cart(device_slot_interface &device);
#endif // MAME_BUS_INTV_SLOT_H