Author Topic: Lansquenet 2004 (Bootleg/hack)  (Read 7974 times)

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Lansquenet 2004 (Bootleg/hack)
« on: December 04, 2005, 12:42:13 AM »
Did a little work on this too ;)  It seems to glitch up in FBA for some reason :(

drivers/neogeo.c
Code: [Select]
ROM_START( lans2004 )
ROM_REGION( 0x600000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "lnsq-p1.bin",  0x000000, 0x200000, CRC(b40a879a) )
ROM_LOAD16_WORD_SWAP( "lnsq-p21.bin", 0x200000, 0x200000, CRC(ecdb2d42) )
ROM_LOAD16_WORD_SWAP( "lnsq-p22.bin", 0x400000, 0x200000, CRC(fac5e2e7) )

NEO_SFIX_128K( "lnsq-s1.bin", CRC(39e82897) )

NEO_BIOS_SOUND_128K( "246-m1.bin", CRC(d0604ad1) )

ROM_REGION( 0xA00000, REGION_SOUND1, 0 )
ROM_LOAD( "lnsq-v1.bin", 0x000000, 0x400000, CRC(4408ebc3) )
ROM_LOAD( "lnsq-v2.bin", 0x400000, 0x400000, CRC(3d953975) )
ROM_LOAD( "lnsq-v3.bin", 0x800000, 0x200000, CRC(437d1d8e) )

NO_DELTAT_REGION

ROM_REGION( 0x3000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "lnsq-c1.bin", 0x0000000, 0x800000, CRC(b83de59f) )
ROM_LOAD16_BYTE( "lnsq-c2.bin", 0x0000001, 0x800000, CRC(e08969fd) )
ROM_LOAD16_BYTE( "lnsq-c3.bin", 0x1000000, 0x800000, CRC(013f2cda) )
ROM_LOAD16_BYTE( "lnsq-c4.bin", 0x1000001, 0x800000, CRC(d8c3a758) )
ROM_LOAD16_BYTE( "lnsq-c5.bin", 0x2000000, 0x800000, CRC(75500b82) )
ROM_LOAD16_BYTE( "lnsq-c6.bin", 0x2000001, 0x800000, CRC(670ac13b) )
ROM_END

These two are the same that are used by samsh5 bootleg and kog
Code: [Select]
static void lans2004_cx_decrypt( void )
{
int i;
int cx_size = memory_region_length( REGION_GFX3 );
UINT8 *rom = memory_region( REGION_GFX3 );
UINT8 *buf = malloc( cx_size );

memcpy( buf, rom, cx_size );

for( i = 0; i < cx_size / 0x40; i++ ){
memcpy( &rom[ i * 0x40 ], &buf[ (i ^ 1) * 0x40 ], 0x40 );
}

free( buf );
}

static void lans2004_sx_decrypt( void )
{
int i;
UINT8 *dst = malloc(0x20000);
UINT8 *rom = memory_region(REGION_GFX1);
if ( dst )
{
memcpy(dst,rom,0x20000);

for (i = 0; i < 0x20000; i += 0x000010 )
{
memcpy( rom + i, dst + i + 8, 8 );
memcpy( rom + i + 8, dst + i, 8 );
}
}
free(dst);
}

This is my code:
Code: [Select]
static void lans2004_vx_decrypt( void )
{
int i;
UINT8 *rom = memory_region( REGION_SOUND1 );
for (i = 0; i < 0xA00000; i++)
rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7);
}

// Thanks to Razoola for the info
static void lans2004_px_decrypt( void )
{
int i;
UINT8 *src = memory_region( REGION_CPU1 );
UINT16 *rom = (UINT16*)memory_region( REGION_CPU1 );
UINT8 *dst = malloc(0x600000);

if (dst) {
int sec[8] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };

for (i = 0; i < 8; i++)
memcpy (dst + i * 0x20000, src + sec[i] * 0x20000, 0x20000);

memcpy (dst + 0x0BBB00, src + 0x045B00, 0x001710);
memcpy (dst + 0x02FFF0, src + 0x1A92BE, 0x000010);
memcpy (dst + 0x100000, src + 0x200000, 0x400000);
memcpy (src, dst, 0x600000);
free (dst);
}

for (i = 0xBBB00/2; i < 0xBE000/2; i++) {
if ((((rom[i]&0xFFBF)==0x4EB9) || ((rom[i]&0xFFBF)==0x43B9)) && (rom[i+1]==0x0000)) {
rom[i + 1] = 0x000B;
rom[i + 2] += 0x6000;
}
}

rom[0x2D15C/2] = 0x000B;
rom[0x2D15E/2] = 0xBB00;
rom[0x2D1E4/2] = 0x6002;
rom[0x2EA7E/2] = 0x6002;
rom[0xBBCD0/2] = 0x6002;
rom[0xBBDF2/2] = 0x6002;
rom[0xBBE42/2] = 0x6002;
}

DRIVER_INIT( lans2004 )
{
lans2004_px_decrypt();
lans2004_sx_decrypt();
lans2004_cx_decrypt();
lans2004_vx_decrypt();

init_neogeo();
}

Code: [Select]
GAMEB( 2004, lans2004, shocktr2, neogeo, neogeo, neogeo,  lans2004, ROT0, "Saurus", "Lansquenet 2004 (Bootleg/hack)", 0 )

driver.c
Code: [Select]
DRIVER( lans2004 ) /* 5246 Bootleg */


Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #1 on: December 04, 2005, 12:47:34 AM »
What type of games is this ?
IQ Forum Member

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #2 on: December 04, 2005, 12:55:37 AM »
It's a clone of shock troopers 2, just give it a try. ;)



Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #3 on: December 04, 2005, 01:03:57 AM »
I try most things once :)   
IQ Forum Member

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #4 on: December 04, 2005, 03:20:55 AM »
I changed it hehe

Code: [Select]
/* original code by IQ_132 */
DRIVER_INIT( lans2004 )
{
int i;
UINT8 *src = memory_region( REGION_CPU1 );
UINT16 *rom = (UINT16*)memory_region( REGION_CPU1 );
UINT8 *dst = malloc(0x600000);
UINT8 *snd_rom = memory_region( REGION_SOUND1 );

if (dst) {
int sec[8] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };

for (i = 0; i < 8; i++)
memcpy (dst + i * 0x20000, src + sec[i] * 0x20000, 0x20000);

memcpy (dst + 0x0BBB00, src + 0x045B00, 0x001710);
memcpy (dst + 0x02FFF0, src + 0x1A92BE, 0x000010);
memcpy (dst + 0x100000, src + 0x200000, 0x400000);
memcpy (src, dst, 0x600000);
free (dst);
}

for (i = 0xBBB00/2; i < 0xBE000/2; i++) {
if ((((rom[i]&0xFFBF)==0x4EB9) || ((rom[i]&0xFFBF)==0x43B9)) && (rom[i+1]==0x0000)) {
rom[i + 1] = 0x000B;
rom[i + 2] += 0x6000;
}
}

rom[0x2D15C/2] = 0x000B;
rom[0x2D15E/2] = 0xBB00;
rom[0x2D1E4/2] = 0x6002;
rom[0x2EA7E/2] = 0x6002;
rom[0xBBCD0/2] = 0x6002;
rom[0xBBDF2/2] = 0x6002;
rom[0xBBE42/2] = 0x6002;

for (i = 0; i < 0xA00000; i++)
snd_rom[i] = BITSWAP8(snd_rom[i], 0, 1, 5, 4, 3, 2, 6, 7);

kog_sx_decrypt();
kog_cx_decrypt();
init_neogeo();
}
IQ Forum Member

Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #5 on: December 04, 2005, 04:49:21 AM »
I changed it hehe

So no px and sx then.  :biggrin:

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: Lansquenet 2004 (Bootleg/hack)
« Reply #6 on: December 04, 2005, 05:26:10 AM »
So no px and sx then.  :biggrin:

Its the same code . All that has that been done is the code has beem merged into the DRIVER_INIT .
IQ Forum Member