1 // license:BSD-3-Clause
2 // copyright-holders:Howie Cohen, Yochizo
3 // thanks-to:Richard Bush
4 #ifndef MAME_INCLUDES_TAITO_X_H
5 #define MAME_INCLUDES_TAITO_X_H
6 
7 #pragma once
8 
9 #include "includes/seta.h"
10 #include "machine/taitocchip.h"
11 #include "machine/timer.h"
12 
13 class taitox_state : public seta_state
14 {
15 public:
taitox_state(const machine_config & mconfig,device_type type,const char * tag)16 	taitox_state(const machine_config &mconfig, device_type type, const char *tag) :
17 		seta_state(mconfig, type, tag),
18 		m_cchip(*this, "cchip"),
19 		m_cchip_irq_clear(*this, "cchip_irq_clear"),
20 		m_z80bank(*this, "z80bank"),
21 		m_dswa_io(*this, "DSWA"),
22 		m_dswb_io(*this, "DSWB"),
23 		m_in_io(*this, "IN%u", 0U)
24 	{ }
25 
26 	void superman(machine_config &config);
27 	void ballbros(machine_config &config);
28 	void kyustrkr(machine_config &config);
29 	void gigandes(machine_config &config);
30 	void daisenpu(machine_config &config);
31 
32 private:
33 	u16 superman_dsw_input_r(offs_t offset);
34 	void superman_counters_w(u8 data);
35 	u16 daisenpu_input_r(offs_t offset);
36 	void daisenpu_input_w(offs_t offset, u16 data);
37 	void kyustrkr_input_w(offs_t offset, u16 data);
38 	void sound_bankswitch_w(u8 data);
39 	DECLARE_MACHINE_START(taitox);
40 
41 	INTERRUPT_GEN_MEMBER(interrupt);
42 	TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
43 
44 	void ballbros_map(address_map &map);
45 	void daisenpu_map(address_map &map);
46 	void daisenpu_sound_map(address_map &map);
47 	void gigandes_map(address_map &map);
48 	void kyustrkr_map(address_map &map);
49 	void sound_map(address_map &map);
50 	void superman_map(address_map &map);
51 	void taito_x_base_map(address_map &map);
52 
53 	optional_device<taito_cchip_device> m_cchip;
54 	optional_device<timer_device> m_cchip_irq_clear;
55 	required_memory_bank m_z80bank;
56 	optional_ioport m_dswa_io;
57 	optional_ioport m_dswb_io;
58 	optional_ioport_array<3> m_in_io;
59 };
60 
61 #endif // MAME_INCLUDES_TAITO_X_H
62