1 // license:BSD-3-Clause 2 // copyright-holders:Chris Hardy 3 #ifndef MAME_AUDIO_TRACKFLD_H 4 #define MAME_AUDIO_TRACKFLD_H 5 6 #pragma once 7 8 #include "sound/vlm5030.h" 9 #include "cpu/m6800/m6800.h" 10 11 class trackfld_audio_device : public device_t 12 { 13 public: 14 template <typename T, typename U> trackfld_audio_device(const machine_config & mconfig,const char * tag,device_t * owner,uint32_t clock,T && cpu_tag,U && vlm_tag)15 trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag, U &&vlm_tag) 16 : trackfld_audio_device(mconfig, tag, owner, clock) 17 { 18 m_audiocpu.set_tag(std::forward<T>(cpu_tag)); 19 m_vlm.set_tag(std::forward<U>(vlm_tag)); 20 } 21 22 trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 23 24 DECLARE_WRITE_LINE_MEMBER(sh_irqtrigger_w); 25 uint8_t trackfld_sh_timer_r(); 26 uint8_t trackfld_speech_r(); 27 void trackfld_sound_w(offs_t offset, uint8_t data); 28 uint8_t hyperspt_sh_timer_r(); 29 void hyperspt_sound_w(offs_t offset, uint8_t data); 30 31 protected: 32 // device-level overrides 33 virtual void device_start() override; 34 virtual void device_reset() override; 35 36 private: 37 optional_device<cpu_device> m_audiocpu; 38 optional_device<vlm5030_device> m_vlm; 39 40 // internal state 41 int m_last_addr; 42 int m_last_irq; 43 }; 44 45 DECLARE_DEVICE_TYPE(TRACKFLD_AUDIO, trackfld_audio_device) 46 47 #endif // MAME_AUDIO_TRACKFLD_H 48