1 // license:BSD-3-Clause 2 // copyright-holders:Acho A. Tang, Alex W. Jackson 3 /*************************************************************************** 4 5 B-Wings 6 7 ***************************************************************************/ 8 9 #include "machine/bankdev.h" 10 #include "machine/gen_latch.h" 11 #include "emupal.h" 12 #include "tilemap.h" 13 14 #define BW_DEBUG 0 15 16 class bwing_state : public driver_device 17 { 18 public: bwing_state(const machine_config & mconfig,device_type type,const char * tag)19 bwing_state(const machine_config &mconfig, device_type type, const char *tag) 20 : driver_device(mconfig, type, tag), 21 m_maincpu(*this, "maincpu"), 22 m_subcpu(*this, "sub"), 23 m_audiocpu(*this, "audiocpu"), 24 m_gfxdecode(*this, "gfxdecode"), 25 m_palette(*this, "palette"), 26 m_vrambank(*this, "vrambank"), 27 m_soundlatch(*this, "soundlatch"), 28 m_videoram(*this, "videoram"), 29 m_spriteram(*this, "spriteram"), 30 m_paletteram(*this, "paletteram"), 31 m_fgscrollram(*this, "fgscrollram"), 32 m_bgscrollram(*this, "bgscrollram"), 33 m_gfxram(*this, "gfxram") { } 34 35 /* device */ 36 required_device<cpu_device> m_maincpu; 37 required_device<cpu_device> m_subcpu; 38 required_device<cpu_device> m_audiocpu; 39 required_device<gfxdecode_device> m_gfxdecode; 40 required_device<palette_device> m_palette; 41 required_device<address_map_bank_device> m_vrambank; 42 required_device<generic_latch_8_device> m_soundlatch; 43 44 /* memory pointers */ 45 required_shared_ptr<uint8_t> m_videoram; 46 required_shared_ptr<uint8_t> m_spriteram; 47 required_shared_ptr<uint8_t> m_paletteram; 48 required_shared_ptr<uint8_t> m_fgscrollram; 49 required_shared_ptr<uint8_t> m_bgscrollram; 50 required_shared_ptr<uint8_t> m_gfxram; 51 52 /* video-related */ 53 tilemap_t *m_charmap; 54 tilemap_t *m_fgmap; 55 tilemap_t *m_bgmap; 56 unsigned m_sreg[8]; 57 unsigned m_palatch; 58 unsigned m_mapmask; 59 60 /* sound-related */ 61 int m_bwp3_nmimask; 62 int m_bwp3_u8F_d; 63 64 void bwp3_u8F_w(uint8_t data); 65 void bwp3_nmimask_w(uint8_t data); 66 void bwp3_nmiack_w(uint8_t data); 67 void bwp1_ctrl_w(offs_t offset, uint8_t data); 68 void bwp2_ctrl_w(offs_t offset, uint8_t data); 69 void videoram_w(offs_t offset, uint8_t data); 70 void fgscrollram_w(offs_t offset, uint8_t data); 71 void bgscrollram_w(offs_t offset, uint8_t data); 72 void gfxram_w(offs_t offset, uint8_t data); 73 void scrollreg_w(offs_t offset, uint8_t data); 74 void paletteram_w(offs_t offset, uint8_t data); 75 76 DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); 77 DECLARE_INPUT_CHANGED_MEMBER(tilt_pressed); 78 79 TILE_GET_INFO_MEMBER(get_fgtileinfo); 80 TILE_GET_INFO_MEMBER(get_bgtileinfo); 81 TILE_GET_INFO_MEMBER(get_charinfo); 82 TILEMAP_MAPPER_MEMBER(scan_cols); 83 84 void init_bwing(); 85 virtual void machine_start() override; 86 virtual void machine_reset() override; 87 virtual void video_start() override; 88 void bwing_postload(); 89 90 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 91 void draw_sprites( bitmap_ind16 &bmp, const rectangle &clip, uint8_t *ram, int pri ); 92 93 INTERRUPT_GEN_MEMBER(bwp3_interrupt); 94 void bwing(machine_config &config); 95 void bank_map(address_map &map); 96 void bwp1_map(address_map &map); 97 void bwp2_map(address_map &map); 98 void bwp3_io_map(address_map &map); 99 void bwp3_map(address_map &map); 100 }; 101