diff --git a/src/burn/drv/capcom/cps.cpp b/src/burn/drv/capcom/cps.cpp index 73dd06674..eeaafeb5b 100644 --- a/src/burn/drv/capcom/cps.cpp +++ b/src/burn/drv/capcom/cps.cpp @@ -825,6 +825,14 @@ INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart) return 0; } +INT32 CpsLoadTilesSf2koryuExtra(UINT8* Tile, INT32 nStart) +{ + CpsLoadOneSf2koryu(Tile, nStart + 0, 1, 0); + CpsLoadOneSf2koryu(Tile, nStart + 1, 1, 2); + + return 0; +} + static INT32 CpsLoadTilesBootlegType3(UINT8 *Tile, INT32 nStart) { CpsLoadOneBootlegType3(Tile, nStart + 0, 0, 0); diff --git a/src/burn/drv/capcom/cps.h b/src/burn/drv/capcom/cps.h index 67ecd0524..3247b8393 100644 --- a/src/burn/drv/capcom/cps.h +++ b/src/burn/drv/capcom/cps.h @@ -39,6 +39,7 @@ INT32 CpsLoadTilesForgottn(INT32 nStart); INT32 CpsLoadTilesForgottnu(INT32 nStart); INT32 CpsLoadTilesPang(UINT8 *Tile,INT32 nStart); INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart); +INT32 CpsLoadTilesSf2koryuExtra(UINT8 *Tile, INT32 nStart); INT32 CpsLoadTilesHack160(INT32 nStart); INT32 CpsLoadTilesHack160Alt(INT32 nStart); INT32 CpsLoadTilesSf2koryu(INT32 nStart); diff --git a/src/burn/drv/capcom/d_cps1.cpp b/src/burn/drv/capcom/d_cps1.cpp index 114558533..d694f011d 100644 --- a/src/burn/drv/capcom/d_cps1.cpp +++ b/src/burn/drv/capcom/d_cps1.cpp @@ -1,15 +1,16 @@ #include "cps.h" #include "timekpr.h" -#define CPS1_68K_PROGRAM_BYTESWAP 1 -#define CPS1_68K_PROGRAM_NO_BYTESWAP 2 -#define CPS1_Z80_PROGRAM 3 -#define CPS1_TILES 4 -#define CPS1_OKIM6295_SAMPLES 5 -#define CPS1_QSOUND_SAMPLES 6 -#define CPS1_PIC 7 -#define CPS1_EXTRA_TILES_SF2EBBL_400000 8 -#define CPS1_EXTRA_TILES_400000 9 +#define CPS1_68K_PROGRAM_BYTESWAP 1 +#define CPS1_68K_PROGRAM_NO_BYTESWAP 2 +#define CPS1_Z80_PROGRAM 3 +#define CPS1_TILES 4 +#define CPS1_OKIM6295_SAMPLES 5 +#define CPS1_QSOUND_SAMPLES 6 +#define CPS1_PIC 7 +#define CPS1_EXTRA_TILES_SF2EBBL_400000 8 +#define CPS1_EXTRA_TILES_400000 9 +#define CPS1_EXTRA_TILES_SF2KORYU_400000 10 typedef INT32 (*Cps1Callback)(INT32); static Cps1Callback Cps1GfxLoadCallbackFunction = NULL; @@ -9696,7 +9697,7 @@ STD_ROM_FN(Sf2ceuab3) static struct BurnRomInfo Sf2ceuab4RomDesc[] = { { "6st-u196.u196", 0x0100000, 0x596609d4, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, - { "6st-u10.u10", 0x0100000, 0x7be4b175, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, // first and second half are both identical to turboii.21 + { "6st-u10.u10", 0x0080000, 0xed4186bd, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, { "6st-u70.u70", 0x0100000, 0xbaa0f81f, BRF_GRA | CPS1_TILES }, { "6st-u68.u68", 0x0100000, 0x8edff95a, BRF_GRA | CPS1_TILES }, @@ -9709,9 +9710,8 @@ static struct BurnRomInfo Sf2ceuab4RomDesc[] = { { "u210", 0x0040000, 0x6cfffb11, BRF_SND | CPS1_OKIM6295_SAMPLES }, - // extra graphics roms, load on the left side at 0x400000, but dumps look bad - { "6st-u31.u31", 0x0100000, 0xb9cbdc41, BRF_OPT }, // 256kb of data repeated throughout - { "6st-u29.u29", 0x0100000, 0x1da5bf2d, BRF_OPT }, // 256kb of data repeated throughout + { "6st-u31.u31", 0x0040000, 0x35486f2d, BRF_GRA | CPS1_EXTRA_TILES_SF2KORYU_400000 }, + { "6st-u29.u29", 0x0040000, 0xe4eca601, BRF_GRA | CPS1_EXTRA_TILES_SF2KORYU_400000 }, { "u133", 0x0010000, 0x13ea1c44, BRF_OPT }, // unknown }; @@ -11505,7 +11505,7 @@ static INT32 Cps1LoadRoms(INT32 bLoad) nCpsQSamLen += ri.nLen; nCpsQsoundRomNum++; } - if (((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2EBBL_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_400000)) { + if (((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2EBBL_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2KORYU_400000)) { nCpsExtraGfxLen += ri.nLen; nCpsExtraTilesRomNum++; } @@ -11686,6 +11686,13 @@ static INT32 Cps1LoadRoms(INT32 bLoad) i += 4; } + + if ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2KORYU_400000) { + memset(CpsGfx + 0x400000, 0, nCpsExtraGfxLen); + CpsLoadTilesSf2koryuExtra(CpsGfx + 0x400000, i); + + i += 2; + } } } }