1 // license:GPL-2.0+
2 // copyright-holders:Jarek Burczynski
3 #ifndef MAME_INCLUDES_TANKBUST_H
4 #define MAME_INCLUDES_TANKBUST_H
5 
6 #pragma once
7 
8 #include "emupal.h"
9 #include "tilemap.h"
10 
11 class tankbust_state : public driver_device
12 {
13 public:
tankbust_state(const machine_config & mconfig,device_type type,const char * tag)14 	tankbust_state(const machine_config &mconfig, device_type type, const char *tag) :
15 		driver_device(mconfig, type, tag),
16 		m_maincpu(*this, "maincpu"),
17 		m_subcpu(*this, "sub"),
18 		m_gfxdecode(*this, "gfxdecode"),
19 		m_palette(*this, "palette"),
20 		m_txtram(*this, "txtram"),
21 		m_videoram(*this, "videoram"),
22 		m_colorram(*this, "colorram"),
23 		m_spriteram(*this, "spriteram")
24 	{ }
25 
26 	void tankbust(machine_config &config);
27 
28 protected:
29 	virtual void machine_start() override;
30 	virtual void machine_reset() override;
31 	virtual void video_start() override;
32 
33 private:
34 	required_device<cpu_device> m_maincpu;
35 	required_device<cpu_device> m_subcpu;
36 	required_device<gfxdecode_device> m_gfxdecode;
37 	required_device<palette_device> m_palette;
38 
39 	required_shared_ptr<uint8_t> m_txtram;
40 	required_shared_ptr<uint8_t> m_videoram;
41 	required_shared_ptr<uint8_t> m_colorram;
42 	required_shared_ptr<uint8_t> m_spriteram;
43 
44 	int m_latch;
45 	uint32_t m_timer1;
46 	int m_e0xx_data[8];
47 	uint8_t m_variable_data;
48 	tilemap_t *m_bg_tilemap;
49 	tilemap_t *m_txt_tilemap;
50 	uint8_t m_xscroll[2];
51 	uint8_t m_yscroll[2];
52 	uint8_t m_irq_mask;
53 
54 	void soundlatch_w(uint8_t data);
55 	void e0xx_w(offs_t offset, uint8_t data);
56 	uint8_t debug_output_area_r(offs_t offset);
57 	uint8_t some_changing_input();
58 	void background_videoram_w(offs_t offset, uint8_t data);
59 	void background_colorram_w(offs_t offset, uint8_t data);
60 	void txtram_w(offs_t offset, uint8_t data);
61 	void xscroll_w(offs_t offset, uint8_t data);
62 	void yscroll_w(offs_t offset, uint8_t data);
63 	uint8_t soundlatch_r();
64 	uint8_t soundtimer_r();
65 
66 	TILE_GET_INFO_MEMBER(get_bg_tile_info);
67 	TILE_GET_INFO_MEMBER(get_txt_tile_info);
68 
69 	void tankbust_palette(palette_device &palette) const;
70 
71 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
72 	void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
73 
74 	INTERRUPT_GEN_MEMBER(vblank_irq);
75 	TIMER_CALLBACK_MEMBER(soundlatch_callback);
76 	TIMER_CALLBACK_MEMBER(soundirqline_callback);
77 
78 	void main_map(address_map &map);
79 	void map_cpu2(address_map &map);
80 	void port_map_cpu2(address_map &map);
81 };
82 
83 #endif // MAME_INCLUDES_TANKBUST_H
84