1 // license:BSD-3-Clause 2 // copyright-holders:Olivier Galibert, hap, superctr, cam900 3 /*************************************************************************** 4 5 Taito Zoom ZSG-2 sound board 6 7 ***************************************************************************/ 8 #ifndef MAME_AUDIO_TAITO_ZM_H 9 #define MAME_AUDIO_TAITO_ZM_H 10 11 #pragma once 12 13 #include "cpu/mn10200/mn10200.h" 14 #include "cpu/tms57002/tms57002.h" 15 #include "sound/zsg2.h" 16 17 class taito_zoom_device : public device_t, public device_mixer_interface 18 { 19 public: imperfect_features()20 static constexpr feature_type imperfect_features() { return feature::SOUND; } 21 22 taito_zoom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); 23 24 void sound_irq_w(uint16_t data); 25 uint16_t sound_irq_r(); 26 void reg_data_w(uint16_t data); 27 void reg_address_w(uint16_t data); 28 29 uint8_t shared_ram_r(offs_t offset); 30 void shared_ram_w(offs_t offset, uint8_t data); 31 set_use_flash()32 void set_use_flash() { m_use_flash = true; } 33 34 void taitozoom_mn_map(address_map &map); 35 void tms57002_map(address_map &map); 36 37 protected: 38 // device-level overrides 39 virtual void device_start() override; 40 virtual void device_reset() override; 41 virtual void device_add_mconfig(machine_config &config) override; 42 43 private: 44 // inherited devices/pointers 45 required_device<mn10200_device> m_soundcpu; 46 required_device<tms57002_device> m_tms57002; 47 required_device<zsg2_device> m_zsg2; 48 49 // internal state 50 uint16_t m_reg_address; 51 uint8_t m_tms_ctrl; 52 bool m_use_flash; 53 std::unique_ptr<uint8_t[]> m_snd_shared_ram; 54 55 uint8_t tms_ctrl_r(); 56 void tms_ctrl_w(uint8_t data); 57 }; 58 59 DECLARE_DEVICE_TYPE(TAITO_ZOOM, taito_zoom_device) 60 61 62 #endif // MAME_AUDIO_TAITO_ZM_H 63