From a4889dee2ef728d955add652d2a6aa66cdd87f56 Mon Sep 17 00:00:00 2001 From: Tom <37988779+TwistedTom@users.noreply.github.com> Date: Sun, 11 Dec 2022 15:16:43 +0000 Subject: capcom/cps1.cpp: Added SFZ63B mapper. (#10673) This PAL was found on mpumpkin, assumed to come from sfz. --- src/mame/capcom/cps1.cpp | 14 +++++++++++++- src/mame/capcom/cps1_v.cpp | 42 +++++++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/mame/capcom/cps1.cpp b/src/mame/capcom/cps1.cpp index aeecaa2e59c..b693a8d7a43 100644 --- a/src/mame/capcom/cps1.cpp +++ b/src/mame/capcom/cps1.cpp @@ -13839,7 +13839,7 @@ ROM_START( pokonyan ) */ ROM_END -ROM_START( mpumpkin ) // B board: ? C board: 92631C-6 +ROM_START( mpumpkin ) // B board: 91634B-? C board: 92631C-6 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "mpa_23.8f", 0x00000, 0x80000, CRC(38b9883a) SHA1(94a89a360a502f209aa905e7eb2f1d472960850f) ) // remaining sockets are empty @@ -13994,6 +13994,9 @@ ROM_START( sfach ) ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ ROM_LOAD( "sfz18", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5) ) ROM_LOAD( "sfz19", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD( "sfz63b.1a", 0x0000, 0x0104, CRC(f5a351da) SHA1(a867947d784167b5284efb76a8634ca5713dafdb) ) ROM_END /* FIXME B-Board uncertain but should be 91634B from the program ROM names */ @@ -14032,6 +14035,12 @@ ROM_START( sfzch ) ROM_REGION( 0x40000, "oki",0 ) /* Samples */ ROM_LOAD( "sfz_18.11c", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5) ) ROM_LOAD( "sfz_19.12c", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58) ) + + // SFZ63B was found on mpumpkin, assumed to be from SFZ + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD( "sfz63b.1a", 0x0000, 0x0104, CRC(f5a351da) SHA1(a867947d784167b5284efb76a8634ca5713dafdb) ) // PAL16L8 + + // TODO... confirm other pals (could be unique as this is the "cps changer" home console) ROM_END /* FIXME B-Board uncertain but should be 91634B from the program ROM names */ @@ -14070,6 +14079,9 @@ ROM_START( sfzbch ) ROM_REGION( 0x40000, "oki",0 ) /* Samples */ ROM_LOAD( "sfz_18.11c", 0x00000, 0x20000, CRC(61022b2d) SHA1(6369d0c1d08a30ee19b94e52ab1463a7784b9de5) ) ROM_LOAD( "sfz_19.12c", 0x20000, 0x20000, CRC(3b5886d5) SHA1(7e1b7d40ef77b5df628dd663d45a9a13c742cf58) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD( "sfz63b.1a", 0x0000, 0x0104, CRC(f5a351da) SHA1(a867947d784167b5284efb76a8634ca5713dafdb) ) ROM_END diff --git a/src/mame/capcom/cps1_v.cpp b/src/mame/capcom/cps1_v.cpp index 207e71a4e80..e4166edc9b0 100644 --- a/src/mame/capcom/cps1_v.cpp +++ b/src/mame/capcom/cps1_v.cpp @@ -1452,14 +1452,34 @@ static const struct gfx_range mapper_TN2292_table[] = }; +// RCM63B, SFZ63B (megaman, sfzch) are equivalent, should be interchangeable on real PCBs without issue + #define mapper_RCM63B { 0x8000, 0x8000, 0x8000, 0x8000 }, mapper_RCM63B_table static const struct gfx_range mapper_RCM63B_table[] = { // verified from PAL dump: // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4) // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8) - // bank0 = pin 15 (ROMs 10,12) & pin 14 (ROMs 11,13) - // bank1 = pin 13 (ROMs 14,16) & pin 12 (ROMs 15,17) + // bank2 = pin 15 (ROMs 10,12) & pin 14 (ROMs 11,13) + // bank3 = pin 13 (ROMs 14,16) & pin 12 (ROMs 15,17) + + /* type start end bank */ + { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 0 }, + { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x08000, 0x0ffff, 1 }, + { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x10000, 0x17fff, 2 }, + { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x18000, 0x1ffff, 3 }, + { 0 } +}; + + +#define mapper_SFZ63B { 0x8000, 0x8000, 0x8000, 0x8000 }, mapper_SFZ63B_table +static const struct gfx_range mapper_SFZ63B_table[] = +{ + // verified from PAL dump: + // bank0 = pin 19 (ROMs 1,3) & pin 18 (ROMs 2,4) + // bank1 = pin 17 (ROMs 5,7) & pin 16 (ROMs 6,8) + // bank2 = pin 15 (ROMs 10,12) & pin 14 (ROMs 11,13) + // bank3 = pin 13 (ROMs 14,16) & pin 12 (ROMs 15,17) /* type start end bank */ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 0 }, @@ -1551,9 +1571,9 @@ static const struct gfx_range mapper_CP1B1F_boot_table[] = }; -/* unverified, no dump */ -#define mapper_sfzch { 0x20000, 0, 0, 0 }, mapper_sfzch_table -static const struct gfx_range mapper_sfzch_table[] = +// varthb2, slampic2 bootlegs +#define mapper_varthb2 { 0x20000, 0, 0, 0 }, mapper_varthb2_table +static const struct gfx_range mapper_varthb2_table[] = { /* type start end bank */ { GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 0 }, @@ -1821,7 +1841,7 @@ static const struct CPS1config cps1_config_table[]= {"sf2qp2", CPS_B_14, mapper_STF29, 0x36 }, {"sf2thndr", CPS_B_17, mapper_STF29, 0x36 }, {"sf2thndr2", CPS_B_17, mapper_STF29, 0x36 }, - {"mpumpkin", CPS_B_21_DEF, mapper_sfzch }, // PAL is dumped but not analyzed yet, same as SFZCH + {"mpumpkin", CPS_B_21_DEF, mapper_SFZ63B }, /* from here onwards the CPS-B board has suicide battery and multiply protection */ @@ -1913,7 +1933,7 @@ static const struct CPS1config cps1_config_table[]= {"sf2mkot", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, {"varth", CPS_B_04, mapper_VA24B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, - {"varthb2", HACK_B_3, mapper_sfzch, 0, 0, 0, 0xc1 }, // unknown gal, other varth mappers don't work (game looks for sprites in >0x8000 unmapped region) + {"varthb2", HACK_B_3, mapper_varthb2, 0, 0, 0, 0xc1 }, // unknown gal, other varth mappers don't work (game looks for sprites in >0x8000 unmapped region) {"varthb3", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, // TODO: wrong {"varthr1", CPS_B_04, mapper_VA24B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ {"varthu", CPS_B_04, mapper_VA63B }, /* CPSB test has been patched out (60=0008) register is also written to, possibly leftover from development */ @@ -1948,7 +1968,7 @@ static const struct CPS1config cps1_config_table[]= {"slammast", CPS_B_21_QS4, mapper_MB63B }, {"slammastu", CPS_B_21_QS4, mapper_MB63B }, {"slampic", CPS_B_21_QS4, mapper_MB63B }, - {"slampic2", CPS_B_21_QS4, mapper_sfzch }, // default cps2 mapper breaks scroll layers + {"slampic2", CPS_B_21_QS4, mapper_varthb2 }, // default cps2 mapper breaks scroll layers {"mbomberj", CPS_B_21_QS4, mapper_MB63B }, {"mbombrd", CPS_B_21_QS5, mapper_MB63B }, {"mbombrdj", CPS_B_21_QS5, mapper_MB63B }, @@ -1975,9 +1995,9 @@ static const struct CPS1config cps1_config_table[]= /* CPS Changer */ - {"sfach", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped - {"sfzbch", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped - {"sfzch", CPS_B_21_DEF, mapper_sfzch }, // wrong, this set uses an unknown PAL, still not dumped + {"sfach", CPS_B_21_DEF, mapper_SFZ63B }, // SFZ63B found on mpumpkin, assumed to be from SFZ + {"sfzbch", CPS_B_21_DEF, mapper_SFZ63B }, + {"sfzch", CPS_B_21_DEF, mapper_SFZ63B }, {"wofch", CPS_B_21_DEF, mapper_TK263B }, /* CPS2 games */ -- cgit v1.2.3