What's new

ack

Enthusiast
Joined
Apr 21, 2018
Messages
109
Reaction score
154
Location
WA, USA
Your bios region should be what is determining the logo screen.
 

Tw3ek

Beginner
Joined
Jul 21, 2015
Messages
7
Reaction score
11
Okay, I just made this work on the MVS multi. I was assuming the P ROM from the release was scrambled, which is not the case. You only need it scrambled to make it work with MAME. Because of the C-ROMs not being CMC encrypted it might not even be a good idea run it on MAME with the Samsho5sp slot.

Now the question, am I missing a patch for the C-ROMs, no???

The logo is different than what it is supposed to.

Just making sure I am being clear, putting byteswapped samsho5_fe.cslot1_maincpu as "prom" straight without any changes, making crom0 from ss_unswizzle.exe and odd/even 16bit combined gave me this result. The fpga, srom, vroma0 and m1rom files are from the original Samsho 5 special.

MAYBE, I am having the wrong title screen logo because I don't have the correct srom file? Can anyone check that for me?
At the original loke test, that was the screen. the additional graphics might have just been added for this release

 

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
This is a tool to encrypt C for bootlegs

Maybe it can be adapted?

Code:
#include <stdio.h>
#include "bitswap.h"

// cthd, matrimbl, svcboot
void DoPerm(unsigned char *src, int g, int ed, int size)
{
	unsigned int idx[2][ 0x10 ] = {
		{0,1,2,3,3,4,4,5,0,1,2,3,3,4,4,5}, // cthd2003/matrimbl
		{0,1,0,1,2,3,2,3,3,4,3,4,4,5,4,5}, // svcboot
	};

	unsigned int tbl[ 6 ][ 4 ] = {
		{ 3, 0, 1, 2 },
		{ 2, 3, 0, 1 },
		{ 1, 2, 3, 0 },
		{ 0, 1, 2, 3 },
		{ 3, 2, 1, 0 },
		{ 3, 0, 2, 1 },
	};

	unsigned char dst[0x400];

	int i, j;
	for(i = 0; i < size/0x400; i++)
	{
		for(j = 0; j < 16; j++)
		{
			unsigned int *b = tbl[ idx[g][(i>>(5-g))&0xF] ];
			int ofst = BITSWAP08(j, 7, 6, 5, 4, b[3], b[2], b[1], b[0] );
			if (ed==0)memcpy( dst + j * 0x40, src + (i * 0x400) + ofst * 0x40, 0x40 ); // decrypt
			if (ed==1)memcpy( dst + ofst * 0x40, src + (i * 0x400) + j * 0x40, 0x40 ); // encrypt
		}
		memcpy (src + i * 0x400, dst, 0x400);
	}
}

// kof2002b
void kof2k2b(unsigned char* rom, int ed, int size)
{
	int t[8][10] = {
		{ 0, 8, 7, 3, 4, 5, 6, 2, 1 },
		{ 1, 0, 8, 4, 5, 3, 7, 6, 2 },
		{ 2, 1, 0, 3, 4, 5, 8, 7, 6 },
		{ 6, 2, 1, 5, 3, 4, 0, 8, 7 },
		{ 7, 6, 2, 5, 3, 4, 1, 0, 8 },
		{ 0, 1, 2, 3, 4, 5, 6, 7, 8 },
		{ 2, 1, 0, 4, 5, 3, 6, 7, 8 },
		{ 8, 0, 7, 3, 4, 5, 6, 2, 1 },
	};

	int i,j;
	unsigned char* tmp = (unsigned char*)malloc(0x8000);

	for (i = 0; i < size; i += 0x8000) {
		memcpy(tmp, rom + i, 0x8000);

		for (j = 0; j < 0x200; j++) {
			int *n = t[ (j >> 3) & 7];
			int ofst = BITSWAP16(j, 15, 14, 13, 12, 11, 10, 9, n[0], n[1], n[2], n[3], n[4], n[5], n[6], n[7], n[8]);
			if (ed==0)memcpy( rom + i + ofst * 64, tmp + j * 64, 64 ); // decrypt
			if (ed==1)memcpy( rom + i + j * 64, tmp + ofst * 64, 64 ); // encrypt
		}
	}
	free(tmp);
}

void usage()
{
	printf("Converts between encrypted and decrypted (Bootleg) C (graphics) roms\n\n");
	printf("Usage: BootCEn [type] [command] [source file] [output file]\n\n");
	printf("[type]:         0 for kog/lans2004 | 1 for matrimbl/cthd2003\n");
	printf("		2 for svcboot | 3 for kof2002b\n");
	printf("[command]:      e (for encryption) | d (for decryption)\n");
	printf("[source file]:  the file name of the rom you wish to work with\n");
	printf("[output file]:  the file name of the rom you wish to create\n");
}

int main(int argc, char **argv)
{
	int type = 0;
	int ed = 0;

	if (argc < 5)
	{
		usage();
		return (1);
	}

	sscanf(argv[1],"%d",&type);

	if ((strcmp(argv[2],"d"))&&(strcmp(argv[2],"D"))) ed = 1;
	if ((strcmp(argv[2],"e"))&&(strcmp(argv[2],"E"))) ed = 0;

	int i;
	int size = 0;
	FILE *rom_out, *rom_in;

	if ((rom_in=fopen(argv[3],"rb"))==NULL)
	{
		fprintf(stderr,"Error: cannot read %s.", argv[3]); return(1);
	}
	fseek (rom_in , 0 , SEEK_END);	size += ftell (rom_in);	rewind (rom_in);

	if ((rom_out=fopen(argv[4],"wb"))==NULL)
	{
		fprintf(stderr,"Error: cannot write to %s.", argv[4]); return(1);
	}

	unsigned char *src = (unsigned char*)malloc(size);

	if (type == 0) // kog, samsh5bl, lans2004
	{
		for (i = 0; i < size; i+=0x40)
		{
			fread (src + i + 0x20, 1, 0x20, rom_in);
			fread (src + i + 0x00, 1, 0x20, rom_in);
		}
	} else {
		fread (src, 1, size, rom_in);
		if (type == 1) DoPerm(src, 0, ed, size); // cthd2003/matrimbl
		if (type == 2) DoPerm(src, 1, ed, size); // svcboot
		if (type == 3) kof2k2b(src, ed, size);   // kof2002b
	}

	fwrite (src, 1, size, rom_out);
	fclose(rom_out);

	free (src);
}
 

l_oliveira

Professional
Joined
Jun 26, 2015
Messages
540
Reaction score
552
Location
Brazil
Your bios region should be what is determining the logo screen.
Yep, that is why I put screenshots with both japanese and english logos. Well we need to figure out how to patch the CROM and SROM then...
 

JacKc

Beginner
Joined
Jun 9, 2020
Messages
23
Reaction score
18
Location
France
As far as i know title screen will change depending which Neo-Geo Bios you are using. So normally you don't have to patch the Cx ROMs and S1 ROM but only choose Neo-Geo MVS Bios (Asia/Europe, USA or Japan) or Neo-Geo AES Bios (Japan or Asia) in Dipswitches.

Code:
// Rom information
static struct BurnRomInfo neogeoRomDesc[] = {
{ "sp-s3.sp1",         0x20000, 0x91b64be3, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT           }, //  0 MVS Asia/Europe ver. 6 (1 slot)
{ "sp-s2.sp1",         0x20000, 0x9036d879, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  1 MVS Asia/Europe ver. 5 (1 slot)
{ "sp-s.sp1",          0x20000, 0xc7f2fa45, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  2 MVS Asia/Europe ver. 3 (4 slot)
{ "sp-u2.sp1",         0x20000, 0xe72943de, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  3 MVS USA ver. 5 (2 slot)
{ "sp1-u2",            0x20000, 0x62f021f4, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  4 MVS USA ver. 5 (4 slot)
{ "sp-e.sp1",          0x20000, 0x2723a5b5, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  5 MVS USA ver. 5 (6 slot)
{ "sp1-u4.bin",        0x20000, 0x1179a30f, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  6 MVS USA (U4)
{ "sp1-u3.bin",        0x20000, 0x2025b7a2, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  7 MVS USA (U3)
{ "vs-bios.rom",       0x20000, 0xf0e8f27d, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  8 MVS Japan ver. 6 (? slot)
{ "sp-j2.sp1",         0x20000, 0xacede59C, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  9 MVS Japan ver. 5 (? slot)
{ "sp1.jipan.1024",    0x20000, 0x9fb0abe4, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 10 MVS Japan ver. 3 (4 slot)
{ "sp-45.sp1",         0x80000, 0x03cc9f6a, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 11 NEO-MVH MV1C (Asia)
{ "sp-j3.sp1",         0x80000, 0x486cb450, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 12 NEO-MVH MV1C (Japan)
{ "japan-j3.bin",      0x20000, 0xdff6d41f, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 13 MVS Japan (J3)
{ "sp1-j3.bin",        0x20000, 0xfbc6d469, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 14 MVS Japan (J3, alt)
#if !defined (ROM_VERIFY)
{ "neo-po.bin",        0x20000, 0x16d0c132, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 15 AES Japan
{ "neo-epo.bin",       0x20000, 0xd27a71f1, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 16 AES Asia
{ "neodebug.bin",      0x20000, 0x698ebb7d, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 17 Development Kit
Samurai Shodown 5 Special title screen using Neo-Geo MVS Asia/Europe ver. 6 (1 slot) bios
samsh5sp-06-13-185119.png


Samurai Shodown 5 Special title screen using Neo-geo AES Japan bios
samsh5sp-06-13-185147.png


I don't patch anything but just using different Neo-Geo bios.

Concerning samsho5pfe, it seems original ROM is only Japanese region. They have made in hurry a translation into English. So first possibility, they have modified original Cx ROMs and S1 ROM to display English tilte and subtiltes. Second possiblity, a patch is apply to original Cx and S1 when loading ROMs.

For all Neo-Geo games, normally The tiles datas for all region are sets in Cx ROMs and S1 ROM (when Cx ROMs are decrypted) or only Cx ROMs when Cx are encrypted.

Of course some Neo-Geo Games are only MVS Release (so wee need to use an emulation trick to make them running in AES mode). But all AES datas seems to be present in the ROM.

nitd MVS Mode:
nitd-06-13-191751.png


nitd AES mode using emulation:
nitd-06-13-191939.png
nitd-06-13-193028.png
nitd-06-13-191821.png


The most significant case was for Rage Of the Dragons (rotd). Before AES release was dumped, and when only MVS release was available and dumped; we need to to use a pacth code in the driver to make it running into AES mode (as rotd set was supposed to be an only MVS release).
 
Last edited:

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
and it's playable on MISTER :)))




For mister you will need Darksoft's pack with the XML.

I've replaced the prom file of samsho5s with samsh5sp.cslot1_maincpu.swap
You have to do:

$ dd if=samsh5sp.cslot1_maincpu.dec of=samsh5sp.cslot1_maincpu.swap conv=swab

And I've replaced crom0 with the following:
Used the unswizzle script got ODD and EVEN files.
Used Winhex: File tools -> unify -> word wise (16bit) -> select EVEN as first file, ODD as second file.

Thanks to l_oliveira for figuring the crom0 and ack for the unswizzle script.
 

thegreathopper

Student
Joined
Sep 25, 2016
Messages
196
Reaction score
59
Location
London England
Nice, now how to get that on a multi... specifically the other one .. cough cough :)
 

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
As far as i know title screen will change depending which Neo-Geo Bios you are using. So normally you don't have to patch the Cx ROMs and S1 ROM but only choose MVS (Asia/Europe, USA or Japan) or AES Bios (Japan or Asia) in Dipswitches.

Code:
// Rom information
static struct BurnRomInfo neogeoRomDesc[] = {
{ "sp-s3.sp1",         0x20000, 0x91b64be3, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT           }, //  0 MVS Asia/Europe ver. 6 (1 slot)
{ "sp-s2.sp1",         0x20000, 0x9036d879, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  1 MVS Asia/Europe ver. 5 (1 slot)
{ "sp-s.sp1",          0x20000, 0xc7f2fa45, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  2 MVS Asia/Europe ver. 3 (4 slot)
{ "sp-u2.sp1",         0x20000, 0xe72943de, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  3 MVS USA ver. 5 (2 slot)
{ "sp1-u2",            0x20000, 0x62f021f4, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  4 MVS USA ver. 5 (4 slot)
{ "sp-e.sp1",          0x20000, 0x2723a5b5, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  5 MVS USA ver. 5 (6 slot)
{ "sp1-u4.bin",        0x20000, 0x1179a30f, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  6 MVS USA (U4)
{ "sp1-u3.bin",        0x20000, 0x2025b7a2, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  7 MVS USA (U3)
{ "vs-bios.rom",       0x20000, 0xf0e8f27d, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  8 MVS Japan ver. 6 (? slot)
{ "sp-j2.sp1",         0x20000, 0xacede59C, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, //  9 MVS Japan ver. 5 (? slot)
{ "sp1.jipan.1024",    0x20000, 0x9fb0abe4, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 10 MVS Japan ver. 3 (4 slot)
{ "sp-45.sp1",         0x80000, 0x03cc9f6a, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 11 NEO-MVH MV1C (Asia)
{ "sp-j3.sp1",         0x80000, 0x486cb450, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 12 NEO-MVH MV1C (Japan)
{ "japan-j3.bin",      0x20000, 0xdff6d41f, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 13 MVS Japan (J3)
{ "sp1-j3.bin",        0x20000, 0xfbc6d469, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 14 MVS Japan (J3, alt)
#if !defined (ROM_VERIFY)
{ "neo-po.bin",        0x20000, 0x16d0c132, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 15 AES Japan
{ "neo-epo.bin",       0x20000, 0xd27a71f1, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 16 AES Asia
{ "neodebug.bin",      0x20000, 0x698ebb7d, BRF_ESS | BRF_PRG | BRF_BIOS | BRF_SELECT | BRF_OPT }, // 17 Development Kit
Samurai Shodown 5 Special title screen using MVS Asia/Europe ver. 6 (1 slot) bios
samsh5sp-06-13-185119.png


Samurai Shodown 5 Special title screen using AES Japan) bios
samsh5sp-06-13-185147.png


I don't patch anything but just using different Neo-Geo bios.
Yes but the removal of the Yuki Enterprise and writting perfect on the title screen is done by a patch.

Here's a picture of the tittle screen when playing the game on PC using the collection:

 

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
and it's playable on MISTER :)))
NIce work! Is it fully playable without issues?
Yes but the removal of the Yuki Enterprise and writting perfect on the title screen is done by a patch.
Wished SNK didn't remove Yuki's involvement. I find that disrepectful to the people who did the original work.
Seems to be just fine

EDIT:
Made some changes to romset.xml (needed for MISTER) so you can have both.
Called the folder samsho5fe the same as the inner files of the collection.

https://pastebin.com/MsqQKPAH


Code:
 <romset name="samsh5fe" pcm="1" altname="Samurai Shodown V Perfect" publisher="SNK" year="2004" ram="2"/>
 
Last edited:

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
Nice, now how to get that on a multi... specifically the other one .. cough cough :)
by the way... good luck with that Neobuilder software, I tried that to create a .neo file for the MISTER before giving up and going with the Darksoft supported format, as I should have done since the beginning.

You will have the ask the devs to add the CRC to it so you can finally build a .neo file.
In the meanwhile people with MISTER and the Darksoft multi can already enjoy it :)
 

JacKc

Beginner
Joined
Jun 9, 2020
Messages
23
Reaction score
18
Location
France
So they have made a patch as suspected (ugly patch on a side note). Original ROM is only JAPAN. Too sad they have removed YUKI Copyright and made this ugly logo for others regions than JAPAN...
 
Last edited:

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
So they have made a pacth as suspected. Original ROM is only JAPAN. Too sad they have remove YUKI Copyright...
Patch only for the title screen.

Original rom has AES and MVS mode.
English and Japanese are both present.

Just played now in AES English mode and the text was there during fight scenes.
Including options and training menu.
 

JacKc

Beginner
Joined
Jun 9, 2020
Messages
23
Reaction score
18
Location
France
Nice!! Curious to know which emulator (or different software) we are using to play it :)
 

fandangos

Student
Joined
Feb 5, 2016
Messages
91
Reaction score
76
Location
Unespecified for privacy reasons
Nice!! Curious to know which emulator (or different software) we are using to play it :)
None because for it to work on FBA or MAME we need to encrypt the C roms back which is not possible at the moment.

Or, we can try to talk to mame devs to remove the decryption for this rom, still it will take a while for emulators.

MISTER and the Multi require decrypted roms that's why it works.


EDIT: By the way, it seems the game never was called Samurai Shodown 5 Perfect but still named 5 Special.
It seems the new name was given during the making of this collection.

That title screen you see is the correct one, the one in the collection is just a makeover.
 

JacKc

Beginner
Joined
Jun 9, 2020
Messages
23
Reaction score
18
Location
France
Not agree with you. We could easily make a driver to run samsho5pfe even if it is using decrypted Cx ROMs, M1 decrypted ROM, Vx decrypted ROM and S1 ROM. (of course if we have the rom for testing purpose).

See Samurai Shodown V ◦ サムライスピリッツ零 (hack of XBOX version) [samsho5x]

This set is using decrypted ROMs :

samsho5x-06-13-203716.png
samsho5x-06-13-203731.png
samsho5x-06-13-203734.png


samsho5x-06-13-203752.png
samsho5x-06-13-203831.png
samsho5x-06-13-203858.png



Also we have great devs who are probaly able to make some code to encrypt the CX ROMs like they have to be (if not already done...)
 

ack

Enthusiast
Joined
Apr 21, 2018
Messages
109
Reaction score
154
Location
WA, USA
Not agree with you. We could easily make a driver to run samsho5pfe even if it is using decrypted Cx ROMs, M1 decrypted ROM, Vx decrypted ROM and S1 ROM. (of course if we have the rom for testing purpose).
I think this is the best thing to do. Its a waste of time to try and encrypt these decrypted roms just so you can use the existing samsh5sp driver.
 
Top