1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria 3 4 #include "machine/gen_latch.h" 5 #include "machine/input_merger.h" 6 #include "machine/taito68705interface.h" 7 #include "emupal.h" 8 9 class lsasquad_state : public driver_device 10 { 11 public: lsasquad_state(const machine_config & mconfig,device_type type,const char * tag)12 lsasquad_state(const machine_config &mconfig, device_type type, const char *tag) 13 : driver_device(mconfig, type, tag), 14 m_videoram(*this, "videoram"), 15 m_scrollram(*this, "scrollram"), 16 m_spriteram(*this, "spriteram"), 17 m_priority_prom(*this, "prio_prom"), 18 m_maincpu(*this, "maincpu"), 19 m_audiocpu(*this, "audiocpu"), 20 m_soundlatch(*this, "soundlatch"), 21 m_soundlatch2(*this, "soundlatch2"), 22 m_soundnmi(*this, "soundnmi"), 23 m_bmcu(*this, "bmcu"), 24 m_gfxdecode(*this, "gfxdecode"), 25 m_palette(*this, "palette") { } 26 27 void lsasquad(machine_config &config); 28 void daikaiju(machine_config &config); 29 void storming(machine_config &config); 30 31 private: 32 /* memory pointers */ 33 required_shared_ptr<uint8_t> m_videoram; 34 required_shared_ptr<uint8_t> m_scrollram; 35 required_shared_ptr<uint8_t> m_spriteram; 36 required_region_ptr<uint8_t> m_priority_prom; 37 38 /* devices */ 39 required_device<cpu_device> m_maincpu; 40 required_device<cpu_device> m_audiocpu; 41 required_device<generic_latch_8_device> m_soundlatch; 42 optional_device<generic_latch_8_device> m_soundlatch2; 43 optional_device<input_merger_device> m_soundnmi; 44 optional_device<taito68705_mcu_device> m_bmcu; 45 required_device<gfxdecode_device> m_gfxdecode; 46 required_device<palette_device> m_palette; 47 48 void lsasquad_bankswitch_w(uint8_t data); 49 void lsasquad_sh_nmi_disable_w(uint8_t data); 50 void lsasquad_sh_nmi_enable_w(uint8_t data); 51 uint8_t lsasquad_sound_status_r(); 52 uint8_t daikaiju_sound_status_r(); 53 54 uint8_t lsasquad_mcu_status_r(); 55 uint8_t daikaiju_mcu_status_r(); 56 void unk(uint8_t data); 57 DECLARE_MACHINE_START(lsasquad); 58 DECLARE_MACHINE_RESET(lsasquad); 59 uint32_t screen_update_lsasquad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 60 uint32_t screen_update_daikaiju(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 61 TIMER_CALLBACK_MEMBER(nmi_callback); 62 void draw_layer( bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *scrollram ); 63 int draw_layer_daikaiju( bitmap_ind16 &bitmap, const rectangle &cliprect, int offs, int * previd, int type ); 64 void drawbg( bitmap_ind16 &bitmap, const rectangle &cliprect, int type ); 65 void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t priority ); 66 void daikaiju_map(address_map &map); 67 void daikaiju_sound_map(address_map &map); 68 void lsasquad_map(address_map &map); 69 void lsasquad_sound_map(address_map &map); 70 void storming_map(address_map &map); 71 }; 72