1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria, Couriersud 3 /************************************************************************* 4 5 Gyruss 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_GYRUSS_H 9 #define MAME_INCLUDES_GYRUSS_H 10 11 #pragma once 12 13 #include "cpu/mcs48/mcs48.h" 14 #include "sound/discrete.h" 15 #include "emupal.h" 16 #include "screen.h" 17 #include "tilemap.h" 18 19 class gyruss_state : public driver_device 20 { 21 public: gyruss_state(const machine_config & mconfig,device_type type,const char * tag)22 gyruss_state(const machine_config &mconfig, device_type type, const char *tag) : 23 driver_device(mconfig, type, tag), 24 m_maincpu(*this, "maincpu"), 25 m_subcpu(*this, "sub"), 26 m_audiocpu(*this, "audiocpu"), 27 m_audiocpu_2(*this, "audio2"), 28 m_discrete(*this, "discrete"), 29 m_colorram(*this, "colorram"), 30 m_videoram(*this, "videoram"), 31 m_spriteram(*this, "spriteram"), 32 m_gfxdecode(*this, "gfxdecode"), 33 m_screen(*this, "screen"), 34 m_palette(*this, "palette") 35 { } 36 37 void gyruss(machine_config &config); 38 39 void init_gyruss(); 40 41 private: 42 /* devices/memory pointers */ 43 required_device<cpu_device> m_maincpu; 44 required_device<cpu_device> m_subcpu; 45 required_device<cpu_device> m_audiocpu; 46 required_device<i8039_device> m_audiocpu_2; 47 required_device<discrete_sound_device> m_discrete; 48 required_shared_ptr<uint8_t> m_colorram; 49 required_shared_ptr<uint8_t> m_videoram; 50 required_shared_ptr<uint8_t> m_spriteram; 51 required_device<gfxdecode_device> m_gfxdecode; 52 required_device<screen_device> m_screen; 53 required_device<palette_device> m_palette; 54 55 tilemap_t *m_tilemap; 56 uint8_t m_master_nmi_mask; 57 uint8_t m_slave_irq_mask; 58 bool m_flipscreen; 59 60 void gyruss_irq_clear_w(uint8_t data); 61 void gyruss_sh_irqtrigger_w(uint8_t data); 62 void gyruss_i8039_irq_w(uint8_t data); 63 DECLARE_WRITE_LINE_MEMBER(master_nmi_mask_w); 64 void slave_irq_mask_w(uint8_t data); 65 DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); 66 DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); 67 void gyruss_spriteram_w(offs_t offset, uint8_t data); 68 uint8_t gyruss_scanline_r(); 69 DECLARE_WRITE_LINE_MEMBER(flipscreen_w); 70 uint8_t gyruss_portA_r(); 71 void gyruss_dac_w(uint8_t data); 72 void gyruss_filter0_w(uint8_t data); 73 void gyruss_filter1_w(uint8_t data); 74 TILE_GET_INFO_MEMBER(gyruss_get_tile_info); 75 virtual void machine_start() override; 76 virtual void video_start() override; 77 void gyruss_palette(palette_device &palette) const; 78 uint32_t screen_update_gyruss(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 79 DECLARE_WRITE_LINE_MEMBER(vblank_irq); 80 void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); 81 void filter_w(int chip, int data ); 82 void audio_cpu1_io_map(address_map &map); 83 void audio_cpu1_map(address_map &map); 84 void audio_cpu2_io_map(address_map &map); 85 void audio_cpu2_map(address_map &map); 86 void main_cpu1_map(address_map &map); 87 void main_cpu2_map(address_map &map); 88 }; 89 90 #endif // MAME_INCLUDES_GYRUSS_H 91