1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood
3 
4 #ifndef MAME_INCLUDES_MEGADRIV_ACBL_H
5 #define MAME_INCLUDES_MEGADRIV_ACBL_H
6 
7 class md_boot_state : public md_base_state
8 {
9 public:
md_boot_state(const machine_config & mconfig,device_type type,const char * tag)10 	md_boot_state(const machine_config &mconfig, device_type type, const char *tag)
11 	: md_base_state(mconfig, type, tag) { m_protcount = 0;}
12 
13 	void megadrvb(machine_config &config);
14 	void megadrvb_6b(machine_config &config);
15 	void md_bootleg(machine_config &config);
16 	void puckpkmn(machine_config &config);
17 	void jzth(machine_config &config);
18 	void puckpkmna(machine_config &config);
19 
20 	void init_aladmdb();
21 	void init_mk3mdb();
22 	void init_ssf2mdb();
23 	void init_srmdb();
24 	void init_topshoot();
25 	void init_puckpkmn();
26 	void init_hshavoc();
27 	void init_barek2();
28 	void init_barek3();
29 	void init_bk3ssrmb();
30 	void init_sonic2mb();
31 	void init_twinktmb();
32 	void init_jparkmb();
33 	void init_sbubsm();
34 
35 private:
36 	void bl_710000_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
37 	uint16_t bl_710000_r();
38 	void aladmdb_w(uint16_t data);
39 	uint16_t aladmdb_r();
40 	uint16_t barek2mb_r();
41 	uint16_t jparkmb_r();
42 	uint16_t twinktmb_r();
43 	uint16_t dsw_r(offs_t offset);
44 	uint16_t topshoot_200051_r();
45 	uint16_t sbubsm_400000_r();
46 	uint16_t sbubsm_400002_r();
47 	uint16_t puckpkmna_70001c_r();
48 	uint16_t puckpkmna_4b2476_r();
49 
DECLARE_MACHINE_START(md_bootleg)50 	DECLARE_MACHINE_START(md_bootleg) { MACHINE_START_CALL_MEMBER(megadriv); m_vdp->stop_timers(); }
51 	DECLARE_MACHINE_START(md_6button);
52 
53 	void jzth_map(address_map &map);
54 	void md_bootleg_map(address_map &map);
55 	void puckpkmn_map(address_map &map);
56 	void puckpkmna_map(address_map &map);
57 
58 	// bootleg specific
59 	int m_aladmdb_mcu_port;
60 
61 	int m_protcount;
62 };
63 
64 #endif // MAME_INCLUDES_MEGADRIV_ACBL_H
65