verified Ghouls gfxrom mapping against PAL

This commit is contained in:
Nicola Salmoria 2008-04-13 11:37:56 +00:00
parent b7712be3fe
commit c14f62ea10
2 changed files with 294 additions and 234 deletions

View File

@ -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) )

View File

@ -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;
}
}