mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
Cps1 bootlegs, some more new sets (#5895)
* added captcommb2 * added knightsb3 * added dinopic3 * confirm clocks * bootleg reshuffle
This commit is contained in:
parent
f4cf0cc86a
commit
3ad635d94f
@ -256,6 +256,8 @@ copsnrob.cpp
|
||||
corona.cpp
|
||||
cosmic.cpp
|
||||
cps1.cpp
|
||||
cps1bl_5205.cpp
|
||||
cps1bl_pic.cpp
|
||||
cps2.cpp
|
||||
cps3.cpp
|
||||
cpzodiac.cpp
|
||||
|
@ -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 *****************************************************/
|
||||
|
||||
|
1194
src/mame/drivers/cps1bl_5205.cpp
Normal file
1194
src/mame/drivers/cps1bl_5205.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1284
src/mame/drivers/cps1bl_pic.cpp
Normal file
1284
src/mame/drivers/cps1bl_pic.cpp
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 },
|
||||
|
Loading…
Reference in New Issue
Block a user