1 // license:BSD-3-Clause 2 // copyright-holders:David Graves 3 /************************************************************************* 4 5 Taito Dual Screen Games 6 7 *************************************************************************/ 8 9 #include "audio/taitosnd.h" 10 #include "machine/taitoio.h" 11 #include "sound/flt_vol.h" 12 #include "video/tc0100scn.h" 13 #include "video/tc0110pcr.h" 14 #include "emupal.h" 15 16 17 class warriorb_state : public driver_device 18 { 19 public: warriorb_state(const machine_config & mconfig,device_type type,const char * tag)20 warriorb_state(const machine_config &mconfig, device_type type, const char *tag) : 21 driver_device(mconfig, type, tag), 22 m_maincpu(*this, "maincpu"), 23 m_tc0140syt(*this, "tc0140syt"), 24 m_tc0100scn(*this, "tc0100scn_%u", 1), 25 m_tc0110pcr(*this, "tc0110pcr_%u", 1), 26 m_tc0220ioc(*this, "tc0220ioc"), 27 m_tc0510nio(*this, "tc0510nio"), 28 m_2610_l(*this, "2610.%u.l", 1), 29 m_2610_r(*this, "2610.%u.r", 1), 30 m_gfxdecode(*this, "gfxdecode_%u", 1), 31 m_spriteram(*this, "spriteram"), 32 m_z80bank(*this, "z80bank") 33 { } 34 35 void warriorb(machine_config &config); 36 void darius2d(machine_config &config); 37 38 private: 39 /* devices */ 40 required_device<cpu_device> m_maincpu; 41 required_device<tc0140syt_device> m_tc0140syt; 42 required_device_array<tc0100scn_device, 2> m_tc0100scn; 43 required_device_array<tc0110pcr_device, 2> m_tc0110pcr; 44 optional_device<tc0220ioc_device> m_tc0220ioc; 45 optional_device<tc0510nio_device> m_tc0510nio; 46 required_device_array<filter_volume_device, 2> m_2610_l; 47 required_device_array<filter_volume_device, 2> m_2610_r; 48 required_device_array<gfxdecode_device, 2> m_gfxdecode; 49 50 /* memory pointers */ 51 required_shared_ptr<u16> m_spriteram; 52 53 /* memory regions */ 54 required_memory_bank m_z80bank; 55 56 /* misc */ 57 int m_pandata[4]; 58 59 void coin_control_w(u8 data); 60 void sound_bankswitch_w(u8 data); 61 void pancontrol_w(offs_t offset, u8 data); 62 void tc0100scn_dual_screen_w(offs_t offset, u16 data, u16 mem_mask = ~0); 63 64 virtual void machine_start() override; 65 virtual void machine_reset() override; 66 67 u32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 68 u32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 69 void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs, int chip); 70 u32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip); 71 72 void darius2d_map(address_map &map); 73 void warriorb_map(address_map &map); 74 void z80_sound_map(address_map &map); 75 }; 76