1 // license:BSD-3-Clause 2 // copyright-holders:Fabio Priuli 3 /********************************************************************** 4 5 Nintendo Super Famicom - Epoch Barcode Battler 6 7 **********************************************************************/ 8 9 #ifndef MAME_BUS_SNES_CTRL_BCBATTLE_H 10 #define MAME_BUS_SNES_CTRL_BCBATTLE_H 11 12 #pragma once 13 14 15 #include "ctrl.h" 16 #include "machine/bcreader.h" 17 18 //************************************************************************** 19 // TYPE DEFINITIONS 20 //************************************************************************** 21 22 // ======================> snes_bcbattle_device 23 24 class snes_bcbattle_device : public device_t, 25 public device_snes_control_port_interface 26 { 27 public: 28 // construction/destruction 29 snes_bcbattle_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 30 31 protected: 32 // device-level overrides 33 virtual void device_start() override; 34 virtual void device_reset() override; 35 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 36 37 virtual void device_add_mconfig(machine_config &config) override; 38 39 virtual uint8_t read_pin4() override; 40 virtual void write_strobe(uint8_t data) override; 41 virtual void port_poll() override; 42 43 int read_current_bit(); 44 45 private: 46 static constexpr device_timer_id TIMER_BATTLER = 1; 47 48 required_device<barcode_reader_device> m_reader; 49 uint8_t m_current_barcode[20]; 50 int m_pending_code, m_new_code, m_transmitting, m_cur_bit, m_cur_byte; 51 emu_timer *battler_timer; 52 53 int m_strobe, m_idx; 54 }; 55 56 // device type definition 57 DECLARE_DEVICE_TYPE(SNES_BARCODE_BATTLER, snes_bcbattle_device) 58 59 #endif // MAME_BUS_SNES_CTRL_BCBATTLE_H 60