1 // license:BSD-3-Clause
2 // copyright-holders:Aaron Giles
3 #ifndef MAME_AUDIO_GALAXIAN_H
4 #define MAME_AUDIO_GALAXIAN_H
5 
6 #pragma once
7 
8 #include "sound/discrete.h"
9 
10 class galaxian_sound_device : public device_t
11 {
12 public:
13 	galaxian_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
14 
15 	void pitch_w(uint8_t data);
16 	void vol_w(offs_t offset, uint8_t data);
17 	void noise_enable_w(uint8_t data);
18 	void background_enable_w(offs_t offset, uint8_t data);
19 	void fire_enable_w(uint8_t data);
20 	void lfo_freq_w(offs_t offset, uint8_t data);
21 	void sound_w(offs_t offset, uint8_t data);
22 
23 protected:
24 	galaxian_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
25 
26 	// device-level overrides
27 	virtual void device_start() override;
28 	virtual void device_add_mconfig(machine_config &config) override;
29 
30 	required_device<discrete_device> m_discrete;
31 
32 private:
33 	// internal state
34 	uint8_t m_lfo_val;
35 };
36 
37 class mooncrst_sound_device : public galaxian_sound_device
38 {
39 public:
40 	mooncrst_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
41 
42 protected:
43 	// device-level overrides
44 	virtual void device_add_mconfig(machine_config &config) override;
45 };
46 
47 DECLARE_DEVICE_TYPE(GALAXIAN_SOUND, galaxian_sound_device)
48 DECLARE_DEVICE_TYPE(MOONCRST_SOUND, mooncrst_sound_device)
49 
50 #endif // MAME_AUDIO_GALAXIAN_H
51