1 // license:BSD-3-Clause
2 // copyright-holders:Zsolt Vasvari
3 #ifndef MAME_INCLUDES_THEPIT_H
4 #define MAME_INCLUDES_THEPIT_H
5 
6 #pragma once
7 
8 #include "machine/74259.h"
9 #include "emupal.h"
10 #include "tilemap.h"
11 
12 class thepit_state : public driver_device
13 {
14 public:
thepit_state(const machine_config & mconfig,device_type type,const char * tag)15 	thepit_state(const machine_config &mconfig, device_type type, const char *tag) :
16 		driver_device(mconfig, type, tag),
17 		m_maincpu(*this, "maincpu"),
18 		m_mainlatch(*this, "mainlatch"),
19 		m_gfxdecode(*this, "gfxdecode"),
20 		m_palette(*this, "palette"),
21 		m_videoram(*this, "videoram"),
22 		m_colorram(*this, "colorram"),
23 		m_attributesram(*this, "attributesram"),
24 		m_spriteram(*this, "spriteram")
25 	{ }
26 
27 	void suprmous(machine_config &config);
28 	void desertdn(machine_config &config);
29 	void dockmanb(machine_config &config);
30 	void intrepid(machine_config &config);
31 	void thepit(machine_config &config);
32 	void fitter(machine_config &config);
33 
34 	void init_rtriv();
35 
36 protected:
37 	virtual void machine_start() override;
38 	virtual void video_start() override;
39 
40 private:
41 	required_device<cpu_device> m_maincpu;
42 	required_device<ls259_device> m_mainlatch;
43 	required_device<gfxdecode_device> m_gfxdecode;
44 	required_device<palette_device> m_palette;
45 
46 	required_shared_ptr<uint8_t> m_videoram;
47 	required_shared_ptr<uint8_t> m_colorram;
48 	required_shared_ptr<uint8_t> m_attributesram;
49 	required_shared_ptr<uint8_t> m_spriteram;
50 
51 	uint8_t m_graphics_bank;
52 	uint8_t m_flip_x;
53 	uint8_t m_flip_y;
54 	tilemap_t *m_solid_tilemap;
55 	tilemap_t *m_tilemap;
56 	std::unique_ptr<uint8_t[]> m_dummy_tile;
57 	uint8_t m_nmi_mask;
58 
59 	int m_question_address;
60 	int m_question_rom;
61 	int m_remap_address[16];
62 
63 	DECLARE_WRITE_LINE_MEMBER(coin_lockout_w);
64 	DECLARE_WRITE_LINE_MEMBER(sound_enable_w);
65 	DECLARE_WRITE_LINE_MEMBER(nmi_mask_w);
66 	void videoram_w(offs_t offset, uint8_t data);
67 	void colorram_w(offs_t offset, uint8_t data);
68 	DECLARE_WRITE_LINE_MEMBER(flip_screen_x_w);
69 	DECLARE_WRITE_LINE_MEMBER(flip_screen_y_w);
70 	uint8_t input_port_0_r();
71 
72 	uint8_t intrepid_colorram_mirror_r(offs_t offset);
73 	DECLARE_WRITE_LINE_MEMBER(intrepid_graphics_bank_w);
74 
75 	uint8_t rtriv_question_r(offs_t offset);
76 
77 	TILE_GET_INFO_MEMBER(solid_get_tile_info);
78 	TILE_GET_INFO_MEMBER(get_tile_info);
79 
80 	void thepit_palette(palette_device &palette) const;
81 	void suprmous_palette(palette_device &palette) const;
82 
83 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
84 	uint32_t screen_update_desertdan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
85 	void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority_to_draw);
86 
87 	INTERRUPT_GEN_MEMBER(vblank_irq);
88 
89 	void audio_io_map(address_map &map);
90 	void audio_map(address_map &map);
91 	void desertdan_main_map(address_map &map);
92 	void dockmanb_main_map(address_map &map);
93 	void intrepid_main_map(address_map &map);
94 	void thepit_main_map(address_map &map);
95 };
96 
97 #endif // MAME_INCLUDES_THEPIT_H
98