1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail
3 /*************************************************************************
4 
5     The Main Event / Devastators
6 
7 *************************************************************************/
8 #ifndef MAME_INCLUDES_MAINEVT_H
9 #define MAME_INCLUDES_MAINEVT_H
10 
11 #pragma once
12 
13 #include "sound/upd7759.h"
14 #include "sound/k007232.h"
15 #include "video/k052109.h"
16 #include "video/k051960.h"
17 #include "video/k051733.h"
18 #include "video/konami_helper.h"
19 
20 class mainevt_state : public driver_device
21 {
22 public:
mainevt_state(const machine_config & mconfig,device_type type,const char * tag)23 	mainevt_state(const machine_config &mconfig, device_type type, const char *tag)
24 		: driver_device(mconfig, type, tag)
25 		, m_maincpu(*this, "maincpu")
26 		, m_audiocpu(*this, "audiocpu")
27 		, m_upd7759(*this, "upd")
28 		, m_k007232(*this, "k007232")
29 		, m_k052109(*this, "k052109")
30 		, m_k051960(*this, "k051960")
31 		, m_rombank(*this, "rombank")
32 		, m_leds(*this, "led%u", 0U)
33 	{ }
34 
35 	void devstors(machine_config &config);
36 	void mainevt(machine_config &config);
37 
38 private:
39 	void dv_nmienable_w(uint8_t data);
40 	void mainevt_bankswitch_w(uint8_t data);
41 	void mainevt_coin_w(uint8_t data);
42 	void mainevt_sh_irqtrigger_w(uint8_t data);
43 	void mainevt_sh_irqcontrol_w(uint8_t data);
44 	void devstor_sh_irqcontrol_w(uint8_t data);
45 	void mainevt_sh_bankswitch_w(uint8_t data);
46 	uint8_t k052109_051960_r(offs_t offset);
47 	void k052109_051960_w(offs_t offset, uint8_t data);
48 	uint8_t mainevt_sh_busy_r();
49 	void dv_sh_bankswitch_w(uint8_t data);
50 	uint32_t screen_update_mainevt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
51 	uint32_t screen_update_dv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
52 	DECLARE_WRITE_LINE_MEMBER(dv_vblank_w);
53 	INTERRUPT_GEN_MEMBER(mainevt_sound_timer_irq);
54 	INTERRUPT_GEN_MEMBER(devstors_sound_timer_irq);
55 	void volume_callback(uint8_t data);
56 	K052109_CB_MEMBER(mainevt_tile_callback);
57 	K052109_CB_MEMBER(dv_tile_callback);
58 	K051960_CB_MEMBER(mainevt_sprite_callback);
59 	K051960_CB_MEMBER(dv_sprite_callback);
60 	void devstors_map(address_map &map);
61 	void devstors_sound_map(address_map &map);
62 	void mainevt_map(address_map &map);
63 	void mainevt_sound_map(address_map &map);
64 
65 	virtual void machine_start() override;
66 	virtual void machine_reset() override;
67 
68 	/* misc */
69 	int        m_nmi_enable;
70 	uint8_t      m_sound_irq_mask;
71 
72 	/* devices */
73 	required_device<cpu_device> m_maincpu;
74 	required_device<cpu_device> m_audiocpu;
75 	optional_device<upd7759_device> m_upd7759;
76 	required_device<k007232_device> m_k007232;
77 	required_device<k052109_device> m_k052109;
78 	required_device<k051960_device> m_k051960;
79 
80 	required_memory_bank m_rombank;
81 	output_finder<4> m_leds;
82 };
83 
84 #endif // MAME_INCLUDES_MAINEVT_H
85