1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 #ifndef MAME_INCLUDES_DIGDUG_H
4 #define MAME_INCLUDES_DIGDUG_H
5 
6 #pragma once
7 
8 #include "machine/er2055.h"
9 #include "tilemap.h"
10 
11 class digdug_state : public galaga_state
12 {
13 public:
digdug_state(const machine_config & mconfig,device_type type,const char * tag)14 	digdug_state(const machine_config &mconfig, device_type type, const char *tag) :
15 		galaga_state(mconfig, type, tag),
16 		m_earom(*this, "earom"),
17 		m_digdug_objram(*this, "digdug_objram"),
18 		m_digdug_posram(*this, "digdug_posram"),
19 		m_digdug_flpram(*this, "digdug_flpram")
20 	{ }
21 
22 	void dzigzag(machine_config &config);
23 	void digdug(machine_config &config);
24 
25 private:
26 	required_device<er2055_device> m_earom;
27 	required_shared_ptr<uint8_t> m_digdug_objram;
28 	required_shared_ptr<uint8_t> m_digdug_posram;
29 	required_shared_ptr<uint8_t> m_digdug_flpram;
30 
31 	uint8_t m_bg_select;
32 	uint8_t m_tx_color_mode;
33 	uint8_t m_bg_disable;
34 	uint8_t m_bg_color_bank;
35 
36 	TILEMAP_MAPPER_MEMBER(tilemap_scan);
37 	TILE_GET_INFO_MEMBER(bg_get_tile_info);
38 	TILE_GET_INFO_MEMBER(tx_get_tile_info);
39 	DECLARE_VIDEO_START(digdug);
40 	void digdug_palette(palette_device &palette) const;
41 	uint32_t screen_update_digdug(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
42 	void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
43 	void digdug_videoram_w(offs_t offset, uint8_t data);
44 	void bg_select_w(uint8_t data);
45 	DECLARE_WRITE_LINE_MEMBER(tx_color_mode_w);
46 	DECLARE_WRITE_LINE_MEMBER(bg_disable_w);
47 
48 	uint8_t earom_read();
49 	void earom_write(offs_t offset, uint8_t data);
50 	void earom_control_w(uint8_t data);
51 	virtual void machine_start() override;
52 
53 	void digdug_map(address_map &map);
54 };
55 
56 #endif // MAME_INCLUDES_DIGDUG_H
57