1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria 3 4 #ifndef MAME_INCLUDES_XEVIOUS 5 #define MAME_INCLUDES_XEVIOUS 6 7 #pragma once 8 9 #include "machine/timer.h" 10 #include "tilemap.h" 11 12 class xevious_state : public galaga_state 13 { 14 public: xevious_state(const machine_config & mconfig,device_type type,const char * tag)15 xevious_state(const machine_config &mconfig, device_type type, const char *tag) : 16 galaga_state(mconfig, type, tag), 17 m_xevious_sr1(*this, "xevious_sr1"), 18 m_xevious_sr2(*this, "xevious_sr2"), 19 m_xevious_sr3(*this, "xevious_sr3"), 20 m_xevious_fg_colorram(*this, "fg_colorram"), 21 m_xevious_bg_colorram(*this, "bg_colorram"), 22 m_xevious_fg_videoram(*this, "fg_videoram"), 23 m_xevious_bg_videoram(*this, "bg_videoram"), 24 m_samples(*this, "samples"), 25 m_subcpu3(*this, "sub3") 26 { } 27 28 void xevious(machine_config &config); 29 30 void init_xevious(); 31 void init_xevios(); 32 33 protected: 34 required_shared_ptr<uint8_t> m_xevious_sr1; 35 required_shared_ptr<uint8_t> m_xevious_sr2; 36 required_shared_ptr<uint8_t> m_xevious_sr3; 37 required_shared_ptr<uint8_t> m_xevious_fg_colorram; 38 required_shared_ptr<uint8_t> m_xevious_bg_colorram; 39 required_shared_ptr<uint8_t> m_xevious_fg_videoram; 40 required_shared_ptr<uint8_t> m_xevious_bg_videoram; 41 optional_device<samples_device> m_samples; 42 43 int32_t m_xevious_bs[2]; 44 45 TILE_GET_INFO_MEMBER(get_fg_tile_info); 46 TILE_GET_INFO_MEMBER(get_bg_tile_info); 47 DECLARE_VIDEO_START(xevious); 48 void xevious_palette(palette_device &palette) const; 49 DECLARE_MACHINE_RESET(xevios); 50 uint32_t screen_update_xevious(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 51 void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); 52 void xevious_fg_videoram_w(offs_t offset, uint8_t data); 53 void xevious_fg_colorram_w(offs_t offset, uint8_t data); 54 void xevious_bg_videoram_w(offs_t offset, uint8_t data); 55 void xevious_bg_colorram_w(offs_t offset, uint8_t data); 56 void xevious_vh_latch_w(offs_t offset, uint8_t data); 57 void xevious_bs_w(offs_t offset, uint8_t data); 58 uint8_t xevious_bb_r(offs_t offset); 59 60 optional_device<cpu_device> m_subcpu3; 61 62 void xevious_map(address_map &map); 63 }; 64 65 class battles_state : public xevious_state 66 { 67 public: battles_state(const machine_config & mconfig,device_type type,const char * tag)68 battles_state(const machine_config &mconfig, device_type type, const char *tag) 69 : xevious_state(mconfig, type, tag), 70 m_nmi_timer(*this, "nmi") 71 { 72 } 73 74 void driver_init() override; 75 76 void battles(machine_config &config); 77 78 protected: 79 void machine_reset() override; 80 81 DECLARE_WRITE_LINE_MEMBER(interrupt_4); 82 TIMER_DEVICE_CALLBACK_MEMBER(nmi_generate); 83 84 void battles_mem4(address_map &map); 85 86 // Custom I/O 87 uint8_t customio0_r(); 88 uint8_t customio_data0_r(offs_t offset); 89 uint8_t customio3_r(); 90 uint8_t customio_data3_r(offs_t offset); 91 uint8_t input_port_r(offs_t offset); 92 93 void customio0_w(uint8_t data); 94 void customio_data0_w(offs_t offset, uint8_t data); 95 void customio3_w(uint8_t data); 96 void customio_data3_w(offs_t offset, uint8_t data); 97 void cpu4_coin_w(uint8_t data); 98 void noise_sound_w(offs_t offset, uint8_t data); 99 100 required_device<timer_device> m_nmi_timer; 101 102 uint8_t m_customio[16]; 103 char m_customio_command; 104 char m_customio_prev_command; 105 char m_customio_command_count; 106 char m_customio_data; 107 char m_sound_played; 108 }; 109 110 #endif // MAME_INCLUDES_XEVIOUS 111