summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/audio/cinemat.h
blob: dd7791668f98c9808352f3ce695ddfe6a6fac73b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                
 
                                                                                

       
                                                                                            

          

                                                                                                                                                                                                            

                                                                         







                                                                                             


                                                      


  
                                                              





                                                                                                          
                                                             





                                                                                                         
                                                              





                                                                                                          
                                                              





                                                                                                          
                                                              





                                                                                                          
                                                           





                                                                                                       
                                                             





                                                                                                         
                                                            





                                                                                                        
                                                            





                                                                                                        
                                                             





                                                                                                         
                                                            





                                                                                                        
                                                             





                                                                                                         
                                                          




















                                                                                                      
// 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<int _Index> DECLARE_WRITE_LINE_MEMBER(sound_w) { input_set(_Index, state); }
	void input_set(int bit, int state);

	optional_device_array<netlist_mame_logic_input_device, 8> 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