// license:BSD-3-Clause // copyright-holders:Aaron Giles #ifndef MAME_AUDIO_CINEMAT_H #define MAME_AUDIO_CINEMAT_H #pragma once #include "machine/74259.h" #include "machine/netlist.h" #include "netlist/nl_setup.h" class cinemat_audio_device_base : public device_t, public device_mixer_interface { public: cinemat_audio_device_base &configure_latch_inputs(ls259_device &latch, u8 mask = 0); protected: 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); virtual void device_add_mconfig(machine_config &config) override; virtual void device_start() override; template DECLARE_WRITE_LINE_MEMBER(sound_w) { input_set(_Index, state); } void input_set(int bit, int state); optional_device_array m_out_input; private: u8 m_inputs = 0xff; u8 const m_inputs_mask; void (*const m_netlist)(netlist::nlparse_t &); double const m_output_scale; }; class spacewar_audio_device : public cinemat_audio_device_base { public: spacewar_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class barrier_audio_device : public cinemat_audio_device_base { public: barrier_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class speedfrk_audio_device : public cinemat_audio_device_base { public: speedfrk_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class starhawk_audio_device : public cinemat_audio_device_base { public: starhawk_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class sundance_audio_device : public cinemat_audio_device_base { public: sundance_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class tailg_audio_device : public cinemat_audio_device_base { public: tailg_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class warrior_audio_device : public cinemat_audio_device_base { public: warrior_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class armora_audio_device : public cinemat_audio_device_base { public: armora_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class ripoff_audio_device : public cinemat_audio_device_base { public: ripoff_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class starcas_audio_device : public cinemat_audio_device_base { public: starcas_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class solarq_audio_device : public cinemat_audio_device_base { public: solarq_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class boxingb_audio_device : public cinemat_audio_device_base { public: boxingb_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; class wotw_audio_device : public cinemat_audio_device_base { public: wotw_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; DECLARE_DEVICE_TYPE(SPACE_WARS_AUDIO, spacewar_audio_device) DECLARE_DEVICE_TYPE(BARRIER_AUDIO, barrier_audio_device) DECLARE_DEVICE_TYPE(STAR_HAWK_AUDIO, starhawk_audio_device) DECLARE_DEVICE_TYPE(SUNDANCE_AUDIO, sundance_audio_device) DECLARE_DEVICE_TYPE(SPEED_FREAK_AUDIO, speedfrk_audio_device) DECLARE_DEVICE_TYPE(TAIL_GUNNER_AUDIO, tailg_audio_device) DECLARE_DEVICE_TYPE(WARRIOR_AUDIO, warrior_audio_device) DECLARE_DEVICE_TYPE(ARMOR_ATTACK_AUDIO, armora_audio_device) DECLARE_DEVICE_TYPE(RIPOFF_AUDIO, ripoff_audio_device) DECLARE_DEVICE_TYPE(SOLAR_QUEST_AUDIO, solarq_audio_device) DECLARE_DEVICE_TYPE(BOXING_BUGS_AUDIO, boxingb_audio_device) DECLARE_DEVICE_TYPE(STAR_CASTLE_AUDIO, starcas_audio_device) DECLARE_DEVICE_TYPE(WAR_OF_THE_WORLDS_AUDIO, wotw_audio_device) #endif // MAME_AUDIO_CINEMAT_H