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