1 // license:BSD-3-Clause 2 // copyright-holders:Mathis Rosenhauer 3 4 /************************************************************************* 5 6 Cinematronics Cosmic Chasm hardware 7 8 *************************************************************************/ 9 10 #include "cpu/z80/z80.h" 11 #include "machine/gen_latch.h" 12 #include "machine/z80ctc.h" 13 #include "sound/dac.h" 14 #include "video/vector.h" 15 #include "screen.h" 16 17 class cchasm_state : public driver_device 18 { 19 public: 20 enum 21 { 22 TIMER_REFRESH_END 23 }; 24 cchasm_state(const machine_config & mconfig,device_type type,const char * tag)25 cchasm_state(const machine_config &mconfig, device_type type, const char *tag) 26 : driver_device(mconfig, type, tag), 27 m_maincpu(*this, "maincpu"), 28 m_ctc(*this, "ctc"), 29 m_audiocpu(*this, "audiocpu"), 30 m_dac1(*this, "dac1"), 31 m_dac2(*this, "dac2"), 32 m_vector(*this, "vector"), 33 m_screen(*this, "screen"), 34 m_soundlatch(*this, "soundlatch"), 35 m_soundlatch2(*this, "soundlatch2"), 36 m_soundlatch3(*this, "soundlatch3"), 37 m_soundlatch4(*this, "soundlatch4"), 38 m_ram(*this, "ram") { } 39 40 required_device<cpu_device> m_maincpu; 41 required_device<z80ctc_device> m_ctc; 42 required_device<z80_device> m_audiocpu; 43 required_device<dac_bit_interface> m_dac1; 44 required_device<dac_bit_interface> m_dac2; 45 required_device<vector_device> m_vector; 46 required_device<screen_device> m_screen; 47 required_device<generic_latch_8_device> m_soundlatch; 48 required_device<generic_latch_8_device> m_soundlatch2; 49 required_device<generic_latch_8_device> m_soundlatch3; 50 required_device<generic_latch_8_device> m_soundlatch4; 51 52 required_shared_ptr<uint16_t> m_ram; 53 54 int m_sound_flags; 55 int m_coin_flag; 56 int m_output[2]; 57 int m_xcenter; 58 int m_ycenter; 59 emu_timer *m_refresh_end_timer; 60 61 void led_w(offs_t offset, uint16_t data); 62 void refresh_control_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 63 void reset_coin_flag_w(uint8_t data); 64 uint8_t coin_sound_r(); 65 uint8_t soundlatch2_r(); 66 void soundlatch4_w(uint8_t data); 67 void io_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 68 uint16_t io_r(offs_t offset); 69 DECLARE_WRITE_LINE_MEMBER(ctc_timer_1_w); 70 DECLARE_WRITE_LINE_MEMBER(ctc_timer_2_w); 71 72 INPUT_CHANGED_MEMBER(set_coin_flag); 73 74 virtual void video_start() override; 75 virtual void sound_start() override; 76 77 void refresh(); 78 79 void cchasm(machine_config &config); 80 void memmap(address_map &map); 81 void sound_memmap(address_map &map); 82 void sound_portmap(address_map &map); 83 protected: 84 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 85 }; 86