summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/sms_ctrl/joypad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/sms_ctrl/joypad.cpp')
-rw-r--r--src/devices/bus/sms_ctrl/joypad.cpp64
1 files changed, 28 insertions, 36 deletions
diff --git a/src/devices/bus/sms_ctrl/joypad.cpp b/src/devices/bus/sms_ctrl/joypad.cpp
index 4cd664a952e..ac33fdf8b80 100644
--- a/src/devices/bus/sms_ctrl/joypad.cpp
+++ b/src/devices/bus/sms_ctrl/joypad.cpp
@@ -25,41 +25,42 @@ Release data from the Sega Retro project:
#include "joypad.h"
+namespace {
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(SMS_JOYPAD, sms_joypad_device, "sms_joypad", "Sega SMS Control Pad")
-
-
-static INPUT_PORTS_START( sms_joypad )
+INPUT_PORTS_START( sms_joypad )
PORT_START("JOYPAD")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // Vcc
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // TH
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) // TR
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) // TL
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) // TR
INPUT_PORTS_END
-//-------------------------------------------------
-// input_ports - device-specific input ports
-//-------------------------------------------------
-ioport_constructor sms_joypad_device::device_input_ports() const
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class sms_joypad_device : public device_t, public device_sms_control_interface
{
- return INPUT_PORTS_NAME( sms_joypad );
-}
+public:
+ // construction/destruction
+ sms_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ // device_sms_control_interface implementation
+ virtual uint8_t in_r() override { return m_joypad->read(); }
+protected:
+ // device_t implementation
+ virtual ioport_constructor device_input_ports() const override { return INPUT_PORTS_NAME(sms_joypad); }
+ virtual void device_start() override { }
+
+private:
+ required_ioport m_joypad;
+};
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
//-------------------------------------------------
// sms_joypad_device - constructor
@@ -67,26 +68,17 @@ ioport_constructor sms_joypad_device::device_input_ports() const
sms_joypad_device::sms_joypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, SMS_JOYPAD, tag, owner, clock),
- device_sms_control_port_interface(mconfig, *this),
+ device_sms_control_interface(mconfig, *this),
m_joypad(*this, "JOYPAD")
{
}
+} // anonymous namespace
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void sms_joypad_device::device_start()
-{
-}
-//-------------------------------------------------
-// sms_peripheral_r - joypad read
-//-------------------------------------------------
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
-uint8_t sms_joypad_device::peripheral_r()
-{
- return m_joypad->read();
-}
+DEFINE_DEVICE_TYPE_PRIVATE(SMS_JOYPAD, device_sms_control_interface, sms_joypad_device, "sms_joypad", "Sega Master System Control Pad")