1 // license:BSD-3-Clause 2 // copyright-holders:Manuel Abadia 3 /************************************************************************* 4 5 Glass 6 7 *************************************************************************/ 8 9 #include "machine/74259.h" 10 #include "emupal.h" 11 #include "tilemap.h" 12 13 class glass_state : public driver_device 14 { 15 public: glass_state(const machine_config & mconfig,device_type type,const char * tag)16 glass_state(const machine_config &mconfig, device_type type, const char *tag) : 17 driver_device(mconfig, type, tag), 18 m_maincpu(*this, "maincpu"), 19 m_gfxdecode(*this, "gfxdecode"), 20 m_palette(*this, "palette"), 21 m_outlatch(*this, "outlatch"), 22 m_videoram(*this, "videoram"), 23 m_vregs(*this, "vregs"), 24 m_spriteram(*this, "spriteram"), 25 m_shareram(*this, "shareram"), 26 m_bmap(*this, "bmap"), 27 m_okibank(*this, "okibank"), 28 m_pant{ nullptr, nullptr }, 29 m_blitter_command(0) 30 { } 31 32 void glass(machine_config &config); 33 void glass_ds5002fp(machine_config &config); 34 35 private: 36 /* devices */ 37 required_device<cpu_device> m_maincpu; 38 required_device<gfxdecode_device> m_gfxdecode; 39 required_device<palette_device> m_palette; 40 required_device<ls259_device> m_outlatch; 41 42 /* memory pointers */ 43 required_shared_ptr<uint16_t> m_videoram; 44 required_shared_ptr<uint16_t> m_vregs; 45 required_shared_ptr<uint16_t> m_spriteram; 46 required_shared_ptr<uint16_t> m_shareram; 47 required_region_ptr<uint8_t> m_bmap; 48 49 required_memory_bank m_okibank; 50 51 /* video-related */ 52 tilemap_t *m_pant[2]; 53 std::unique_ptr<bitmap_ind16> m_screen_bitmap; 54 55 /* misc */ 56 int m_current_bit; 57 int m_cause_interrupt; 58 int m_blitter_command; 59 60 void shareram_w(offs_t offset, uint8_t data); 61 uint8_t shareram_r(offs_t offset); 62 void clr_int_w(uint16_t data); 63 void oki_bankswitch_w(uint8_t data); 64 void coin_w(offs_t offset, uint16_t data); 65 void blitter_w(uint16_t data); 66 void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 67 68 DECLARE_WRITE_LINE_MEMBER(coin1_lockout_w); 69 DECLARE_WRITE_LINE_MEMBER(coin2_lockout_w); 70 DECLARE_WRITE_LINE_MEMBER(coin1_counter_w); 71 DECLARE_WRITE_LINE_MEMBER(coin2_counter_w); 72 73 virtual void machine_start() override; 74 virtual void machine_reset() override; 75 virtual void video_start() override; 76 77 template<int Layer> TILE_GET_INFO_MEMBER(get_tile_info); 78 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 79 INTERRUPT_GEN_MEMBER(interrupt); 80 void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); 81 void glass_map(address_map &map); 82 void mcu_hostmem_map(address_map &map); 83 void oki_map(address_map &map); 84 }; 85