1 // license:BSD-3-Clause 2 // copyright-holders:Carlos A. Lozano 3 #ifndef MAME_INCLUDES_CABAL_H 4 #define MAME_INCLUDES_CABAL_H 5 6 #pragma once 7 8 #include "audio/seibu.h" 9 #include "sound/msm5205.h" 10 #include "emupal.h" 11 #include "tilemap.h" 12 13 class cabal_state : public driver_device 14 { 15 public: cabal_state(const machine_config & mconfig,device_type type,const char * tag)16 cabal_state(const machine_config &mconfig, device_type type, const char *tag) : 17 driver_device(mconfig, type, tag), 18 m_maincpu(*this, "maincpu"), 19 m_audiocpu(*this, "audiocpu"), 20 m_seibu_sound(*this, "seibu_sound"), 21 m_adpcm1(*this, "adpcm1"), 22 m_adpcm2(*this, "adpcm2"), 23 m_msm1(*this, "msm1"), 24 m_msm2(*this, "msm2"), 25 m_gfxdecode(*this, "gfxdecode"), 26 m_palette(*this, "palette"), 27 m_spriteram(*this, "spriteram"), 28 m_colorram(*this, "colorram"), 29 m_videoram(*this, "videoram") 30 { } 31 32 required_device<cpu_device> m_maincpu; 33 required_device<cpu_device> m_audiocpu; 34 optional_device<seibu_sound_device> m_seibu_sound; 35 optional_device<seibu_adpcm_device> m_adpcm1; 36 optional_device<seibu_adpcm_device> m_adpcm2; 37 optional_device<msm5205_device> m_msm1; 38 optional_device<msm5205_device> m_msm2; 39 required_device<gfxdecode_device> m_gfxdecode; 40 required_device<palette_device> m_palette; 41 42 required_shared_ptr<uint16_t> m_spriteram; 43 required_shared_ptr<uint16_t> m_colorram; 44 required_shared_ptr<uint16_t> m_videoram; 45 46 tilemap_t *m_background_layer; 47 tilemap_t *m_text_layer; 48 int m_sound_command1; 49 int m_sound_command2; 50 51 // common 52 void flipscreen_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 53 void background_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 54 void text_videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); 55 56 // cabal specific 57 void sound_irq_trigger_word_w(offs_t, u16 data, u16 mem_mask); 58 59 // cabalbl specific 60 void cabalbl_sndcmd_w(offs_t offset, uint16_t data); 61 void cabalbl_sound_irq_trigger_word_w(uint16_t data); 62 uint8_t cabalbl_snd2_r(); 63 uint8_t cabalbl_snd1_r(); 64 void cabalbl_coin_w(uint8_t data); 65 void cabalbl_1_adpcm_w(uint8_t data); 66 void cabalbl_2_adpcm_w(uint8_t data); 67 68 void init_cabal(); 69 DECLARE_MACHINE_START(cabalbl); 70 DECLARE_MACHINE_RESET(cabalbl); 71 virtual void video_start() override; 72 73 TILE_GET_INFO_MEMBER(get_back_tile_info); 74 TILE_GET_INFO_MEMBER(get_text_tile_info); 75 76 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 77 void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); 78 void cabalt(machine_config &config); 79 void cabalbl2(machine_config &config); 80 void cabal(machine_config &config); 81 void cabalbl(machine_config &config); 82 void cabalbl2_predecrypted_opcodes_map(address_map &map); 83 void cabalbl2_sound_map(address_map &map); 84 void cabalbl_main_map(address_map &map); 85 void cabalbl_sound_map(address_map &map); 86 void cabalbl_talk1_map(address_map &map); 87 void cabalbl_talk1_portmap(address_map &map); 88 void cabalbl_talk2_map(address_map &map); 89 void cabalbl_talk2_portmap(address_map &map); 90 void main_map(address_map &map); 91 void sound_decrypted_opcodes_map(address_map &map); 92 void sound_map(address_map &map); 93 void trackball_main_map(address_map &map); 94 }; 95 96 #endif // MAME_INCLUDES_CABAL_H 97