1 // license:BSD-3-Clause 2 // copyright-holders:Frank Palazzolo, Ryan Holtz 3 #ifndef MAME_INCLUDES_STARCRUS_H 4 #define MAME_INCLUDES_STARCRUS_H 5 6 #pragma once 7 8 #include "emupal.h" 9 #include "machine/netlist.h" 10 #include "netlist/nl_setup.h" 11 #include "audio/nl_starcrus.h" 12 13 class starcrus_state : public driver_device 14 { 15 public: starcrus_state(const machine_config & mconfig,device_type type,const char * tag)16 starcrus_state(const machine_config &mconfig, device_type type, const char *tag) : 17 driver_device(mconfig, type, tag) , 18 m_maincpu(*this, "maincpu"), 19 m_gfxdecode(*this, "gfxdecode"), 20 m_palette(*this, "palette"), 21 m_led(*this, "led2"), 22 m_explode(*this, "sound_nl:explode%u", 1U), 23 m_launch(*this, "sound_nl:launch%u", 1U), 24 m_engine(*this, "sound_nl:engine%u", 1U) 25 { } 26 27 void starcrus(machine_config &config); 28 29 private: 30 void s1_x_w(uint8_t data); 31 void s1_y_w(uint8_t data); 32 void s2_x_w(uint8_t data); 33 void s2_y_w(uint8_t data); 34 void p1_x_w(uint8_t data); 35 void p1_y_w(uint8_t data); 36 void p2_x_w(uint8_t data); 37 void p2_y_w(uint8_t data); 38 void ship_parm_1_w(uint8_t data); 39 void ship_parm_2_w(uint8_t data); 40 void proj_parm_1_w(uint8_t data); 41 void proj_parm_2_w(uint8_t data); 42 uint8_t coll_det_r(); 43 44 virtual void machine_start() override; 45 virtual void video_start() override; 46 47 required_device<cpu_device> m_maincpu; 48 required_device<gfxdecode_device> m_gfxdecode; 49 required_device<palette_device> m_palette; 50 51 output_finder<> m_led; 52 53 std::unique_ptr<bitmap_ind16> m_ship1_vid; 54 std::unique_ptr<bitmap_ind16> m_ship2_vid; 55 std::unique_ptr<bitmap_ind16> m_proj1_vid; 56 std::unique_ptr<bitmap_ind16> m_proj2_vid; 57 58 int m_s1_x; 59 int m_s1_y; 60 int m_s2_x; 61 int m_s2_y; 62 int m_p1_x; 63 int m_p1_y; 64 int m_p2_x; 65 int m_p2_y; 66 67 int m_p1_sprite; 68 int m_p2_sprite; 69 int m_s1_sprite; 70 int m_s2_sprite; 71 72 int m_collision_reg; 73 74 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 75 int collision_check_s1s2(); 76 int collision_check_p1p2(); 77 int collision_check_s1p1p2(); 78 int collision_check_s2p1p2(); 79 80 void starcrus_io_map(address_map &map); 81 void starcrus_map(address_map &map); 82 83 required_device_array<netlist_mame_logic_input_device, 2> m_explode; 84 required_device_array<netlist_mame_logic_input_device, 2> m_launch; 85 required_device_array<netlist_mame_logic_input_device, 2> m_engine; 86 }; 87 88 #endif // MAME_INCLUDES_STARCRUS_H 89