summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/vcs_ctrl/keypad.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/vcs_ctrl/keypad.h')
-rw-r--r--src/devices/bus/vcs_ctrl/keypad.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/devices/bus/vcs_ctrl/keypad.h b/src/devices/bus/vcs_ctrl/keypad.h
index 37733cc135c..83a1f1a904f 100644
--- a/src/devices/bus/vcs_ctrl/keypad.h
+++ b/src/devices/bus/vcs_ctrl/keypad.h
@@ -28,26 +28,28 @@ public:
// construction/destruction
vcs_keypad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- // optional information overrides
- virtual ioport_constructor device_input_ports() const override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
-
// device_vcs_control_port_interface overrides
- virtual uint8_t vcs_joy_r() override;
- virtual void vcs_joy_w( uint8_t data ) override;
- virtual uint8_t vcs_pot_x_r() override;
- virtual uint8_t vcs_pot_y_r() override;
+ virtual uint8_t vcs_joy_r() override { return ~read_keys(2); }
+ virtual uint8_t vcs_pot_x_r() override { return read_keys(0); }
+ virtual uint8_t vcs_pot_y_r() override { return read_keys(1); }
+ virtual void vcs_joy_w(uint8_t data) override;
virtual bool has_pot_x() override { return true; }
virtual bool has_pot_y() override { return true; }
+protected:
+ // device-level overrides
+ virtual void device_start() override ATTR_COLD;
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const override ATTR_COLD;
+
private:
+ uint8_t read_keys(uint8_t column);
+
required_ioport m_keypad;
- uint8_t m_column;
+ uint8_t m_row;
};