summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes
diff options
context:
space:
mode:
author Tom <37988779+TwistedTom@users.noreply.github.com>2019-11-13 15:39:15 +0000
committer Vas Crabb <cuavas@users.noreply.github.com>2019-11-14 02:39:15 +1100
commit3ad635d94f112d4b6be66bf1fdb57783d9d70412 (patch)
tree06cfbc0585fda72633a4a6a8be846d81dc9775d2 /src/mame/includes
parentf4cf0cc86a06f07f4df18fbf521abf3126721d24 (diff)
Cps1 bootlegs, some more new sets (#5895)
* added captcommb2 * added knightsb3 * added dinopic3 * confirm clocks * bootleg reshuffle
Diffstat (limited to 'src/mame/includes')
-rw-r--r--src/mame/includes/cps1.h520
1 files changed, 290 insertions, 230 deletions
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index 1a6922f5b31..e5188624944 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -13,6 +13,7 @@
#include "sound/qsound.h"
#include "sound/okim6295.h"
#include "machine/gen_latch.h"
+#include "machine/74157.h"
#include "machine/timekpr.h"
#include "machine/timer.h"
#include "cpu/m68000/m68000.h"
@@ -120,8 +121,6 @@ protected:
, m_audiocpu(*this, "audiocpu")
, m_oki(*this, "oki")
, m_m48t35(*this,"m48t35")
- , m_msm_1(*this, "msm1")
- , m_msm_2(*this, "msm2")
, m_gfxdecode(*this, "gfxdecode")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
@@ -129,141 +128,142 @@ protected:
, m_soundlatch2(*this, "soundlatch2")
, m_region_stars(*this, "stars")
, m_led_cboard(*this, "led_cboard%u", 0U)
- , bootleg_sprite_renderer(&cps_state::fcrash_render_sprites)
{ }
public:
- DECLARE_READ16_MEMBER(cps1_hack_dsw_r);
+ void cps1_10MHz(machine_config &config);
+ void forgottn(machine_config &config);
+ void cps1_12MHz(machine_config &config);
+ void pang3(machine_config &config);
+ void ganbare(machine_config &config);
+ void qsound(machine_config &config);
+ void wofhfh(machine_config &config);
+ void sf2m3(machine_config &config);
+ void sf2cems6(machine_config &config);
+ void sf2m10(machine_config &config);
+
+ void init_cps1();
+ void init_sf2ee();
+ void init_wof();
+ void init_dino();
+ void init_punisher();
+ void init_slammast();
+ void init_pang3();
+ void init_ganbare();
+ void init_pang3b();
+ void init_sf2rb();
+ void init_sf2rb2();
+ void init_sf2thndr();
+ void init_sf2hack();
+ void init_sf2rk();
+ void init_sf2dongb();
+ void init_sf2ceblp();
+ void init_sf2m8();
+ void init_dinohunt();
+
+protected:
+ DECLARE_MACHINE_START(common);
+ DECLARE_MACHINE_START(cps1);
+ DECLARE_MACHINE_START(qsound);
+ DECLARE_MACHINE_START(ganbare);
+ DECLARE_MACHINE_RESET(cps);
+
+ DECLARE_READ16_MEMBER(cps1_dsw_r);
DECLARE_READ16_MEMBER(cps1_in1_r);
DECLARE_READ16_MEMBER(cps1_in2_r);
DECLARE_READ16_MEMBER(cps1_in3_r);
- DECLARE_WRITE8_MEMBER(cps1_snd_bankswitch_w);
+ DECLARE_WRITE16_MEMBER(cps1_coinctrl_w);
+ DECLARE_WRITE16_MEMBER(cpsq_coinctrl2_w);
+ DECLARE_WRITE16_MEMBER(cps1_cps_a_w);
+ DECLARE_READ16_MEMBER(cps1_cps_b_r);
+ DECLARE_WRITE16_MEMBER(cps1_cps_b_w);
+ DECLARE_WRITE16_MEMBER(cps1_gfxram_w);
DECLARE_WRITE16_MEMBER(cps1_soundlatch_w);
DECLARE_WRITE16_MEMBER(cps1_soundlatch2_w);
- DECLARE_WRITE16_MEMBER(cpsq_coinctrl2_w);
+ DECLARE_WRITE8_MEMBER(cps1_snd_bankswitch_w);
+ DECLARE_WRITE8_MEMBER(cps1_oki_pin7_w);
DECLARE_READ16_MEMBER(qsound_rom_r);
+ DECLARE_READ16_MEMBER(qsound_sharedram1_r);
+ DECLARE_WRITE16_MEMBER(qsound_sharedram1_w);
DECLARE_READ16_MEMBER(qsound_sharedram2_r);
DECLARE_WRITE16_MEMBER(qsound_sharedram2_w);
DECLARE_WRITE8_MEMBER(qsound_banksw_w);
+ DECLARE_READ16_MEMBER(ganbare_ram_r);
+ DECLARE_WRITE16_MEMBER(ganbare_ram_w);
+ DECLARE_READ16_MEMBER(cps1_hack_dsw_r);
DECLARE_READ16_MEMBER(sf2rb_prot_r);
DECLARE_READ16_MEMBER(sf2rb2_prot_r);
DECLARE_READ16_MEMBER(sf2dongb_prot_r);
DECLARE_READ16_MEMBER(sf2ceblp_prot_r);
DECLARE_WRITE16_MEMBER(sf2ceblp_prot_w);
- DECLARE_READ16_MEMBER(cps1_dsw_r);
- DECLARE_WRITE16_MEMBER(cps1_coinctrl_w);
- DECLARE_READ16_MEMBER(qsound_sharedram1_r);
- DECLARE_WRITE16_MEMBER(qsound_sharedram1_w);
- DECLARE_READ16_MEMBER(ganbare_ram_r);
- DECLARE_WRITE16_MEMBER(ganbare_ram_w);
- DECLARE_WRITE16_MEMBER(cps1_cps_a_w);
- DECLARE_READ16_MEMBER(cps1_cps_b_r);
- DECLARE_WRITE16_MEMBER(cps1_cps_b_w);
- DECLARE_WRITE16_MEMBER(cps1_gfxram_w);
- DECLARE_WRITE8_MEMBER(cps1_oki_pin7_w);
- DECLARE_WRITE16_MEMBER(sf2m1_layer_w);
DECLARE_WRITE16_MEMBER(sf2m3_layer_w);
DECLARE_READ16_MEMBER(dinohunt_sound_r);
- void init_sf2rb();
- void init_sf2rb2();
- void init_sf2thndr();
- void init_dinohunt();
- void init_sf2hack();
- void init_sf2rk();
- void init_slammast();
- void init_pang3b();
- void init_pang3();
- void init_sf2ee();
- void init_sf2m8();
- void init_cps1();
- void init_dino();
- void init_punisher();
- void init_wof();
- void init_ganbare();
- void init_sf2dongb();
- void init_sf2ceblp();
+
TILEMAP_MAPPER_MEMBER(tilemap0_scan);
TILEMAP_MAPPER_MEMBER(tilemap1_scan);
TILEMAP_MAPPER_MEMBER(tilemap2_scan);
TILE_GET_INFO_MEMBER(get_tile0_info);
TILE_GET_INFO_MEMBER(get_tile1_info);
TILE_GET_INFO_MEMBER(get_tile2_info);
- DECLARE_MACHINE_START(cps1);
virtual void video_start() override;
- DECLARE_MACHINE_START(common);
- DECLARE_MACHINE_START(qsound);
- DECLARE_MACHINE_START(ganbare);
- DECLARE_MACHINE_RESET(cps);
- DECLARE_MACHINE_START(sf2m1);
+
+ INTERRUPT_GEN_MEMBER(cps1_interrupt);
+ TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt);
+
virtual void render_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_cps1);
- INTERRUPT_GEN_MEMBER(cps1_interrupt);
- TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt);
- void cpu_space_map(address_map &map);
-
+
void kabuki_setup(void (*decode)(uint8_t *src, uint8_t *dst));
+
+ /* maps */
+ void cpu_space_map(address_map &map);
+ void main_map(address_map &map);
+ void forgottn_map(address_map &map);
+ void qsound_main_map(address_map &map);
+ void qsound_decrypted_opcodes_map(address_map &map);
+ void sub_map(address_map &map);
+ void qsound_sub_map(address_map &map);
+ void sf2m3_map(address_map &map);
+ void sf2cems6_map(address_map &map);
+ void sf2m10_map(address_map &map);
+
+ // game-specific
+ uint16_t sf2ceblp_prot;
- /* fcrash handlers */
- void init_kodb();
- void init_cawingbl();
- void init_dinopic();
- void init_knightsb();
- void init_mtwinsb();
- void init_punipic();
- void init_punipic3();
- void init_sf2m1();
- void init_sf2mdt();
- void init_sf2mdta();
- void init_sf2mdtb();
- void init_sf2b();
- void init_slampic();
- void init_slampic2();
- void init_wofabl();
- DECLARE_MACHINE_START(fcrash);
- DECLARE_MACHINE_RESET(fcrash);
- DECLARE_MACHINE_START(cawingbl);
- DECLARE_MACHINE_START(dinopic);
- DECLARE_MACHINE_START(knightsb);
- DECLARE_MACHINE_START(kodb);
- DECLARE_MACHINE_START(mtwinsb);
- DECLARE_MACHINE_START(punipic);
- DECLARE_MACHINE_START(sf2mdt);
- DECLARE_MACHINE_START(slampic);
- DECLARE_MACHINE_START(slampic2);
- DECLARE_MACHINE_START(sgyxz);
- DECLARE_WRITE16_MEMBER(cawingbl_soundlatch_w);
- DECLARE_WRITE16_MEMBER(dinopic_layer_w);
- DECLARE_WRITE16_MEMBER(dinopic_layer2_w);
- DECLARE_WRITE16_MEMBER(knightsb_layer_w);
- DECLARE_WRITE16_MEMBER(kodb_layer_w);
- DECLARE_WRITE16_MEMBER(mtwinsb_layer_w);
- DECLARE_WRITE16_MEMBER(punipic_layer_w);
- DECLARE_WRITE16_MEMBER(sf2mdt_layer_w);
- DECLARE_WRITE16_MEMBER(sf2mdta_layer_w);
- DECLARE_WRITE16_MEMBER(sf2b_layer_w);
- DECLARE_WRITE16_MEMBER(slampic_layer_w);
- DECLARE_WRITE16_MEMBER(slampic_layer2_w);
- DECLARE_READ16_MEMBER(slampic2_cps_a_r);
- DECLARE_WRITE16_MEMBER(slampic2_sound_w);
- DECLARE_WRITE16_MEMBER(slampic2_sound2_w);
- DECLARE_WRITE16_MEMBER(fcrash_soundlatch_w);
- DECLARE_WRITE8_MEMBER(fcrash_snd_bankswitch_w);
- DECLARE_WRITE8_MEMBER(sf2mdt_snd_bankswitch_w);
- DECLARE_WRITE8_MEMBER(knightsb_snd_bankswitch_w);
- DECLARE_WRITE8_MEMBER(fcrash_msm5205_0_data_w);
- DECLARE_WRITE8_MEMBER(fcrash_msm5205_1_data_w);
- DECLARE_WRITE16_MEMBER(varthb_layer_w);
- uint32_t screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void fcrash_update_transmasks();
- void fcrash_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void slampic2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- void fcrash_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask);
- void fcrash_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer);
- void fcrash_build_palette();
+ /* video-related */
+ tilemap_t *m_bg_tilemap[3];
+ int m_scanline1;
+ int m_scanline2;
+ int m_scancalls;
+
+ int m_scroll1x;
+ int m_scroll1y;
+ int m_scroll2x;
+ int m_scroll2y;
+ int m_scroll3x;
+ int m_scroll3y;
+
+ int m_stars_enabled[2]; /* Layer enabled [Y/N] */
+ int m_stars1x;
+ int m_stars1y;
+ int m_stars2x;
+ int m_stars2y;
+ int m_last_sprite_offset; /* Offset of the last sprite */
+ bitmap_ind16 m_dummy_bitmap;
- /* cps video */
+ /* video config (never changed after video_start) */
+ const struct CPS1config *m_game_config;
+ int m_scroll_size;
+ int m_obj_size;
+ int m_other_size;
+ int m_palette_align;
+ int m_palette_size;
+ int m_stars_rom_size;
+ uint8_t m_empty_tile[32*32];
+
+ /* video/cps1.cpp */
inline uint16_t *cps1_base( int offset, int boundary );
void cps1_get_video_base();
int gfxrom_bank_mapper(int type, int code);
@@ -274,142 +274,28 @@ public:
void cps1_render_stars(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void cps1_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask);
void cps1_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer);
-
-
- /* cps2 driver */
- DECLARE_WRITE_LINE_MEMBER(m5205_int1);
- DECLARE_WRITE_LINE_MEMBER(m5205_int2);
- void cawingbl(machine_config &config);
- void sf2mdt(machine_config &config);
- void sf2m1(machine_config &config);
- void kodb(machine_config &config);
- void mtwinsb(machine_config &config);
- void varthb(machine_config &config);
- void sgyxz(machine_config &config);
- void wofabl(machine_config &config);
- void punipic(machine_config &config);
- void dinopic(machine_config &config);
- void slampic(machine_config &config);
- void slampic2(machine_config &config);
- void sf2b(machine_config &config);
- void knightsb(machine_config &config);
- void fcrash(machine_config &config);
- void sf2m10(machine_config &config);
- void sf2m3(machine_config &config);
- void sf2cems6(machine_config &config);
- void forgottn(machine_config &config);
- void ganbare(machine_config &config);
- void qsound(machine_config &config);
- void cps1_12MHz(machine_config &config);
- void wofhfh(machine_config &config);
- void cps1_10MHz(machine_config &config);
- void pang3(machine_config &config);
- void dinopic_map(address_map &map);
- void fcrash_map(address_map &map);
- void forgottn_map(address_map &map);
- void knightsb_map(address_map &map);
- void knightsb_z80map(address_map &map);
- void kodb_sound_map(address_map &map);
- void main_map(address_map &map);
- void mtwinsb_map(address_map &map);
- void punipic_map(address_map &map);
- void qsound_decrypted_opcodes_map(address_map &map);
- void qsound_main_map(address_map &map);
- void qsound_sub_map(address_map &map);
- void sf2b_map(address_map &map);
- void sf2m10_map(address_map &map);
- void sf2m1_map(address_map &map);
- void sf2m3_map(address_map &map);
- void sf2cems6_map(address_map &map);
- void sf2mdt_map(address_map &map);
- void sf2mdt_z80map(address_map &map);
- void sgyxz_map(address_map &map);
- void sgyxz_sound_map(address_map &map);
- void wofabl_map(address_map &map);
- void slampic_map(address_map &map);
- void slampic2_map(address_map &map);
- void sound_map(address_map &map);
- void sub_map(address_map &map);
- void varthb_map(address_map &map);
-
-protected:
+
/* memory pointers */
- // cps1
optional_shared_ptr<uint16_t> m_mainram;
required_shared_ptr<uint16_t> m_gfxram;
required_shared_ptr<uint16_t> m_cps_a_regs;
required_shared_ptr<uint16_t> m_cps_b_regs;
- uint16_t * m_scroll1;
- uint16_t * m_scroll2;
- uint16_t * m_scroll3;
- uint16_t * m_obj;
- uint16_t * m_other;
+ uint16_t * m_scroll1;
+ uint16_t * m_scroll2;
+ uint16_t * m_scroll3;
+ uint16_t * m_obj;
+ uint16_t * m_other;
std::unique_ptr<uint16_t[]> m_buffered_obj;
optional_shared_ptr<uint8_t> m_qsound_sharedram1;
optional_shared_ptr<uint8_t> m_qsound_sharedram2;
std::unique_ptr<uint8_t[]> m_decrypt_kabuki;
-
- // game-specific
- uint16_t sf2ceblp_prot;
-
- /* video-related */
- tilemap_t *m_bg_tilemap[3];
- int m_scanline1;
- int m_scanline2;
- int m_scancalls;
-
- int m_scroll1x;
- int m_scroll1y;
- int m_scroll2x;
- int m_scroll2y;
- int m_scroll3x;
- int m_scroll3y;
-
- int m_stars_enabled[2]; /* Layer enabled [Y/N] */
- int m_stars1x;
- int m_stars1y;
- int m_stars2x;
- int m_stars2y;
- int m_last_sprite_offset; /* Offset of the last sprite */
-
- bitmap_ind16 m_dummy_bitmap;
-
- /* fcrash sound hw */
- int m_sample_buffer1;
- int m_sample_buffer2;
- int m_sample_select1;
- int m_sample_select2;
-
- /* video config (never changed after video_start) */
- const struct CPS1config *m_game_config;
- int m_scroll_size;
- int m_obj_size;
- int m_other_size;
- int m_palette_align;
- int m_palette_size;
- int m_stars_rom_size;
- uint8_t m_empty_tile[32*32];
- int m_cps_version;
-
- /* fcrash video config */
- uint8_t m_layer_enable_reg;
- uint8_t m_layer_mask_reg[4];
- int m_layer_scroll1x_offset;
- int m_layer_scroll2x_offset;
- int m_layer_scroll3x_offset;
- int m_sprite_base;
- int m_sprite_list_end_marker;
- int m_sprite_x_offset;
- std::unique_ptr<uint16_t[]> m_bootleg_sprite_ram;
- std::unique_ptr<uint16_t[]> m_bootleg_work_ram;
+ int m_cps_version;
/* devices */
required_device<m68000_base_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
optional_device<okim6295_device> m_oki;
optional_device<m48t35_device> m_m48t35;
- optional_device<msm5205_device> m_msm_1; // fcrash
- optional_device<msm5205_device> m_msm_2; // fcrash
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
@@ -417,9 +303,6 @@ protected:
optional_device<generic_latch_8_device> m_soundlatch2;
optional_memory_region m_region_stars;
output_finder<3> m_led_cboard;
-
- // fcrash
- void (cps_state::*bootleg_sprite_renderer)(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
class cps2_state : public cps_state
@@ -525,7 +408,184 @@ private:
int m_ecofghtr_dial_last1;
};
-/*----------- defined in drivers/cps1.c -----------*/
+class fcrash_state : public cps_state
+{
+public:
+ fcrash_state(const machine_config &mconfig, device_type type, const char *tag)
+ : cps_state(mconfig, type, tag, 1)
+ , m_msm_1(*this, "msm1")
+ , m_msm_2(*this, "msm2")
+ , m_bootleg_sprite_renderer(&fcrash_state::fcrash_render_sprites)
+ { }
+
+ void fcrash(machine_config &config);
+ void cawingbl(machine_config &config);
+ void kodb(machine_config &config);
+ void mtwinsb(machine_config &config);
+ void sf2m1(machine_config &config);
+ void sgyxz(machine_config &config);
+ void wofabl(machine_config &config);
+ void varthb(machine_config &config);
+
+ void init_cawingbl();
+ void init_kodb();
+ void init_mtwinsb();
+ void init_sf2m1();
+ void init_wofabl();
+
+protected:
+ DECLARE_MACHINE_START(fcrash);
+ DECLARE_MACHINE_RESET(fcrash);
+ DECLARE_MACHINE_START(cawingbl);
+ DECLARE_MACHINE_START(kodb);
+ DECLARE_MACHINE_START(mtwinsb);
+ DECLARE_MACHINE_START(sf2m1);
+ DECLARE_MACHINE_START(sgyxz);
+
+ DECLARE_WRITE16_MEMBER(fcrash_soundlatch_w);
+ DECLARE_WRITE8_MEMBER(fcrash_snd_bankswitch_w);
+ DECLARE_WRITE_LINE_MEMBER(m5205_int1);
+ DECLARE_WRITE_LINE_MEMBER(m5205_int2);
+ DECLARE_WRITE8_MEMBER(fcrash_msm5205_0_data_w);
+ DECLARE_WRITE8_MEMBER(fcrash_msm5205_1_data_w);
+ DECLARE_WRITE16_MEMBER(cawingbl_soundlatch_w);
+ DECLARE_WRITE16_MEMBER(kodb_layer_w);
+ DECLARE_WRITE16_MEMBER(mtwinsb_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2m1_layer_w);
+ DECLARE_WRITE16_MEMBER(varthb_layer_w);
+ DECLARE_WRITE16_MEMBER(varthb_layer2_w);
+
+ uint32_t screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void fcrash_update_transmasks();
+ void fcrash_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void fcrash_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask);
+ void fcrash_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer);
+ void fcrash_build_palette();
+
+ void fcrash_map(address_map &map);
+ void mtwinsb_map(address_map &map);
+ void sf2m1_map(address_map &map);
+ void sgyxz_map(address_map &map);
+ void wofabl_map(address_map &map);
+ void varthb_map(address_map &map);
+
+ void fcrash_sound_map(address_map &map);
+ void kodb_sound_map(address_map &map);
+ void sgyxz_sound_map(address_map &map);
+
+ /* sound hw */
+ int m_sample_buffer1;
+ int m_sample_buffer2;
+ int m_sample_select1;
+ int m_sample_select2;
+
+ /* video config */
+ uint8_t m_layer_enable_reg;
+ uint8_t m_layer_mask_reg[4];
+ int m_layer_scroll1x_offset;
+ int m_layer_scroll2x_offset;
+ int m_layer_scroll3x_offset;
+ int m_sprite_base;
+ int m_sprite_list_end_marker;
+ int m_sprite_x_offset;
+ std::unique_ptr<uint16_t[]> m_bootleg_sprite_ram;
+ std::unique_ptr<uint16_t[]> m_bootleg_work_ram;
+
+ optional_device<msm5205_device> m_msm_1;
+ optional_device<msm5205_device> m_msm_2;
+
+ void (fcrash_state::*m_bootleg_sprite_renderer)(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+class cps1bl_5205_state : public fcrash_state
+{
+public:
+ cps1bl_5205_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fcrash_state(mconfig, type, tag)
+ , m_msm_mux(*this, "msm_mux%u", 1)
+ { }
+
+ void captcommb2(machine_config &config);
+ void sf2b(machine_config &config);
+ void sf2mdt(machine_config &config);
+
+ void init_captcommb2();
+ void init_knightsb();
+ void init_sf2b();
+ void init_sf2mdt();
+ void init_sf2mdta();
+ void init_sf2mdtb();
+
+private:
+ DECLARE_MACHINE_START(captcommb2);
+ DECLARE_MACHINE_RESET(captcommb2);
+ DECLARE_MACHINE_START(sf2mdt);
+
+ DECLARE_WRITE16_MEMBER(captcommb2_layer_w);
+ DECLARE_WRITE16_MEMBER(captcommb2_soundlatch_w);
+ DECLARE_READ8_MEMBER(captcommb2_soundlatch_r);
+ DECLARE_WRITE8_MEMBER(captcommb2_snd_bankswitch_w);
+ DECLARE_WRITE_LINE_MEMBER(captcommb2_mux_select_w);
+ DECLARE_WRITE16_MEMBER(knightsb_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2b_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2mdt_layer_w);
+ DECLARE_WRITE16_MEMBER(sf2mdt_soundlatch_w);
+ DECLARE_WRITE16_MEMBER(sf2mdta_layer_w);
+
+ void captcommb2_map(address_map &map);
+ void sf2b_map(address_map &map);
+ void sf2mdt_map(address_map &map);
+ void captcommb2_z80map(address_map &map);
+
+ bool m_captcommb2_mux_toggle;
+
+ optional_device_array<ls157_device, 2> m_msm_mux;
+
+ void captcommb2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+class cps1bl_pic_state : public fcrash_state
+{
+public:
+ cps1bl_pic_state(const machine_config &mconfig, device_type type, const char *tag)
+ : fcrash_state(mconfig, type, tag)
+ { }
+
+ void dinopic(machine_config &config);
+ void punipic(machine_config &config);
+ void slampic(machine_config &config);
+ void slampic2(machine_config &config);
+
+ void init_dinopic();
+ void init_punipic();
+ void init_punipic3();
+ void init_slampic();
+ void init_slampic2();
+
+private:
+ DECLARE_MACHINE_START(dinopic);
+ DECLARE_MACHINE_START(punipic);
+ DECLARE_MACHINE_START(slampic);
+ DECLARE_MACHINE_START(slampic2);
+
+ DECLARE_WRITE16_MEMBER(dinopic_layer_w);
+ DECLARE_WRITE16_MEMBER(dinopic_layer2_w);
+ DECLARE_WRITE16_MEMBER(punipic_layer_w);
+ DECLARE_WRITE16_MEMBER(slampic_layer_w);
+ DECLARE_WRITE16_MEMBER(slampic_layer2_w);
+ DECLARE_READ16_MEMBER(slampic2_cps_a_r);
+ DECLARE_WRITE16_MEMBER(slampic2_sound_w);
+ DECLARE_WRITE16_MEMBER(slampic2_sound2_w);
+
+ void dinopic_map(address_map &map);
+ void punipic_map(address_map &map);
+ void slampic_map(address_map &map);
+ void slampic2_map(address_map &map);
+
+ void slampic2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+/*----------- defined in drivers/cps1.cpp -----------*/
extern gfx_decode_entry const gfx_cps1[];
@@ -536,6 +596,6 @@ INPUT_PORTS_EXTERN( punisher );
INPUT_PORTS_EXTERN( sf2 );
INPUT_PORTS_EXTERN( slammast );
INPUT_PORTS_EXTERN( varth );
-
+INPUT_PORTS_EXTERN( captcomm );
#endif // MAME_INCLUDES_CPS1_H