// Samurai Shodown V Special / Samurai Spirits Zero Special
static struct BurnRomInfo samsh5spRomDesc[] = {
{"272-p1.bin", 0x400000, 0x9291794D, 0x10}, // 0 68K code
{"272-p2.bin", 0x400000, 0xFA1A7DD8, 0x10}, // 1
{"272-c1.bin", 0x800000, 0x4F97661A, 1}, // 2 Sprite data
{"272-c2.bin", 0x800000, 0xA3AFDA4F, 1}, // 3
{"272-c3.bin", 0x800000, 0x8C3C7502, 1}, // 4
{"272-c4.bin", 0x800000, 0x32D5E2E2, 1}, // 5
{"272-c5.bin", 0x800000, 0x6CE085BC, 1}, // 6
{"272-c6.bin", 0x800000, 0x05C8DC8E, 1}, // 7
{"272-c7.bin", 0x800000, 0x1417B742, 1}, // 8
{"272-c8.bin", 0x800000, 0xD49773CD, 1}, // 9
// {"271-m1.bin" , 0x080000, 0xADEEBF40, 0x10}, // 9 Z80 code
{"270-m1d.bin" , 0x080000, 0xE5EADC1E, 0x10}, // Samsho5 M1d
{"272-v1.bin" , 0x800000, 0x76A94127, 2}, // 10 Sound data
{"272-v2.bin" , 0x800000, 0x4BA507F1, 2}, //
// {"272-v1d.bin" , 0x400000, 0x32156cfe, 2}, // Samsho5 Vs
// {"272-v2d.bin" , 0x400000, 0x0e46d2f8, 2}, //
// {"272-v3d.bin" , 0x400000, 0x3F0F7554, 2}, //
// {"272-v4d.bin" , 0x400000, 0xad8fabb4, 2}, //
};
STDROMPICKEXT(samsh5sp, samsh5sp, neogeo);
STD_ROM_FN(samsh5sp);
static void samsh5sp_Decrypt()
{
// Descrambling Px by Vorador from speksnk
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
unsigned int sec[] = {0x0,0x1,0xA,0x9,0xC,0xB,0xE,0x5,0x2,0xD,0x8,0xF,0x4,0x7,0x6,0x3};
if (dst)
{
memcpy( dst, src, 0x800000 );
for(int i=0;i<0x10;i++)
memcpy(src+i*0x80000,dst+sec[i]*0x80000,0x80000);
}
free(dst);
// Unlock fatalities from AES original cart.
// Code by wesker, converted to FBA code by BisonSAS
*((unsigned short*)(Neo68KROM01 + 0x00990)) = 0x33FC;
*((unsigned short*)(Neo68KROM01 + 0x00992)) = 0x0002;
*((unsigned short*)(Neo68KROM01 + 0x00994)) = 0x0010;
*((unsigned short*)(Neo68KROM01 + 0x00996)) = 0xE010;
*((unsigned short*)(Neo68KROM01 + 0x00998)) = 0x4EF9;
*((unsigned short*)(Neo68KROM01 + 0x0099A)) = 0x0004;
*((unsigned short*)(Neo68KROM01 + 0x0099C)) = 0x61BA;
*((unsigned short*)(Neo68KROM01 + 0x461B4)) = 0x4EF9;
*((unsigned short*)(Neo68KROM01 + 0x461B6)) = 0x0000;
*((unsigned short*)(Neo68KROM01 + 0x461B8)) = 0x0990;
}
static int samsh5spInit()
{
nNeoProtectionXor = 0x0d;
pNeoInitCallback = samsh5sp_Decrypt;
[B]nNeoPCM2PLAYMOREByteswap = 6;[/B]
return NeoInit();
}
struct BurnDriver BurnDrvsamsh5sp = {
{"samsh5sp", "Samurai Shodown V Special", "Japanese title is Samurai Spirits Zero Special", "Yuki Enterprise / SNK Playmore Corporation", "Neo Geo", "2004", NULL, "neogeo"},
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B | HARDWARE_SNK_SRAM,
NULL, samsh5spRomInfo, samsh5spRomName, neogeoInputInfo, neogeoDIPInfo,
samsh5spInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
i use the V roms encrypted for this set