diff options
Diffstat (limited to 'src/devices/bus/pc_joy/pc_joy_sw.h')
-rw-r--r-- | src/devices/bus/pc_joy/pc_joy_sw.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/devices/bus/pc_joy/pc_joy_sw.h b/src/devices/bus/pc_joy/pc_joy_sw.h new file mode 100644 index 00000000000..12506ef1f1b --- /dev/null +++ b/src/devices/bus/pc_joy/pc_joy_sw.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:Carl +#ifndef PC_JOY_SW_H_ +#define PC_JOY_SW_H_ + +#include "pc_joy.h" + +class pc_mssw_pad_device : public device_t, + public device_pc_joy_interface +{ +public: + pc_mssw_pad_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ioport_constructor device_input_ports() const; + + virtual UINT8 btn() { return m_state; } + // timing is guessed, calibrated for at486 + virtual void port_write() { if(!m_active) { m_timer->adjust(attotime::from_usec(50), 0, attotime::from_usec(5)); m_active = true; } } + +protected: + virtual void device_start(); + virtual void device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr); + virtual void device_reset(); + +private: + required_ioport m_btn1; + required_ioport m_btn2; + required_ioport m_btn3; + required_ioport m_btn4; + required_ioport m_conf; + emu_timer *m_timer; + int m_count; + UINT8 m_state; + bool m_active; +}; + +extern const device_type PC_MSSW_PAD; + +#endif /* PC_JOY_SW_H_ */ |