1 // license:BSD-3-Clause
2 // copyright-holders:Tomasz Slanina
3 #ifndef MAME_INCLUDES_SSRJ_H
4 #define MAME_INCLUDES_SSRJ_H
5 
6 #pragma once
7 
8 #include "emupal.h"
9 #include "tilemap.h"
10 
11 class ssrj_state : public driver_device
12 {
13 public:
ssrj_state(const machine_config & mconfig,device_type type,const char * tag)14 	ssrj_state(const machine_config &mconfig, device_type type, const char *tag) :
15 		driver_device(mconfig, type, tag),
16 		m_maincpu(*this, "maincpu"),
17 		m_gfxdecode(*this, "gfxdecode"),
18 		m_palette(*this, "palette"),
19 		m_vram1(*this, "vram1"),
20 		m_vram2(*this, "vram2"),
21 		m_vram3(*this, "vram3"),
22 		m_vram4(*this, "vram4"),
23 		m_scrollram(*this, "scrollram")
24 	{ }
25 
26 	void ssrj(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<gfxdecode_device> m_gfxdecode;
36 	required_device<palette_device> m_palette;
37 
38 	required_shared_ptr<uint8_t> m_vram1;
39 	required_shared_ptr<uint8_t> m_vram2;
40 	required_shared_ptr<uint8_t> m_vram3;
41 	required_shared_ptr<uint8_t> m_vram4;
42 	required_shared_ptr<uint8_t> m_scrollram;
43 
44 	int m_oldport;
45 	tilemap_t *m_tilemap1;
46 	tilemap_t *m_tilemap2;
47 	tilemap_t *m_tilemap4;
48 	std::unique_ptr<uint8_t[]> m_buffer_spriteram;
49 
50 	uint8_t wheel_r();
51 	void vram1_w(offs_t offset, uint8_t data);
52 	void vram2_w(offs_t offset, uint8_t data);
53 	void vram4_w(offs_t offset, uint8_t data);
54 
55 	TILE_GET_INFO_MEMBER(get_tile_info1);
56 	TILE_GET_INFO_MEMBER(get_tile_info2);
57 	TILE_GET_INFO_MEMBER(get_tile_info4);
58 
59 	void ssrj_palette(palette_device &palette) const;
60 
61 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
62 	DECLARE_WRITE_LINE_MEMBER(screen_vblank);
63 	void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect );
64 
65 	void ssrj_map(address_map &map);
66 };
67 
68 #endif // MAME_INCLUDES_SSRJ_H
69