diff options
Diffstat (limited to 'src/mame/audio/snk6502.h')
-rw-r--r-- | src/mame/audio/snk6502.h | 148 |
1 files changed, 127 insertions, 21 deletions
diff --git a/src/mame/audio/snk6502.h b/src/mame/audio/snk6502.h index 32869b1c5da..ce7be05119f 100644 --- a/src/mame/audio/snk6502.h +++ b/src/mame/audio/snk6502.h @@ -19,16 +19,20 @@ class snk6502_sound_device : public device_t, public device_sound_interface public: snk6502_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE8_MEMBER( sasuke_sound_w ); - DECLARE_WRITE8_MEMBER( satansat_sound_w ); - DECLARE_WRITE8_MEMBER( vanguard_sound_w ); - DECLARE_WRITE8_MEMBER( vanguard_speech_w ); - DECLARE_WRITE8_MEMBER( fantasy_sound_w ); - DECLARE_WRITE8_MEMBER( fantasy_speech_w ); + DECLARE_CUSTOM_INPUT_MEMBER(music0_playing); - void set_music_clock(double clock_time); void set_music_freq(int freq); - int music0_playing(); + void set_music_clock(double clock_time); + void set_channel_base(int channel, int base, int mask = 0xff); + void mute_channel(int channel); + void unmute_channel(int channel); + void set_sound0_stop_on_rollover(int value) { m_sound0_stop_on_rollover = value; } + + void speech_w(uint8_t data, const uint16_t *table, int start); + + void build_waveform(int channel, int mask); + void sasuke_build_waveform(int mask); + void satansat_build_waveform(int mask); protected: // device-level overrides @@ -58,31 +62,133 @@ private: int32_t m_tone_clock; sound_stream * m_tone_stream; - optional_device<sn76477_device> m_sn76477_2; - optional_device<discrete_device> m_discrete; optional_device<samples_device> m_samples; required_memory_region m_rom; int m_sound0_stop_on_rollover; - uint8_t m_last_port1; int m_hd38880_cmd; uint32_t m_hd38880_addr; int m_hd38880_data_bytes; double m_hd38880_speed; - inline void validate_tone_channel(int channel); - void sasuke_build_waveform(int mask); - void satansat_build_waveform(int mask); - void build_waveform(int channel, int mask); - void speech_w(uint8_t data, const uint16_t *table, int start); + void validate_tone_channel(int channel); +}; + + +class vanguard_sound_device : public device_t +{ +public: + vanguard_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( sound_w ); + DECLARE_WRITE8_MEMBER( speech_w ); + +protected: + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_device<snk6502_sound_device> m_custom; + required_device<sn76477_device> m_sn76477_2; + required_device<samples_device> m_samples; + + uint8_t m_last_port1; +}; + + +class fantasy_sound_device : public device_t +{ +public: + fantasy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER( sound_w ); + DECLARE_WRITE8_MEMBER( speech_w ); + +protected: + fantasy_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_start() override; + virtual void device_reset() override; + + required_device<snk6502_sound_device> m_custom; + +private: + required_device<discrete_device> m_discrete; + + uint8_t m_last_port1; +}; + + +class nibbler_sound_device : public fantasy_sound_device +{ +public: + nibbler_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual void device_add_mconfig(machine_config &config) override; +}; + + +class pballoon_sound_device : public fantasy_sound_device +{ +public: + pballoon_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_reset() override; +}; + + +class sasuke_sound_device : public device_t +{ +public: + sasuke_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER(sound_w); + +protected: + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_device<snk6502_sound_device> m_custom; + required_device<samples_device> m_samples; + + uint8_t m_last_port1; +}; + + +class satansat_sound_device : public device_t +{ +public: + satansat_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_WRITE8_MEMBER(sound_w); + +protected: + virtual void device_add_mconfig(machine_config &config) override; + virtual void device_start() override; + virtual void device_reset() override; + +private: + required_device<snk6502_sound_device> m_custom; + required_device<samples_device> m_samples; + + uint8_t m_last_port1; }; -DECLARE_DEVICE_TYPE(SNK6502, snk6502_sound_device) -DISCRETE_SOUND_EXTERN( fantasy_discrete ); +DECLARE_DEVICE_TYPE(SNK6502_SOUND, snk6502_sound_device) -extern char const *const sasuke_sample_names[]; -extern char const *const vanguard_sample_names[]; -extern char const *const fantasy_sample_names[]; +DECLARE_DEVICE_TYPE(VANGUARD_SOUND, vanguard_sound_device) +DECLARE_DEVICE_TYPE(FANTASY_SOUND, fantasy_sound_device) +DECLARE_DEVICE_TYPE(NIBBLER_SOUND, nibbler_sound_device) +DECLARE_DEVICE_TYPE(PBALLOON_SOUND, pballoon_sound_device) +DECLARE_DEVICE_TYPE(SASUKE_SOUND, sasuke_sound_device) +DECLARE_DEVICE_TYPE(SATANSAT_SOUND, satansat_sound_device) #endif // MAME_AUDIO_SNK6502_H |