1 // license:BSD-3-Clause 2 // copyright-holders:Brad Oliver, Bernd Wiebelt, Allard van der Bas 3 /************************************************************************* 4 5 Atari Asteroids hardware 6 7 *************************************************************************/ 8 9 #include "sound/discrete.h" 10 #include "video/avgdvg.h" 11 #include "machine/74153.h" 12 #include "machine/er2055.h" 13 14 class asteroid_state : public driver_device 15 { 16 public: asteroid_state(const machine_config & mconfig,device_type type,const char * tag)17 asteroid_state(const machine_config &mconfig, device_type type, const char *tag) : 18 driver_device(mconfig, type, tag), 19 m_maincpu(*this, "maincpu"), 20 m_dvg(*this, "dvg"), 21 m_earom(*this, "earom"), 22 m_discrete(*this, "discrete"), 23 m_dsw1(*this, "DSW1"), 24 m_dsw_sel(*this, "dsw_sel"), 25 m_cocktail(*this, "COCKTAIL"), 26 m_ram1(*this, "ram1"), 27 m_ram2(*this, "ram2") 28 { } 29 30 /* devices */ 31 required_device<cpu_device> m_maincpu; 32 required_device<dvg_device> m_dvg; 33 optional_device<er2055_device> m_earom; 34 required_device<discrete_device> m_discrete; 35 required_ioport m_dsw1; 36 required_device<ttl153_device> m_dsw_sel; 37 optional_ioport m_cocktail; 38 39 /* memory banks */ 40 optional_memory_bank m_ram1; 41 optional_memory_bank m_ram2; 42 43 DECLARE_WRITE_LINE_MEMBER(coin_counter_left_w); 44 DECLARE_WRITE_LINE_MEMBER(coin_counter_center_w); 45 DECLARE_WRITE_LINE_MEMBER(coin_counter_right_w); 46 uint8_t asteroid_IN0_r(offs_t offset); 47 uint8_t asterock_IN0_r(offs_t offset); 48 uint8_t asteroid_IN1_r(offs_t offset); 49 uint8_t asteroid_DSW1_r(offs_t offset); 50 void asteroid_explode_w(uint8_t data); 51 void asteroid_thump_w(uint8_t data); 52 void asteroid_noise_reset_w(uint8_t data); 53 void llander_snd_reset_w(uint8_t data); 54 void llander_sounds_w(uint8_t data); 55 56 uint8_t earom_read(); 57 void earom_write(offs_t offset, uint8_t data); 58 void earom_control_w(uint8_t data); 59 60 DECLARE_READ_LINE_MEMBER(clock_r); 61 62 INTERRUPT_GEN_MEMBER(asteroid_interrupt); 63 INTERRUPT_GEN_MEMBER(asterock_interrupt); 64 INTERRUPT_GEN_MEMBER(llander_interrupt); 65 66 DECLARE_WRITE_LINE_MEMBER(cocktail_inv_w); 67 68 void init_asterock(); 69 void init_asteroidb(); 70 71 virtual void machine_start() override; 72 virtual void machine_reset() override; 73 void asteroid_base(machine_config &config); 74 void asterock(machine_config &config); 75 void asteroid(machine_config &config); 76 void llander(machine_config &config); 77 void astdelux(machine_config &config); 78 void asteroid_sound(machine_config &config); 79 void astdelux_sound(machine_config &config); 80 void llander_sound(machine_config &config); 81 void astdelux_map(address_map &map); 82 void asteroid_map(address_map &map); 83 void llander_map(address_map &map); 84 }; 85