Cps1 bootlegs, some more new sets (#5895)

* added captcommb2

* added knightsb3

* added dinopic3

* confirm clocks

* bootleg reshuffle
This commit is contained in:
Tom 2019-11-13 15:39:15 +00:00 committed by Vas Crabb
parent f4cf0cc86a
commit 3ad635d94f
8 changed files with 3583 additions and 3022 deletions

View File

@ -256,6 +256,8 @@ copsnrob.cpp
corona.cpp
cosmic.cpp
cps1.cpp
cps1bl_5205.cpp
cps1bl_pic.cpp
cps2.cpp
cps3.cpp
cpzodiac.cpp

View File

@ -2156,8 +2156,7 @@ static INPUT_PORTS_START( kodr1 )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
INPUT_PORTS_END
static INPUT_PORTS_START( captcomm )
INPUT_PORTS_START( captcomm )
PORT_INCLUDE( cps1_4players )
PORT_MODIFY("IN0")
@ -13399,6 +13398,25 @@ WRITE16_MEMBER( cps_state::sf2m3_layer_w )
}
/*
A note reguarding bootlegs:
In order to keep the cps source in some sort of order, the idea is to group similar bootleg hardware into seperate
derived classes and source files.
Rom swaps, hacks etc. (on original Capcom hardware) -> cps1.cpp
Sound: Z80, 2x YM2203, 2x m5205 ("Final Crash" h/w) -> fcrash.cpp
Sound: Z80, 1x YM2151, 2x m5205 -> cps1bl_5205.cpp
Sound: PIC, 1x M6295 *1 -> cps1bl_pic.cpp
Sound: Z80, 1x YM2151, 1x M6295 *2 -> fcrash.cpp (for now...)
*1 these seem to be only CPS1.5/Q sound games?
*2 this is original configuration, but non-Capcom (usually single-board) hardware.
This file currently contains games in first and last catergories.
Eventually only official/genuine/non-bootleg Capcom-hardware games and those in first catergory will remain here.
*/
/*************************************************** Game Macros *****************************************************/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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,225 +128,105 @@ 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));
/* 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();
/* cps video */
inline uint16_t *cps1_base( int offset, int boundary );
void cps1_get_video_base();
int gfxrom_bank_mapper(int type, int code);
void cps1_update_transmasks();
void cps1_build_palette(const uint16_t* const palette_base);
virtual void find_last_sprite();
void cps1_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
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);
/* maps */
void cpu_space_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 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 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;
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;
void sf2m10_map(address_map &map);
// game-specific
uint16_t sf2ceblp_prot;
@ -374,12 +253,6 @@ protected:
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;
@ -389,27 +262,40 @@ protected:
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;
/* 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);
void cps1_update_transmasks();
void cps1_build_palette(const uint16_t* const palette_base);
virtual void find_last_sprite();
void cps1_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
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);
/* memory pointers */
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;
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;
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

View File

@ -10661,6 +10661,27 @@ wofr1 // 02/10/1992 (c) 1992 (World) (CPS1 + QSound)
wofu // 31/10/1992 (c) 1992 (USA) (CPS1 + QSound)
wonder3 // 20/05/1991 (c) 1991 (Japan)
@source:cps1bl_5205.cpp
captcommb2 // bootleg
knightsb // bootleg
knightsb3 // bootleg
sf2b // bootleg
sf2b2 // bootleg
sf2ceb // bootleg
sf2mdt // bootleg
sf2mdta // bootleg
sf2mdtb // bootleg
@source:cps1bl_pic.cpp
dinopic // bootleg
dinopic2 // bootleg
dinopic3 // bootleg
punipic // bootleg
punipic2 // bootleg
punipic3 // bootleg
slampic // bootleg
slampic2 // bootleg
@source:cps2.cpp
1944 // 20/06/2000 (c) 2000 Eighting/Raizing (USA)
1944d //
@ -13170,28 +13191,14 @@ fcombat // (c) 1985 Jaleco
@source:fcrash.cpp
cawingb2 // bootleg
cawingbl // bootleg
dinopic // bootleg
dinopic2 // bootleg
fcrash // bootleg of Final Fight
ffightbl // bootleg
ffightbla // bootleg
knightsb // bootleg
kodb // bootleg
mtwinsb // bootleg
punipic // bootleg
punipic2 // bootleg
punipic3 // bootleg
sf2b // bootleg
sf2b2 // bootleg
sf2ceb // bootleg
sf2m1 // hack
sf2m9 // bootleg
sf2mdt // bootleg
sf2mdta // bootleg
sf2mdtb // bootleg
sgyxz // bootleg (All-In Electronics)
slampic // bootleg
slampic2 // bootleg
varthb // bootleg
wofabl // bootleg

View File

@ -1530,12 +1530,14 @@ static const struct CPS1config cps1_config_table[]=
{"captcommj", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
{"captcommjr1", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 },
{"captcommb", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34, 3 },
{"captcommb2", CPS_B_21_BT4, mapper_CC63B }, // junk around health bar with default cps2 mapper, uses BT4(knights) config
{"knights", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
{"knightsu", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
{"knightsj", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 },
{"knightsja", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // wrong, this set uses KR22B, still not dumped
{"knightsb2", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // wrong, knightsb bootleg doesn't use the KR63B PAL
//{"knightsb", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // wrong, knightsb bootleg doesn't use the KR63B PAL
{"knightsb3", CPS_B_21_BT4, mapper_KR63B },
{"pokonyan", CPS_B_21_DEF, mapper_pokonyan, 0x36 },
{"sf2ce", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2ceea", CPS_B_21_DEF, mapper_S9263B, 0x36 },