1 // license:BSD-3-Clause 2 // copyright-holders:R. Belmont 3 #ifndef MAME_AUDIO_SEGAM1AUDIO_H 4 #define MAME_AUDIO_SEGAM1AUDIO_H 5 6 #include "cpu/m68000/m68000.h" 7 #include "machine/i8251.h" 8 #include "sound/2612intf.h" 9 #include "sound/multipcm.h" 10 11 #pragma once 12 13 #define M1AUDIO_TAG "m1audio" 14 #define M1AUDIO_CPU_REGION "m1audio:sndcpu" 15 #define M1AUDIO_MPCM1_REGION "m1audio:pcm1" 16 #define M1AUDIO_MPCM2_REGION "m1audio:pcm2" 17 18 19 //************************************************************************** 20 // TYPE DEFINITIONS 21 //************************************************************************** 22 23 class segam1audio_device : public device_t 24 { 25 public: 26 // construction/destruction 27 segam1audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 28 29 // configuration rxd_handler()30 auto rxd_handler() { return m_rxd_handler.bind(); } 31 32 void m1_snd_mpcm_bnk1_w(uint16_t data); 33 void m1_snd_mpcm_bnk2_w(uint16_t data); 34 35 DECLARE_WRITE_LINE_MEMBER(write_txd); 36 37 void mpcm1_map(address_map &map); 38 void mpcm2_map(address_map &map); 39 void segam1audio_map(address_map &map); 40 protected: 41 // device-level overrides 42 virtual void device_start() override; 43 virtual void device_reset() override; 44 virtual void device_add_mconfig(machine_config &config) override; 45 46 private: 47 required_device<cpu_device> m_audiocpu; 48 required_device<multipcm_device> m_multipcm_1; 49 required_device<multipcm_device> m_multipcm_2; 50 required_device<ym3438_device> m_ym; 51 required_device<i8251_device> m_uart; 52 53 required_memory_region m_multipcm1_region; 54 required_memory_region m_multipcm2_region; 55 56 required_memory_bank m_mpcmbank1; 57 required_memory_bank m_mpcmbank2; 58 59 devcb_write_line m_rxd_handler; 60 61 DECLARE_WRITE_LINE_MEMBER(output_txd); 62 }; 63 64 65 // device type definition 66 DECLARE_DEVICE_TYPE(SEGAM1AUDIO, segam1audio_device) 67 68 #endif // MAME_AUDIO_SEGAM1AUDIO_H 69