1 // license:BSD-3-Clause 2 // copyright-holders:Chris Hardy 3 /************************************************************************* 4 5 Megazone 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_MEGAZONE_H 9 #define MAME_INCLUDES_MEGAZONE_H 10 11 #pragma once 12 13 #include "cpu/mcs48/mcs48.h" 14 #include "sound/flt_rc.h" 15 #include "emupal.h" 16 17 class megazone_state : public driver_device 18 { 19 public: megazone_state(const machine_config & mconfig,device_type type,const char * tag)20 megazone_state(const machine_config &mconfig, device_type type, const char *tag) : 21 driver_device(mconfig, type, tag), 22 m_scrolly(*this, "scrolly"), 23 m_scrollx(*this, "scrollx"), 24 m_videoram(*this, "videoram"), 25 m_videoram2(*this, "videoram2"), 26 m_colorram(*this, "colorram"), 27 m_colorram2(*this, "colorram2"), 28 m_spriteram(*this, "spriteram"), 29 m_maincpu(*this, "maincpu"), 30 m_audiocpu(*this, "audiocpu"), 31 m_daccpu(*this, "daccpu"), 32 m_gfxdecode(*this, "gfxdecode"), 33 m_palette(*this, "palette"), 34 m_filter(*this, "filter.0.%u", 0U) 35 { } 36 37 void megazone(machine_config &config); 38 39 private: 40 /* memory pointers */ 41 required_shared_ptr<uint8_t> m_scrolly; 42 required_shared_ptr<uint8_t> m_scrollx; 43 required_shared_ptr<uint8_t> m_videoram; 44 required_shared_ptr<uint8_t> m_videoram2; 45 required_shared_ptr<uint8_t> m_colorram; 46 required_shared_ptr<uint8_t> m_colorram2; 47 required_shared_ptr<uint8_t> m_spriteram; 48 49 /* video-related */ 50 std::unique_ptr<bitmap_ind16> m_tmpbitmap; 51 int m_flipscreen; 52 53 /* misc */ 54 int m_i8039_status; 55 56 /* devices */ 57 required_device<cpu_device> m_maincpu; 58 required_device<cpu_device> m_audiocpu; 59 required_device<i8039_device> m_daccpu; 60 required_device<gfxdecode_device> m_gfxdecode; 61 required_device<palette_device> m_palette; 62 required_device_array<filter_rc_device, 3> m_filter; 63 64 uint8_t m_irq_mask; 65 void megazone_i8039_irq_w(uint8_t data); 66 void i8039_irqen_and_status_w(uint8_t data); 67 DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); 68 DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); 69 DECLARE_WRITE_LINE_MEMBER(irq_mask_w); 70 DECLARE_WRITE_LINE_MEMBER(flipscreen_w); 71 uint8_t megazone_port_a_r(); 72 void megazone_port_b_w(uint8_t data); 73 virtual void machine_start() override; 74 virtual void machine_reset() override; 75 virtual void video_start() override; 76 void megazone_palette(palette_device &palette) const; 77 uint32_t screen_update_megazone(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 78 DECLARE_WRITE_LINE_MEMBER(vblank_irq); 79 void megazone_i8039_io_map(address_map &map); 80 void megazone_i8039_map(address_map &map); 81 void megazone_map(address_map &map); 82 void megazone_sound_io_map(address_map &map); 83 void megazone_sound_map(address_map &map); 84 }; 85 86 #endif // MAME_INCLUDES_MEGAZONE_H 87