1 // license:BSD-3-Clause 2 // copyright-holders:David Graves, Brian Troha 3 /************************************************************************* 4 5 Asuka & Asuka (+ Taito/Visco games on similar hardware) 6 7 *************************************************************************/ 8 9 #ifndef MAME_INCLUDES_ASUKA_H 10 #define MAME_INCLUDES_ASUKA_H 11 12 #pragma once 13 14 15 #include "machine/taitocchip.h" 16 #include "machine/taitoio.h" 17 18 #include "sound/msm5205.h" 19 #include "machine/74157.h" 20 #include "video/pc090oj.h" 21 #include "video/tc0100scn.h" 22 #include "video/tc0110pcr.h" 23 #include "machine/timer.h" 24 25 26 class asuka_state : public driver_device 27 { 28 public: 29 enum 30 { 31 TIMER_CADASH_INTERRUPT5 32 }; 33 asuka_state(const machine_config & mconfig,device_type type,const char * tag)34 asuka_state(const machine_config &mconfig, device_type type, const char *tag) 35 : driver_device(mconfig, type, tag) 36 , m_cadash_shared_ram(*this, "sharedram") 37 , m_audiobank(*this, "audiobank") 38 , m_maincpu(*this, "maincpu") 39 , m_audiocpu(*this, "audiocpu") 40 , m_cchip(*this, "cchip") 41 , m_msm(*this, "msm") 42 , m_adpcm_select(*this, "adpcm_select") 43 , m_sound_data(*this, "msm") 44 , m_pc090oj(*this, "pc090oj") 45 , m_tc0100scn(*this, "tc0100scn") 46 , m_tc0110pcr(*this, "tc0110pcr") 47 , m_tc0220ioc(*this, "tc0220ioc") 48 , m_cchip_irq_clear(*this, "cchip_irq_clear") 49 { } 50 51 void init_cadash(); 52 void init_earthjkr(); 53 54 void mofflott(machine_config &config); 55 void asuka(machine_config &config); 56 void cadash(machine_config &config); 57 void eto(machine_config &config); 58 void bonzeadv(machine_config &config); 59 60 protected: 61 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 62 virtual void machine_start() override; 63 virtual void machine_reset() override; 64 65 private: 66 // memory pointers 67 optional_shared_ptr<u8> m_cadash_shared_ram; 68 69 required_memory_bank m_audiobank; 70 71 /* misc */ 72 u16 m_adpcm_pos; 73 bool m_adpcm_ff; 74 75 emu_timer *m_cadash_int5_timer; 76 77 /* devices */ 78 required_device<cpu_device> m_maincpu; 79 required_device<cpu_device> m_audiocpu; 80 optional_device<taito_cchip_device> m_cchip; 81 optional_device<msm5205_device> m_msm; 82 optional_device<ls157_device> m_adpcm_select; 83 optional_region_ptr<u8> m_sound_data; 84 required_device<pc090oj_device> m_pc090oj; 85 required_device<tc0100scn_device> m_tc0100scn; 86 required_device<tc0110pcr_device> m_tc0110pcr; 87 optional_device<tc0220ioc_device> m_tc0220ioc; 88 89 optional_device<timer_device> m_cchip_irq_clear; 90 91 void coin_control_w(u8 data); 92 void sound_bankswitch_w(u8 data); 93 void msm5205_address_w(u8 data); 94 u16 cadash_share_r(offs_t offset); 95 void cadash_share_w(offs_t offset, u16 data); 96 void msm5205_start_w(u8 data); 97 void msm5205_stop_w(u8 data); 98 void counters_w(u8 data); 99 void asuka_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl); 100 void bonzeadv_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl); 101 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 102 DECLARE_WRITE_LINE_MEMBER(screen_vblank); 103 INTERRUPT_GEN_MEMBER(cadash_interrupt); 104 INTERRUPT_GEN_MEMBER(bonze_interrupt); 105 TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb); 106 107 DECLARE_WRITE_LINE_MEMBER(asuka_msm5205_vck); 108 109 void asuka_map(address_map &map); 110 void bonzeadv_map(address_map &map); 111 void bonzeadv_z80_map(address_map &map); 112 void cadash_map(address_map &map); 113 void cadash_sub_io(address_map &map); 114 void cadash_sub_map(address_map &map); 115 void cadash_z80_map(address_map &map); 116 void eto_map(address_map &map); 117 void z80_map(address_map &map); 118 }; 119 120 #endif // MAME_INCLUDES_ASUKA_H 121