1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria,Chris Hardy, Couriersud 3 /************************************************************************* 4 5 Circus Charlie 6 7 *************************************************************************/ 8 #ifndef MAME_INCLUDES_CIRCUSC_H 9 #define MAME_INCLUDES_CIRCUSC_H 10 11 #pragma once 12 13 #include "sound/dac.h" 14 #include "sound/sn76496.h" 15 #include "sound/discrete.h" 16 #include "emupal.h" 17 #include "tilemap.h" 18 19 class circusc_state : public driver_device 20 { 21 public: circusc_state(const machine_config & mconfig,device_type type,const char * tag)22 circusc_state(const machine_config &mconfig, device_type type, const char *tag) : 23 driver_device(mconfig, type, tag), 24 m_scroll(*this, "scroll"), 25 m_colorram(*this, "colorram"), 26 m_videoram(*this, "videoram"), 27 m_spriteram_2(*this, "spriteram_2"), 28 m_spriteram(*this, "spriteram"), 29 m_audiocpu(*this, "audiocpu"), 30 m_sn_1(*this, "sn1"), 31 m_sn_2(*this, "sn2"), 32 m_dac(*this, "dac"), 33 m_discrete(*this, "fltdisc"), 34 m_maincpu(*this, "maincpu"), 35 m_gfxdecode(*this, "gfxdecode"), 36 m_palette(*this, "palette") 37 { } 38 39 /* memory pointers */ 40 required_shared_ptr<uint8_t> m_scroll; 41 required_shared_ptr<uint8_t> m_colorram; 42 required_shared_ptr<uint8_t> m_videoram; 43 required_shared_ptr<uint8_t> m_spriteram_2; 44 required_shared_ptr<uint8_t> m_spriteram; 45 46 /* video-related */ 47 tilemap_t *m_bg_tilemap; 48 bool m_spritebank; 49 50 /* sound-related */ 51 uint8_t m_sn_latch; 52 53 /* devices */ 54 required_device<cpu_device> m_audiocpu; 55 required_device<sn76496_device> m_sn_1; 56 required_device<sn76496_device> m_sn_2; 57 required_device<dac_byte_interface> m_dac; 58 required_device<discrete_device> m_discrete; 59 60 bool m_irq_mask; 61 62 uint8_t circusc_sh_timer_r(); 63 void circusc_sh_irqtrigger_w(uint8_t data); 64 DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); 65 DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); 66 void circusc_sound_w(offs_t offset, uint8_t data); 67 DECLARE_WRITE_LINE_MEMBER(irq_mask_w); 68 void circusc_videoram_w(offs_t offset, uint8_t data); 69 void circusc_colorram_w(offs_t offset, uint8_t data); 70 DECLARE_WRITE_LINE_MEMBER(flipscreen_w); 71 DECLARE_WRITE_LINE_MEMBER(spritebank_w); 72 void init_circusc(); 73 TILE_GET_INFO_MEMBER(get_tile_info); 74 virtual void machine_start() override; 75 virtual void machine_reset() override; 76 virtual void video_start() override; 77 void circusc_palette(palette_device &palette) const; 78 uint32_t screen_update_circusc(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 required_device<cpu_device> m_maincpu; 82 required_device<gfxdecode_device> m_gfxdecode; 83 required_device<palette_device> m_palette; 84 void circusc(machine_config &config); 85 void circusc_map(address_map &map); 86 void sound_map(address_map &map); 87 }; 88 89 #endif // MAME_INCLUDES_CIRCUSC_H 90