1 // license:BSD-3-Clause 2 // copyright-holders:Zsolt Vasvari 3 #ifndef MAME_INCLUDES_MARINEB_H 4 #define MAME_INCLUDES_MARINEB_H 5 6 #pragma once 7 8 #include "machine/74259.h" 9 #include "emupal.h" 10 #include "tilemap.h" 11 12 class marineb_state : public driver_device 13 { 14 public: marineb_state(const machine_config & mconfig,device_type type,const char * tag)15 marineb_state(const machine_config &mconfig, device_type type, const char *tag) : 16 driver_device(mconfig, type, tag), 17 m_videoram(*this, "videoram"), 18 m_spriteram(*this, "spriteram"), 19 m_colorram(*this, "colorram"), 20 m_maincpu(*this, "maincpu"), 21 m_audiocpu(*this, "audiocpu"), 22 m_gfxdecode(*this, "gfxdecode"), 23 m_palette(*this, "palette"), 24 m_outlatch(*this, "outlatch") 25 { } 26 27 void springer(machine_config &config); 28 void wanted(machine_config &config); 29 void hopprobo(machine_config &config); 30 void marineb(machine_config &config); 31 void bcruzm12(machine_config &config); 32 void hoccer(machine_config &config); 33 void changes(machine_config &config); 34 35 private: 36 required_shared_ptr<uint8_t> m_videoram; 37 required_shared_ptr<uint8_t> m_spriteram; 38 required_shared_ptr<uint8_t> m_colorram; 39 40 /* video-related */ 41 tilemap_t *m_bg_tilemap; 42 tilemap_t *m_fg_tilemap; 43 uint8_t m_palette_bank; 44 uint8_t m_column_scroll; 45 uint8_t m_flipscreen_x; 46 uint8_t m_flipscreen_y; 47 48 /* devices */ 49 required_device<cpu_device> m_maincpu; 50 optional_device<cpu_device> m_audiocpu; 51 required_device<gfxdecode_device> m_gfxdecode; 52 required_device<palette_device> m_palette; 53 required_device<ls259_device> m_outlatch; 54 55 bool m_irq_mask; 56 DECLARE_WRITE_LINE_MEMBER(irq_mask_w); 57 DECLARE_WRITE_LINE_MEMBER(nmi_mask_w); 58 void marineb_videoram_w(offs_t offset, uint8_t data); 59 void marineb_colorram_w(offs_t offset, uint8_t data); 60 void marineb_column_scroll_w(uint8_t data); 61 void marineb_palette_bank_0_w(uint8_t data); 62 void marineb_palette_bank_1_w(uint8_t data); 63 DECLARE_WRITE_LINE_MEMBER(flipscreen_x_w); 64 DECLARE_WRITE_LINE_MEMBER(flipscreen_y_w); 65 TILE_GET_INFO_MEMBER(get_tile_info); 66 virtual void machine_start() override; 67 virtual void machine_reset() override; 68 virtual void video_start() override; 69 void marineb_palette(palette_device &palette) const; 70 uint32_t screen_update_marineb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 71 uint32_t screen_update_changes(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 72 uint32_t screen_update_springer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 73 uint32_t screen_update_hoccer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 74 uint32_t screen_update_hopprobo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 75 DECLARE_WRITE_LINE_MEMBER(marineb_vblank_irq); 76 DECLARE_WRITE_LINE_MEMBER(wanted_vblank_irq); 77 void set_tilemap_scrolly( int cols ); 78 void marineb_io_map(address_map &map); 79 void marineb_map(address_map &map); 80 void wanted_io_map(address_map &map); 81 }; 82 83 #endif // MAME_INCLUDES_MARINEB_H 84