Author Topic: Post 2002 Neo Geo drivers, questions  (Read 21415 times)

Offline DethXec

  • Newbies
  • *
  • Posts: 43
  • Karma: +0/-0
  • Neo·FBA |dev|
    • Another dot in the Universe
Post 2002 Neo Geo drivers, questions
« on: March 02, 2005, 05:39:44 AM »
Well, since I didn't have much time to keep updating the fba drivers, I'd like to know the state of the drivers... It really will take me a long time to search and check once and again, because most of the drivers were updated some how, and now the FBA source has another way to load the PCM2 and stuff...

So, in short, what's going on with:

· Pochi and Nyaa
· KOF 2003 (two versions, so two drivers)
· Samurai Shodown V (two dumps, so two drivers)
· Samurai Shodown V Special
· SNK Vs. Capcom SVC Chaos (two versions, so two drivers)

Thanks a lot for any little infos...

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Post 2002 Neo Geo drivers, questions
« Reply #1 on: March 02, 2005, 06:11:13 AM »
Code: [Select]
// Pochi and Nyaa (encrypted grahics / sound)

static struct BurnRomInfo pnyaaRomDesc[] = {
{ "267-p1.bin",   0x100000, 0x112FE2C0, 1 | BRF_ESS | BRF_PRG }, //  0 68K code

{ "267-c1.bin",   0x800000, 0x2E20617A, 3 | BRF_GRA }, //  1 Sprite data
{ "267-c2.bin",   0x800000, 0x4EDFA720, 3 | BRF_GRA }, //  2

{ "267-m1d.bin",  0x080000, 0xd58eaa8e, 4 | BRF_ESS | BRF_PRG }, //  3 Z80 code (decrypted)
{ "267-m1.bin",   0x080000, 0xc7853ccd, 0 | BRF_PRG | BRF_OPT }, //  4 Z80 code

{ "267-v1.bin",   0x400000, 0xE2E8E917, 5 | BRF_SND }, //  5 Sound data
};

STDROMPICKEXT(pnyaa, pnyaa, neogeo);
STD_ROM_FN(pnyaa);

static int pnyaaInit()
{
extern unsigned char* YM2610ADPCMAROM;

nNeoProtectionXor = 0x2e;

int nRet = NeoInit();

if (nRet == 0) {
for (int i = 0; i < 0x400000 / 2; i += 4 / 2) {
unsigned short buffer[4 / 2];
memcpy(buffer, ((unsigned short*)YM2610ADPCMAROM) + i, 4);
for (int j = 0; j < 4 / 2; j++) {
((unsigned short*)YM2610ADPCMAROM)[i + j] = buffer[j ^ 1];
}
}
}

return nRet;
}

struct BurnDriver BurnDrvpnyaa = {
"pnyaa", NULL, "neogeo", "2003",
"Pochi and Nyaa\0", NULL, "Aiky", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B,
NULL, pnyaaRomInfo, pnyaaRomName, neogeoInputInfo, neogeoDIPInfo,
pnyaaInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};


Offline Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
Post 2002 Neo Geo drivers, questions
« Reply #2 on: March 02, 2005, 06:20:23 AM »
all working, but you need proper bankswitching to pcb protections code found in http://neo-source.com/index.php?topic=299.0

to kof2003 you'll also need the k2k3fix.cpp ( http://neo-source.com/index.php?topic=217.0 ), get only this here, the rest is outdated, use the drivers from the 1st link.

to svc you'll need some c decryption code ( http://neo-source.com/index.php?topic=212.15 ) download it from the 4th post
« Last Edit: May 10, 2005, 12:36:38 PM by iq_132 »
<- Who are you?

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Post 2002 Neo Geo drivers, questions
« Reply #3 on: March 02, 2005, 06:37:05 AM »
Actually, with kof2003, the only thing you DON'T need is the k2k3fix.cpp.
I'll post some updated fba drivers for svc and kof2k3 later


Offline LikkleBaer

  • New Member
  • *
  • Posts: 9
  • Karma: +0/-0
  • Junior Member
Post 2002 Neo Geo drivers, questions
« Reply #4 on: March 02, 2005, 03:28:26 PM »
Quote
I'll post some updated fba drivers for svc and kof2k3 later

oooooh! can't wait, thankies IQ ^_^
"My God! ...It's full of Baers!"

www.likklebaer.eclipse.co.uk

Offline Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
Post 2002 Neo Geo drivers, questions
« Reply #5 on: March 03, 2005, 11:13:49 AM »
Quote from: iq_132
Actually, with kof2003, the only thing you DON'T need is the k2k3fix.cpp.
I'll post some updated fba drivers for svc and kof2k3 later


no need for k2k3fix.ccp and all the steps in the "howto"? so i'll only need the bankswitches, bioses and drivers listed in the topico about "some pvc bankswitch code" cool XD
<- Who are you?

Offline DethXec

  • Newbies
  • *
  • Posts: 43
  • Karma: +0/-0
  • Neo·FBA |dev|
    • Another dot in the Universe
Post 2002 Neo Geo drivers, questions
« Reply #6 on: March 05, 2005, 09:39:29 PM »
I see! Thanks for the replies.

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Post 2002 Neo Geo drivers, questions
« Reply #7 on: March 08, 2005, 03:13:28 PM »
Here are those drivers as promised.
(Please let me know if something is wrong/incorrect)

+24 v


Offline FBX

  • New Member
  • *
  • Posts: 8
  • Karma: +0/-0
  • Junior Member
Post 2002 Neo Geo drivers, questions
« Reply #8 on: March 16, 2005, 10:57:17 PM »
I made all the updates and changes exactly as instructed in your zip, but I got an error during compilation in Cygwin:

src/burn/neogeo/neo_decrypt.cpp: In function `void NeoExtractSData(unsigned
   char*, unsigned char*, int, int)':
src/burn/neogeo/neo_decrypt.cpp:463: error: redefinition of `void
   NeoExtractSData(unsigned char*, unsigned char*, int, int)'
src/burn/neogeo/neo_decrypt.cpp:453: error: `void NeoExtractSData(unsigned
   char*, unsigned char*, int, int)' previously defined here
src/burn/neogeo/neo_decrypt.cpp:463: error: redefinition of `void
   NeoExtractSData(unsigned char*, unsigned char*, int, int)'
src/burn/neogeo/neo_decrypt.cpp:453: error: `void NeoExtractSData(unsigned
   char*, unsigned char*, int, int)' previously defined here
src/burn/neogeo/neo_decrypt.cpp:622:2: warning: no newline at end of file
make[1]: *** [neo_decrypt.o] Error 1
make: *** [mingw] Error 2

Offline FBX

  • New Member
  • *
  • Posts: 8
  • Karma: +0/-0
  • Junior Member
Post 2002 Neo Geo drivers, questions
« Reply #9 on: March 16, 2005, 11:18:01 PM »
I figured out the problem. Your instructions say to "place this after" when it should read:  "replace with this".

Everything else seems to work now. Thanks!

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Post 2002 Neo Geo drivers, questions
« Reply #10 on: March 18, 2005, 08:23:23 AM »
K, thx for the bug report ;) I'll fix that asap.


Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Post 2002 Neo Geo drivers, questions
« Reply #11 on: March 18, 2005, 09:40:46 PM »
Fpound the problem, just:
Look for all of this:
Code: [Select]
void NeoExtractSData(unsigned char* rom, unsigned char* sdata, int rom_size, int sdata_size)
{
/* the S data comes from the end fo the C data */
rom += rom_size - sdata_size;

for (int i = 0; i < sdata_size; i++) {
sdata[i] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
}
}

void NeoExtractSData(unsigned char* rom, unsigned char* sdata, int rom_size, int sdata_size)
{
int i;
if (sdata_size != 0x100000)
{
rom += rom_size - sdata_size;
for (i = 0; i < sdata_size; i++) {
sdata[i] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
  }
} else {
rom += rom_size - sdata_size /2;
for (i = 0; i < sdata_size / 2; i++) {
sdata[i + 0] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) - 0x1000000 ];
sdata[i + sdata_size / 2] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
  }
}
}
i suppose that you have thgis like this... replace ALL with just this:
Code: [Select]
void NeoExtractSData(unsigned char* rom, unsigned char* sdata, int rom_size, int sdata_size)
{
int i;
if (sdata_size != 0x100000)
{
rom += rom_size - sdata_size;
for (i = 0; i < sdata_size; i++) {
sdata[i] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
  }
} else {
rom += rom_size - sdata_size /2;
for (i = 0; i < sdata_size / 2; i++) {
sdata[i + 0] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) - 0x1000000 ];
sdata[i + sdata_size / 2] = rom[(i & ~0x1F) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];
  }
}
}
this should fix your problem, in other words, you have twice the NeoExtractSdata, just delete the old function and replace with the new one that IQ_132 mention in changes.htm
See ya!!!!!! :D
P.D. THANKS A LOT IQ!!!!!!, i finally fixed a lot of bugs with this XD, really thanks. (i had probs with reset even with the clean compile XD, now that is fixed)
« Last Edit: May 10, 2005, 12:36:55 PM by iq_132 »

Good and evil co-exist because of the balance, lies are not part of it...

FB Alpha Plus! site infos updated, see the latest info clicking on my profile link...

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Post 2002 Neo Geo drivers, questions
« Reply #12 on: March 19, 2005, 12:12:33 AM »
Hem... i have a weird question: did anyone with more than 64 or 128 MB of RAM tried to save decrypted C-ROMs of svcchaos from the "Save decrypted C-ROMs after loading" option in Kawaks dev?... if yes, who can tell me how many C-ROMs does k-dev save? 2 C-ROMs of 32 MB each? (like the encripted ones but decrypted) or 8 C-ROMs of 8 MB? I know is a weird question but is just for solving some doubts... anyone can tell me how many decrypted C-ROMs does k-dev save after loading svcchaos?
Thanks in advace
See ya!!!!!! :D

Good and evil co-exist because of the balance, lies are not part of it...

FB Alpha Plus! site infos updated, see the latest info clicking on my profile link...

Offline FBX

  • New Member
  • *
  • Posts: 8
  • Karma: +0/-0
  • Junior Member
Post 2002 Neo Geo drivers, questions
« Reply #13 on: March 19, 2005, 02:42:56 AM »
Ferchog, if you go back and read my replies, you'll see I already figured that out for myself. No need to have posted all that code like that.

Hey IQ_132, no samsho 5 drivers in that list? I have several rom packs from the mame set for it. Was wondering if you had coded drivers for them yet.

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Post 2002 Neo Geo drivers, questions
« Reply #14 on: March 19, 2005, 03:39:10 AM »
Sorry about that FBX, I forgot about it.

Code: [Select]
// Samurai Shodown 5

static struct BurnRomInfo samsho5RomDesc[] = {
{"270-p1.bin", 0x400000, 0x4a2a09e6, 1 | BRF_ESS | BRF_PRG },  //  0 68K code
{"270-p2.bin", 0x400000, 0xe0c74c85, 1 | BRF_ESS | BRF_PRG },  //  1


{"270-c1.bin", 0x800000, 0x14FFFFAC, 3 | BRF_GRA },            // 2 Sprite data
{"270-c2.bin", 0x800000, 0x401F7299, 3 | BRF_GRA },            // 3
{"270-c3.bin", 0x800000, 0x1BFF0D0E, 3 | BRF_GRA },            // 4
{"270-c4.bin", 0x800000, 0x041560A5, 3 | BRF_GRA },            // 5
{"270-c5.bin", 0x800000, 0xBD30B52D, 3 | BRF_GRA },            // 6
{"270-c6.bin", 0x800000, 0x86A69C70, 3 | BRF_GRA },            // 7
{"270-c7.bin", 0x800000, 0xd28fbc3c, 3 | BRF_GRA },            // 8
{"270-c8.bin", 0x800000, 0x02C530A6, 3 | BRF_GRA },            // 9

{"270-m1d.bin", 0x020000, 0x18114FB1, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{"270-m1.bin" , 0x040000, 0xe4a5ab0c, 0 | BRF_PRG | BRF_OPT }, // 10

{"270-v1.bin" , 0x800000, 0x7541763a, 5 | BRF_SND },           // 11 Sound data
{"270-v2.bin" , 0x800000, 0x4e6e7d98, 5 | BRF_SND },           // 12
};

STDROMPICKEXT(samsho5, samsho5, neogeo);
STD_ROM_FN(samsho5);

static void samsho5Decrypt()
{
// Not needed due to the availability of the AES Cart dump
/* *((unsigned short*)(Neo68KROM + 0xE7EC2)) = 0x7CCC; // menu AES color text fix
*((unsigned short*)(Neo68KROM + 0xE7EC4)) = 0x1DC7;
*((unsigned short*)(Neo68KROM + 0xE7ECA)) = 0x2DB0;
*((unsigned short*)(Neo68KROM + 0xE7ECE)) = 0x4C90;
*((unsigned short*)(Neo68KROM + 0xE7ED2)) = 0x4C60;
*((unsigned short*)(Neo68KROM + 0xE7ED6)) = 0x6B30;
*((unsigned short*)(Neo68KROM + 0xE7EE2)) = 0x7CCC;
*((unsigned short*)(Neo68KROM + 0xE7EE4)) = 0x1BCE;
*((unsigned short*)(Neo68KROM + 0xE7EEA)) = 0x549D;
*((unsigned short*)(Neo68KROM + 0xE7EEE)) = 0x117D;
*((unsigned short*)(Neo68KROM + 0xE7EF2)) = 0x204C;
*((unsigned short*)(Neo68KROM + 0xE7EF6)) = 0x302C;
*((unsigned short*)(Neo68KROM + 0xE7F02)) = 0x7CCC;
*((unsigned short*)(Neo68KROM + 0xE7F04)) = 0x45B1;
*((unsigned short*)(Neo68KROM + 0xE7F06)) = 0x14A0;
*((unsigned short*)(Neo68KROM + 0xE7F08)) = 0x2290;
*((unsigned short*)(Neo68KROM + 0xE7F0A)) = 0x4390;
*((unsigned short*)(Neo68KROM + 0xE7F0C)) = 0x2280;
*((unsigned short*)(Neo68KROM + 0xE7F0E)) = 0x2170;
*((unsigned short*)(Neo68KROM + 0xE7F12)) = 0x0060;
*((unsigned short*)(Neo68KROM + 0xE7F16)) = 0x0050;
*((unsigned short*)(Neo68KROM + 0xE7F18)) = 0x0040;
*((unsigned short*)(Neo68KROM + 0xE7F1C)) = 0x0020;
*/
unsigned char* src = Neo68KROM+0x100000;
unsigned char* dst = (unsigned char*)malloc(0x700000);
int sec[] = {0xC,0xB,0x8,0x1,0x2,0x7,0x4, 0xD,0xA,0x3,0x0,0x9,0x6,0x5};

if (dst)
{
memcpy(dst,src,0x700000);
for(int i = 0; i < 14; ++i)
{
memcpy(src+i*0x80000,dst+sec[i]*0x80000,0x80000);
}
free(dst);
}
}

static int samsho5Init()
{
int nRet;

nNeoProtectionXor = 0x0f;
pNeoInitCallback = samsho5Decrypt;

nRet = NeoInit();

if (nRet == 0) {
PCM2DecryptVInfo Info = { 0x00A000, 0xFEB2C0, { 0xCB, 0x29, 0x7D, 0x43, 0xD2, 0x3A, 0xC2, 0xB4 } };

PCM2DecryptV(&Info);
}

return nRet;
}

struct BurnDriver BurnDrvSamSho5 = {
"samsho5", NULL, "neogeo", "2003",
"Samurai Shodown V - Samurai Spirits Zero\0", NULL, "Yuki Enterprise / SNK Playmore", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B | HARDWARE_SNK_SRAM,
NULL, samsho5RomInfo, samsho5RomName, neogeoInputInfo, neogeoDIPInfo,
samsho5Init, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};

// Samurai Shodown 5 (AES Cart)

static struct BurnRomInfo samsho5hRomDesc[] = {
{"270-p1c.bin", 0x400000, 0xBF956089, 1 | BRF_ESS | BRF_PRG },  //  0 68K code
{"270-p2c.bin", 0x400000, 0x943A6B1D, 1 | BRF_ESS | BRF_PRG },  //  1

{"270-c1.bin", 0x800000, 0x14FFFFAC, 3 | BRF_GRA },            // 2 Sprite data
{"270-c2.bin", 0x800000, 0x401F7299, 3 | BRF_GRA },            // 3
{"270-c3.bin", 0x800000, 0x1BFF0D0E, 3 | BRF_GRA },            // 4
{"270-c4.bin", 0x800000, 0x041560A5, 3 | BRF_GRA },            // 5
{"270-c5.bin", 0x800000, 0xBD30B52D, 3 | BRF_GRA },            // 6
{"270-c6.bin", 0x800000, 0x86A69C70, 3 | BRF_GRA },            // 7
{"270-c7.bin", 0x800000, 0xd28fbc3c, 3 | BRF_GRA },            // 8
{"270-c8.bin", 0x800000, 0x02C530A6, 3 | BRF_GRA },            // 9

{"270-m1d.bin", 0x020000, 0x18114FB1, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{"270-m1c.bin", 0x080000, 0xCEDEBD3C, 0 | BRF_PRG | BRF_OPT }, // 10

{"270-v1.bin" , 0x800000, 0x7541763a, 5 | BRF_SND },           // 11 Sound data
{"270-v2.bin" , 0x800000, 0x4e6e7d98, 5 | BRF_SND },           // 12
};

STDROMPICKEXT(samsho5h, samsho5h, neogeo);
STD_ROM_FN(samsho5h);

struct BurnDriver BurnDrvsamsho5h = {
"samsho5h", "samsho5", "neogeo", "2003",
"Samurai Shodown V - Samurai Spirits Zero (Home)\0", "From AES Cart", "Yuki Enterprise / SNK Playmore", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B, // | HARDWARE_SNK_SRAM,
NULL, samsho5hRomInfo, samsho5hRomName, neogeoInputInfo, neogeoDIPInfo,
samsho5Init, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};


// Samurai Shodown V Special / Samurai Spirits Zero Special

static struct BurnRomInfo samsh5spRomDesc[] = {
{"272-p1.bin", 0x400000, 0x9291794D, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{"272-p2.bin", 0x400000, 0xFA1A7DD8, 1 | BRF_ESS | BRF_PRG }, // 1

{"272-c1.bin", 0x800000, 0x4F97661A, 3 | BRF_GRA }, // 2 Sprite data
{"272-c2.bin", 0x800000, 0xA3AFDA4F, 3 | BRF_GRA }, // 3
{"272-c3.bin", 0x800000, 0x8C3C7502, 3 | BRF_GRA }, // 4
{"272-c4.bin", 0x800000, 0x32D5E2E2, 3 | BRF_GRA }, // 5
{"272-c5.bin", 0x800000, 0x6CE085BC, 3 | BRF_GRA }, // 6
{"272-c6.bin", 0x800000, 0x05C8DC8E, 3 | BRF_GRA }, // 7
{"272-c7.bin", 0x800000, 0x1417B742, 3 | BRF_GRA }, // 8
{"272-c8.bin", 0x800000, 0xD49773CD, 3 | BRF_GRA }, // 9


{"272-m1d.bin" , 0x080000, 0x451b14be, 4 | BRF_ESS | BRF_PRG }, // 9 Z80 code
{"272-m1.bin" ,  0x080000, 0xADEEBF40, 0 | BRF_PRG | BRF_OPT }, // 9

{"272-v1.bin" ,  0x800000, 0x76a94127, 5 | BRF_SND }, // 10
{"272-v2.bin" ,  0x800000, 0x4ba507f1, 5 | BRF_SND }, // 11
};

STDROMPICKEXT(samsh5sp, samsh5sp, neogeo);
STD_ROM_FN(samsh5sp);

static void samsh5sp_unlock()
{
// Unlock fatalities from AES original cart.
// Code by wesker, converted to FBA code by BisonSAS
*((unsigned short*)(Neo68KROM + 0x00990)) = 0x33FC;
*((unsigned short*)(Neo68KROM + 0x00992)) = 0x0002;
*((unsigned short*)(Neo68KROM + 0x00994)) = 0x0010;
*((unsigned short*)(Neo68KROM + 0x00996)) = 0xE010;
*((unsigned short*)(Neo68KROM + 0x00998)) = 0x4EF9;
*((unsigned short*)(Neo68KROM + 0x0099A)) = 0x0004;
*((unsigned short*)(Neo68KROM + 0x0099C)) = 0x61BA;

*((unsigned short*)(Neo68KROM + 0x461B4)) = 0x4EF9;
*((unsigned short*)(Neo68KROM + 0x461B6)) = 0x0000;
*((unsigned short*)(Neo68KROM + 0x461B8)) = 0x0990;
}

static void samsh5sp_Decrypt()
{
// Descrambling Px by Vorador from speksnk
unsigned char* src = Neo68KROM+0x100000;
unsigned char* dst = (unsigned char*)malloc(0x700000);
unsigned int sec[] = {0x8,0x7,0xA,0x9,0xC,0x3, 0x0,0xB,0x6,0xD,0x2,0x5,0x4,0x1};

if (dst)
{
memcpy( dst, src, 0x700000 );
for(int i=0;i<14;i++)
{
memcpy(src+i*0x80000,dst+sec[i]*0x80000,0x80000);
}
free(dst);
}

// samsh5sp_unlock(); // Use cheat file instead
}

static int samsh5spInit()
{
int nRet;

nNeoProtectionXor = 0x0d;
pNeoInitCallback = samsh5sp_Decrypt;

nRet = NeoInit();

if (nRet == 0) {
PCM2DecryptVInfo Info = { 0x002000, 0xFFB440, { 0x4B, 0xA4, 0x63, 0x46, 0xF0, 0x91, 0xEA, 0x62 } };

PCM2DecryptV(&Info);
}

return nRet;
}


struct BurnDriver BurnDrvsamsh5sp = {
"samsh5sp", NULL, "neogeo", "2004",
"Samurai Shodown V Special - Samurai Spirits Zero Special\0", NULL, "Yuki Enterprise / SNK Playmore", "Neo Geo",
NULL, NULL, NULL, NULL,
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
};