its better , but something is missing i think because graphics again corrupted
here complete driver i have try
in drivers/neodrv.c
ROM_START( ms5boot ) /* Bootleg / Hack of Metal Slug 5 */
ROM_REGION( 0x500000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "268-p1bl.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "268-p2bl.bin", 0x100000, 0x200000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
ROM_LOAD16_WORD_SWAP( "268-p3bl.bin", 0x300000, 0x200000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )
NEO_SFIX_128K( "268-s1bl.bin", CRC(52a8c09b) SHA1(3a90d8e44aa7cbc79945f8ece0e2fb9ce3e5a4c7) )
NEO_BIOS_AUDIO_256K( "268-m1bl.bin", CRC(792e07c1) SHA1(117516e8ec9026c7682ab27857aab6639bef5835) )
ROM_REGION( 0x1000000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "268-v1bl.bin", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) )
ROM_LOAD( "268-v2bl.bin", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) )
ROM_LOAD( "268-v3bl.bin", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) )
ROM_LOAD( "268-v4bl.bin", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) )
NO_DELTAT_REGION
ROM_REGION( 0x4000000, NEOGEO_REGION_SPRITES, 0 )
ROM_LOAD16_BYTE( "268-c1bl.bin", 0x0000000, 0x800000, CRC(969c0d62) SHA1(de3c5cfa980cca2fab0416ac0d292948b5d4c9c3) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c2bl.bin", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198ee5c7c2c7563b49ebd9f7ba95d9b0b303f6c) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c3bl.bin", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443ea4c1bab45f1977a390eb7e1a0163915110) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c4bl.bin", 0x1000001, 0x800000, CRC(e1b1131b) SHA1(68a36d336582069e79ad481638d92f57c4cd6523) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c5bl.bin", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4ae15d29ba979601598eddf8905072fe1d9e0a98) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c6bl.bin", 0x2000001, 0x800000, CRC(6de89589) SHA1(86a6c036bf51af516fea83a30874026ec1586a83) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c7bl.bin", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30f3280fe527098ecf46541cc645a59b366105ea) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c8bl.bin", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(b5d0d81d5cc624538b0651c568295e578a1330d1) ) /* Plane 2,3 */
ROM_END
DRIVER_INIT( ms5boot )
{
neogeo_bootleg_text_decrypt(1);
driver_init_neogeo(machine);
ms5boot_install_protection();
}
GAMEB( 2003, ms5boot, mslug5, neogeo, neogeo, neogeo, ms5boot, ROT0, "bootleg", "Metal Slug 5 (Bootleg Set 2)", GAME_NOT_WORKING )
in includes/neogeo.h
void neogeo_bootleg_text_decrypt(INT32 value);
void ms5boot_install_protection(void);
in machine/neoboot.c
void neogeo_bootleg_text_decrypt(INT32 value)
{
INT32 i, ofst, size = memory_region_length( NEOGEO_REGION_FIXED_LAYER_CARTRIDGE );
UINT8 *srom = memory_region( NEOGEO_REGION_FIXED_LAYER_CARTRIDGE );
UINT8 *tmp = malloc(size);
switch (value) {
// Original code for MAME by fataku
// for kf2k1pla
case 0: {
for (i = 0; i < size; i++) {
srom[i] = BITSWAP8(srom[i], 3, 2, 4, 5, 1, 6, 0, 7);
}
break;
}
// Original code from mame traduced by FerchogtX
// for ms5boot, svcboot, svcplusa, more
case 1: {
memcpy(tmp + 0x000000, srom + 0x010000, 0x010000);
memcpy(tmp + 0x010000, srom + 0x000000, 0x010000);
memcpy(srom, tmp, size);
break;
}
// Thanks also to HappyASR for the info
// for ms5plus, svcplus, kf2k3bl, more
case 2: {
for (i = 0; i < size; i+= 0x10) {
memcpy(tmp + i + 0, srom + i + 8, 8);
memcpy(tmp + i + 8, srom + i + 0, 8);
}
memcpy (srom, tmp, size);
break;
}
// Original code from MAME -- http://www.mame.net
// for cthd2003
case 3: {
memcpy(tmp + 0 * 0x8000, srom + 0 * 0x8000, 0x8000);
memcpy(tmp + 1 * 0x8000, srom + 2 * 0x8000, 0x8000);
memcpy(tmp + 2 * 0x8000, srom + 1 * 0x8000, 0x8000);
memcpy(tmp + 3 * 0x8000, srom + 3 * 0x8000, 0x8000);
memcpy(srom, tmp, size);
break;
}
// Original code by HalRIN
// for ct2k3sp
case 4: {
memcpy(tmp, srom, size);
for (i = 0; i < size; i++) {
ofst = BITSWAP24((i & 0x1ffff),23,22,21,20,19,18,17,3,0,1,4,2,13,14,16,15,5,6,11,10,9,8,7,12);
ofst += (i >> 17) << 17;
srom[i] = tmp[ofst];
}
memcpy(tmp, srom, size);
memcpy(srom + 0x08000, tmp + 0x10000, 0x8000);
memcpy(srom + 0x10000, tmp + 0x08000, 0x8000);
memcpy(srom + 0x28000, tmp + 0x30000, 0x8000);
memcpy(srom + 0x30000, tmp + 0x28000, 0x8000);
break;
}
// Converted by Jimmy_Page (www.neofighters.com)
// for svcsplus, kof10thu, kf2k2spr, more
case 5: {
for (i = 0; i < size; i++) {
srom[i] = BITSWAP8(srom[i], 7, 6, 0, 4, 3, 2, 1, 5);
}
break;
}
// for kof2k2bl
case 6: {
kof2002b_gfx_decrypt(srom, 0x20000);
break;
}
// for kf2k5uni
case 7: {
for(i = 0; i < size; i++) {
srom[i] = BITSWAP8(srom[i], 4, 5, 6, 7, 0, 1, 2, 3);
}
break;
}
}
free(tmp);
}
static WRITE16_HANDLER( mslug5_bankswitch_w )
{
if (offset == 1) {
neogeo_set_main_cpu_bank_address( data << 8 );
}
}
void ms5boot_install_protection(void)
{
// special ROM banking handler
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2fffff, 0, 0, mslug5_bankswitch_w);
}
thank you