1 // license:GPL-2.0+
2 // copyright-holders:Jarek Burczynski
3 /*************************************************************************
4 
5     Rastan
6 
7 *************************************************************************/
8 #ifndef MAME_INCLUDES_RASTAN_H
9 #define MAME_INCLUDES_RASTAN_H
10 
11 #pragma once
12 
13 #include "machine/74157.h"
14 #include "sound/msm5205.h"
15 #include "video/pc080sn.h"
16 #include "video/pc090oj.h"
17 
18 class rastan_state : public driver_device
19 {
20 public:
rastan_state(const machine_config & mconfig,device_type type,const char * tag)21 	rastan_state(const machine_config &mconfig, device_type type, const char *tag) :
22 		driver_device(mconfig, type, tag),
23 		m_audiobank(*this, "audiobank"),
24 		m_maincpu(*this, "maincpu"),
25 		m_audiocpu(*this, "audiocpu"),
26 		m_msm(*this, "msm"),
27 		m_adpcm_sel(*this, "adpcm_sel"),
28 		m_adpcm_data(*this, "adpcm"),
29 		m_pc080sn(*this, "pc080sn"),
30 		m_pc090oj(*this, "pc090oj")
31 	{ }
32 
33 	void rastan(machine_config &config);
34 
35 protected:
36 	virtual void machine_start() override;
37 	virtual void machine_reset() override;
38 
39 private:
40 	required_memory_bank m_audiobank;
41 
42 	/* video-related */
43 	u16         m_sprite_ctrl;
44 	u16         m_sprites_flipscreen;
45 
46 	/* misc */
47 	u16         m_adpcm_pos;
48 	bool        m_adpcm_ff;
49 
50 	/* devices */
51 	required_device<cpu_device> m_maincpu;
52 	required_device<cpu_device> m_audiocpu;
53 	required_device<msm5205_device> m_msm;
54 	required_device<ls157_device> m_adpcm_sel;
55 	required_region_ptr<u8> m_adpcm_data;
56 	required_device<pc080sn_device> m_pc080sn;
57 	required_device<pc090oj_device> m_pc090oj;
58 
59 	void msm5205_address_w(u8 data);
60 	void spritectrl_w(u16 data);
61 	void sound_bankswitch_w(u8 data);
62 	void msm5205_start_w(u8 data);
63 	void msm5205_stop_w(u8 data);
64 	void rastan_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl);
65 	u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
66 	DECLARE_WRITE_LINE_MEMBER(msm5205_vck);
67 	void main_map(address_map &map);
68 	void sound_map(address_map &map);
69 };
70 
71 #endif // MAME_INCLUDES_RASTAN_H
72