1 // license:BSD-3-Clause 2 // copyright-holders:Nigel Barnes 3 /********************************************************************** 4 5 Joystick Controllers 6 7 **********************************************************************/ 8 9 #ifndef MAME_BUS_BBC_ANALOGUE_JOYSTICK_H 10 #define MAME_BUS_BBC_ANALOGUE_JOYSTICK_H 11 12 #pragma once 13 14 15 #include "analogue.h" 16 17 //************************************************************************** 18 // TYPE DEFINITIONS 19 //************************************************************************** 20 21 // ======================> bbc_joystick_device 22 23 class bbc_joystick_device : 24 public device_t, 25 public device_bbc_analogue_interface 26 { 27 protected: 28 // construction/destruction 29 bbc_joystick_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); 30 31 // device-level overrides 32 virtual void device_start() override; 33 virtual void device_reset() override; 34 35 virtual uint8_t ch_r(int channel) override; 36 virtual uint8_t pb_r() override; 37 38 private: 39 required_ioport_array<4> m_joy; 40 required_ioport m_buttons; 41 }; 42 43 class bbc_acornjoy_device : public bbc_joystick_device 44 { 45 public: 46 bbc_acornjoy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 47 48 virtual ioport_constructor device_input_ports() const override; 49 }; 50 51 class bbc_voltmace3b_device : public bbc_joystick_device 52 { 53 public: 54 bbc_voltmace3b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 55 56 virtual ioport_constructor device_input_ports() const override; 57 }; 58 59 60 // device type definition 61 DECLARE_DEVICE_TYPE(BBC_ACORNJOY, bbc_acornjoy_device) 62 DECLARE_DEVICE_TYPE(BBC_VOLTMACE3B, bbc_voltmace3b_device) 63 64 #endif // MAME_BUS_BBC_ANALOGUE_JOYSTICK_H 65