Hello,
Thank you for iq_132 & neo04 help!
However ... ...still have some problems!!!!!!!!!!!!!!!!! :idiot: (i post the code below based on neo04 update)
After the roms were loaded, screen returned back to emulator(not going into the games)!
I did try to use the s1 rom (instead getting data from Cx roms) to follow exactly what neo04 provided, but got the same problem(couldn't go into the games)! :idiot:
Actually i don't think there are problems about s1 roms code (from Cx roms or individual s1 rom) because the drivers are working when i use encrypted p roms!
So the problem(s) should be about the driver for p roms
could be this part:
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "268-p1d.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "268-p2d.bin", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
or more likely be this part:
px_fix ()
...
...
Please help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ROM_START( mslug5nd )
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "268-p1d.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "268-p2d.bin", 0x100000, 0x400000, CRC(768ee64a) SHA1(76a65a69aee749758a2101aabdd44f3404838b54) )
ROM_REGION( 0x20000, REGION_GFX1, 0 )
ROM_FILL( 0x000000, 0x20000, 0 )
ROM_REGION( 0x20000, REGION_GFX2, 0 )
ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) )
NEO_BIOS_SOUND_512K( "268-m1_decrypted.bin", CRC(2f621a2b) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) )
ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "268-v1d.bin", 0x000000, 0x800000, CRC(7ff6ca47) SHA1(e36c4e6a349dd9fd38d1a36b6760bbd943c2a42f) )
ROM_LOAD( "268-v2d.bin", 0x800000, 0x800000, CRC(696cce3b) SHA1(538d4a25befa4ffd25a48df97380469c13980f7a) )
NO_DELTAT_REGION
ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "268-c1d.bin", 0x0000000, 0x800000, CRC(e8239365) SHA1(e0a75902a783110049730b66ad3cbccdd804bf62) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c2d.bin", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862ac31ce9570529b33e6f58ada0ac867a442679) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c3d.bin", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5d029c92688384eafd65ad711a2954d0b86a3163) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c4d.bin", 0x1000001, 0x800000, CRC(9c00160d) SHA1(c612102f9cd288bba4c245b5855d795e4362b217) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c5d.bin", 0x2000000, 0x800000, CRC(38754256) SHA1(744d91d041998ca27ee2781188746797c65377bd) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c6d.bin", 0x2000001, 0x800000, CRC(59d33e9c) SHA1(ed7f5c7db4c35ec5a7db0ad5436110b3fe80b89a) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "268-c7d.bin", 0x3000000, 0x800000, CRC(c9f8c357) SHA1(7064224afa887f57245f5479b0b46228539a131b) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "268-c8d.bin", 0x3000001, 0x800000, CRC(fafc3eb9) SHA1(f4f73194cc7fd151be3ca2561f993b5be7628369) ) /* Plane 2,3 */
ROM_END
ROM_START( svcnd )
ROM_REGION( 0x600000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "269-p1d.bin", 0x000000, 0x200000, CRC(c56087c2) SHA1(24294ee842759b93e9149b641477748fd7ff1aeb) )
ROM_LOAD16_WORD_SWAP( "269-p2d.bin", 0x200000, 0x400000, CRC(2d32879b) SHA1(a908cdc715b13dc76d23611359e7f3637b1123ba) )
ROM_REGION( 0x80000, REGION_GFX1, 0 )
ROM_FILL( 0x000000, 0x80000, 0 )
ROM_REGION( 0x20000, REGION_GFX2, 0 )
ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) )
NEO_BIOS_SOUND_128K( "269-m1d.bin", CRC(fd4f0ff9) SHA1(e97e864aaa4789d854363512986e80c0606da996) )
ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "269-v1d.bin", 0x000000, 0x800000, CRC(ff64cd56) SHA1(e2754c554ed5ca14c2020c5d931021d5ac82660c) )
ROM_LOAD( "269-v2d.bin", 0x800000, 0x800000, CRC(a8dd6446) SHA1(8972aab271c33f8af344bffe6359d9ddc4b8af2e) )
NO_DELTAT_REGION
ROM_REGION( 0x4000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "269-c1d.bin", 0x0000000, 0x800000, CRC(465d473b) SHA1(0b2be2b2657c2ae021ec91515d1d6306179751d5) )
ROM_LOAD16_BYTE( "269-c2d.bin", 0x0000001, 0x800000, CRC(3eb28f78) SHA1(df1b096fe95796db1515b69f74266ed13dd9ee56) )
ROM_LOAD16_BYTE( "269-c3d.bin", 0x1000000, 0x800000, CRC(f4d4ab2b) SHA1(a19788435173540469fe5d07429a83dde6d701a0) )
ROM_LOAD16_BYTE( "269-c4d.bin", 0x1000001, 0x800000, CRC(a69d523a) SHA1(98d8dac2e40f71b5b8426d3c77476a0a20783181) )
ROM_LOAD16_BYTE( "269-c5d.bin", 0x2000000, 0x800000, CRC(ba2a7892) SHA1(eed45e1330dcc9f610598dc53977bf3a81dd161a) )
ROM_LOAD16_BYTE( "269-c6d.bin", 0x2000001, 0x800000, CRC(37371ca1) SHA1(8aaa1b9ea34470085d9944c9ad64cfb0ffe09859) )
ROM_LOAD16_BYTE( "269-c7d.bin", 0x3000000, 0x800000, CRC(56ac5fb9) SHA1(74cb0d57060d25e35f76a9820f607633bd1b9c2c) )
ROM_LOAD16_BYTE( "269-c8d.bin", 0x3000001, 0x800000, CRC(de99e613) SHA1(f28c6af4a31a937e5b441d4b860e3ccca725f27a) )
ROM_END
static void mslug5nd_px_fix(void)
{
UINT8 *rom = memory_region(REGION_CPU1);
UINT8 *dst = malloc(0x600000);
int i;
unsigned int sec[]={0x000000,0x500000,0x100000,0x200000,0x300000,0x400000}; // 268-p2d.bin crc:768ee64a
//unsigned int sec[]={0x000000,0x500000,0x100000,0x300000,0x200000,0x400000}; // 268-p2d.bin crc:84def63e (bootleg)
memcpy( dst, rom, 0x600000 );
for( i=0; i<6; ++i ){
memcpy( rom+i*0x100000, dst+sec
, 0x100000 );
}
free(dst);
}
DRIVER_INIT( mslug5nd )
{
mslug5nd_px_fix();
neogeo_sfix_decrypt();
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, pvc_prot_r);
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, pvc_prot_w);
init_neogeo();
}
static void svcnd_px_fix( void )
{
int size = memory_region_length(REGION_CPU1);
UINT8 *rom = memory_region(REGION_CPU1);
UINT8 *dst = malloc( size );
int i;
unsigned int sec[]={0x000000,0x600000,0x100000,0x200000,0x300000,0x400000,0x500000};
memcpy( dst, rom, size );
for( i=0; i<7; ++i ){
memcpy( rom+i*0x100000, dst+sec, 0x100000 );
}
free(dst);
}
static void svcnd_sx_decrypt( void )
{
UINT8 *s1 = memory_region( REGION_GFX1 );
size_t s1_size = memory_region_length( REGION_GFX1 );
int i;
extern int neogeo_fix_bank_type;
int tx_size = memory_region_length(REGION_GFX1);
int rom_size = memory_region_length(REGION_GFX3);
UINT8 *src = memory_region(REGION_GFX3)+rom_size-tx_size;
UINT8 *dst = memory_region(REGION_GFX1);
for (i = 0;i < tx_size;i++)
dst = src[(i & ~0x1f) + ((i & 7) << 2) + ((~i & >> 2) + ((i & 0x10) >> 4)];
for( i = 0; i < s1_size; i++ ){
s1[ i ] = BITSWAP8( s1[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); }
}
DRIVER_INIT( svcnd )
{
svcnd_px_fix();
svcnd_sx_decrypt();
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, pvc_prot_r);
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, pvc_prot_w);
neogeo_fix_bank_type = 2;
init_neogeo();
}
GAMEB( 2003, mslug5nd, mslug5, neogeo, neogeo, neogeo, mslug5nd, ROT0, "SNK Playmore", "Metal Slug 5 (fully decrypted)" )
GAMEB( 2003, svcnd, svcchaos, neogeo, neogeo, neogeo, svcnd, ROT0, "SNK Playmore", "SNK Vs. CAPCOM SVC CHAOS (fully decrypted)" )