diff options
Diffstat (limited to 'src/devices/bus/pc_joy/pc_joy.h')
-rw-r--r-- | src/devices/bus/pc_joy/pc_joy.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/devices/bus/pc_joy/pc_joy.h b/src/devices/bus/pc_joy/pc_joy.h new file mode 100644 index 00000000000..f67e74ff003 --- /dev/null +++ b/src/devices/bus/pc_joy/pc_joy.h @@ -0,0 +1,78 @@ +// license:BSD-3-Clause +// copyright-holders:Carl +/************************************************************************* + * + * pc_joy.h + * + * joystick port + * + *************************************************************************/ + +#ifndef PC_JOY_H +#define PC_JOY_H + +#include "emu.h" + +#define MCFG_PC_JOY_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, PC_JOY, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(pc_joysticks, "basic_joy", false) + +SLOT_INTERFACE_EXTERN(pc_joysticks); + +class device_pc_joy_interface: public device_slot_card_interface +{ +public: + device_pc_joy_interface(const machine_config &mconfig, device_t &device); + virtual ~device_pc_joy_interface(); + + virtual UINT8 x1(int delta) { return 0; } + virtual UINT8 x2(int delta) { return 0; } + virtual UINT8 y1(int delta) { return 0; } + virtual UINT8 y2(int delta) { return 0; } + virtual UINT8 btn() { return 0xf; } + virtual void port_write() { } +}; + +class pc_joy_device : public device_t, + public device_slot_interface +{ +public: + pc_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_READ8_MEMBER(joy_port_r); + DECLARE_WRITE8_MEMBER(joy_port_w); +protected: + virtual void device_start() { m_stime = machine().time(); } + virtual void device_config_complete(); +private: + attotime m_stime; + device_pc_joy_interface *m_dev; +}; + +extern const device_type PC_JOY; + +class pc_basic_joy_device : public device_t, + public device_pc_joy_interface +{ +public: + pc_basic_joy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ioport_constructor device_input_ports() const; + + virtual UINT8 x1(int delta) { return (m_x1->read() > delta); } + virtual UINT8 x2(int delta) { return (m_x2->read() > delta); } + virtual UINT8 y1(int delta) { return (m_y1->read() > delta); } + virtual UINT8 y2(int delta) { return (m_y2->read() > delta); } + virtual UINT8 btn() { return m_btn->read(); } + +protected: + virtual void device_start() {} + +private: + required_ioport m_btn; + required_ioport m_x1; + required_ioport m_y1; + required_ioport m_x2; + required_ioport m_y2; +}; + +#endif /* PC_JOY_H */ |