Author Topic: CPS-III driver preview  (Read 112224 times)

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #30 on: December 29, 2007, 05:02:59 PM »
Fantastic the work done in so few time...Thanks  :biggrin:

PS : The sound not yet emulated...Any progress in this way?

I don't know how to add sound right now, but I hope that OopsWare can add sound in his CPS3 WIP  :smilie:

SeeYaa!
 :biggrin:

Offline JacKc

  • FBNeo Dev
  • ******
  • Posts: 1677
  • Karma: +56/-0
  • Hasta la vista, Baby !
Re: CPS-III driver preview
« Reply #31 on: December 29, 2007, 05:41:58 PM »
Sure you can count on OopsWare to solve this problem :biggrin:

The most important is that NOW all the set CPS3 is now fully playable on FBA :wink:


Offline KOF2112

  • Expert
  • *****
  • Posts: 187
  • Karma: +14/-4
Re: CPS-III driver preview
« Reply #32 on: December 30, 2007, 03:19:02 PM »
MAME cheat.dat In Found the SFIII3 region

Quote
:sfiii3:A0010000:0001FECB:00000001:FFFFFFFF:Japan
:sfiii3:A0010000:0001FECB:00000002:FFFFFFFF:Asia
:sfiii3:A0010000:0001FECB:00000003:FFFFFFFF:Euro
:sfiii3:A0010000:0001FECB:00000004:FFFFFFFF:Usa
:sfiii3:A0010000:0001FECB:00000005:FFFFFFFF:Hispanic
:sfiii3:A0010000:0001FECB:00000006:FFFFFFFF:Brazil
:sfiii3:A0010000:0001FECB:00000007:FFFFFFFF:Oceania
:sfiii3:A0010000:0001FECB:00000008:FFFFFFFF:Korea

Quote
      !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3aan") ||  // Asia
      !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3en") ||  // Euro
      !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3hn") ||  // Hispanic
      !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3bn") ||  // Brazil
      !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3on") ||  // Oceania


Quote
   if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3aan")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000003; }
   if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3en")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000002; }
   if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3hn")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000004; }
   if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3bn")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000007; }
   if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3on")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000006; }

« Last Edit: December 30, 2007, 03:27:28 PM by KOF2112 »

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #33 on: December 30, 2007, 04:37:11 PM »
MAME cheat.dat In Found the SFIII3 region



Yeah I already done the region clones for all CPS3 games, but ThanX anyway  :smilie:

SeeYaa!
 :biggrin:

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #34 on: December 30, 2007, 06:35:01 PM »
Here is my actual code ...

Code: [Select]

[size=10pt]// ------------------------------------------------------------------------------------------------
// Module modified originally for use in FB Alpha Enhanced / Extras
// [ CaptainCPS-X ]
//
// I have to give ThanX to IQ_132 & OopsWare for their assistance.
//
// http://neosource.1emu.net/
// ------------------------------------------------------------------------------------------------
static int Cps3Reset()
{
// re-map cram_bank
cram_bank = 0;
Sh2MapMemory((unsigned char *)RamCRam, 0x04100000, 0x041fffff, SM_RAM);

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redeartn") || // Asia
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearen") || // Euro
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearun") || // USA
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearhn") || // Hispanic
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearbn") || // Brazil
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearon") || // Oceania
!strcmp(BurnDrvGetTextA(DRV_NAME), "redearjn") || // Japan (War-Zard)
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiiin")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3en")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3xn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3jn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3bn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3on")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3un")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3hn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3e2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3x2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3j2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3b2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3o2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3u2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3h2n"))
)
{
// fast boot
if (
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiiin")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3en")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3xn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3jn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3bn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3on")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3un")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3hn")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3e2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3x2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3j2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3b2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3o2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3u2n")) ||
(cps3_isSpecial && !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3h2n"))
)
{
// sfiiin & sfiii2n only
Sh2Reset( *(unsigned int *)(RomGame + 0), *(unsigned int *)(RomGame + 4));
Sh2SetVBR(0x06000000);
} else {
// redeartn and fake clones only
Sh2Reset( *(unsigned int *)(RomGame_D + 0), *(unsigned int *)(RomGame_D + 4));
Sh2SetVBR(0x06000000);
}
} else {
Sh2Reset( *(unsigned int *)(RomGame_D + 0), *(unsigned int *)(RomGame_D + 4));
Sh2SetVBR(0x06000000);
}

cps3_flash_init( &main_flash );
cps3_current_eeprom_read = 0;
cps3SndReset();
cps3_reset = 0;

return 0;
}[/size]


Code: [Select]

[size=10pt] // --------------------------------------------------------------------------------------------
// REGION PATCH TESTS WHERE MADE ORIGINALLY FOR USE IN FBA ENHANCED / EXTRAS
// [CaptainCPS-X]
//
// http://neosource.1emu.net/
//
// Please do not remove this comment from the source if you use it.
// --------------------------------------------------------------------------------------------

// --------------------------------------------------------------------------------------------
// [ REDEARTN ] Red Earth (Asia, 961121, NO CD)
//
// 0x06000000 - JAPAN (WAR-ZARD)
// 0x05000000 - ASIA
// 0x04000000 - EURO
// 0x03000000 - USA
// 0x02000000 - HISPANIC
// 0x01000000 - BRAZIL
// 0x00000000 - OCEANIA

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redeartn")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x05000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearen")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x04000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearun")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x03000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearhn")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x02000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearbn")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x01000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearon")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "redearjn")) { *((unsigned int *)(RomBios + 0x1FED8)) = 0x06000000; }

// REDEARTN NOTE: REGION PATCHES ARE DIFFERENT FROM THE OTHER CPS3 GAMES
//
// -> redeartn use: (RomBios + 0x1FED8)
// others use: (RomBios + 0x1FECB)
//
// -> redeartn use: =
// others use: ^=  ( excluding NO REGION (WHITE) )

// --------------------------------------------------------------------------------------------
// [ SFIIIN ] Street Fighter III: New Generation (Asia, 970204, NO CD)
// [ SFIII2N ] Street Fighter III 2nd Impact: Giant Attack (Asia, 970930, NO CD)
//
// 0x00000000 - ASIA (NOCD)

// 0x00000001 - EURO
// 0x00000002 - NO REGION (WHITE)
// 0x00000003 - JAPAN
// 0x00000004 - BRAZIL
// 0x00000005 - OCEANIA
// 0x00000006 - USA
// 0x00000007 - HISPANIC

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiiin") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3en") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3e2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000001; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3xn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3x2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000002; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3jn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3j2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000003; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3bn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3b2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000004; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3on") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3o2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000005; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3un") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3u2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000006; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3hn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3h2n")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000007; }

// --------------------------------------------------------------------------------------------
// [ SFIII3N ] Street Fighter III 3rd Strike: Fight for the Future (Japan, 990512, NO CD)
// [ SFIII3AN ] Street Fighter III 3rd Strike: Fight for the Future (Japan, 990608, NO CD)
//
// 0x00000000 - JAPAN

// 0x00000001 - NO REGION (WHITE)
// 0x00000002 - EURO
// 0x00000003 - ASIA
// 0x00000004 - HISPANIC
// 0x00000005 - USA
// 0x00000006 - OCEANIA
// 0x00000007 - BRAZIL

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sfiii3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3x3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3x3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000001; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3e3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3e3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000002; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3a3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3a3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000003; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3h3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3h3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000004; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3u3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3u3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000005; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3o3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3o3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000006; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "sf3b3n") || !strcmp(BurnDrvGetTextA(DRV_NAME), "sf3b3an")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000007; }

// --------------------------------------------------------------------------------------------
// [ JOJON ] JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 981202, NO CD)
// [ JOJOALTN ] JoJo's Venture / JoJo no Kimyouna Bouken (Asia, 990108, NO CD)
//
// 0x00000000 - ASIA

// 0x00000001 - EURO
// 0x00000002 - NO REGION (XXXXXX) WHITE
// 0x00000003 - JAPAN
// 0x00000004 - BRAZIL
// 0x00000005 - OCEANIA
// 0x00000006 - USA
// 0x00000007 - HISPANIC

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojon") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoaltn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojoen") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalen")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000001; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojoxn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalxn")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000002; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojojn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoaljn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000003; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalbn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000004; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojoon") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalon")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000005; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojoun") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalun")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000006; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojohn") || !strcmp(BurnDrvGetTextA(DRV_NAME), "jojoalhn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000007; }

// --------------------------------------------------------------------------------------------
// [ JOJOBAN ] JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)
//
// 0x00000000 - JAPAN

// 0x00000001 - NO REGION (XXXXXX) WHITE
// 0x00000002 - EURO
// 0x00000003 - ASIA
// 0x00000004 - HISPANIC
// 0x00000005 - USA
// 0x00000006 - OCEANIA
// 0x00000007 - BRAZIL

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojoban")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobaxn")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000001; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobaen")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000002; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobaan")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000003; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobahn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000004; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobaun")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000005; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobaon")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000006; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobabn")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000007; }

// --------------------------------------------------------------------------------------------
// [ JOJOBANE ] JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Euro, 990913, NO CD)
//
// 0x00000000 - EURO

// 0x00000001 - ASIA
// 0x00000002 - JAPAN
// 0x00000003 - NO REGION (XXXXXX) WHITE
// 0x00000004 - OCEANIA
// 0x00000005 - BRAZIL
// 0x00000006 - HISPANIC
// 0x00000007 - USA

if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobane")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000000; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobna")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000001; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobnj")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000002; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobnx")) { *((unsigned int *)(RomBios + 0x1FECB)) = 0x00000003; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobno")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000004; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobnb")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000005; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobnh")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000006; }
if (!strcmp(BurnDrvGetTextA(DRV_NAME), "jojobnu")) { *((unsigned int *)(RomBios + 0x1FECB)) ^= 0x00000007; }

be_to_le( RomBios, 0x080000 );
cps3_decrypt_bios();[/size]


Code: [Select]

[size=10pt]// ------------------------------------------------------------------------------------------------
// Fake Clone drivers made originally for use in FB Alpha Enhanced / Extras
// [ by CaptainCPS-X ]
//
// These drivers are not official in any way I added them originally to make it posible
// to select from different regions. In the future this can be simplified by adding a
// Dipswitch feature for CPS-3 games.
//
// http://neosource.1emu.net/
//
// Please do not remove this comment if you use this code.
// ------------------------------------------------------------------------------------------------

struct BurnDriver BurnDrvRedearen = {
"redearen", "redeartn", NULL, "1996",
"Red Earth (Europe, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvRedearun = {
"redearun", "redeartn", NULL, "1996",
"Red Earth (USA, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvRedearhn = {
"redearhn", "redeartn", NULL, "1996",
"Red Earth (Hispanic, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvRedearbn = {
"redearbn", "redeartn", NULL, "1996",
"Red Earth (Brazil, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvRedearon = {
"redearon", "redeartn", NULL, "1996",
"Red Earth (Oceania, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvRedearjn = {
"redearjn", "redeartn", NULL, "1996",
"Red Earth / War-Zard (Japan, 961121, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, redeartnRomInfo, redeartnRomName, cps3InputInfo, NULL,
redearthInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// sfiiin FAKE CLONES

struct BurnDriver BurnDrvSf3en = {
"sf3en", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (Europe, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3xn = {
"sf3xn", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (XXXXXX, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3jn = {
"sf3jn", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (Japan, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3bn = {
"sf3bn", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (Brazil, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3on = {
"sf3on", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (Oceania, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3un = {
"sf3un", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (USA, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3hn = {
"sf3hn", "sfiiin", NULL, "1997",
"Street Fighter III: New Generation (Hispanic, 970204, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiiinRomInfo, sfiiinRomName, cps3InputInfo, NULL,
sfiiiInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// sfiii2n  fake clones

struct BurnDriver BurnDrvSf3e2n = {
"sf3e2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (Europe, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3x2n = {
"sf3x2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (XXXXXX, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3j2n = {
"sf3j2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (Japan, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3b2n = {
"sf3b2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (Brazil, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3o2n = {
"sf3o2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (Oceania, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3u2n = {
"sf3u2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (USA, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3h2n = {
"sf3h2n", "sfiii2n", NULL, "1997",
"Street Fighter III 2nd Impact: Giant Attack (Hispanic, 970930, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii2nRomInfo, sfiii2nRomName, cps3InputInfo, NULL,
sfiii2Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// sfiii3n fake clones

struct BurnDriver BurnDrvSf3x3n = {
"sf3x3n", "sfiii3", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (XXXXXX, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3e3n = {
"sf3e3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Europe, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3a3n = {
"sf3a3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Asia, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3h3n = {
"sf3h3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Hispanic, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3u3n = {
"sf3u3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (USA, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3o3n = {
"sf3o3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Oceania, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3b3n = {
"sf3b3n", "sfiii3n", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Brazil, 990512, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3nRomInfo, sfiii3nRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// sfiii3an fake clones

struct BurnDriver BurnDrvSf3x3an = {
"sf3x3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (XXXXXX, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3e3an = {
"sf3e3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Europe, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3a3an = {
"sf3a3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Asia, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3h3an = {
"sf3h3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Hispanic, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3u3an = {
"sf3u3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (USA, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3o3an = {
"sf3o3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Oceania, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvSf3b3an = {
"sf3b3an", "sfiii3an", NULL, "1999",
"Street Fighter III 3rd Strike: Fight for the Future (Brazil, 990608, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, sfiii3anRomInfo, sfiii3anRomName, cps3InputInfo, NULL,
sfiii3Init, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// jojon fake clones

struct BurnDriver BurnDrvJojoen = {
"jojoen", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Europe, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoxn = {
"jojoxn", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (XXXXXX, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojojn = {
"jojojn", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobn = {
"jojobn", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Brazil, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoon = {
"jojoon", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Oceania, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoun = {
"jojoun", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (USA, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojohn = {
"jojohn", "jojon", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Hispanic, 981202, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojonRomInfo, jojonRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// jojoaltn fake clones

struct BurnDriver BurnDrvJojoalen = {
"jojoalen", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Europe, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoalxn = {
"jojoalxn", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (XXXXXX, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoaljn = {
"jojoaljn", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Japan, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoalbn = {
"jojoalbn", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Brazil, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoalon = {
"jojoalon", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Oceania, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoalun = {
"jojoalun", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (USA, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojoalhn = {
"jojoalhn", "jojoaltn", NULL, "1998",
"JoJo's Venture / JoJo no Kimyouna Bouken (Hipsanic, 990108, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojoaltnRomInfo, jojoaltnRomName, cps3InputInfo, NULL,
jojoInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// jojoban fake clones

struct BurnDriver BurnDrvJojobaxn = {
"jojobaxn", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (XXXXXX, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobaen = {
"jojobaen", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Europe, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobaan = {
"jojobaan", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Asia, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobahn = {
"jojobahn", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Hispanic, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobaun = {
"jojobaun", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (USA, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobaon = {
"jojobaon", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Oceania, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobabn = {
"jojobabn", "jojoban", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Brazil, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobanRomInfo, jojobanRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

// jojobane fake clones

struct BurnDriver BurnDrvJojobna = {
"jojobna", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Asia, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobnj = {
"jojobnj", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Japan, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobnx = {
"jojobnx", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (XXXXXX, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobno = {
"jojobno", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Oceania, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobnb = {
"jojobnb", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Brazil, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobnh = {
"jojobnh", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (Hispanic, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};

struct BurnDriver BurnDrvJojobnu = {
"jojobnu", "jojobane", NULL, "1999",
"JoJo's Bizarre Adventure: Heritage for the Future / JoJo no Kimyouna Bouken: Miraie no Isan (USA, 990913, NO CD)\0", NULL, "Capcom", "CPS-3",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_16BIT_ONLY | BDF_CLONE, 2, HARDWARE_MISC_MISC,
NULL, jojobaneRomInfo, jojobaneRomName, cps3InputInfo, NULL,
jojobaInit, cps3Exit, cps3Frame, NULL, cps3Scan, &cps3_palette_change,
384, 224, 12, 7
};
[/size]


Enjoy the Fake Clones! xDD

SeeYaa!
 :biggrin:

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #35 on: January 01, 2008, 01:19:25 PM »
I received a recent PM asking me about the Redeartn Asia NOCD SH-2 bios file currently in my build of FBA, and so it seems that some of you may have missed some info in this thread...

As you guys know (if you don't know you will xD) OopsWare found a way to get our own dump of the 'Red Earth (Asia, 961121, NOCD)' SH-2 Bios file so we don't have to use other bios.

He posted it in the second page of this thread but I will Quote what he wrote:


sfiii2's coderegoin doesn't encrypt, so fast boot mode change to:
Code: [Select]
static int Cps3Reset()
{
// re-map cram_bank
cram_bank = 0;
Sh2MapMemory((unsigned char *)RamCRam, 0x04100000, 0x041fffff, SM_RAM);

#if 0
Sh2Reset( *(unsigned int *)(RomBios + 0), *(unsigned int *)(RomBios + 4) );
#else
// fast boot
if (cps3_isSpecial)
// sfiii2 only
Sh2Reset( *(unsigned int *)(RomGame + 0), *(unsigned int *)(RomGame + 4) );
else
Sh2Reset( *(unsigned int *)(RomGame_D + 0), *(unsigned int *)(RomGame_D + 4) );
Sh2SetVBR(0x06000000);
#endif
......

ok, let us make some test:
add some code after cps3_decrypt_bios(); in cps3Init()

Code: [Select]
......
be_to_le( RomBios, 0x080000 );
cps3_decrypt_bios();

unsigned int a1 = *(unsigned int *)( RomBios + 0x01fed8 );
unsigned int m1 = cps3_mask(0x01fed8, cps3_key1, cps3_key2);
bprintf(0, _T("%08x ^ %08x = %08x\n"), a1 ^ m1, m1, a1 );

.....

we'll got
fda7ee86 ^ ce87ce87 = 33202001   : redearth   : Japan
fda7ee84 ^ ce87ce87 = 33202003   : warzard    : Euro

so :
Asia (NCD) 33202008 ^ ce87ce87 = fda7ee8f
now we copy the bios file warzard_euro.29f400.u2 to redearth_nocd.bios
edit redearth_nocd.bios by a hex edit tools at offset 0x01fedb with value 0x8f

compress the redearth_nocd.bios to redeartn.zip update the crc in d_cps3.cpp

done !!! we got the redearth_nocd.bios ^^


This message is here:

http://neo-source.com/index.php?topic=786.msg6424#msg6424

So to make everyone's life easier I did a IPS patch to get it from the Europe SH-2 Bios.

Directions:

1. Unzip the "warzard_euro.29f400.u2" crc32(02E0F336) from "redearth.zip"
2. Rename it to "redearth_nocd.bios".
3. Use the Patcher (ouinja-0.59-nem.zip) + IPS Patch I attached and apply it to "redearth_nocd.bios"
4. You should have now the patched "redearth_nocd.bios" with a crc32 - (DB09F27C)
5. Add "redearth_nocd.bios" to "redeartN.zip" (Note: dont add it to 'redeartH.zip')
6. Enjoy! =) We have the undumped SH-2 Bios file for FBA first! xD lol

SeeYaa!
 :biggrin:

[attachment deleted by admin]

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #36 on: January 01, 2008, 08:24:49 PM »
Here you have my actual CPS3 updates to the drivers , changes are the ones mentioned in FB Alpha Enhanced R11 (check the attachements).

I think this are my last modifications to them for now.

btw, I hope OopsWare have good news about his CPS3 driver WIP soon ^^

SeeYaa!
:biggrin:

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #37 on: January 02, 2008, 02:22:46 AM »
My actual and final CPS3 updates to the drivers. (there should be no problem now, only of course the other stuff not emulated like sound and CHDs)

Quote

All reported bugs are fixed now, the update will be included for R12.

- jojobnx (initiate and load fine now)
- sfiiiu (boots fine to the load CD screen)
- sfiii3a (boots fine to the load CD screen)



SeeYaa!
 :biggrin:

Offline nganiere

  • Newbies
  • *
  • Posts: 37
  • Karma: +0/-4
Re: CPS-III driver preview
« Reply #38 on: January 02, 2008, 03:08:07 AM »
all the cps-3 drivers crash with a guru meditation error when pressing alt-enter to exit full screen......no biggie though......just have to reload the emulator....

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #39 on: January 02, 2008, 03:14:18 AM »
all the cps-3 drivers crash with a guru meditation error when pressing alt-enter to exit full screen......no biggie though......just have to reload the emulator....

That's not a bug in my updated drivers, and is not happening in my build so that bug is in your PC. Wait until I release my build and you'll see

SeeYaa!
 :biggrin:


Offline OopsWare

  • Expert
  • *****
  • Posts: 38
  • Karma: +31/-0
Re: CPS-III driver preview
« Reply #40 on: January 02, 2008, 03:19:38 AM »
spend too many time to write the mksh2.cpp and create opcode jumptable.
but it increase 2 or more frames per second only  :redface:

an other way, change
 Sh2Run(6250000 * 4 / 60 / 4);
to
 Sh2Run(3250000 * 4 / 60 / 4);
it will full speed on a P4 1.5, why ????

why mame run so fast  :idiot:

haha ... i'v forgot the speedup hack in mame .  :biggrin:

see mame's cps3.c
static READ32_HANDLER(cps3_speedup_r)

add this asap ...



Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #41 on: January 02, 2008, 03:23:19 AM »
spend too many time to write the mksh2.cpp and create opcode jumptable.
but it increase 2 or more frames per second only  :redface:

an other way, change
 Sh2Run(6250000 * 4 / 60 / 4);
to
 Sh2Run(3250000 * 4 / 60 / 4);
it will full speed on a P4 1.5, why ????

why mame run so fast  :idiot:

haha ... i'v forgot the speedup hack in mame .  :biggrin:

see mame's cps3.c
static READ32_HANDLER(cps3_speedup_r)

add this asap ...


Wohooo!! ThanX OopsWare gonna test before going to sleep! ^^ (lol Im like a zoombie right now xD)

SeeYaa!
 :biggrin:

Offline nganiere

  • Newbies
  • *
  • Posts: 37
  • Karma: +0/-4
Re: CPS-III driver preview
« Reply #42 on: January 02, 2008, 03:27:29 AM »
That's not a bug in my updated drivers, and is not happening in my build so that bug is in your PC. Wait until I release my build and you'll see

SeeYaa!
 :biggrin:



hmmmm, must of been one of the blitter options my computer doesn't like cause it works switching it from double pixels (software)......no more guru meditation error.

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: CPS-III driver preview
« Reply #43 on: January 02, 2008, 03:45:44 AM »
Wow!! going good here changing "Sh2Run(6250000 * 4 / 60 / 4);" to "Sh2Run(3250000 * 4 / 60 / 4);"   :eek:

SeeYaa!
 :biggrin:

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: CPS-III driver preview
« Reply #44 on: January 02, 2008, 03:53:41 AM »
That's just underclocking the cpu.  Not correct at all. :S  What it means is that the sh2 core isn't running as many cycles per second as it is suppose to.  The reason it doesn't seem to affect gameplay is that the games don't take advantage of the cpu much.

Also, the SH2 core of MAME is very slowww (taking up most of the cpu time).  That's why I suggested using that ASM SH2 core.