From c14f62ea108178dc355b1816c33a684a637e29cd Mon Sep 17 00:00:00 2001 From: Nicola Salmoria Date: Sun, 13 Apr 2008 11:37:56 +0000 Subject: [PATCH] verified Ghouls gfxrom mapping against PAL --- src/mame/drivers/cps1.c | 36 +-- src/mame/video/cps1.c | 492 ++++++++++++++++++++++------------------ 2 files changed, 294 insertions(+), 234 deletions(-) diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 5c510f802d5..676c9bc2213 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -3551,17 +3551,17 @@ ROM_START( forgottn ) ROM_LOAD16_WORD_SWAP( "lw-07", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) ) ROM_REGION( 0x400000, REGION_GFX1, 0 ) - ROMX_LOAD( "lw-02", 0x000000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-09", 0x000002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-06", 0x000004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-13", 0x000006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-01", 0x200000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-08", 0x200002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-05", 0x200004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-12", 0x200006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-01", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-08", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-05", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-12", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-02", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-09", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-06", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-13", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x8000, REGION_GFX2, 0 ) - ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x8000 ) /* stars */ + ROM_COPY( REGION_GFX1, 0x200000, 0x000000, 0x8000 ) /* stars */ ROM_REGION( 0x18000, REGION_CPU2, 0 ) ROM_LOAD( "lwu00", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) @@ -3590,17 +3590,17 @@ ROM_START( lostwrld ) ROM_LOAD16_WORD_SWAP( "lw-07", 0x80000, 0x80000, CRC(fd252a26) SHA1(5cfb097984912a5167a8c7ec4c2e119b642f9970) ) ROM_REGION( 0x400000, REGION_GFX1, 0 ) - ROMX_LOAD( "lw-02", 0x000000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-09", 0x000002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-06", 0x000004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-13", 0x000006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-01", 0x200000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-08", 0x200002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-05", 0x200004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "lw-12", 0x200006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-01", 0x000000, 0x80000, CRC(0318f298) SHA1(178ffd6da7bf845e30abf1bfc38a469cd319a73f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-08", 0x000002, 0x80000, CRC(25a8e43c) SHA1(d57cee1fc508db2677e84882fb814e4d9ad20543) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-05", 0x000004, 0x80000, CRC(e4552fd7) SHA1(11147afc475904848458425661473586dd6f60cc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-12", 0x000006, 0x80000, CRC(8e6a832b) SHA1(d63a1331fda2365f090fa31950098f321a720ea8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-02", 0x200000, 0x80000, CRC(43e6c5c8) SHA1(d3e6c971de0477ec4e178adc82508208dd8b397f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-09", 0x200002, 0x80000, CRC(899cb4ad) SHA1(95e61af338945e690f2a82746feba3871ea224eb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-06", 0x200004, 0x80000, CRC(5b9edffc) SHA1(6fd8f4a3ab070733b52365ab1945bf86acb2bf62) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "lw-13", 0x200006, 0x80000, CRC(8e058ef5) SHA1(00f2c0050fd106276ea5398511c5861ebfbc0d10) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x8000, REGION_GFX2, 0 ) - ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x8000 ) /* stars */ + ROM_COPY( REGION_GFX1, 0x200000, 0x000000, 0x8000 ) /* stars */ ROM_REGION( 0x18000, REGION_CPU2, 0 ) ROM_LOAD( "lwu00", 0x00000, 0x08000, CRC(59df2a63) SHA1(dfe1fffc7a17179a80a2ae623e93b30a7d6df20d) ) diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c index 4f2d84832c9..9729757fc6f 100644 --- a/src/mame/video/cps1.c +++ b/src/mame/video/cps1.c @@ -25,23 +25,23 @@ Forgotten Worlds / Lost Worlds 1988 88618B-2 LWCHR LWI Ghouls 'n Ghosts (World / US) 1988 88620B-2 DM620 LWIO None CPS-B-01 DL-0411-10001 None (alt B-board revision - Japan) 88622B-2 DM22A LWIO 88622-C-1 CPS-B-01 DL-0411-10001 None Strider 1989 89624B-2 ST24M1 LWIO 88622-C-1 CPS-B-01 DL-0411-10001 None - (alt B-board version) 89624B-3 ST24B2 LWIO + (alt B-board revision) 89624B-3 ST24B2 LWIO (alt B-board revision) ? ST22B ? Dynasty Wars 1989 ? ? ? CPS-B-02 DL-0411-10002 Willow 1989 89624B-3 WL24B LWIO 88622-C-4 CPS-B-03 DL-0411-10003 None UN Squadron / Area 88 1989 89624B-3 AR24B LWIO 88622-C-4 CPS-B-11 DL-0411-10004 None - (alt B-board revision) 1989 88622B-2 AR22B LWIO + (alt B-board revision - Japan) 88622B-2 AR22B LWIO Final Fight (first rev) 1989 89624B-3 S224B IOB1 88622-C-5 CPS-B-04 DL-0411-10005 None Final Fight (US 900112) ? CPS-B-04@ DL-0411-10001 None Final Fight (US 900613) ? CPS-B-05 DL-0411-10006 -Final Fight (Japan 900305) ? CPS-B-02 DL-0411-10002 +Final Fight (Japan 900305) (alt B-board revision) ? ? ? CPS-B-02 DL-0411-10002 1941 1990 ? YI24B ? 88622-C-5 CPS-B-05 DL-0411-10006 ? -Mercs (US) 1990 89624B-3 0224B IOB1 90628-C-1 CPS-B-12 DL-0411-10007 C628 -Magic Sword (US) 1990 89624B-3 MS24B IOB1 88622-C-5 CPS-B-13 DL-0411-10008 None +Mercs 1990 89624B-3 0224B IOB1 90628-C-1 CPS-B-12 DL-0411-10007 C628 +Magic Sword 1990 89624B-3 MS24B IOB1 88622-C-5 CPS-B-13 DL-0411-10008 None Chiki Chiki Boys / Mega Twins 1990 89624B-3 CK24B IOB1 88622-C-5 CPS-B-14 DL-0411-10009 None Nemo 1990 89624B-3 NM24B IOB1 88622-C-5 CPS-B-15 DL-0411-10010 None Carrier Air Wing / U.S. Navy 1990 89624B-3 CA24B IOB1 88622-C-5 CPS-B-16 DL-0411-10011 None - (alt B-board revision) 89625B-1 CA22B + (alt B-board revision - Japan) 89625B-1 CA22B Street Fighter II (910214) 1991 ? STF29 IOB1 90632C-1 CPS-B-17 DL-0411-10012 C632 Street Fighter II (US 910206) CPS-B-17 DL-0411-10012 Street Fighter II (US 910228) CPS-B-18 ? @@ -53,7 +53,7 @@ Street Fighter II (US 910522) Street Fighter II (US 911101) CPS-B-17 DL-0411-10012 Street Fighter II (Japan 911210) CPS-B-13 DL-0411-10008 Three Wonders* 1991 89624B-3 RT24B IOB1 90630C-4 CPS-B-21 DL-0921-10014 IOC1 - (alt B-board revision) 89625B-1 RT22B IOB1 + (alt B-board revision - Japan) 89625B-1 RT22B IOB1 King of Dragons* 1991 90629B-3 KD29B IOB1 90631C-5 CPS-B-21 DL-0921-10014 C632 IOC1 Captain Commando* 1991 91635B-2 CC63B CCPRG IOB1 90631C-5 CPS-B-21 DL-0921-10014 C632 IOC1 Knights of the Round* 1991 91635B-2 KR63B BPRG1 IOB1 90631C-5 CPS-B-21 DL-0921-10014 C632 IOC1 @@ -367,7 +367,7 @@ struct CPS1config /* but in many cases it is unknown which bit is which. */ int layer_enable_mask[5]; - int bank_size; + int bank_sizes[4]; const struct gfx_range *bank_mapper; int bank_scroll1; @@ -416,41 +416,53 @@ static const struct CPS1config *cps1_game_config; #define HACK_B_1 0x00,0x0000, 0x00,0x00,0x00,0x00, 0x54,{0x52,0x50,0x4e,0x4c},0x5c, {0xff,0xff,0xff,0x00,0x00} -static const struct gfx_range mapper_LWCHR[] = + +#define mapper_LWCHR { 0x8000, 0x8000, 0, 0 }, mapper_LWCHR_table +static const struct gfx_range mapper_LWCHR_table[] = { // verified from PAL dump (PAL16P8B @ 3A): - // bank size = 8000 - // bank 0 = pin 16 - // bank 1 = pin 19 + // bank 0 = pin 19 (ROMs 1,5,8,12) + // bank 1 = pin 16 (ROMs 2,6,9,13) // pin 12 and pin 14 are always enabled (except for stars) // note that allowed codes go up to 0x1ffff but physical ROM is half that size /* type start end bank */ - { GFXTYPE_STARS, 0x00000, 0x1ffff, 0 }, - { GFXTYPE_SCROLL2, 0x00000, 0x1ffff, 0 }, - { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 0 }, + { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 }, + { GFXTYPE_SCROLL1, 0x00000, 0x1ffff, 0 }, - { GFXTYPE_SPRITES, 0x00000, 0x07fff, 1 }, - { GFXTYPE_SCROLL1, 0x00000, 0x1ffff, 1 }, + { GFXTYPE_STARS, 0x00000, 0x1ffff, 1 }, + { GFXTYPE_SCROLL2, 0x00000, 0x1ffff, 1 }, + { GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 }, { 0 } }; -static const struct gfx_range mapper_DM620[] = + +#define mapper_DM620 { 0x8000, 0x2000, 0x2000, 0 }, mapper_DM620_table +static const struct gfx_range mapper_DM620_table[] = { + // verified from PAL dump (PAL16P8B @ 2A): + // bank 0 = pin 19 (ROMs 5,6,7,8) + // bank 1 = pin 16 (ROMs 9,11,13,15,18,20,22,24) + // bank 2 = pin 14 (ROMs 10,12,14,16,19,21,23,25) + // pin 12 is never enabled + // note that bank 0 is enabled whenever banks 1 or 2 are not enabled, + // which would make it highly redundant, so I'm relying on the table + // to be scanned top to bottom and using a catch-all clause at the end. + /* type start end bank */ - { GFXTYPE_SPRITES, 0x0000, 0x1fff, 0 }, - { GFXTYPE_SCROLL1, 0x2000, 0x3fff, 0 }, - { GFXTYPE_SCROLL2, 0x4000, 0x7fff, 0 }, + { GFXTYPE_SCROLL3, 0x8000, 0xbfff, 1 }, - { GFXTYPE_SCROLL3, 0x8000, 0x9fff, 1 }, - { GFXTYPE_SPRITES, 0x2000, 0x7fff, 1 }, // a000-ffff physical + { GFXTYPE_SPRITES, 0x2000, 0x3fff, 2 }, + + { GFXTYPE_STARS | GFXTYPE_SPRITES | GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 0 }, { 0 } }; -static const struct gfx_range mapper_ST24M1[] = + +#define mapper_ST22B { 0x4000, 0x4000, 0x4000, 0x4000 }, mapper_ST22B_table +static const struct gfx_range mapper_ST22B_table[] = { - // verified from PAL dump: - // bank size = 4000 + // verified from PAL dump (PAL # is not certain): // bank 0 = pin 19 // bank 1 = pin 16 // bank 2 = pin 14 @@ -470,7 +482,9 @@ static const struct gfx_range mapper_ST24M1[] = { 0 } }; -static const struct gfx_range mapper_dynwar[] = // unknown PAL + +#define mapper_dynwar { 0x8000, 0x8000, 0, 0 }, mapper_dynwar_table +static const struct gfx_range mapper_dynwar_table[] = // unknown PAL { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x5fff, 0 }, @@ -481,12 +495,13 @@ static const struct gfx_range mapper_dynwar[] = // unknown PAL { 0 } }; -static const struct gfx_range mapper_WL24B[] = + +#define mapper_WL24B { 0x8000, 0x8000, 0, 0 }, mapper_WL24B_table +static const struct gfx_range mapper_WL24B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 16 - // bank 1 = pin 12 + // bank 0 = pin 16 (ROMs 1,3,5,7) + // bank 1 = pin 12 (ROMs 10,12,14,16,20,22,24,26) // pin 14 and pin 19 are never enabled /* type start end bank */ @@ -498,11 +513,12 @@ static const struct gfx_range mapper_WL24B[] = { 0 } }; -static const struct gfx_range mapper_S224B[] = + +#define mapper_S224B { 0x8000, 0, 0, 0 }, mapper_S224B_table +static const struct gfx_range mapper_S224B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 16 + // bank 0 = pin 16 (ROMs 1,3,5,7) // pin 12 & pin 14 give an alternate half-size mapping which would allow to // populate the 8-bit ROM sockets instead of the 16-bit ones: // pin 12 @@ -522,11 +538,12 @@ static const struct gfx_range mapper_S224B[] = { 0 } }; -static const struct gfx_range mapper_YI24B[] = + +#define mapper_YI24B { 0x8000, 0, 0, 0 }, mapper_YI24B_table +static const struct gfx_range mapper_YI24B_table[] = { // verified from JED: - // bank size = 8000 - // bank 0 = pin 16 + // bank 0 = pin 16 (ROMs 1,3,5,7) // pin 12 & pin 14 give an alternate half-size mapping which would allow to // populate the 8-bit ROM sockets instead of the 16-bit ones: // pin 12 @@ -545,11 +562,12 @@ static const struct gfx_range mapper_YI24B[] = { 0 } }; -static const struct gfx_range mapper_AR24B[] = + +#define mapper_AR24B { 0x8000, 0, 0, 0 }, mapper_AR24B_table +static const struct gfx_range mapper_AR24B_table[] = { // verified from JED: - // bank size = 8000 - // bank 0 = pin 16 + // bank 0 = pin 16 (ROMs 1,3,5,7) // pin 12 & pin 14 give an alternate half-size mapping which would allow to // populate the 8-bit ROM sockets instead of the 16-bit ones: // pin 12 @@ -568,12 +586,13 @@ static const struct gfx_range mapper_AR24B[] = { 0 } }; -static const struct gfx_range mapper_0224B[] = + +#define mapper_0224B { 0x8000, 0x8000, 0, 0 }, mapper_0224B_table +static const struct gfx_range mapper_0224B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 19 - // bank 1 = pin 12 + // bank 0 = pin 19 (ROMs 2,4,6,8) + // bank 1 = pin 12 (ROMs 10,12,14,16,20,22,24,26) // pin 16 & pin 14 appear to be an alternate half-size mapping for bank 0 // but scroll1 is missing: // pin 16 @@ -595,12 +614,15 @@ static const struct gfx_range mapper_0224B[] = { 0 } }; -static const struct gfx_range mapper_MS24B[] = + +#define mapper_MS24B { 0x8000, 0, 0, 0 }, mapper_MS24B_table +static const struct gfx_range mapper_MS24B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 16 or pin 14 (for 16-bit or 8-bit ROMs) - // pin 12 is enabled only for sprites, purpose unknown + // bank 0 = pin 16 (ROMs 1,3,5,7) + // pin 14 duplicates pin 16 allowing to populate the 8-bit ROM sockets + // instead of the 16-bit ones. + // pin 12 is enabled only for sprites: // 0 0000-3fff // pin 19 is never enabled @@ -612,7 +634,9 @@ static const struct gfx_range mapper_MS24B[] = { 0 } }; -static const struct gfx_range mapper_CK24B[] = + +#define mapper_CK24B { 0x8000, 0, 0, 0 }, mapper_CK24B_table +static const struct gfx_range mapper_CK24B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x2fff, 0 }, @@ -622,11 +646,12 @@ static const struct gfx_range mapper_CK24B[] = { 0 } }; -static const struct gfx_range mapper_NM24B[] = + +#define mapper_NM24B { 0x8000, 0, 0, 0 }, mapper_NM24B_table +static const struct gfx_range mapper_NM24B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 16 + // bank 0 = pin 16 (ROMs 1,3,5,7) // pin 12 & pin 14 give an alternate half-size mapping which would allow to // populate the 8-bit ROM sockets instead of the 16-bit ones: // pin 12 @@ -649,11 +674,12 @@ static const struct gfx_range mapper_NM24B[] = { 0 } }; -static const struct gfx_range mapper_CA24B[] = + +#define mapper_CA24B { 0x8000, 0, 0, 0 }, mapper_CA24B_table +static const struct gfx_range mapper_CA24B_table[] = { // verified from PAL dump: - // bank size = 8000 - // bank 0 = pin 16 + // bank 0 = pin 16 (ROMs 1,3,5,7) // pin 12 & pin 14 give an alternate half-size mapping which would allow to // populate the 8-bit ROM sockets instead of the 16-bit ones: // pin 12 @@ -677,21 +703,23 @@ static const struct gfx_range mapper_CA24B[] = { 0 } }; -static const struct gfx_range mapper_STF29[] = + +#define mapper_STF29 { 0x10000, 0x8000, 0, 0 }, mapper_STF29_table +static const struct gfx_range mapper_STF29_table[] = { /* type start end bank */ - { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 }, + { GFXTYPE_SPRITES, 0x00000, 0x0ffff, 0 }, - { GFXTYPE_SPRITES, 0x08000, 0x0ffff, 1 }, - - { GFXTYPE_SPRITES, 0x10000, 0x11fff, 2 }, - { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 2 }, // 12000-13fff physical - { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 2 }, // 14000-14fff physical - { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 2 }, // 15000-17fff physical + { GFXTYPE_SPRITES, 0x10000, 0x11fff, 1 }, + { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 1 }, // 12000-13fff physical + { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 1 }, // 14000-14fff physical + { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 1 }, // 15000-17fff physical { 0 } }; -static const struct gfx_range mapper_RT24B[] = + +#define mapper_RT24B { 0x8000, 0x8000, 0, 0 }, mapper_RT24B_table +static const struct gfx_range mapper_RT24B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x53ff, 0 }, @@ -704,7 +732,9 @@ static const struct gfx_range mapper_RT24B[] = { 0 } }; -static const struct gfx_range mapper_KD29B[] = + +#define mapper_KD29B { 0x8000, 0x8000, 0, 0 }, mapper_KD29B_table +static const struct gfx_range mapper_KD29B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 }, @@ -716,7 +746,9 @@ static const struct gfx_range mapper_KD29B[] = { 0 } }; -static const struct gfx_range mapper_CC63B[] = + +#define mapper_CC63B { 0x8000, 0x8000, 0, 0 }, mapper_CC63B_table +static const struct gfx_range mapper_CC63B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 }, @@ -728,7 +760,9 @@ static const struct gfx_range mapper_CC63B[] = { 0 } }; -static const struct gfx_range mapper_KR63B[] = + +#define mapper_KR63B { 0x8000, 0x8000, 0, 0 }, mapper_KR63B_table +static const struct gfx_range mapper_KR63B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 }, @@ -740,21 +774,23 @@ static const struct gfx_range mapper_KR63B[] = { 0 } }; -static const struct gfx_range mapper_S9263B[] = + +#define mapper_S9263B { 0x10000, 0x8000, 0, 0 }, mapper_S9263B_table +static const struct gfx_range mapper_S9263B_table[] = { /* type start end bank */ - { GFXTYPE_SPRITES, 0x00000, 0x07fff, 0 }, + { GFXTYPE_SPRITES, 0x00000, 0x0ffff, 0 }, - { GFXTYPE_SPRITES, 0x08000, 0x0ffff, 1 }, - - { GFXTYPE_SPRITES, 0x10000, 0x11fff, 2 }, - { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 2 }, // 12000-13fff physical - { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 2 }, // 14000-14fff physical - { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 2 }, // 15000-17fff physical + { GFXTYPE_SPRITES, 0x10000, 0x11fff, 1 }, + { GFXTYPE_SCROLL3, 0x02000, 0x03fff, 1 }, // 12000-13fff physical + { GFXTYPE_SCROLL1, 0x04000, 0x04fff, 1 }, // 14000-14fff physical + { GFXTYPE_SCROLL2, 0x05000, 0x07fff, 1 }, // 15000-17fff physical { 0 } }; -static const struct gfx_range mapper_VA24B[] = + +#define mapper_VA24B { 0x8000, 0, 0, 0 }, mapper_VA24B_table +static const struct gfx_range mapper_VA24B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x0000, 0x57ff, 0 }, @@ -763,7 +799,9 @@ static const struct gfx_range mapper_VA24B[] = { 0 } }; -static const struct gfx_range mapper_Q522B[] = + +#define mapper_Q522B { 0x8000, 0, 0, 0 }, mapper_Q522B_table +static const struct gfx_range mapper_Q522B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x0000, 0x6fff, 0 }, @@ -772,7 +810,9 @@ static const struct gfx_range mapper_Q522B[] = { 0 } }; -static const struct gfx_range mapper_TK263B[] = + +#define mapper_TK263B { 0x8000, 0x8000, 0, 0 }, mapper_TK263B_table +static const struct gfx_range mapper_TK263B_table[] = { /* type start end bank */ { GFXTYPE_SPRITES, 0x0000, 0x7fff, 0 }, @@ -783,7 +823,9 @@ static const struct gfx_range mapper_TK263B[] = { 0 } }; -static const struct gfx_range mapper_CD63B[] = + +#define mapper_CD63B { 0x8000, 0x8000, 0, 0 }, mapper_CD63B_table +static const struct gfx_range mapper_CD63B_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 }, @@ -794,7 +836,9 @@ static const struct gfx_range mapper_CD63B[] = { 0 } }; -static const struct gfx_range mapper_PS63B[] = + +#define mapper_PS63B { 0x8000, 0x8000, 0, 0 }, mapper_PS63B_table +static const struct gfx_range mapper_PS63B_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 }, @@ -806,20 +850,22 @@ static const struct gfx_range mapper_PS63B[] = { 0 } }; -static const struct gfx_range mapper_MB63B[] = + +#define mapper_MB63B { 0x10000, 0x8000, 0, 0 }, mapper_MB63B_table +static const struct gfx_range mapper_MB63B_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x00000, 0x00fff, 0 }, - { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x01000, 0x07fff, 0 }, + { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x01000, 0x0ffff, 0 }, - { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x08000, 0x0ffff, 1 }, - - { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x10000, 0x167ff, 2 }, - { GFXTYPE_SCROLL3, 0x16800, 0x17fff, 2 }, + { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x10000, 0x167ff, 1 }, + { GFXTYPE_SCROLL3, 0x16800, 0x17fff, 1 }, { 0 } }; -static const struct gfx_range mapper_QD22B[] = + +#define mapper_QD22B { 0x8000, 0, 0, 0 }, mapper_QD22B_table +static const struct gfx_range mapper_QD22B_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x07ff, 0 }, @@ -828,7 +874,9 @@ static const struct gfx_range mapper_QD22B[] = { 0 } }; -static const struct gfx_range mapper_qadj[] = + +#define mapper_qadj { 0x8000, 0, 0, 0 }, mapper_qadj_table +static const struct gfx_range mapper_qadj_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x07ff, 0 }, @@ -837,7 +885,9 @@ static const struct gfx_range mapper_qadj[] = { 0 } }; -static const struct gfx_range mapper_qtono2[] = + +#define mapper_qtono2 { 0x8000, 0x8000, 0, 0 }, mapper_qtono2_table +static const struct gfx_range mapper_qtono2_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 }, @@ -848,7 +898,9 @@ static const struct gfx_range mapper_qtono2[] = { 0 } }; -static const struct gfx_range mapper_RCM63B[] = + +#define mapper_RCM63B { 0x8000, 0x8000, 0x8000, 0x8000 }, mapper_RCM63B_table +static const struct gfx_range mapper_RCM63B_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x00000, 0x017ff, 0 }, @@ -863,7 +915,9 @@ static const struct gfx_range mapper_RCM63B[] = { 0 } }; -static const struct gfx_range mapper_pnickj[] = + +#define mapper_pnickj { 0x8000, 0, 0, 0 }, mapper_pnickj_table +static const struct gfx_range mapper_pnickj_table[] = { /* type start end bank */ { GFXTYPE_SCROLL1, 0x0000, 0x0fff, 0 }, @@ -872,7 +926,9 @@ static const struct gfx_range mapper_pnickj[] = { 0 } }; -static const struct gfx_range mapper_pang3[] = + +#define mapper_pang3 { 0x8000, 0x8000, 0, 0 }, mapper_pang3_table +static const struct gfx_range mapper_pang3_table[] = { /* type start end bank */ { GFXTYPE_SPRITES | GFXTYPE_SCROLL2, 0x0000, 0x7fff, 0 }, @@ -891,13 +947,11 @@ static const struct gfx_range mapper_pang3[] = (sprites are not listed here because they are addressed linearly by the CPS2 sprite code) */ -static const struct gfx_range mapper_cps2[] = +#define mapper_cps2 { 0x20000, 0x20000, 0, 0 }, mapper_cps2_table +static const struct gfx_range mapper_cps2_table[] = { /* type start end bank */ - { GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x07fff, 4 }, // 20000-27fff physical - { GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x08000, 0x0ffff, 5 }, // 28000-2ffff physical - { GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x10000, 0x17fff, 6 }, // 30000-37fff physical - { GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x18000, 0x1ffff, 7 }, // 38000-3ffff physical + { GFXTYPE_SCROLL1 | GFXTYPE_SCROLL2 | GFXTYPE_SCROLL3, 0x00000, 0x1ffff, 1 }, // 20000-3ffff physical { 0 } }; @@ -905,129 +959,129 @@ static const struct gfx_range mapper_cps2[] = static const struct CPS1config cps1_config_table[]= { - /* name CPSB bank size gfx mapper kludge */ - {"forgottn", CPS_B_01, 0x8000, mapper_LWCHR }, - {"lostwrld", CPS_B_01, 0x8000, mapper_LWCHR }, - {"ghouls", CPS_B_01, 0x8000, mapper_DM620 }, - {"ghoulsu", CPS_B_01, 0x8000, mapper_DM620 }, - {"daimakai", CPS_B_01, 0x8000, mapper_DM620 }, - {"strider", CPS_B_01, 0x4000, mapper_ST24M1 }, - {"stridrua", CPS_B_01, 0x4000, mapper_ST24M1 }, - {"striderj", CPS_B_01, 0x4000, mapper_ST24M1 }, - {"stridrja", CPS_B_01, 0x4000, mapper_ST24M1 }, - {"dynwar", CPS_B_02, 0x8000, mapper_dynwar }, - {"dynwarj", CPS_B_02, 0x8000, mapper_dynwar }, - {"willow", CPS_B_03, 0x8000, mapper_WL24B }, - {"willowj", CPS_B_03, 0x8000, mapper_WL24B }, - {"willowje", CPS_B_03, 0x8000, mapper_WL24B }, - {"ffight", CPS_B_04, 0x8000, mapper_S224B }, - {"ffightu", CPS_B_04, 0x8000, mapper_S224B }, - {"ffightua", CPS_B_01, 0x8000, mapper_S224B }, - {"ffightub", CPS_B_05, 0x8000, mapper_S224B }, - {"ffightj", CPS_B_04, 0x8000, mapper_S224B }, - {"ffightj1", CPS_B_02, 0x8000, mapper_S224B }, - {"1941", CPS_B_05, 0x8000, mapper_YI24B }, - {"1941j", CPS_B_05, 0x8000, mapper_YI24B }, - {"unsquad", CPS_B_11, 0x8000, mapper_AR24B }, /* CPSB ID not checked, but it's the same as sf2eg */ - {"area88", CPS_B_11, 0x8000, mapper_AR24B }, /* CPSB ID not checked, but it's the same as sf2eg */ - {"mercs", CPS_B_12, 0x8000, mapper_0224B }, /* (uses port 74) */ - {"mercsu", CPS_B_12, 0x8000, mapper_0224B }, /* (uses port 74) */ - {"mercsua", CPS_B_12, 0x8000, mapper_0224B }, /* (uses port 74) */ - {"mercsj", CPS_B_12, 0x8000, mapper_0224B }, /* (uses port 74) */ - {"msword", CPS_B_13, 0x8000, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ - {"mswordr1", CPS_B_13, 0x8000, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ - {"mswordu", CPS_B_13, 0x8000, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ - {"mswordj", CPS_B_13, 0x8000, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ - {"mtwins", CPS_B_14, 0x8000, mapper_CK24B }, - {"chikij", CPS_B_14, 0x8000, mapper_CK24B }, - {"nemo", CPS_B_15, 0x8000, mapper_NM24B }, - {"nemoj", CPS_B_15, 0x8000, mapper_NM24B }, - {"cawing", CPS_B_16, 0x8000, mapper_CA24B }, - {"cawingr1", CPS_B_16, 0x8000, mapper_CA24B }, - {"cawingu", CPS_B_16, 0x8000, mapper_CA24B }, - {"cawingj", CPS_B_16, 0x8000, mapper_CA24B }, - {"sf2", CPS_B_11, 0x8000, mapper_STF29 }, - {"sf2eb", CPS_B_17, 0x8000, mapper_STF29 }, - {"sf2ua", CPS_B_17, 0x8000, mapper_STF29 }, - {"sf2ub", CPS_B_17, 0x8000, mapper_STF29 }, - {"sf2ud", CPS_B_05, 0x8000, mapper_STF29 }, - {"sf2ue", CPS_B_18, 0x8000, mapper_STF29 }, - {"sf2uf", CPS_B_15, 0x8000, mapper_STF29 }, - {"sf2ui", CPS_B_14, 0x8000, mapper_STF29 }, - {"sf2uk", CPS_B_17, 0x8000, mapper_STF29 }, // check CPS_B - {"sf2j", CPS_B_13, 0x8000, mapper_STF29 }, - {"sf2ja", CPS_B_17, 0x8000, mapper_STF29 }, - {"sf2jc", CPS_B_12, 0x8000, mapper_STF29 }, + /* name CPSB gfx mapper kludge */ + {"forgottn", CPS_B_01, mapper_LWCHR }, + {"lostwrld", CPS_B_01, mapper_LWCHR }, + {"ghouls", CPS_B_01, mapper_DM620 }, + {"ghoulsu", CPS_B_01, mapper_DM620 }, + {"daimakai", CPS_B_01, mapper_DM620 }, + {"strider", CPS_B_01, mapper_ST22B }, + {"stridrua", CPS_B_01, mapper_ST22B }, + {"striderj", CPS_B_01, mapper_ST22B }, + {"stridrja", CPS_B_01, mapper_ST22B }, + {"dynwar", CPS_B_02, mapper_dynwar }, + {"dynwarj", CPS_B_02, mapper_dynwar }, + {"willow", CPS_B_03, mapper_WL24B }, + {"willowj", CPS_B_03, mapper_WL24B }, + {"willowje", CPS_B_03, mapper_WL24B }, + {"ffight", CPS_B_04, mapper_S224B }, + {"ffightu", CPS_B_04, mapper_S224B }, + {"ffightua", CPS_B_01, mapper_S224B }, + {"ffightub", CPS_B_05, mapper_S224B }, + {"ffightj", CPS_B_04, mapper_S224B }, + {"ffightj1", CPS_B_02, mapper_S224B }, + {"1941", CPS_B_05, mapper_YI24B }, + {"1941j", CPS_B_05, mapper_YI24B }, + {"unsquad", CPS_B_11, mapper_AR24B }, /* CPSB ID not checked, but it's the same as sf2eg */ + {"area88", CPS_B_11, mapper_AR24B }, /* CPSB ID not checked, but it's the same as sf2eg */ + {"mercs", CPS_B_12, mapper_0224B }, /* (uses port 74) */ + {"mercsu", CPS_B_12, mapper_0224B }, /* (uses port 74) */ + {"mercsua", CPS_B_12, mapper_0224B }, /* (uses port 74) */ + {"mercsj", CPS_B_12, mapper_0224B }, /* (uses port 74) */ + {"msword", CPS_B_13, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ + {"mswordr1", CPS_B_13, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ + {"mswordu", CPS_B_13, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ + {"mswordj", CPS_B_13, mapper_MS24B }, /* CPSB ID not checked, but it's the same as sf2j */ + {"mtwins", CPS_B_14, mapper_CK24B }, + {"chikij", CPS_B_14, mapper_CK24B }, + {"nemo", CPS_B_15, mapper_NM24B }, + {"nemoj", CPS_B_15, mapper_NM24B }, + {"cawing", CPS_B_16, mapper_CA24B }, + {"cawingr1", CPS_B_16, mapper_CA24B }, + {"cawingu", CPS_B_16, mapper_CA24B }, + {"cawingj", CPS_B_16, mapper_CA24B }, + {"sf2", CPS_B_11, mapper_STF29 }, + {"sf2eb", CPS_B_17, mapper_STF29 }, + {"sf2ua", CPS_B_17, mapper_STF29 }, + {"sf2ub", CPS_B_17, mapper_STF29 }, + {"sf2ud", CPS_B_05, mapper_STF29 }, + {"sf2ue", CPS_B_18, mapper_STF29 }, + {"sf2uf", CPS_B_15, mapper_STF29 }, + {"sf2ui", CPS_B_14, mapper_STF29 }, + {"sf2uk", CPS_B_17, mapper_STF29 }, // check CPS_B + {"sf2j", CPS_B_13, mapper_STF29 }, + {"sf2ja", CPS_B_17, mapper_STF29 }, + {"sf2jc", CPS_B_12, mapper_STF29 }, /* from here onwards the CPS-B board has suicide battery and multiply protection */ - {"3wonders", BATTRY_1, 0x8000, mapper_RT24B }, - {"3wonderu", BATTRY_1, 0x8000, mapper_RT24B }, - {"wonder3", BATTRY_1, 0x8000, mapper_RT24B }, - {"kod", BATTRY_2, 0x8000, mapper_KD29B }, - {"kodu", BATTRY_2, 0x8000, mapper_KD29B }, - {"kodj", BATTRY_2, 0x8000, mapper_KD29B }, - {"kodb", BATTRY_2, 0x8000, mapper_KD29B }, /* bootleg, doesn't use multiply protection */ - {"captcomm", BATTRY_3, 0x8000, mapper_CC63B }, - {"captcomu", BATTRY_3, 0x8000, mapper_CC63B }, - {"captcomj", BATTRY_3, 0x8000, mapper_CC63B }, - {"knights", BATTRY_4, 0x8000, mapper_KR63B }, - {"knightsu", BATTRY_4, 0x8000, mapper_KR63B }, - {"knightsj", BATTRY_4, 0x8000, mapper_KR63B }, - {"sf2ce", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2ceua", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2ceub", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2ceuc", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2cej", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2rb", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2rb2", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2red", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2v004", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2accp2", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2m1", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2m2", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2m3", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2m4", HACK_B_1, 0x8000, mapper_S9263B, 1 }, - {"sf2m5", NOBATTRY, 0x8000, mapper_S9263B, 1 }, - {"sf2m6", NOBATTRY, 0x8000, mapper_S9263B, 1 }, - {"sf2m7", NOBATTRY, 0x8000, mapper_S9263B, 1 }, - {"sf2yyc", NOBATTRY, 0x8000, mapper_S9263B, 1 }, - {"sf2koryu", NOBATTRY, 0x8000, mapper_S9263B, 1 }, - {"varth", CPS_B_04, 0x8000, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ - {"varthr1", CPS_B_04, 0x8000, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ - {"varthu", CPS_B_04, 0x8000, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ - {"varthj", BATTRY_5, 0x8000, mapper_VA24B }, /* CPSB test has been patched out (72=0001) */ - {"cworld2j", BATTRY_6, 0x8000, mapper_Q522B }, /* The 0x76 priority values are incorrect values */ - {"wof", NOBATTRY, 0x8000, mapper_TK263B }, /* bootleg? */ - {"wofa", NOBATTRY, 0x8000, mapper_TK263B }, /* bootleg? */ - {"wofu", QSOUND_1, 0x8000, mapper_TK263B }, - {"wofj", QSOUND_1, 0x8000, mapper_TK263B }, - {"dino", QSOUND_2, 0x8000, mapper_CD63B }, /* layer enable never used */ - {"dinou", QSOUND_2, 0x8000, mapper_CD63B }, /* layer enable never used */ - {"dinoj", QSOUND_2, 0x8000, mapper_CD63B }, /* layer enable never used */ - {"punisher", QSOUND_3, 0x8000, mapper_PS63B }, - {"punishru", QSOUND_3, 0x8000, mapper_PS63B }, - {"punishrj", QSOUND_3, 0x8000, mapper_PS63B }, - {"slammast", QSOUND_4, 0x8000, mapper_MB63B }, - {"slammasu", QSOUND_4, 0x8000, mapper_MB63B }, - {"mbomberj", QSOUND_4, 0x8000, mapper_MB63B }, - {"mbombrd", QSOUND_5, 0x8000, mapper_MB63B }, - {"mbombrdj", QSOUND_5, 0x8000, mapper_MB63B }, - {"sf2hf", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2t", NOBATTRY, 0x8000, mapper_S9263B }, - {"sf2tj", NOBATTRY, 0x8000, mapper_S9263B }, - {"qad", BATTRY_7, 0x8000, mapper_QD22B }, /* TODO: layer enable */ - {"qadj", NOBATTRY, 0x8000, mapper_qadj }, - {"qtono2", NOBATTRY, 0x8000, mapper_qtono2 }, - {"megaman", NOBATTRY, 0x8000, mapper_RCM63B }, - {"rockmanj", NOBATTRY, 0x8000, mapper_RCM63B }, - {"pnickj", NOBATTRY, 0x8000, mapper_pnickj }, - {"pang3", NOBATTRY, 0x8000, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ - {"pang3j", NOBATTRY, 0x8000, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ + {"3wonders", BATTRY_1, mapper_RT24B }, + {"3wonderu", BATTRY_1, mapper_RT24B }, + {"wonder3", BATTRY_1, mapper_RT24B }, + {"kod", BATTRY_2, mapper_KD29B }, + {"kodu", BATTRY_2, mapper_KD29B }, + {"kodj", BATTRY_2, mapper_KD29B }, + {"kodb", BATTRY_2, mapper_KD29B }, /* bootleg, doesn't use multiply protection */ + {"captcomm", BATTRY_3, mapper_CC63B }, + {"captcomu", BATTRY_3, mapper_CC63B }, + {"captcomj", BATTRY_3, mapper_CC63B }, + {"knights", BATTRY_4, mapper_KR63B }, + {"knightsu", BATTRY_4, mapper_KR63B }, + {"knightsj", BATTRY_4, mapper_KR63B }, + {"sf2ce", NOBATTRY, mapper_S9263B }, + {"sf2ceua", NOBATTRY, mapper_S9263B }, + {"sf2ceub", NOBATTRY, mapper_S9263B }, + {"sf2ceuc", NOBATTRY, mapper_S9263B }, + {"sf2cej", NOBATTRY, mapper_S9263B }, + {"sf2rb", NOBATTRY, mapper_S9263B }, + {"sf2rb2", NOBATTRY, mapper_S9263B }, + {"sf2red", NOBATTRY, mapper_S9263B }, + {"sf2v004", NOBATTRY, mapper_S9263B }, + {"sf2accp2", NOBATTRY, mapper_S9263B }, + {"sf2m1", NOBATTRY, mapper_S9263B }, + {"sf2m2", NOBATTRY, mapper_S9263B }, + {"sf2m3", NOBATTRY, mapper_S9263B }, + {"sf2m4", HACK_B_1, mapper_S9263B, 1 }, + {"sf2m5", NOBATTRY, mapper_S9263B, 1 }, + {"sf2m6", NOBATTRY, mapper_S9263B, 1 }, + {"sf2m7", NOBATTRY, mapper_S9263B, 1 }, + {"sf2yyc", NOBATTRY, mapper_S9263B, 1 }, + {"sf2koryu", NOBATTRY, mapper_S9263B, 1 }, + {"varth", CPS_B_04, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ + {"varthr1", CPS_B_04, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ + {"varthu", CPS_B_04, mapper_VA24B }, /* CPSB test has been patched out (60=0008) */ + {"varthj", BATTRY_5, mapper_VA24B }, /* CPSB test has been patched out (72=0001) */ + {"cworld2j", BATTRY_6, mapper_Q522B }, /* The 0x76 priority values are incorrect values */ + {"wof", NOBATTRY, mapper_TK263B }, /* bootleg? */ + {"wofa", NOBATTRY, mapper_TK263B }, /* bootleg? */ + {"wofu", QSOUND_1, mapper_TK263B }, + {"wofj", QSOUND_1, mapper_TK263B }, + {"dino", QSOUND_2, mapper_CD63B }, /* layer enable never used */ + {"dinou", QSOUND_2, mapper_CD63B }, /* layer enable never used */ + {"dinoj", QSOUND_2, mapper_CD63B }, /* layer enable never used */ + {"punisher", QSOUND_3, mapper_PS63B }, + {"punishru", QSOUND_3, mapper_PS63B }, + {"punishrj", QSOUND_3, mapper_PS63B }, + {"slammast", QSOUND_4, mapper_MB63B }, + {"slammasu", QSOUND_4, mapper_MB63B }, + {"mbomberj", QSOUND_4, mapper_MB63B }, + {"mbombrd", QSOUND_5, mapper_MB63B }, + {"mbombrdj", QSOUND_5, mapper_MB63B }, + {"sf2hf", NOBATTRY, mapper_S9263B }, + {"sf2t", NOBATTRY, mapper_S9263B }, + {"sf2tj", NOBATTRY, mapper_S9263B }, + {"qad", BATTRY_7, mapper_QD22B }, /* TODO: layer enable */ + {"qadj", NOBATTRY, mapper_qadj }, + {"qtono2", NOBATTRY, mapper_qtono2 }, + {"megaman", NOBATTRY, mapper_RCM63B }, + {"rockmanj", NOBATTRY, mapper_RCM63B }, + {"pnickj", NOBATTRY, mapper_pnickj }, + {"pang3", NOBATTRY, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ + {"pang3j", NOBATTRY, mapper_pang3 }, /* EEPROM port is among the CPS registers (handled by DRIVER_INIT) */ #ifdef MESS - {"sfzch", NOBATTRY, 0x8000, mapper_cps2 }, + {"sfzch", NOBATTRY, mapper_cps2 }, #endif /* CPS2 games */ - {"cps2", NOBATTRY, 0x8000, mapper_cps2 }, + {"cps2", NOBATTRY, mapper_cps2 }, {0} /* End of table */ }; @@ -1534,7 +1588,13 @@ static int gfxrom_bank_mapper(running_machine *machine, int type, int code) { if (range->type & type) { - return ((code & (cps1_game_config->bank_size - 1)) + (range->bank * cps1_game_config->bank_size)) >> shift; + int base = 0; + int i; + + for (i = 0; i < range->bank; ++i) + base += cps1_game_config->bank_sizes[i]; + + return (base + (code & (cps1_game_config->bank_sizes[range->bank] - 1))) >> shift; } }