1 // license:BSD-3-Clause
2 // copyright-holders:Al Kossow
3 #ifndef MAME_INCLUDES_M79AMB_H
4 #define MAME_INCLUDES_M79AMB_H
5 
6 #pragma once
7 
8 #include "sound/discrete.h"
9 
10 class m79amb_state : public driver_device
11 {
12 public:
m79amb_state(const machine_config & mconfig,device_type type,const char * tag)13 	m79amb_state(const machine_config &mconfig, device_type type, const char *tag)
14 		: driver_device(mconfig, type, tag),
15 		m_videoram(*this, "videoram"),
16 		m_mask(*this, "mask"),
17 		m_discrete(*this, "discrete"),
18 		m_maincpu(*this, "maincpu"),
19 		m_self_test(*this, "SELF_TEST")
20 	{ }
21 
22 	void m79amb(machine_config &config);
23 
24 	void init_m79amb();
25 
26 private:
27 	void ramtek_videoram_w(offs_t offset, uint8_t data);
28 	uint8_t gray5bit_controller0_r();
29 	uint8_t gray5bit_controller1_r();
30 	void m79amb_8000_w(uint8_t data);
31 	void m79amb_8002_w(uint8_t data);
32 	void m79amb_8003_w(uint8_t data);
33 
34 	INTERRUPT_GEN_MEMBER(m79amb_interrupt);
35 
36 	void machine_start() override;
37 
38 	uint32_t screen_update_ramtek(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
39 	void main_map(address_map &map);
40 
41 	/* memory pointers */
42 	required_shared_ptr<uint8_t> m_videoram;
43 	required_shared_ptr<uint8_t> m_mask;
44 	required_device<discrete_device> m_discrete;
45 	required_device<cpu_device> m_maincpu;
46 
47 	output_finder<> m_self_test;
48 
49 	/* misc */
50 	uint8_t m_lut_gun1[0x100];
51 	uint8_t m_lut_gun2[0x100];
52 };
53 
54 /*----------- defined in audio/m79amb.c -----------*/
55 
56 DISCRETE_SOUND_EXTERN( m79amb_discrete );
57 
58 #endif // MAME_INCLUDES_M79AMB_H
59