1 // license:BSD-3-Clause 2 // copyright-holders:Couriersud 3 #ifndef MAME_AUDIO_IREM_H 4 #define MAME_AUDIO_IREM_H 5 6 #pragma once 7 8 #include "sound/ay8910.h" 9 #include "sound/msm5205.h" 10 #include "machine/netlist.h" 11 #include "audio/nl_kidniki.h" 12 13 class irem_audio_device : public device_t 14 { 15 public: 16 void cmd_w(uint8_t data); 17 uint8_t soundlatch_r(); 18 void ay8910_45M_portb_w(uint8_t data); 19 void ay8910_45L_porta_w(uint8_t data); 20 21 void irem_sound_portmap(address_map &map); 22 void m52_large_sound_map(address_map &map); 23 void m52_small_sound_map(address_map &map); 24 void m62_sound_map(address_map &map); 25 26 optional_device<netlist_mame_logic_input_device> m_audio_SINH; 27 28 protected: 29 irem_audio_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); 30 31 // device-level overrides 32 virtual void device_start() override; 33 virtual void device_reset() override; 34 35 required_device<cpu_device> m_cpu; 36 required_device<msm5205_device> m_adpcm1; 37 optional_device<msm5205_device> m_adpcm2; 38 required_device<ay8910_device> m_ay_45L; 39 required_device<ay8910_device> m_ay_45M; 40 41 void m6803_port1_w(uint8_t data); 42 void m6803_port2_w(uint8_t data); 43 uint8_t m6803_port1_r(); 44 uint8_t m6803_port2_r(); 45 void sound_irq_ack_w(uint8_t data); 46 void m52_adpcm_w(offs_t offset, uint8_t data); 47 void m62_adpcm_w(offs_t offset, uint8_t data); 48 49 private: 50 // internal state 51 uint8_t m_port1; 52 uint8_t m_port2; 53 54 uint8_t m_soundlatch; 55 56 optional_device<netlist_mame_logic_input_device> m_audio_BD; 57 optional_device<netlist_mame_logic_input_device> m_audio_SD; 58 optional_device<netlist_mame_logic_input_device> m_audio_OH; 59 optional_device<netlist_mame_logic_input_device> m_audio_CH; 60 }; 61 62 class m62_audio_device : public irem_audio_device 63 { 64 public: 65 m62_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 66 67 protected: 68 virtual void device_add_mconfig(machine_config &config) override; 69 }; 70 71 class m52_soundc_audio_device : public irem_audio_device 72 { 73 public: 74 m52_soundc_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 75 76 protected: 77 virtual void device_add_mconfig(machine_config &config) override; 78 }; 79 80 class m52_large_audio_device : public irem_audio_device 81 { 82 public: 83 m52_large_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 84 85 protected: 86 virtual void device_add_mconfig(machine_config &config) override; 87 }; 88 89 90 DECLARE_DEVICE_TYPE(IREM_M62_AUDIO, m62_audio_device) 91 DECLARE_DEVICE_TYPE(IREM_M52_SOUNDC_AUDIO, m52_soundc_audio_device) 92 DECLARE_DEVICE_TYPE(IREM_M52_LARGE_AUDIO, m52_large_audio_device) 93 94 #endif // MAME_AUDIO_IREM_H 95