Author Topic: I need some help with my old mslug5nd driver...  (Read 18719 times)

Offline Ashura-X

  • Member
  • ***
  • Posts: 138
  • Karma: +0/-0
I need some help with my old mslug5nd driver...
« on: June 24, 2007, 09:21:52 AM »
After these lots of changes on neogeo stuff at MAME, my old driver doesn´t works properly anymore. The compiler alerts about a memory region variable and I dunno where put that on the code.

Code: [Select]
ROM_START( mslug5nd )
ROM_REGION( 0x800000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "268-p1n.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "268-p2n.bin", 0x100000, 0x400000, CRC(84def63e) SHA1(fddd68e8879d6f5c1aac42997ff2245ea54d5869) )

ROM_Y_ZOOM

ROM_REGION( 0x20000, NEOGEO_REGION_FIXED_LAYER_CARTRIDGE, 0 )
ROM_FILL(                 0x000000, 0x20000, 0 )
ROM_REGION( 0x20000, NEOGEO_REGION_FIXED_LAYER_BIOS, 0 )
ROM_LOAD( "sfix.sfx",  0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) )

NEO_BIOS_AUDIO_128K( "268-m1nd.bin", CRC(6FA01C9A) SHA1(3DAB7593BFCCE318D22EC3DF672EE3B4AB73DCF5) )

ROM_REGION( 0x1000000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "268-v1nd.bin", 0x000000, 0x400000, CRC(dc7f03f0) SHA1(e1e31dcaff1f8d2c4b2d657aa856a60771d82c26) )
ROM_LOAD( "268-v2nd.bin", 0x400000, 0x400000, CRC(eeb7c926) SHA1(4d71f59948bdc5ed2e6daf101f16fd979e1ab193) )
ROM_LOAD( "268-v3nd.bin", 0x800000, 0x400000, CRC(02fd519e) SHA1(6fbda5bf8dbf52bc110aba7b9d20b24bdc2fe0d7) )
ROM_LOAD( "268-v4nd.bin", 0xc00000, 0x400000, CRC(d7c67794) SHA1(345dcbf76b25b2fbd10bcaf08ee395da0a52c5ce) )

NO_DELTAT_REGION

ROM_REGION( 0x4000000, NEOGEO_REGION_SPRITES, 0 )
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(E1B1131B) SHA1(68A36D336582069E79AD481638D92F57C4CD6523) ) /* 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

Code: [Select]
/* Metal Slug 5 2nd driver_init */

int ms5_bank_offset = 0;

static WRITE16_HANDLER( mslug5_calc_bankoffset_w )
{
ms5_bank_offset = (data>>12)%0x03;
}

static WRITE16_HANDLER( mslug5_bankswitch_w )
{
neogeo_set_cpu1_second_bank( (neogeo_ram16[0x10/2] + ms5_bank_offset) << 20 );
}

DRIVER_INIT( mslug5nd )
{
/* the S data comes from the end fo the C data */
{
int i;
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)];
}

memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff1, 0, 0, mslug5_bankswitch_w);
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff2, 0x2ffff3, 0, 0, mslug5_calc_bankoffset_w);

driver_init_neogeo(machine);
}

The problems is on the neogeo_set_cpu1_second_bank( (neogeo_ram16[0x10/2] + ms5_bank_offset) << 20 );  mainly on neogeo_ram16.
Any tip guys?

Thx for the help.
« Last Edit: June 25, 2007, 05:19:58 PM by Ashura-X »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: I need some help with my old mslug5nd driver...
« Reply #1 on: June 25, 2007, 05:16:38 AM »
Not tested, but this should work.
Code: [Select]
static WRITE16_HANDLER( mslug5_bankswitch_w )
{
if (offset == 1)
{
neogeo_set_main_cpu_bank_address(data << 8);
}
}

memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff2, 0, 0, mslug5_bankswitch_w);

You need ONLY this.


Offline novaa

  • Newbies
  • *
  • Posts: 10
  • Karma: +0/-1
Re: I need some help with my old mslug5nd driver...
« Reply #2 on: June 25, 2007, 10:04:44 AM »
Hi all i need help too for a variant game of mslug5, ms5boot
the driver is already on the forum but dont work too now with latest source
Code: [Select]
ROM_START( ms5boot ) /* Bootleg / Hack of Metal Slug 5 */
ROM_REGION( 0x500000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "ms5-p1.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "ms5-p2.bin", 0x100000, 0x200000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
ROM_LOAD16_WORD_SWAP( "ms5-p3.bin", 0x300000, 0x200000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )

NEO_SFIX_128K( "ms5-s1.bin", CRC(52a8c09b) SHA1(3a90d8e44aa7cbc79945f8ece0e2fb9ce3e5a4c7) )

        NEO_BIOS_SOUND_256K( "ms5-m1.bin", CRC(792e07c1) SHA1(117516e8ec9026c7682ab27857aab6639bef5835) )

        ROM_REGION( 0x1000000, REGION_SOUND1, 0 )
        ROM_LOAD( "ms5-v1.bin", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) )
ROM_LOAD( "ms5-v2.bin", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) )
ROM_LOAD( "ms5-v3.bin", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) )
ROM_LOAD( "ms5-v4.bin", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) )

        NO_DELTAT_REGION

        ROM_REGION( 0x4000000, REGION_GFX3, 0 )
        ROM_LOAD16_BYTE( "ms5-c1.bin", 0x0000000, 0x800000, CRC(969c0d62) SHA1(de3c5cfa980cca2fab0416ac0d292948b5d4c9c3) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c2.bin", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198ee5c7c2c7563b49ebd9f7ba95d9b0b303f6c) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c3.bin", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443ea4c1bab45f1977a390eb7e1a0163915110) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c4.bin", 0x1000001, 0x800000, CRC(e1b1131b) SHA1(68a36d336582069e79ad481638d92f57c4cd6523) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c5.bin", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4ae15d29ba979601598eddf8905072fe1d9e0a98) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c6.bin", 0x2000001, 0x800000, CRC(6de89589) SHA1(86a6c036bf51af516fea83a30874026ec1586a83) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c7.bin", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30f3280fe527098ecf46541cc645a59b366105ea) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c8.bin", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(b5d0d81d5cc624538b0651c568295e578a1330d1) ) /* Plane 2,3 */
ROM_END
Code: [Select]
DRIVER_INIT( ms5boot )
{
neogeo_bootleg_text_decrypt(1);
init_neogeo();
ms5boot_install_protection();
}
Code: [Select]
void neogeo_bootleg_text_decrypt(INT32 value)
{
INT32 i, ofst, size = memory_region_length(REGION_GFX1);
UINT8 *srom = memory_region(REGION_GFX1);
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;
}
// Thanks to IQ_132 -- http://neosource.1emu.net/
// for kof2k2bl
case 6: {
kof2k2bl_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);
}
Code: [Select]
/* Metal Slug 5 (bootleg) */
int ms5_bank_offset = 0;

static WRITE16_HANDLER( ms5boot_calc_bankoffset_w )
{
         ms5_bank_offset = (data>>12)%0x03;
}

static WRITE16_HANDLER( ms5boot_bankswitch_w )
{
neogeo_set_cpu1_second_bank( (neogeo_ram16[0x10/2] + ms5_bank_offset) << 20 );
}

void ms5boot_install_protection(void)
{
// special ROM banking handler
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff1, 0, 0, ms5boot_bankswitch_w);

// additional protection
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff2, 0x2ffff3, 0, 0, ms5boot_calc_bankoffset_w);
}
i have try what you have write for old mslug5 request but graphics are corrupted
i hope you have a solution for me , thank you

Offline Ashura-X

  • Member
  • ***
  • Posts: 138
  • Karma: +0/-0
Re: I need some help with my old mslug5nd driver...
« Reply #3 on: June 25, 2007, 05:08:52 PM »
Not tested, but this should work.
Code: [Select]
static WRITE16_HANDLER( mslug5_bankswitch_w )
{
if (offset == 1)
{
neogeo_set_main_cpu_bank_address(data << 8);
}
}

memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff2, 0, 0, mslug5_bankswitch_w);

You need ONLY this.

Well.. that not worked...

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: I need some help with my old mslug5nd driver...
« Reply #4 on: June 26, 2007, 01:15:02 AM »
My mslug5nd uses more or less parts of the mslug5 init.

Code: [Select]
DRIVER_INIT( mslug5nd )
{
        mslug5_decrypt_68k();
mslug5nd_sx_decrypt();
neo_pcm2_swap(2);
init_neogeo(machine);
install_pvc_protection();
}


But my rom set does not match with yours.

Code: [Select]
ROM_START( mslug5nd )
        ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD32_WORD_SWAP( "268-p1cr.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
ROM_LOAD32_WORD_SWAP( "268-p2cr.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
       
        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_64K( "268-m1_decrypted.bin",  CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )

        ROM_REGION( 0x1000000, REGION_SOUND1, 0 )
/* Encrypted */
ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )

        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: June 26, 2007, 01:17:15 AM by James33 »
IQ Forum Member

Offline novaa

  • Newbies
  • *
  • Posts: 10
  • Karma: +0/-1
Re: I need some help with my old mslug5nd driver...
« Reply #5 on: June 26, 2007, 02:22:22 AM »
because my set is an old bootleg , not a decrypted set,
the driver for ms5boot is already posted by FerchogtX
on the forum, but since latest source , the driver doesn't work

i hope someone can help me , thank you

Offline Ashura-X

  • Member
  • ***
  • Posts: 138
  • Karma: +0/-0
Re: I need some help with my old mslug5nd driver...
« Reply #6 on: June 26, 2007, 08:03:44 AM »
My mslug5nd uses more or less parts of the mslug5 init.

Code: [Select]
DRIVER_INIT( mslug5nd )
{
        mslug5_decrypt_68k();
mslug5nd_sx_decrypt();
neo_pcm2_swap(2);
init_neogeo(machine);
install_pvc_protection();
}


But my rom set does not match with yours.

Code: [Select]
ROM_START( mslug5nd )
        ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD32_WORD_SWAP( "268-p1cr.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
ROM_LOAD32_WORD_SWAP( "268-p2cr.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
       
        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_64K( "268-m1_decrypted.bin",  CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) )

        ROM_REGION( 0x1000000, REGION_SOUND1, 0 )
/* Encrypted */
ROM_LOAD( "268-v1c.bin", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) )
ROM_LOAD( "268-v2c.bin", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) )

        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

Your romset uses only that INIT ? No more instances like mine ? By what I saw only P roms are the problem.

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: I need some help with my old mslug5nd driver...
« Reply #7 on: June 26, 2007, 08:46:11 AM »
Try loading init from  mslug5, Just the part for the P roms and use your normal driver for the rest. (/* the S data comes from the end fo the C data */)
IQ Forum Member

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: I need some help with my old mslug5nd driver...
« Reply #8 on: June 27, 2007, 11:06:55 AM »
Well.. that not worked...

Actually, it works fine.  I didn't realize the reset of your init was f*cked.

Code: [Select]
static WRITE16_HANDLER( mslug5_bankswitch_w )
{
if (offset == 1) {
neogeo_set_main_cpu_bank_address( data << 8 );
}
}

static DRIVER_INIT( mslug5nd )
{
/* the S data comes from the end fo the C data */
int i;
int tx_size = memory_region_length( NEOGEO_REGION_FIXED_LAYER_CARTRIDGE );
int rom_size = memory_region_length( NEOGEO_REGION_SPRITES );

UINT8 *src = memory_region( NEOGEO_REGION_SPRITES ) + rom_size-tx_size;
UINT8 *dst = memory_region( NEOGEO_REGION_FIXED_LAYER_CARTRIDGE );

for (i = 0;i < tx_size;i++)
dst[i] = src[(i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)];

driver_init_neogeo(machine);

memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2fffff, 0, 0, mslug5_bankswitch_w);
}


@Novaa
Code: [Select]
ROM_START( ms5boot ) /* Bootleg / Hack of Metal Slug 5 */
ROM_REGION( 0x500000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "ms5-p1.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "ms5-p2.bin", 0x100000, 0x200000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
ROM_LOAD16_WORD_SWAP( "ms5-p3.bin", 0x300000, 0x200000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )

NEO_SFIX_128K( "ms5-s1.bin", CRC(52a8c09b) SHA1(3a90d8e44aa7cbc79945f8ece0e2fb9ce3e5a4c7) )

        NEO_BIOS_SOUND_256K( "ms5-m1.bin", CRC(792e07c1) SHA1(117516e8ec9026c7682ab27857aab6639bef5835) )

        ROM_REGION( 0x1000000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
        ROM_LOAD( "ms5-v1.bin", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) )
ROM_LOAD( "ms5-v2.bin", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) )
ROM_LOAD( "ms5-v3.bin", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) )
ROM_LOAD( "ms5-v4.bin", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) )

        NO_DELTAT_REGION

        ROM_REGION( 0x4000000, NEOGEO_REGION_SPRITES, 0 )
        ROM_LOAD16_BYTE( "ms5-c1.bin", 0x0000000, 0x800000, CRC(969c0d62) SHA1(de3c5cfa980cca2fab0416ac0d292948b5d4c9c3) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c2.bin", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198ee5c7c2c7563b49ebd9f7ba95d9b0b303f6c) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c3.bin", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443ea4c1bab45f1977a390eb7e1a0163915110) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c4.bin", 0x1000001, 0x800000, CRC(e1b1131b) SHA1(68a36d336582069e79ad481638d92f57c4cd6523) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c5.bin", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4ae15d29ba979601598eddf8905072fe1d9e0a98) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c6.bin", 0x2000001, 0x800000, CRC(6de89589) SHA1(86a6c036bf51af516fea83a30874026ec1586a83) ) /* Plane 2,3 */
        ROM_LOAD16_BYTE( "ms5-c7.bin", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30f3280fe527098ecf46541cc645a59b366105ea) ) /* Plane 0,1 */
        ROM_LOAD16_BYTE( "ms5-c8.bin", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(b5d0d81d5cc624538b0651c568295e578a1330d1) ) /* Plane 2,3 */
ROM_END



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: {
kof2k2bl_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);
}

DRIVER_INIT( ms5boot )
{
neogeo_bootleg_text_decrypt(1);
driver_init_neogeo(machine);
ms5boot_install_protection();
}
« Last Edit: June 27, 2007, 11:17:54 AM by iq_132 »


Offline novaa

  • Newbies
  • *
  • Posts: 10
  • Karma: +0/-1
Re: I need some help with my old mslug5nd driver...
« Reply #9 on: June 27, 2007, 01:43:45 PM »
its better , but something is missing i think because graphics again corrupted
here complete driver i have try
in drivers/neodrv.c
Code: [Select]
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
Code: [Select]
void neogeo_bootleg_text_decrypt(INT32 value);
void ms5boot_install_protection(void);

in machine/neoboot.c
Code: [Select]
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

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: I need some help with my old mslug5nd driver...
« Reply #10 on: June 27, 2007, 01:58:09 PM »
That's definitely a program rom error.

Try this
Code: [Select]
ROM_LOAD16_WORD_SWAP( "268-p1bl.bin", 0x000000, 0x100000, CRC(e6d297af) SHA1(5bb3f72ce26e3f46c523b955f425056eb246e855) )
ROM_LOAD16_WORD_SWAP( "268-p2bl.bin", 0x200000, 0x100000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
ROM_CONTINUE( 0x100000, 0x100000 )
ROM_LOAD16_WORD_SWAP( "268-p3bl.bin", 0x300000, 0x200000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )


Offline novaa

  • Newbies
  • *
  • Posts: 10
  • Karma: +0/-1
Re: I need some help with my old mslug5nd driver...
« Reply #11 on: June 28, 2007, 12:31:38 AM »
game crash at start , new neogeo drivers are so funny  :biggrin:

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: I need some help with my old mslug5nd driver...
« Reply #12 on: June 28, 2007, 08:32:15 AM »
check your PM box novaa


Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: I need some help with my old mslug5nd driver...
« Reply #13 on: June 28, 2007, 08:35:24 PM »
Ah, ok.  It was the 3 and 4th chunk that were swapped :)

Code: [Select]
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, 0x100000, CRC(3fc46cfa) SHA1(f20d3d359f6cdbf6aabb6920020621b02bafee91) )
ROM_CONTINUE( 0x300000, 0x100000 )
ROM_LOAD16_WORD_SWAP( "268-p3bl.bin", 0x200000, 0x100000, CRC(742c955a) SHA1(96c0f08b1f2f6877f5169a96c13b67f3be6082c6) )
ROM_CONTINUE( 0x400000, 0x100000 )


Offline novaa

  • Newbies
  • *
  • Posts: 10
  • Karma: +0/-1
Re: I need some help with my old mslug5nd driver...
« Reply #14 on: June 29, 2007, 09:46:01 AM »
it work fine now , good job
very very big thanx iq  :wink: