1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria 3 #ifndef MAME_AUDIO_TIMEPLT_H 4 #define MAME_AUDIO_TIMEPLT_H 5 6 #pragma once 7 8 #include "cpu/z80/z80.h" 9 #include "machine/gen_latch.h" 10 #include "sound/ay8910.h" 11 #include "sound/flt_rc.h" 12 13 class timeplt_audio_device : public device_t 14 { 15 public: 16 timeplt_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 14'318'181); 17 18 void sound_data_w(uint8_t data); 19 DECLARE_WRITE_LINE_MEMBER(sh_irqtrigger_w); 20 DECLARE_WRITE_LINE_MEMBER(mute_w); 21 22 protected: 23 timeplt_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); 24 25 // device-level overrides 26 virtual void device_add_mconfig(machine_config &config) override; 27 virtual void device_start() override; 28 29 void filter_w(offs_t offset, uint8_t data); 30 uint8_t portB_r(); 31 32 void timeplt_sound_map(address_map &map); 33 34 required_device<cpu_device> m_soundcpu; 35 36 private: 37 // internal state 38 required_device<generic_latch_8_device> m_soundlatch; 39 required_device_array<filter_rc_device, 3> m_filter_0; 40 required_device_array<filter_rc_device, 3> m_filter_1; 41 42 uint8_t m_last_irq_state; 43 44 void set_filter(filter_rc_device &device, int data); 45 }; 46 47 class locomotn_audio_device : public timeplt_audio_device 48 { 49 public: 50 locomotn_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 14'318'181); 51 52 protected: 53 // device-level overrides 54 virtual void device_add_mconfig(machine_config &config) override; 55 56 void locomotn_sound_map(address_map &map); 57 }; 58 59 DECLARE_DEVICE_TYPE(TIMEPLT_AUDIO, timeplt_audio_device) 60 DECLARE_DEVICE_TYPE(LOCOMOTN_AUDIO, locomotn_audio_device) 61 62 #endif // MAME_AUDIO_TIMEPLT_H 63