diff options
Diffstat (limited to 'src/devices/bus/sat_ctrl/segatap.cpp')
-rw-r--r-- | src/devices/bus/sat_ctrl/segatap.cpp | 66 |
1 files changed, 15 insertions, 51 deletions
diff --git a/src/devices/bus/sat_ctrl/segatap.cpp b/src/devices/bus/sat_ctrl/segatap.cpp index 4aa22d37584..e36400125fe 100644 --- a/src/devices/bus/sat_ctrl/segatap.cpp +++ b/src/devices/bus/sat_ctrl/segatap.cpp @@ -26,13 +26,10 @@ DEFINE_DEVICE_TYPE(SATURN_SEGATAP, saturn_segatap_device, "saturn_segatap", "sat // saturn_segatap_device - constructor //------------------------------------------------- -saturn_segatap_device::saturn_segatap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, SATURN_SEGATAP, tag, owner, clock), - device_saturn_control_port_interface(mconfig, *this), - m_subctrl1_port(*this, "ctrl1"), - m_subctrl2_port(*this, "ctrl2"), - m_subctrl3_port(*this, "ctrl3"), - m_subctrl4_port(*this, "ctrl4") +saturn_segatap_device::saturn_segatap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, SATURN_SEGATAP, tag, owner, clock) + , device_saturn_control_port_interface(mconfig, *this) + , m_subctrl_port(*this, "ctrl%u", 1U) { } @@ -43,10 +40,8 @@ saturn_segatap_device::saturn_segatap_device(const machine_config &mconfig, cons void saturn_segatap_device::device_start() { - m_subctrl1_port->device_start(); - m_subctrl2_port->device_start(); - m_subctrl3_port->device_start(); - m_subctrl4_port->device_start(); + for (int i = 0; i < 4; i++) + m_subctrl_port[i]->device_start(); } //------------------------------------------------- @@ -63,28 +58,7 @@ void saturn_segatap_device::device_reset() uint8_t saturn_segatap_device::read_ctrl(uint8_t offset) { - uint8_t res = 0; - switch (offset) - { - default: - case 0: - case 1: - res = m_subctrl1_port->read_ctrl(offset & 1); - break; - case 2: - case 3: - res = m_subctrl2_port->read_ctrl(offset & 1); - break; - case 4: - case 5: - res = m_subctrl3_port->read_ctrl(offset & 1); - break; - case 6: - case 7: - res = m_subctrl4_port->read_ctrl(offset & 1); - break; - } - return res; + return m_subctrl_port[offset < 8 ? (offset >> 1) : 0]->read_ctrl(offset & 1); } //------------------------------------------------- @@ -93,24 +67,14 @@ uint8_t saturn_segatap_device::read_ctrl(uint8_t offset) uint8_t saturn_segatap_device::read_id(int idx) { - switch (idx) - { - case 0: - default: - return m_subctrl1_port->read_id(0); - case 1: - return m_subctrl2_port->read_id(0); - case 2: - return m_subctrl3_port->read_id(0); - case 3: - return m_subctrl4_port->read_id(0); - } + return m_subctrl_port[idx < 4 ? idx : 0]->read_id(0); } -MACHINE_CONFIG_START(saturn_segatap_device::device_add_mconfig) - MCFG_SATURN_CONTROL_PORT_ADD("ctrl1", saturn_joys, "joypad") - MCFG_SATURN_CONTROL_PORT_ADD("ctrl2", saturn_joys, "joypad") - MCFG_SATURN_CONTROL_PORT_ADD("ctrl3", saturn_joys, "joypad") - MCFG_SATURN_CONTROL_PORT_ADD("ctrl4", saturn_joys, "joypad") -MACHINE_CONFIG_END +void saturn_segatap_device::device_add_mconfig(machine_config &config) +{ + SATURN_CONTROL_PORT(config, m_subctrl_port[0], saturn_joys, "joypad"); + SATURN_CONTROL_PORT(config, m_subctrl_port[1], saturn_joys, "joypad"); + SATURN_CONTROL_PORT(config, m_subctrl_port[2], saturn_joys, "joypad"); + SATURN_CONTROL_PORT(config, m_subctrl_port[3], saturn_joys, "joypad"); +} |