1 // license:BSD-3-Clause 2 // copyright-holders:Stefan Jokisch 3 #ifndef MAME_INCLUDES_SSPEEDR_H 4 #define MAME_INCLUDES_SSPEEDR_H 5 6 #pragma once 7 8 #include "emupal.h" 9 #include "machine/netlist.h" 10 11 class sspeedr_state : public driver_device 12 { 13 public: sspeedr_state(const machine_config & mconfig,device_type type,const char * tag)14 sspeedr_state(const machine_config &mconfig, device_type type, const char *tag) 15 : driver_device(mconfig, type, tag) 16 , m_maincpu(*this, "maincpu") 17 , m_gfxdecode(*this, "gfxdecode") 18 , m_palette(*this, "palette") 19 , m_digits(*this, "digit%u", 0U) 20 , m_pedal_bit0(*this, "sound_nl:pedal_bit0") 21 , m_pedal_bit1(*this, "sound_nl:pedal_bit1") 22 , m_pedal_bit2(*this, "sound_nl:pedal_bit2") 23 , m_pedal_bit3(*this, "sound_nl:pedal_bit3") 24 , m_hi_shift(*this, "sound_nl:hi_shift") 25 , m_lo_shift(*this, "sound_nl:lo_shift") 26 , m_boom(*this, "sound_nl:boom") 27 , m_engine_sound_off(*this, "sound_nl:engine_sound_off") 28 , m_noise_cr_1(*this, "sound_nl:noise_cr_1") 29 , m_noise_cr_2(*this, "sound_nl:noise_cr_2") 30 , m_silence(*this, "sound_nl:silence") 31 , m_track(*this, "track") 32 { } 33 34 void sspeedr(machine_config &config); 35 36 protected: 37 virtual void video_start() override; machine_start()38 virtual void machine_start() override { m_digits.resolve(); } 39 40 private: 41 void int_ack_w(uint8_t data); 42 void lamp_w(uint8_t data); 43 void time_w(offs_t offset, uint8_t data); 44 void score_w(offs_t offset, uint8_t data); 45 void sound1_w(uint8_t data); 46 void sound2_w(uint8_t data); 47 void driver_horz_w(uint8_t data); 48 void driver_horz_2_w(uint8_t data); 49 void driver_vert_w(uint8_t data); 50 void driver_pic_w(uint8_t data); 51 void drones_horz_w(uint8_t data); 52 void drones_horz_2_w(uint8_t data); 53 void drones_mask_w(uint8_t data); 54 void drones_vert_w(offs_t offset, uint8_t data); 55 void track_horz_w(uint8_t data); 56 void track_horz_2_w(uint8_t data); 57 void track_vert_w(offs_t offset, uint8_t data); 58 void track_ice_w(uint8_t data); 59 void palette(palette_device &palette) const; 60 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 61 DECLARE_WRITE_LINE_MEMBER(screen_vblank); 62 void io_map(address_map &map); 63 void prg_map(address_map &map); 64 65 uint8_t m_led_time[2]; 66 uint8_t m_led_score[24]; 67 uint8_t m_toggle; 68 uint16_t m_driver_horz; 69 uint8_t m_driver_vert; 70 uint8_t m_driver_pic; 71 uint16_t m_drones_horz; 72 uint8_t m_drones_vert[3]; 73 uint8_t m_drones_mask; 74 uint16_t m_track_horz; 75 uint8_t m_track_vert[2]; 76 uint8_t m_track_ice; 77 78 void draw_track(bitmap_ind16 &bitmap); 79 void draw_drones(bitmap_ind16 &bitmap, const rectangle &cliprect); 80 void draw_driver(bitmap_ind16 &bitmap, const rectangle &cliprect); 81 required_device<cpu_device> m_maincpu; 82 required_device<gfxdecode_device> m_gfxdecode; 83 required_device<palette_device> m_palette; 84 output_finder<26> m_digits; 85 required_device<netlist_mame_logic_input_device> m_pedal_bit0; 86 required_device<netlist_mame_logic_input_device> m_pedal_bit1; 87 required_device<netlist_mame_logic_input_device> m_pedal_bit2; 88 required_device<netlist_mame_logic_input_device> m_pedal_bit3; 89 required_device<netlist_mame_logic_input_device> m_hi_shift; 90 required_device<netlist_mame_logic_input_device> m_lo_shift; 91 required_device<netlist_mame_logic_input_device> m_boom; 92 required_device<netlist_mame_logic_input_device> m_engine_sound_off; 93 required_device<netlist_mame_logic_input_device> m_noise_cr_1; 94 required_device<netlist_mame_logic_input_device> m_noise_cr_2; 95 required_device<netlist_mame_logic_input_device> m_silence; 96 required_region_ptr<uint8_t> m_track; 97 }; 98 99 #endif // MAME_INCLUDES_SSPEEDR_H 100