1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 #ifndef MAME_INCLUDES_TAXIDRIV_H
4 #define MAME_INCLUDES_TAXIDRIV_H
5 
6 #pragma once
7 
8 #include "emupal.h"
9 
10 class taxidriv_state : public driver_device
11 {
12 public:
taxidriv_state(const machine_config & mconfig,device_type type,const char * tag)13 	taxidriv_state(const machine_config &mconfig, device_type type, const char *tag) :
14 		driver_device(mconfig, type, tag),
15 		m_maincpu(*this, "maincpu"),
16 		m_gfxdecode(*this, "gfxdecode"),
17 		m_palette(*this, "palette"),
18 		m_vram0(*this, "vram0"),
19 		m_vram1(*this, "vram1"),
20 		m_vram2(*this, "vram2"),
21 		m_vram3(*this, "vram3"),
22 		m_vram4(*this, "vram4"),
23 		m_vram5(*this, "vram5"),
24 		m_vram6(*this, "vram6"),
25 		m_vram7(*this, "vram7"),
26 		m_scroll(*this, "scroll")
27 	{ }
28 
29 	void taxidriv(machine_config &config);
30 
31 protected:
32 	virtual void machine_start() override;
33 
34 private:
35 	required_device<cpu_device> m_maincpu;
36 	required_device<gfxdecode_device> m_gfxdecode;
37 	required_device<palette_device> m_palette;
38 
39 	required_shared_ptr<uint8_t> m_vram0;
40 	required_shared_ptr<uint8_t> m_vram1;
41 	required_shared_ptr<uint8_t> m_vram2;
42 	required_shared_ptr<uint8_t> m_vram3;
43 	required_shared_ptr<uint8_t> m_vram4;
44 	required_shared_ptr<uint8_t> m_vram5;
45 	required_shared_ptr<uint8_t> m_vram6;
46 	required_shared_ptr<uint8_t> m_vram7;
47 	required_shared_ptr<uint8_t> m_scroll;
48 
49 	int m_s1;
50 	int m_s2;
51 	int m_s3;
52 	int m_s4;
53 	int m_latchA;
54 	int m_latchB;
55 	int m_bghide;
56 	int m_spritectrl[9];
57 
58 	void p2a_w(uint8_t data);
59 	void p2b_w(uint8_t data);
60 	void p2c_w(uint8_t data);
61 	void p3a_w(uint8_t data);
62 	void p3b_w(uint8_t data);
63 	void p3c_w(uint8_t data);
64 	void p4a_w(uint8_t data);
65 	void p4b_w(uint8_t data);
66 	void p4c_w(uint8_t data);
67 	uint8_t p0a_r();
68 	uint8_t p0c_r();
69 	void p0b_w(uint8_t data);
70 	void p0c_w(uint8_t data);
71 	uint8_t p1b_r();
72 	uint8_t p1c_r();
73 	void p1a_w(uint8_t data);
74 	void p1c_w(uint8_t data);
75 	uint8_t p8910_0a_r();
76 	uint8_t p8910_1a_r();
77 	void p8910_0b_w(uint8_t data);
78 	void spritectrl_w(offs_t offset, uint8_t data);
79 
80 	void taxidriv_palette(palette_device &palette) const;
81 
82 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
83 	void cpu2_map(address_map &map);
84 	void cpu3_map(address_map &map);
85 	void cpu3_port_map(address_map &map);
86 	void main_map(address_map &map);
87 };
88 
89 #endif // MAME_INCLUDES_TAXIDRIV_H
90