fixed the remaining CPS3 sets that were left broken from the previous half-done set renames.

also reworked the code a bit to make it harder for somebody to break it in future.  (removed the config table & moved keys to driver inits, define region sizes, allocate memory in init for CD based games.)

should be no functional changes, although it might be a fraction of a % faster due to there being less region lookups.
This commit is contained in:
davidhay 2009-01-25 12:40:53 +00:00
parent f306b35504
commit 2fd6773b19
2 changed files with 81 additions and 152 deletions

View File

@ -10,6 +10,7 @@
#define CPS3_VOICES 16
static sound_stream *cps3_stream;
extern UINT8* cps3_user5region;
typedef struct _cps3_voice_
{
@ -22,12 +23,12 @@ static struct
{
cps3_voice voice[CPS3_VOICES];
UINT16 key;
INT8* base;
} chip;
static STREAM_UPDATE( cps3_stream_update )
{
int i;
INT8 *base = (INT8*)memory_region(device->machine, "user5");
/* Clear the buffers */
memset(outputs[0], 0, samples*sizeof(*outputs[0]));
@ -82,7 +83,7 @@ static STREAM_UPDATE( cps3_stream_update )
}
}
sample = base[BYTE4_XOR_LE(start + pos)];
sample = chip.base[BYTE4_XOR_LE(start + pos)];
frac += step;
outputs[0][j] += (sample * (vol_l >> 8));
@ -103,6 +104,8 @@ CUSTOM_START( cps3_sh_start )
memset(&chip, 0, sizeof(chip));
chip.base = (INT8*)cps3_user5region;
return auto_malloc(1);
}

View File

@ -326,10 +326,14 @@ Notes:
#include "includes/cps3.h"
#include "machine/wd33c93.h"
#define MASTER_CLOCK 42954500
/* load extracted cd content? */
#define LOAD_CD_CONTENT 1
#define DEBUG_PRINTF 0
#define DMA_XOR(a) ((a) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,2))
@ -366,6 +370,10 @@ static UINT32* cps3_mame_colours;//[0x20000]; // actual values to write to 32-bi
static bitmap_t *renderbuffer_bitmap;
static rectangle renderbuffer_clip;
static UINT8* cps3_user4region;
UINT8* cps3_user5region;
#define USER4REGION_LENGTH 0x800000*2
#define USER5REGION_LENGTH 0x800000*10
#define CPS3_TRANSPARENCY_NONE 0
#define CPS3_TRANSPARENCY_PEN 1
@ -642,40 +650,6 @@ static UINT32 cps3_mask(UINT32 address, UINT32 key1, UINT32 key2)
return val | (val << 16);
}
struct game_keys2
{
const char *name; /* game driver name */
const UINT32 keys[2];
int isSpecial;
};
static const struct game_keys2 keys_table2[] =
{
// name key1 key2
{ "jojo", { 0x02203ee3, 0x01301972 },0 },
{ "jojon", { 0x02203ee3, 0x01301972 },0 },
{ "jojoalt", { 0x02203ee3, 0x01301972 },0 },
{ "jojoaltn", { 0x02203ee3, 0x01301972 },0 },
{ "jojoba", { 0x23323ee3, 0x03021972 },0 },
{ "jojoban", { 0x23323ee3, 0x03021972 },0 },
{ "jojobane", { 0x23323ee3, 0x03021972 },0 },
{ "sfiii", { 0xb5fe053e, 0xfc03925a },0 },
{ "sfiiiu", { 0xb5fe053e, 0xfc03925a },0 },
{ "sfiiij", { 0xb5fe053e, 0xfc03925a },0 },
{ "sfiiin", { 0xb5fe053e, 0xfc03925a },0 },
{ "sfiii2", { 0x00000000, 0x00000000 },1 },
{ "sfiii2u", { 0x00000000, 0x00000000 },1 },
{ "sfiii2j", { 0x00000000, 0x00000000 },1 },
{ "sfiii2n", { 0x00000000, 0x00000000 },1 },
{ "sfiii3", { 0xa55432b4, 0x0c129981 },0 },
{ "sfiii3n", { 0xa55432b4, 0x0c129981 },0 },
{ "sfiii3a", { 0xa55432b4, 0x0c129981 },0 },
{ "sfiii3an", { 0xa55432b4, 0x0c129981 },0 },
{ "warzard", { 0x9e300ab1, 0xa175b82c },0 },
{ "redearth", { 0x9e300ab1, 0xa175b82c },0 },
{ 0 } // end of table
};
static void cps3_decrypt_bios(running_machine *machine)
{
int i;
@ -687,16 +661,7 @@ static void cps3_decrypt_bios(running_machine *machine)
{
UINT32 dword = coderegion[i/4];
UINT32 xormask = cps3_mask(i, cps3_key1, cps3_key2);
/* a bit of a hack, don't decrypt the FLASH commands which are transfered by SH2 DMA */
// if (((i<0x1ff00) || (i>0x1ff6b)) && (i<0x20000) )
// {
decrypted_bios[i/4] = dword ^ xormask;
// }
// else
// {
// decrypted_bios[i/4] = dword;
// }
}
#if 0
/* Dump to file */
@ -716,32 +681,21 @@ static void cps3_decrypt_bios(running_machine *machine)
#endif
}
static DRIVER_INIT( cps3 )
{
const char *gamename = machine->gamedrv->name;
const struct game_keys2 *k = &keys_table2[0];
int i;
// cache pointers to regions
cps3_user4region = memory_region(machine,"user4");
cps3_user5region = memory_region(machine,"user5");
if (!cps3_user4region) cps3_user4region = auto_malloc(USER4REGION_LENGTH);
if (!cps3_user5region) cps3_user5region = auto_malloc(USER5REGION_LENGTH);
// set strict verify
device_set_info_int(machine->cpu[0], CPUINFO_INT_SH2_DRC_OPTIONS, SH2DRC_STRICT_VERIFY);
cps3_key1 = -1;
cps3_key2 = -1;
cps3_altEncryption = -1;
while (k->name)
{
if (strcmp(k->name, gamename) == 0)
{
// we have a proper key set the global variables to it (so that we can decrypt code in ram etc.)
cps3_key1 = k->keys[0];
cps3_key2 = k->keys[1];
cps3_altEncryption = k->isSpecial;
break;
}
++k;
}
cps3_decrypt_bios(machine);
decrypted_gamerom = auto_malloc(0x1000000);
@ -760,11 +714,16 @@ static DRIVER_INIT( cps3 )
intelflash_init( machine, i, FLASH_FUJITSU_29F016A, NULL );
cps3_eeprom = auto_malloc(0x400);
}
static DRIVER_INIT( jojo ) { cps3_key1 = 0x02203ee3; cps3_key2 = 0x01301972; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
static DRIVER_INIT( jojoba ) { cps3_key1 = 0x23323ee3; cps3_key2 = 0x03021972; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
static DRIVER_INIT( sfiii ) { cps3_key1 = 0xb5fe053e; cps3_key2 = 0xfc03925a; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
static DRIVER_INIT( sfiii2 ) { cps3_key1 = 0x00000000; cps3_key2 = 0x00000000; cps3_altEncryption = 1; DRIVER_INIT_CALL(cps3); }
static DRIVER_INIT( sfiii3 ) { cps3_key1 = 0xa55432b4; cps3_key2 = 0x0c129981; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
static DRIVER_INIT( redearth ){ cps3_key1 = 0x9e300ab1; cps3_key2 = 0xa175b82c; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
/* GFX decodes */
@ -1320,7 +1279,7 @@ static DIRECT_UPDATE_HANDLER( cps3_direct_handler )
direct->decrypted = (UINT8*)decrypted_gamerom-0x06000000;
direct->raw = (UINT8*)decrypted_gamerom-0x06000000;
if (cps3_altEncryption) direct->raw = (UINT8*) memory_region(space->machine, "user4")-0x06000000;
if (cps3_altEncryption) direct->raw = (UINT8*) cps3_user4region-0x06000000;
return ~0;
@ -1467,7 +1426,7 @@ static WRITE32_HANDLER( cps3_gfxflash_w )
/* make a copy in the linear memory region we actually use for drawing etc. having it stored in interleaved flash roms isnt' very useful */
{
UINT32* romdata = (UINT32*)memory_region(space->machine, "user5");
UINT32* romdata = (UINT32*)cps3_user5region;
int real_offset = 0;
UINT32 newdata;
UINT8* ptr1 = intelflash_getmemptr(flash1);
@ -1569,7 +1528,7 @@ static void cps3_flashmain_w(running_machine *machine, int base, UINT32 offset,
/* copy data into regions to execute from */
{
UINT32* romdata = (UINT32*)memory_region(machine, "user4");
UINT32* romdata = (UINT32*)cps3_user4region;
UINT32* romdata2 = (UINT32*)decrypted_gamerom;
int real_offset = 0;
UINT32 newdata;
@ -1834,7 +1793,7 @@ static WRITE32_HANDLER( cps3_palettedma_w )
if (data & 0x0002)
{
int i;
UINT16* src = (UINT16*)memory_region(space->machine, "user5");
UINT16* src = (UINT16*)cps3_user5region;
// if(DEBUG_PRINTF) printf("CPS3 pal dma start %08x (real: %08x) dest %08x fade %08x other2 %08x (length %04x)\n", paldma_source, paldma_realsource, paldma_dest, paldma_fade, paldma_other2, paldma_length);
for (i=0;i<paldma_length;i++)
@ -1913,7 +1872,7 @@ static UINT32 process_byte( running_machine *machine, UINT8 real_byte, UINT32 de
static void cps3_do_char_dma( running_machine *machine, UINT32 real_source, UINT32 real_destination, UINT32 real_length )
{
UINT8* sourcedata = (UINT8*)memory_region(machine, "user5");
UINT8* sourcedata = (UINT8*)cps3_user5region;
int length_remaining;
last_normal_byte = 0;
@ -1998,7 +1957,7 @@ static UINT32 ProcessByte8(running_machine *machine,UINT8 b,UINT32 dst_offset)
static void cps3_do_alt_char_dma( running_machine *machine, UINT32 src, UINT32 real_dest, UINT32 real_length )
{
UINT8* px = (UINT8*)memory_region(machine, "user5");
UINT8* px = (UINT8*)cps3_user5region;
UINT32 start = real_dest;
UINT32 ds = real_dest;
@ -2334,13 +2293,13 @@ static MACHINE_RESET( cps3 )
current_table_address = -1;
}
#define MASTER_CLOCK 42954500
static void precopy_to_flash(running_machine *machine)
{
UINT32* romdata = (UINT32*)memory_region(machine, "user4");
UINT32* romdata = (UINT32*)cps3_user4region;
int i;
/* precopy program roms, ok, sfiii2 tests pass, others fail because of how the decryption affects testing */
for (i=0;i<0x800000;i+=4)
@ -2377,10 +2336,10 @@ static void precopy_to_flash(running_machine *machine)
/* precopy gfx roms, good, tests pass */
{
UINT32 thebase, len = memory_region_length(machine, "user5");
UINT32 thebase, len = USER5REGION_LENGTH;
int flashnum = 8;
romdata = (UINT32*)memory_region(machine, "user5");
romdata = (UINT32*)cps3_user5region;
for (thebase = 0;thebase < len/2; thebase+=0x200000)
{
// printf("flashnums %d. %d\n",flashnum, flashnum+1);
@ -2406,7 +2365,7 @@ static void precopy_to_flash(running_machine *machine)
// make a copy in the regions we execute code / draw gfx from
static void copy_from_nvram(running_machine *machine)
{
UINT32* romdata = (UINT32*)memory_region(machine, "user4");
UINT32* romdata = (UINT32*)cps3_user4region;
UINT32* romdata2 = (UINT32*)decrypted_gamerom;
int i;
/* copy + decrypt program roms which have been loaded from flashroms/nvram */
@ -2446,11 +2405,11 @@ static void copy_from_nvram(running_machine *machine)
/* copy gfx from loaded flashroms to user reigon 5, where it's used */
{
UINT32 thebase, len = memory_region_length(machine, "user5");
UINT32 thebase, len = USER5REGION_LENGTH;
int flashnum = 8;
int countoffset = 0;
romdata = (UINT32*)memory_region(machine, "user5");
romdata = (UINT32*)cps3_user5region;
for (thebase = 0;thebase < len/2; thebase+=0x200000)
{
// printf("flashnums %d. %d\n",flashnum, flashnum+1);
@ -2632,9 +2591,6 @@ ROM_START( sfiii )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii_usa.29f400.u2", 0x000000, 0x080000, CRC(fb172a8e) SHA1(48ebf59910f246835f7dc0c588da30f7a908072f) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "sf3000", 0, MD5(cdc5c5423bd8c053de7cdd927dc60da7) SHA1(cc72c9eb2096f4d51f2cf6df18f29fd79d05067c) )
ROM_END
@ -2643,9 +2599,6 @@ ROM_START( sfiiij )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii_japan.29f400.u2", 0x000000, 0x080000, CRC(74205250) SHA1(c3e83ace7121d32da729162662ec6b5285a31211) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "sf3000", 0, MD5(cdc5c5423bd8c053de7cdd927dc60da7) SHA1(cc72c9eb2096f4d51f2cf6df18f29fd79d05067c) )
ROM_END
@ -2654,9 +2607,6 @@ ROM_START( sfiii2 )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii2_usa.29f400.u2", 0x000000, 0x080000, CRC(75dd72e0) SHA1(5a12d6ea6734df5de00ecee6f9ef470749d2f242) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "3ga000", 0, MD5(941c7e8d0838db9880ea7bf169ad310d) SHA1(76e9fdef020c4b85a10aa8828a63e67c7dca22bd) )
ROM_END
@ -2665,9 +2615,6 @@ ROM_START( sfiii2j )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii2_japan.29f400.u2", 0x000000, 0x080000, CRC(faea0a3e) SHA1(a03cd63bcf52e4d57f7a598c8bc8e243694624ec) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "3ga000", 0, MD5(941c7e8d0838db9880ea7bf169ad310d) SHA1(76e9fdef020c4b85a10aa8828a63e67c7dca22bd) )
ROM_END
@ -2676,9 +2623,6 @@ ROM_START( sfiii3 )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "cap-33s-2", 0, SHA1(24e78b8c66fb1573ffd642ee51607f3b53ed40b7) MD5(cf63f3dbcc2653b95709133fe79c7225) )
ROM_END
@ -2687,9 +2631,6 @@ ROM_START( sfiii3a )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_usa.29f400.u2", 0x000000, 0x080000, CRC(ecc545c1) SHA1(e39083820aae914fd8b80c9765129bedb745ceba) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "33s000", 0, MD5(f159ad85cc94ced3ddb9ef5e92173a9f) SHA1(47c7ae0f2dc47c7d28bdf66d378a3aaba4c99c75) )
ROM_END
@ -2698,9 +2639,6 @@ ROM_START( redearth )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "warzard_euro.29f400.u2", 0x000000, 0x080000, CRC(02e0f336) SHA1(acc37e830dfeb9674f5a0fb24f4cc23217ae4ff5) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "wzd000", 0, MD5(028ff12a4ce34118dd0091e87c8cdd08) SHA1(6d4e6b7fff4ff3f04e349479fa5a1cbe63e673b8) )
ROM_END
@ -2709,9 +2647,6 @@ ROM_START( warzard )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "warzard_japan.29f400.u2", 0x000000, 0x080000, CRC(f8e2f0c6) SHA1(93d6a986f44c211fff014e55681eca4d2a2774d6) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "wzd000", 0, MD5(028ff12a4ce34118dd0091e87c8cdd08) SHA1(6d4e6b7fff4ff3f04e349479fa5a1cbe63e673b8) )
ROM_END
@ -2720,9 +2655,6 @@ ROM_START( jojo )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "cap-jjk-160", 0, SHA1(74fb14d838d98c3e10baa08e6f7b2464d840dcf0) MD5(93cc16f11a88c8f5268cb96baebc0a13) )
ROM_END
@ -2731,9 +2663,6 @@ ROM_START( jojoa )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_japan.29f400.u2", 0x000000, 0x080000, CRC(02778f60) SHA1(a167f9ebe030592a0cdb0c6a3c75835c6a43be4c) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "jjk000", 0, MD5(05440ecf90e836207a27a99c817a3328) SHA1(d5a11315ac21e573ffe78e63602ec2cb420f361f) )
ROM_END
@ -2742,9 +2671,6 @@ ROM_START( jojoba )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* Program Code Region */
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* GFX Region */
DISK_REGION( "cdrom" )
DISK_IMAGE_READONLY( "jjm000", 0, MD5(bf6b90334bf1f6bd8dbfed737face2d6) SHA1(688520bb83ccbf4b31c3bfe26bd0cc8292a8c558) )
ROM_END
@ -2756,9 +2682,9 @@ ROM_START( sfiiin )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(73e32463) SHA1(45d144e533e4b20cc5a744ca4f618e288430c601) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(e896dc27) SHA1(47623820c64b72e69417afcafaacdd2c318cde1c) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(98c2d07c) SHA1(604ce4a16170847c10bc233a47a47a119ce170f7) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7115a396) SHA1(b60a74259e3c223138e66e68a3f6457694a0c639) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(839f0972) SHA1(844e43fcc157b7c774044408bfe918c49e174cdb) )
@ -2770,10 +2696,10 @@ ROM_START( sfiii2n )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii2_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(fd297c0d) SHA1(4323deda2789f104b53f32a663196ec16de73215) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(682b014a) SHA1(abd5785f4b7c89584d6d1cf6fb61a77d7224f81f) )
ROM_LOAD( "20", 0x0800000, 0x800000, CRC(38090460) SHA1(aaade89b8ccdc9154f97442ca35703ec538fe8be) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(77c197c0) SHA1(944381161462e65de7ae63a656658f3fbe44727a) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(7470a6f2) SHA1(850b2e20afe8a5a1f0d212d9abe002cb5cf14d22) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(01a85ced) SHA1(802df3274d5f767636b2785606e0558f6d3b9f13) )
@ -2786,10 +2712,10 @@ ROM_START( sfiii3n )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(ba7f76b2) SHA1(6b396596dea009b34af17484919ae37eda53ec65) )
ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
@ -2804,10 +2730,10 @@ ROM_START( sfiii3an )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "sfiii3_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(1edc6366) SHA1(60b4b9adeb030a33059d74fdf03873029e465b52) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(77233d39) SHA1(59c3f890fdc33a7d8dc91e5f9c4e7b7019acfb00) )
ROM_LOAD( "20", 0x0800000, 0x800000, CRC(5ca8faba) SHA1(71c12638ae7fa38b362d68c3ccb4bb3ccd67f0e9) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(b37cf960) SHA1(60310f95e4ecedee85846c08ccba71e286cda73b) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(450ec982) SHA1(1cb3626b8479997c4f1b29c41c81cac038fac31b) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(632c965f) SHA1(9a46b759f5dee35411fd6446c2457c084a6dfcd8) )
@ -2822,10 +2748,10 @@ ROM_START( jojon )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(bc612872) SHA1(18930f2906176b54a9b8bec56f06dda3362eb418) )
ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0e1daddf) SHA1(34bb4e0fb86258095a7b20f60174453195f3735a) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
@ -2837,10 +2763,10 @@ ROM_START( jojoan )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojo_asia_nocd.29f400.u2", 0x000000, 0x080000, CRC(05b4f953) SHA1(c746c7bb5359acc9adced817cb4870b1912eaefd) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x0000000, 0x800000, CRC(e40dc123) SHA1(517e7006349b5a8fd6c30910362583f48d009355) )
ROM_LOAD( "20", 0x0800000, 0x800000, CRC(0571e37c) SHA1(1aa28ef6ea1b606a55d0766480b3ee156f0bca5a) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(1d99181b) SHA1(25c216de16cefac2d5892039ad23d07848a457e6) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(6889fbda) SHA1(53a51b993d319d81a604cdf70b224955eacb617e) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(8069f9de) SHA1(7862ee104a2e9034910dd592687b40ebe75fa9ce) )
@ -2852,10 +2778,10 @@ ROM_START( jojoban )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan_nocd.29f400.u2", 0x000000, 0x080000, CRC(4dab19f5) SHA1(ba07190e7662937fc267f07285c51e99a45c061e) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x000000, 0x800000, CRC(6e2490f6) SHA1(75cbf1e39ad6362a21c937c827e492d927b7cf39) )
ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
@ -2868,10 +2794,10 @@ ROM_START( jojobane )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "jojoba_euro_nocd.29f400.u2", 0x000000, 0x080000, CRC(1ee2d679) SHA1(9e129b454a376606b3f7e8aec64de425cf9c635c) )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x000000, 0x800000, CRC(6e2490f6) SHA1(75cbf1e39ad6362a21c937c827e492d927b7cf39) )
ROM_LOAD( "20", 0x800000, 0x800000, CRC(1293892b) SHA1(b1beafac1a9c4b6d0640658af8a3eb359e76eb25) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(d25c5005) SHA1(93a19a14783d604bb42feffbe23eb370d11281e8) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(51bb3dba) SHA1(39e95a05882909820b3efa6a3b457b8574012638) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(94dc26d4) SHA1(5ae2815142972f322886eea4885baf2b82563ab1) )
@ -2885,9 +2811,9 @@ ROM_START( redeartn )
ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
ROM_LOAD( "redearth_nocd.bios", 0x000000, 0x080000, NO_DUMP )
ROM_REGION32_BE( 0x800000*2, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION32_BE( USER4REGION_LENGTH, "user4", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "10", 0x000000, 0x800000, CRC(68188016) SHA1(93aaac08cb5566c33aabc16457085b0a36048019) )
ROM_REGION16_BE( 0x800000*10, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_REGION16_BE( USER5REGION_LENGTH, "user5", ROMREGION_ERASEFF ) /* cd content region */
ROM_LOAD( "30", 0x0000000, 0x800000, CRC(074cab4d) SHA1(4cb6cc9cce3b1a932b07058a5d723b3effa23fcf) )
ROM_LOAD( "31", 0x0800000, 0x800000, CRC(14e2cad4) SHA1(9958a4e315e4476e4791a6219b93495413c7b751) )
ROM_LOAD( "40", 0x1000000, 0x800000, CRC(72d98890) SHA1(f40926c52cb7a71b0ef0027a0ea38bbc7e8b31b0) )
@ -3041,37 +2967,37 @@ ROM_END
/* todo: use BIOS for the bios roms, having clones only for CD / No CD */
GAME( 1997, sfiii, 0, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III: New Generation (USA, 970204)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiiij, sfiii, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III: New Generation (Japan, 970204)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii, 0, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA, 970204)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiiij, sfiii, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan, 970204)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2, 0, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA, 970930)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2j, sfiii2, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan, 970930)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2, 0, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA, 970930)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2j, sfiii2, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan, 970930)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3, 0, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990608)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3a, sfiii3, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990512)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3, 0, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990608)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3a, sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA, 990512)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojo, 0, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 990108)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojoa, jojo, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 981202)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojo, 0, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 990108)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojoa, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 981202)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojoba, 0, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojoba, 0, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913)", GAME_IMPERFECT_GRAPHICS )
GAME( 1996, redearth,0, cps3, cps3, cps3, ROT0, "Capcom", "Red Earth (Euro, 961121)", GAME_IMPERFECT_GRAPHICS )
GAME( 1996, warzard, redearth, cps3, cps3, cps3, ROT0, "Capcom", "Warzard (Japan, 961121)", GAME_IMPERFECT_GRAPHICS )
GAME( 1996, redearth,0, cps3, cps3, redearth, ROT0, "Capcom", "Red Earth (Euro, 961121)", GAME_IMPERFECT_GRAPHICS )
GAME( 1996, warzard, redearth, cps3, cps3, redearth, ROT0, "Capcom", "Warzard (Japan, 961121)", GAME_IMPERFECT_GRAPHICS )
/* NO-CD sets */
GAME( 1997, sfiiin, sfiii, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III: New Generation (Asia, 970204, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiiin, sfiii, cps3, cps3, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia, 970204, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2n, sfiii2, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia, 970930, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1997, sfiii2n, sfiii2, cps3, cps3, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia, 970930, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3n, sfiii3, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990608, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3an,sfiii3, cps3, cps3, cps3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990512, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3n, sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990608, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, sfiii3an,sfiii3, cps3, cps3, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan, 990512, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojon, jojo, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 990108, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojoan, jojo, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 981202, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojon, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 990108, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, jojoan, jojo, cps3, cps3, jojo, ROT0, "Capcom", "JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 981202, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojoban, jojoba, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojobane,jojoba, cps3, cps3, cps3, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Euro, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojoban, jojoba, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, jojobane,jojoba, cps3, cps3, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Euro, 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
// We don't have any actual warzard / red earth no cd bios sets, but keep this here anyway
GAME( 1996, redeartn,redearth, cps3, cps3, cps3, ROT0, "Capcom", "Red Earth (961121, NO CD)", GAME_NOT_WORKING )
GAME( 1996, redeartn,redearth, cps3, cps3, redearth, ROT0, "Capcom", "Red Earth (961121, NO CD)", GAME_NOT_WORKING )