diff options
Diffstat (limited to 'src/devices/bus/astrocde/ctrl.cpp')
-rw-r--r-- | src/devices/bus/astrocde/ctrl.cpp | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/src/devices/bus/astrocde/ctrl.cpp b/src/devices/bus/astrocde/ctrl.cpp index 89cd60ca6a5..07aa620aba6 100644 --- a/src/devices/bus/astrocde/ctrl.cpp +++ b/src/devices/bus/astrocde/ctrl.cpp @@ -19,7 +19,7 @@ DEFINE_DEVICE_TYPE(ASTROCADE_CTRL_PORT, astrocade_ctrl_port_device, "astrocade_c //************************************************************************** device_astrocade_ctrl_interface::device_astrocade_ctrl_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig, device) + : device_interface(device, "astrocadectrl") , m_port(dynamic_cast<astrocade_ctrl_port_device *>(device.owner())) { } @@ -30,8 +30,6 @@ device_astrocade_ctrl_interface::~device_astrocade_ctrl_interface() void device_astrocade_ctrl_interface::interface_validity_check(validity_checker &valid) const { - device_slot_card_interface::interface_validity_check(valid); - if (device().owner() && !m_port) { osd_printf_error("Owner device %s (%s) is not an astrocade_ctrl_port_device\n", device().owner()->tag(), device().owner()->name()); @@ -40,12 +38,19 @@ void device_astrocade_ctrl_interface::interface_validity_check(validity_checker void device_astrocade_ctrl_interface::interface_pre_start() { - device_slot_card_interface::interface_pre_start(); - if (m_port && !m_port->started()) throw device_missing_dependencies(); } +void device_astrocade_ctrl_interface::write_ltpen(int state) +{ + if (m_port->m_ltpen != state) + { + m_port->m_ltpen = state; + m_port->m_ltpen_handler(state); + } +} + //************************************************************************** // Bally Astrocade controller port @@ -53,7 +58,7 @@ void device_astrocade_ctrl_interface::interface_pre_start() astrocade_ctrl_port_device::astrocade_ctrl_port_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ASTROCADE_CTRL_PORT, tag, owner, clock) - , device_slot_interface(mconfig, *this) + , device_single_card_slot_interface<device_astrocade_ctrl_interface>(mconfig, *this) , m_ltpen(0) , m_ltpen_handler(*this) , m_device(nullptr) @@ -64,35 +69,13 @@ astrocade_ctrl_port_device::~astrocade_ctrl_port_device() { } -void astrocade_ctrl_port_device::device_validity_check(validity_checker &valid) const -{ - device_t *const card(get_card_device()); - if (card && !dynamic_cast<device_astrocade_ctrl_interface *>(card)) - { - osd_printf_error("Card device %s (%s) does not implement device_astrocade_ctrl_interface\n", card->tag(), card->name()); - } -} - void astrocade_ctrl_port_device::device_resolve_objects() { - device_astrocade_ctrl_interface *const card(dynamic_cast<device_astrocade_ctrl_interface *>(get_card_device())); - if (card) - m_device = card; - - m_ltpen_handler.resolve_safe(); + m_device = get_card_device(); } void astrocade_ctrl_port_device::device_start() { - device_t *const card(get_card_device()); - if (card) - { - if (!m_device) - { - throw emu_fatalerror("astrocade_ctrl_port_device: card device %s (%s) does not implement device_astrocade_ctrl_interface\n", card->tag(), card->name()); - } - } - save_item(NAME(m_ltpen)); m_ltpen = 0; @@ -100,15 +83,6 @@ void astrocade_ctrl_port_device::device_start() m_ltpen_handler(0); } -uint8_t astrocade_ctrl_port_device::read_handle() -{ - return m_device ? m_device->read_handle() : 0; -} - -uint8_t astrocade_ctrl_port_device::read_knob() -{ - return m_device ? m_device->read_knob() : 0; -} #include "joy.h" #include "cassette.h" |