Author Topic: Help: mslug5nd & svcnd for mame  (Read 17162 times)

Offline oliverkof

  • Newbies
  • *
  • Posts: 13
  • Karma: +0/-0
Help: mslug5nd & svcnd for mame
« on: September 21, 2005, 09:56:25 PM »
Hello,

Here below are 2 drivers for mslug5nd & svcnd. It works ok.

But when i try to use the decrypted p rom and remove:
   mslug5_px_decrypt();
   svcchaos_px_decrypt();

It doesn't work at all!!!!!!!!!!!!!!!!!! :idiot: :redface:

Anyone can help me!!!!!!!!!!!!!!!!! :eek:


Code: [Select]
ROM_START( mslug5nd )
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD32_WORD_SWAP( "268-p1.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
ROM_LOAD32_WORD_SWAP( "268-p2.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
//      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(e88f645b4935157608c32843f203180c796f5304) )

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( 0x2000000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "269-p1.bin", 0x000000, 0x2000000, CRC(432cfdfc) SHA1(19b40d32188a8bace6d2d570c6cf3d2f1e31e379) )
// 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

DRIVER_INIT( mslug5nd )
{
mslug5_px_decrypt();
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();
}


DRIVER_INIT( svcnd )
{
int i;
UINT8 *s1;
size_t s1_size;

        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[i] = src[(i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];

s1 = memory_region( REGION_GFX1 );
s1_size = memory_region_length( REGION_GFX1 );

for( i = 0; i < s1_size; i++ ){
s1[ i ] = BITSWAP8( s1[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); }

svcchaos_px_decrypt();
neogeo_fix_bank_type = 2;
init_neogeo();

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);

}

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)" )
« Last Edit: September 21, 2005, 11:34:58 PM by iq_132 »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Help: mslug5nd & svcnd for mame
« Reply #1 on: September 21, 2005, 11:41:47 PM »
Replace these:
   mslug5_px_decrypt();
   svcchaos_px_decrypt();

with this:
Code: [Select]
// hack the decrypted P data to fix bankswitch offsets
UINT8 *SRC = memory_region( REGION_CPU1 );
memcpy (src + 0x200000, src + 0x100000, 0x500000);

This should work, defintely let me know if it doesn't...


Offline oliverkof

  • Newbies
  • *
  • Posts: 13
  • Karma: +0/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #2 on: September 22, 2005, 09:35:05 PM »
iq_132, Thank you very much!

Based on your suggestion, i arrange the drivers as below:

But it still doesn't work! :idiot:
After roms has been loaded, it just returns back to the emulator (not in the game) :idiot:

What i need to adjust further???  :idiot: :idiot: :idiot:

Drivers:

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(e88f645b4935157608c32843f203180c796f5304) )

   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

void decrypted_p(void)
{
   UINT8 *src = memory_region( REGION_CPU1 );
   memcpy (src + 0x200000, src + 0x100000, 0x500000);
}

DRIVER_INIT( mslug5nd )
{
   decrypted_p();
   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();
}


DRIVER_INIT( svcnd )
{
   int i;
   UINT8 *s1;
   size_t s1_size;

   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 & 8) >> 2) + ((i & 0x10) >> 4)];

   s1 = memory_region( REGION_GFX1 );
   s1_size = memory_region_length( REGION_GFX1 );

   for( i = 0; i < s1_size; i++ ){
      s1[ i ] = BITSWAP8( s1[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); }

   decrypted_p();
   neogeo_fix_bank_type = 2;
   init_neogeo();

   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);

}

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)" )

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #3 on: September 22, 2005, 10:54:50 PM »
/* driver updated by neo04 */
DRIVER_INIT( mslug5nd )
{
        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);

   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();
}

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #4 on: September 22, 2005, 10:55:58 PM »
/* driver updated by neo04 */
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 ) /* using 512k s1 */
{
   UINT8 *src = memory_region(REGION_GFX1);
   UINT8 *buf = malloc(0x80000);
        int i;
   unsigned int sec[]={0x60000,0x40000,0x20000,0x00000};

   memcpy( buf, src, 0x80000 );
   for ( i=0; i<4; ++i ){
      memcpy( src+i*0x20000, buf+sec, 0x20000 );
   }
   free(buf);
}

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();
}

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Help: mslug5nd & svcnd for mame
« Reply #5 on: September 23, 2005, 08:41:18 AM »
I thought it would be better to use the fully decrypted sets for those games

IQ Forum Member

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #6 on: September 23, 2005, 09:56:31 AM »
fully decrypted sets? meaning the hacked p roms?

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Help: mslug5nd & svcnd for mame
« Reply #7 on: September 23, 2005, 06:25:55 PM »
Well it seems thats what he is wanting to do .

Anyway why does the P decrypt code need a fix ?
IQ Forum Member

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #8 on: September 23, 2005, 09:36:12 PM »
heh.. actually its not fully decrypted :P

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Help: mslug5nd & svcnd for mame
« Reply #9 on: September 23, 2005, 10:28:59 PM »
But there is sets that are .
IQ Forum Member

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #10 on: September 23, 2005, 10:43:06 PM »
for mslug5? crc pls.. i think its a hack... or maybe iq's fix with reset bug.. :)

Offline oliverkof

  • Newbies
  • *
  • Posts: 13
  • Karma: +0/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #11 on: September 23, 2005, 11:06:37 PM »
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 :confused:
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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :wink:

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 & 8) >> 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)" )

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #12 on: September 24, 2005, 12:04:26 AM »
see this:
static void mslug5nd_px_fix(void)
{
   UINT8 *rom = memory_region(REGION_CPU1);
        UINT8 *dst = malloc(0x600000);

so, the driver should be:
Code: [Select]
ROM_START( mslug5nd )
   ROM_REGION( 0x600000, REGION_CPU1, 0 )

not 0x500000, coz junk rom was loaded in the second chunk;
unsigned int sec[]={0x000000,0x500000,0x100000,0x200000,0x300000,0x400000}; // 268-p2d.bin crc:768ee64a

« Last Edit: September 24, 2005, 12:07:50 AM by neo04 »

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: Help: mslug5nd & svcnd for mame
« Reply #13 on: September 24, 2005, 12:07:05 AM »
same goes for svcnd.. junk 1mb data inserted in the 2nd chunk...
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};

so, driver should be updated:
Code: [Select]
ROM_START( svcnd )
   ROM_REGION( 0x700000, REGION_CPU1, 0 )

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Help: mslug5nd & svcnd for mame
« Reply #14 on: September 24, 2005, 06:29:42 AM »
for mslug5? crc pls.. i think its a hack... or maybe iq's fix with reset bug.. :)

Games like mslug5 That are fully decrypted are hacks anyway .
Anyway this set does not seem to have a reset bug .
Where is it meant to reset ?


Code: [Select]
ROM_START( mslug5n )
        ROM_REGION( 0x600000, REGION_CPU1, 0 )
        ROM_LOAD16_WORD_SWAP( "268-p1d.bin", 0x000000, 0x600000, CRC(3b4eda6b) SHA1(e38a70bb8d1de33a7e68b5e92b65b5fabc7db009) )
       
        NEO_SFIX_128K( "268-s1.bin", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) )

        NEO_BIOS_SOUND_256K( "268-m1d.bin", CRC(6866d696) SHA1(3638b072e44277a6bffea5a78a915a14c6afcba0) )

        ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
        ROM_LOAD( "268-v1d.bin", 0x000000, 0x800000, CRC(14848c5c) SHA1(8f67daa54738f8b217cce1f1d0a7872fd06d91b6) )
        ROM_LOAD( "268-v2d.bin", 0x800000, 0x800000, CRC(696cce3b) SHA1(538d4a25befa4ffd25a48df97380469c13980f7a) )

        NO_DELTAT_REGION

        ROM_REGION( 0x4000000, REGION_GFX3, 0 )
/* decrypted */
        ROM_LOAD16_BYTE( "268-c1d.bin", 0x0000000, 0x800000, CRC(969C0D62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "268-c2d.bin", 0x0000001, 0x800000, CRC(C69AE867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "268-c3d.bin", 0x1000000, 0x800000, CRC(D7BEAEAF) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "268-c4d.bin", 0x1000001, 0x800000, CRC(899fb2af) SHA1(a06a424c813c1b4f922c5404405779f605c90a06) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "268-c5d.bin", 0x2000000, 0x800000, CRC(2FA1A5AD) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "268-c6d.bin", 0x2000001, 0x800000, CRC(6DE89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "268-c7d.bin", 0x3000000, 0x800000, CRC(97BD0C0A) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "268-c8d.bin", 0x3000001, 0x800000, CRC(C0D5BC20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) ) /* Plane 2,3 */
ROM_END
« Last Edit: September 24, 2005, 06:42:10 AM by James33 »
IQ Forum Member