1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria 3 4 /*************************************************************************** 5 6 Blockout 7 8 ***************************************************************************/ 9 10 #include "machine/gen_latch.h" 11 #include "machine/timer.h" 12 #include "emupal.h" 13 #include "screen.h" 14 15 class blockout_state : public driver_device 16 { 17 public: blockout_state(const machine_config & mconfig,device_type type,const char * tag)18 blockout_state(const machine_config &mconfig, device_type type, const char *tag) 19 : driver_device(mconfig, type, tag), 20 m_videoram(*this, "videoram", 16), 21 m_frontvideoram(*this, "frontvideoram"), 22 m_maincpu(*this, "maincpu"), 23 m_audiocpu(*this, "audiocpu"), 24 m_screen(*this, "screen"), 25 m_palette(*this, "palette"), 26 m_soundlatch(*this, "soundlatch") { } 27 28 /* memory pointers */ 29 required_shared_ptr<u8> m_videoram; 30 required_shared_ptr<u16> m_frontvideoram; 31 32 /* video-related */ 33 bitmap_ind16 m_tmpbitmap; 34 u16 m_color; 35 36 /* devices */ 37 required_device<cpu_device> m_maincpu; 38 required_device<cpu_device> m_audiocpu; 39 required_device<screen_device> m_screen; 40 required_device<palette_device> m_palette; 41 required_device<generic_latch_8_device> m_soundlatch; 42 43 DECLARE_WRITE_LINE_MEMBER(irq_handler); 44 void blockout_irq6_ack_w(uint16_t data); 45 void blockout_irq5_ack_w(uint16_t data); 46 void frontcolor_w(offs_t offset, u16 data, u16 mem_mask = ~0); 47 u8 videoram_r(offs_t offset); 48 void videoram_w(offs_t offset, u8 data); 49 void init_agress(); 50 virtual void machine_start() override; 51 virtual void machine_reset() override; 52 virtual void video_start() override; 53 u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 54 TIMER_DEVICE_CALLBACK_MEMBER(blockout_scanline); 55 static rgb_t blockout_xBGR_444(u32 raw); 56 void blockout(machine_config &config); 57 void agress(machine_config &config); 58 void agress_map(address_map &map); 59 void audio_map(address_map &map); 60 void main_map(address_map &map); 61 }; 62