1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail
3 
4 #include "machine/gen_latch.h"
5 #include "video/decbac06.h"
6 #include "video/decmxc06.h"
7 #include "cpu/h6280/h6280.h"
8 
9 /*************************************************************************
10 
11     Act Fancer
12 
13 *************************************************************************/
14 
15 class actfancr_state : public driver_device
16 {
17 public:
actfancr_state(const machine_config & mconfig,device_type type,const char * tag)18 	actfancr_state(const machine_config &mconfig, device_type type, const char *tag) :
19 		driver_device(mconfig, type, tag),
20 		m_maincpu(*this, "maincpu"),
21 		m_audiocpu(*this, "audiocpu"),
22 		m_gfxdecode(*this, "gfxdecode"),
23 		m_tilegen(*this, "tilegen%u", 1U),
24 		m_spritegen(*this, "spritegen"),
25 		m_soundlatch(*this, "soundlatch") { }
26 
27 	/* memory pointers */
28 	std::unique_ptr<uint16_t[]> m_spriteram16; // a 16-bit copy of spriteram for use with the MXC06 code
29 
30 	/* misc */
31 	int            m_trio_control_select;
32 
33 	/* devices */
34 	required_device<h6280_device> m_maincpu;
35 	required_device<cpu_device> m_audiocpu;
36 	required_device<gfxdecode_device> m_gfxdecode;
37 	required_device_array<deco_bac06_device, 2> m_tilegen;
38 	required_device<deco_mxc06_device> m_spritegen;
39 	required_device<generic_latch_8_device> m_soundlatch;
40 
41 	void triothep_control_select_w(uint8_t data);
42 	uint8_t triothep_control_r();
43 	void buffer_spriteram_w(uint8_t data);
44 	DECLARE_MACHINE_START(triothep);
45 	DECLARE_MACHINE_RESET(triothep);
46 	virtual void video_start() override;
47 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
48 	void triothep(machine_config &config);
49 	void actfancr(machine_config &config);
50 	void actfan_map(address_map &map);
51 	void dec0_s_map(address_map &map);
52 	void triothep_map(address_map &map);
53 };
54