diff options
Diffstat (limited to 'src/devices/bus/vsmile/pad.h')
-rw-r--r-- | src/devices/bus/vsmile/pad.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/devices/bus/vsmile/pad.h b/src/devices/bus/vsmile/pad.h index e2773a238f0..5e2515c2b58 100644 --- a/src/devices/bus/vsmile/pad.h +++ b/src/devices/bus/vsmile/pad.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Ryan Holtz +// copyright-holders:Ryan Holtz, Vas Crabb #ifndef MAME_BUS_VSMILE_PAD_H #define MAME_BUS_VSMILE_PAD_H @@ -16,10 +16,27 @@ class vsmile_pad_device : public vsmile_ctrl_device_base { public: + enum stale_inputs : uint8_t + { + STALE_NONE = 0U, + STALE_LEFT_RIGHT = 1U << 0, + STALE_UP_DOWN = 1U << 1, + STALE_COLORS = 1U << 2, + STALE_OK = 1U << 3, + STALE_QUIT = 1U << 4, + STALE_HELP = 1U << 5, + STALE_ABC = 1U << 6, + + STALE_JOY = STALE_LEFT_RIGHT | STALE_UP_DOWN, + STALE_BUTTONS = STALE_OK | STALE_QUIT | STALE_HELP | STALE_ABC, + STALE_ALL = STALE_JOY | STALE_COLORS | STALE_BUTTONS + }; + // construction/destruction vsmile_pad_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock = 0U); virtual ~vsmile_pad_device(); + // input handlers DECLARE_INPUT_CHANGED_MEMBER(pad_joy_changed); DECLARE_INPUT_CHANGED_MEMBER(pad_color_changed); DECLARE_INPUT_CHANGED_MEMBER(pad_button_changed); @@ -31,6 +48,7 @@ protected: // vsmile_ctrl_device_base implementation virtual void tx_complete() override; + virtual void tx_timeout() override; virtual void rx_complete(uint8_t data, bool cts) override; private: @@ -44,8 +62,10 @@ private: emu_timer *m_idle_timer; + uint8_t m_sent_joy, m_sent_colors, m_sent_buttons; + stale_inputs m_stale; + bool m_active; uint8_t m_ctrl_probe_history[2]; - uint8_t m_ctrl_probe_count; }; |