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