1 // license:BSD-3-Clause 2 // copyright-holders:Aaron Giles 3 #ifndef MAME_AUDIO_CINEMAT_H 4 #define MAME_AUDIO_CINEMAT_H 5 6 #pragma once 7 8 #include "machine/74259.h" 9 #include "machine/netlist.h" 10 #include "netlist/nl_setup.h" 11 12 13 class cinemat_audio_device_base : public device_t, public device_mixer_interface 14 { 15 public: 16 cinemat_audio_device_base &configure_latch_inputs(ls259_device &latch, u8 mask = 0); 17 18 protected: 19 cinemat_audio_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 inputs_mask, void (*netlist)(netlist::nlparse_t &), double output_scale); 20 21 virtual void device_add_mconfig(machine_config &config) override; 22 virtual void device_start() override; 23 DECLARE_WRITE_LINE_MEMBER(sound_w)24 template<int _Index> DECLARE_WRITE_LINE_MEMBER(sound_w) { input_set(_Index, state); } 25 void input_set(int bit, int state); 26 27 optional_device_array<netlist_mame_logic_input_device, 8> m_out_input; 28 29 private: 30 u8 m_inputs = 0xff; 31 u8 const m_inputs_mask; 32 void (*const m_netlist)(netlist::nlparse_t &); 33 double const m_output_scale; 34 }; 35 36 37 class spacewar_audio_device : public cinemat_audio_device_base 38 { 39 public: 40 spacewar_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 41 }; 42 43 44 class barrier_audio_device : public cinemat_audio_device_base 45 { 46 public: 47 barrier_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 48 }; 49 50 51 class speedfrk_audio_device : public cinemat_audio_device_base 52 { 53 public: 54 speedfrk_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 55 }; 56 57 58 class starhawk_audio_device : public cinemat_audio_device_base 59 { 60 public: 61 starhawk_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 62 }; 63 64 65 class sundance_audio_device : public cinemat_audio_device_base 66 { 67 public: 68 sundance_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 69 }; 70 71 72 class tailg_audio_device : public cinemat_audio_device_base 73 { 74 public: 75 tailg_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 76 }; 77 78 79 class warrior_audio_device : public cinemat_audio_device_base 80 { 81 public: 82 warrior_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 83 }; 84 85 86 class armora_audio_device : public cinemat_audio_device_base 87 { 88 public: 89 armora_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 90 }; 91 92 93 class ripoff_audio_device : public cinemat_audio_device_base 94 { 95 public: 96 ripoff_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 97 }; 98 99 100 class starcas_audio_device : public cinemat_audio_device_base 101 { 102 public: 103 starcas_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 104 }; 105 106 107 class solarq_audio_device : public cinemat_audio_device_base 108 { 109 public: 110 solarq_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 111 }; 112 113 114 class boxingb_audio_device : public cinemat_audio_device_base 115 { 116 public: 117 boxingb_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 118 }; 119 120 121 class wotw_audio_device : public cinemat_audio_device_base 122 { 123 public: 124 wotw_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 125 }; 126 127 128 DECLARE_DEVICE_TYPE(SPACE_WARS_AUDIO, spacewar_audio_device) 129 DECLARE_DEVICE_TYPE(BARRIER_AUDIO, barrier_audio_device) 130 DECLARE_DEVICE_TYPE(STAR_HAWK_AUDIO, starhawk_audio_device) 131 DECLARE_DEVICE_TYPE(SUNDANCE_AUDIO, sundance_audio_device) 132 DECLARE_DEVICE_TYPE(SPEED_FREAK_AUDIO, speedfrk_audio_device) 133 DECLARE_DEVICE_TYPE(TAIL_GUNNER_AUDIO, tailg_audio_device) 134 DECLARE_DEVICE_TYPE(WARRIOR_AUDIO, warrior_audio_device) 135 DECLARE_DEVICE_TYPE(ARMOR_ATTACK_AUDIO, armora_audio_device) 136 DECLARE_DEVICE_TYPE(RIPOFF_AUDIO, ripoff_audio_device) 137 DECLARE_DEVICE_TYPE(SOLAR_QUEST_AUDIO, solarq_audio_device) 138 DECLARE_DEVICE_TYPE(BOXING_BUGS_AUDIO, boxingb_audio_device) 139 DECLARE_DEVICE_TYPE(STAR_CASTLE_AUDIO, starcas_audio_device) 140 DECLARE_DEVICE_TYPE(WAR_OF_THE_WORLDS_AUDIO, wotw_audio_device) 141 142 #endif // MAME_AUDIO_CINEMAT_H 143