summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/sat_ctrl/segatap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/sat_ctrl/segatap.cpp')
-rw-r--r--src/devices/bus/sat_ctrl/segatap.cpp66
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");
+}