1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood
3 #ifndef MAME_INCLUDES_FITFIGHT_H
4 #define MAME_INCLUDES_FITFIGHT_H
5 
6 #pragma once
7 
8 #include "emupal.h"
9 #include "tilemap.h"
10 
11 class fitfight_state : public driver_device
12 {
13 public:
fitfight_state(const machine_config & mconfig,device_type type,const char * tag)14 	fitfight_state(const machine_config &mconfig, device_type type, const char *tag) :
15 		driver_device(mconfig, type, tag),
16 		m_fof_100000(*this, "fof_100000"),
17 		m_fof_600000(*this, "fof_600000"),
18 		m_fof_700000(*this, "fof_700000"),
19 		m_fof_800000(*this, "fof_800000"),
20 		m_fof_900000(*this, "fof_900000"),
21 		m_fof_a00000(*this, "fof_a00000"),
22 		m_fof_bak_tileram(*this, "fof_bak_tileram"),
23 		m_fof_mid_tileram(*this, "fof_mid_tileram"),
24 		m_fof_txt_tileram(*this, "fof_txt_tileram"),
25 		m_spriteram(*this, "spriteram"),
26 		m_maincpu(*this, "maincpu"),
27 		m_audiocpu(*this, "audiocpu"),
28 		m_gfxdecode(*this, "gfxdecode"),
29 		m_palette(*this, "palette")
30 	{ }
31 
32 	void bbprot(machine_config &config);
33 	void fitfight(machine_config &config);
34 
35 	void init_hotmindff();
36 	void init_fitfight();
37 	void init_histryma();
38 	void init_bbprot();
39 
40 private:
41 	uint16_t fitfight_700000_r();
42 	uint16_t histryma_700000_r();
43 	uint16_t bbprot_700000_r();
44 	void fitfight_700000_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
45 	uint8_t snd_porta_r();
46 	uint8_t snd_portb_r();
47 	uint8_t snd_portc_r();
48 	void snd_porta_w(uint8_t data);
49 	void snd_portb_w(uint8_t data);
50 	void snd_portc_w(uint8_t data);
51 	void fof_bak_tileram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
52 	void fof_mid_tileram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
53 	void fof_txt_tileram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
54 
55 	uint16_t hotmindff_unk_r();
56 	TILE_GET_INFO_MEMBER(get_fof_bak_tile_info);
57 	TILE_GET_INFO_MEMBER(get_fof_mid_tile_info);
58 	TILE_GET_INFO_MEMBER(get_fof_txt_tile_info);
59 	virtual void machine_start() override;
60 	virtual void machine_reset() override;
61 	virtual void video_start() override;
62 	uint32_t screen_update_fitfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
63 	void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int layer );
64 	void bbprot_main_map(address_map &map);
65 	void fitfight_main_map(address_map &map);
66 	void snd_mem(address_map &map);
67 
68 	// memory pointers
69 	required_shared_ptr<uint16_t> m_fof_100000;
70 	required_shared_ptr<uint16_t> m_fof_600000;
71 	required_shared_ptr<uint16_t> m_fof_700000;
72 	required_shared_ptr<uint16_t> m_fof_800000;
73 	required_shared_ptr<uint16_t> m_fof_900000;
74 	required_shared_ptr<uint16_t> m_fof_a00000;
75 	required_shared_ptr<uint16_t> m_fof_bak_tileram;
76 	required_shared_ptr<uint16_t> m_fof_mid_tileram;
77 	required_shared_ptr<uint16_t> m_fof_txt_tileram;
78 	required_shared_ptr<uint16_t> m_spriteram;
79 
80 	// video-related
81 	tilemap_t  *m_fof_bak_tilemap;
82 	tilemap_t  *m_fof_mid_tilemap;
83 	tilemap_t  *m_fof_txt_tilemap;
84 
85 	// misc
86 	int      m_bbprot_kludge;
87 	uint16_t   m_fof_700000_data;
88 
89 	required_device<cpu_device> m_maincpu;
90 	optional_device<cpu_device> m_audiocpu;
91 	required_device<gfxdecode_device> m_gfxdecode;
92 	required_device<palette_device> m_palette;
93 };
94 
95 #endif // MAME_INCLUDES_FITFIGHT_H
96