Author Topic: King of Fighter 2003 and hacks drivers  (Read 39310 times)

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
King of Fighter 2003 and hacks drivers
« on: November 24, 2004, 07:13:28 PM »
This should give you an idea even if your rom crc do not match .


Code: [Select]
ROM_START( kof2003 )
ROM_REGION( 0x900000, REGION_CPU1, 0 )
ROM_LOAD32_WORD_SWAP( "271-p1.bin", 0x000000, 0x400000, CRC(b9da070c) SHA1(1a26325af142a4dd221c336061761468598c4634) )
ROM_LOAD32_WORD_SWAP( "271-p2.bin", 0x000002, 0x400000, CRC(da3118c4) SHA1(582e4f44f03276adecb7b2848d3b96bf6da57f1e) )
ROM_LOAD16_WORD_SWAP( "271-p3.bin", 0x800000, 0x100000, CRC(5cefd0d2) SHA1(cddc3164629fed4b6f715e12b109ad35d1009355) )
ROM_LOAD16_WORD_SWAP( "271-p3d.bin", 0x800000, 0x100000, CRC(59d376da) SHA1(3c3ad0b79e8b37e838893a8f7b87e11d7eeee8f2) )

ROM_REGION( 0x100000, REGION_GFX1, 0 )
ROM_FILL(                 0x000000, 0x100000, 0 )
ROM_REGION( 0x20000, REGION_GFX2, 0 )
ROM_LOAD( "sfix.sfx",  0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) )

ROM_REGION16_BE( 0x40000, REGION_USER1, 0 )
ROM_LOAD16_WORD_SWAP( "271-bios.bin", 0x00000, 0x040000, CRC(c521b5bc) SHA1(c9a5db63523191dedd1b39baab8772f64f09b77f) )
NEOGEO_BIOS

ROM_REGION( 0x90000, REGION_CPU2, 0 )
ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) )
ROM_LOAD( "271-m1d.bin", 0x00000, 0x80000, CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
ROM_RELOAD(             0x10000, 0x80000 )
ROM_REGION( 0x10000, REGION_GFX4, 0 )
ROM_LOAD( "000-lo.lo", 0x00000, 0x10000, CRC(e09e253c) SHA1(2b1c719531dac9bb503f22644e6e4236b91e7cfc) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) )
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) )
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) )
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) )
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) )
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) )
ROM_END

ROM_START( kof2003b ) /* Uni-Bios Fix - Bootleg Set 1 */
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1bl.bin" , 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
ROM_LOAD16_WORD_SWAP( "271-p2bl.bin" , 0x500000, 0x200000, CRC(5d3d8bb3) SHA1(7f2341f14ca12ff5721eb038b3496228a1f34b60) )
ROM_CONTINUE( 0x000000, 0x100000 )
ROM_CONTINUE( 0x000000, 0x100000 )

NEO_SFIX_128K( "271-s1d.bin", CRC(beea2419) SHA1(d3a9d7bf1b3c9c51e4381c2adee33081443744af) )
// NEO_SFIX_128K( "271-s1d.bin", CRC(7c7829aa) SHA1(22f8d38d1d0891295d0593741d9477fbe6b4f48c) )

NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
/* decrypted */
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
/* decrypted */
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) /* Plane 2,3 */
ROM_END

ROM_START( kof2k3up ) /* Ultra Plus */
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1up.bin" , 0x000000, 0x800000, CRC(87294c01) SHA1(21420415a6b2ba1b43ecc1934270dc085d6bd7d9) )

NEO_SFIX_128K( "271-s1up.bin", CRC(e5708c0c) SHA1(5649446d3b0b1bd138b5a8b40b96a6d0f892f4d8) )

NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
/* decrypted */
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
/* decrypted */
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) /* Plane 2,3 */
ROM_END

ROM_START( kf2k3ba ) /* Uni-Bios Fix - Bootleg Set 2 */
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1d.bin" , 0x000000, 0x400000, CRC(3b58d2e5) SHA1(9524cd6f90e8d3037eeeb895b4da1d13f18c1e4a) )
ROM_LOAD16_WORD_SWAP( "271-p2d.bin" , 0x400000, 0x400000, CRC(5934d72b) SHA1(6814b368f40f342d68db4d676bb54fb459b7c7eb) )

NEO_SFIX_512K( "271t-s1d.bin", CRC(071a8b1e) SHA1(92c73931f22ba5cae8b15a1fc2c773bb7f8ed702) )

NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
/* decrypted */
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
/* decrypted */
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) /* Plane 2,3 */
ROM_END

ROM_START( kof2003p ) /* Uni-Bios Fix - Bootleg Hack */
       ROM_REGION( 0x700000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1ex.bin", 0x000000, 0x100000, CRC(dacf5b2d) SHA1(b776f3cf2a720325fed8f8908f18eacdc3cb05aa) )
ROM_LOAD16_WORD_SWAP( "271-p1bl.bin", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
ROM_LOAD16_WORD_SWAP( "271-p3ex.bin", 0x500000, 0x200000, CRC(0d0a5861) SHA1(823dd3d11574a42f98588a6d1f9bb5d721f34be2) )

NEO_SFIX_512K( "271p-s1d.bin", CRC(09e3f2bd) SHA1(733488b3c06262e67cb771ed76e8bbbe16cf7dda) )

NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
/* decrypted */
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
/* decrypted */
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) /* Plane 2,3 */
ROM_END

Code: [Select]
static void kof2003_px_decrypt( void )
{
const unsigned char xor2[ 0x20 ] = {
0xb4, 0x0f, 0x40, 0x6c, 0x38, 0x07, 0xd0, 0x3f, 0x53, 0x08, 0x80, 0xaa, 0xbe, 0x07, 0xc0, 0xfa,
0xd0, 0x08, 0x10, 0xd2, 0xf1, 0x03, 0x70, 0x7e, 0x87, 0x0B, 0x40, 0xf6, 0x2a, 0x0a, 0xe0, 0xf9
};

int i;
int ofst;
UINT8 *rom, *buf;

rom = memory_region( REGION_CPU1 );

for( i = 0x100000; i < 0x800000; i++ ){
rom[ i ] ^= xor2[ (i % 0x20) ];
}

for( i = 0x100000; i < 0x800000; i += 4 ){
UINT16 *rom16 = (UINT16*)&rom[ i + 1 ];
*rom16 = BITSWAP16( *rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0 );
}

buf = malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

for( i = 0; i < 0x0100000 / 0x10000; i++ ){
ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 );
memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 );
}

for( i = 0x100000; i < 0x800000; i += 0x100 ){
ofst = (i & 0xf000ff) +
  ((i & 0x000f00) ^ 0x00300) +
  (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);

memcpy( &rom[ i ], &buf[ ofst ], 0x100 );
}

free( buf );

buf = malloc(0x900000);
memcpy( buf, rom, 0x900000 );

memcpy( &rom[0x100000], &buf[0x800000], 0x100000 );
memcpy( &rom[0x200000], &buf[0x100000], 0x700000 );

free(buf);
}

static void kof2003_sx_decrypt( void )
{
int i;
int tx_size = memory_region_length( REGION_GFX1 );
int rom_size = memory_region_length( REGION_GFX3 );
UINT8 *src;
UINT8 *dst;

src = memory_region( REGION_GFX3 ) + rom_size - 0x1000000 - 0x80000;
dst = memory_region( REGION_GFX1 );

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

src = memory_region( REGION_GFX3 ) + rom_size - 0x80000;
dst = memory_region( REGION_GFX1 ) + 0x80000;

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

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



DRIVER_INIT( kof2003 )
{
kof2003_px_decrypt();
kof2003_sx_decrypt();
// save_decrypted_ps();
neogeo_fix_bank_type = 2;
init_neogeo();
}

DRIVER_INIT( kf2k3ba )
{
neogeo_fix_bank_type = 2;
init_neogeo();
}

static void kof2k3up_sx_decrypt( void )
{
    UINT8 *rom = memory_region( REGION_GFX1 );
    int rom_size = memory_region_length( REGION_GFX1 );

    for( int i = 0; i < rom_size; i++ ){
        rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
    }
}

DRIVER_INIT( kof2k3up )
{
// Driver by IQ_132 -- http://neosource.1emu.net/
// Descramble P1 (bring part 8 to the front)
UINT8 *src = memory_region(REGION_CPU1);
memcpy(src+0x100000, src, 0x600000);
memcpy(src, src+0x700000, 0x100000);

// Patch out protected addresses
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);
mem16[0x0D8A/2] = 0x0000;
mem16[0x0D8C/2] = 0x12EE;

neogeo_fix_bank_type = 2;
kof2k3up_sx_decrypt();
init_neogeo();
}

Code: [Select]
GAMEB( 2003, kof2003,  neogeo, neogeo, neogeo, neogeo, kof2003,  ROT0, "Playmore Corporation", "The King of Fighters 2003")
GAMEB( 2003, kof2003b, kof2003, neogeo, neogeo, neogeo, neogeo,   ROT0, "Playmore Corporation", "The King of Fighters 2003 (BootLeg Set 1)" )
GAMEB( 2003, kf2k3ba, kof2003, neogeo, neogeo, neogeo, kf2k3ba, ROT0, "Playmore Corporation", "The King of Fighters 2003 (Transparencies / BootLeg Set 2)" )
GAMEB( 2003, kof2003p, kof2003, neogeo, neogeo, neogeo, kof2003a, ROT0, "Playmore Corporation", "The King of Fighters 2004 Hero (BootLeg / Hack)" )
GAMEB( 2003, kof2k3up, kof2003, neogeo, neogeo, neogeo, kof2k3up, ROT0, "Playmore Corporation", "The King of Fighters 2003 Ultra Plus (Hack)" )

next post Machine/neogeo.c init
« Last Edit: December 18, 2005, 02:30:23 AM by James33 »
IQ Forum Member

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
King of Fighter 2003 and hacks drivers
« Reply #1 on: November 24, 2004, 07:16:42 PM »
machine/neogeo.c

Code: [Select]
/* PCB init info */
static UINT16 mv0_prot_offset[ 0x08 ];
static UINT16 mv0_bankswitch_offset[ 2 ];
static int mv0_bankswitch_flg;

static READ16_HANDLER( mv0_prot_r )
{
return mv0_prot_offset[ offset ];
}

static WRITE16_HANDLER( mv0_prot_w )
{
mv0_prot_offset[ offset ] = (mv0_prot_offset[ offset ] & mem_mask) | ((~mem_mask) & data);

if( offset == 0 ){
UINT8 *ofst8 = (UINT8*)mv0_prot_offset;

ofst8[ 0x02 ] = ((ofst8[ 0x01 ] >> 4) & 0x01) + ((ofst8[ 0x00 ] & 0x0f) << 1);
ofst8[ 0x03 ] = ((ofst8[ 0x01 ] >> 5) & 0x01) + (((ofst8[ 0x00 ] >> 4) & 0x0f) << 1);
ofst8[ 0x04 ] = ((ofst8[ 0x01 ] >> 6) & 0x01) + ((ofst8[ 0x01 ] & 0x0f) << 1);
ofst8[ 0x05 ] = (ofst8[ 0x01 ] >> 7);
}else if( offset == 5 ){
UINT8 *ofst8 = (UINT8*)mv0_prot_offset;

ofst8[ 0x0c ] = (ofst8[ 0x08 ] >> 1) | ((ofst8[ 0x09 ] >> 1) << 4);
ofst8[ 0x0d ] = (ofst8[ 0x0a ] >> 1) |
((ofst8[ 0x08 ] & 0x01) << 4) |
((ofst8[ 0x09 ] & 0x01) << 5) |
((ofst8[ 0x0a ] & 0x01) << 6) |
(ofst8[ 0x0b ] << 7);
}
}

static READ16_HANDLER( mv0_bankswitch_r )
{
if( mv0_bankswitch_offset[ 0 ] == 0xffff && mv0_bankswitch_offset[ 1 ] == 0xffff ){

mv0_bankswitch_flg = 1;
if( offset == 0 ){
return 0xfea0;
}else if( offset == 1 ){
return 0x7fff;
}else{
return mv0_bankswitch_offset[ offset ];
}
}else if( mv0_bankswitch_offset[ 0 ] == 0x0000 && mv0_bankswitch_offset[ 1 ] == 0x0000 && mv0_bankswitch_flg == 1 ){

if( offset == 0 ){
return 0x00a0;
}else if( offset == 1 ){
mv0_bankswitch_flg = 0;
return 0x0000;
}else{
return mv0_bankswitch_offset[ offset ];
}
}else{
return mv0_bankswitch_offset[ offset ];
}
}

static WRITE16_HANDLER( mv0_bankswitch_w )
{
UINT32 bank_addr;

mv0_bankswitch_offset[ offset ] = (mv0_bankswitch_offset[ offset ] & mem_mask) | ((~mem_mask) & data);

bank_addr = (mv0_bankswitch_offset[ 0 ] >> 8) +(mv0_bankswitch_offset[ 1 ] << 8) +0x100000;

neogeo_set_cpu1_second_bank( bank_addr );
}

/* kof2003 bootleg init info */
static data16_t kof2003_tbl[4096];

READ16_HANDLER( kof2003_r)
{
return kof2003_tbl[offset];
}

WRITE16_HANDLER( kof2003_w )
{
data = COMBINE_DATA(&kof2003_tbl[offset]);
if (offset == 0x1ff0/2 || offset == 0x1ff2/2) {
UINT8* cr = (UINT8 *)kof2003_tbl;
UINT32 address = (cr[0x1ff3]<<16)|(cr[0x1ff2]<<8)|cr[0x1ff1];
UINT8 prt = cr[0x1ff2];
UINT8* mem = (UINT8 *)memory_region(REGION_CPU1);

cr[0x1ff0] =  0xa0;
cr[0x1ff1] &= 0xfe;
cr[0x1ff3] &= 0x7f;
neogeo_set_cpu1_second_bank(address+0x100000);

mem[0x58196] = prt;
}
}

WRITE16_HANDLER( kof2003p_w )
{
data = COMBINE_DATA(&kof2003_tbl[offset]);
if (offset == 0x1ff0/2 || offset == 0x1ff2/2) {
UINT8* cr = (UINT8 *)kof2003_tbl;
UINT32 address = (cr[0x1ff3]<<16)|(cr[0x1ff2]<<8)|cr[0x1ff0];
UINT8 prt = cr[0x1ff2];
UINT8* mem = (UINT8 *)memory_region(REGION_CPU1);

cr[0x1ff0] &= 0xfe;
cr[0x1ff3] &= 0x7f;
neogeo_set_cpu1_second_bank(address+0x100000);

mem[0x58196] = prt;
}
}

Code: [Select]
       if (!strcmp(Machine->gamedrv->name,"kof2003p"))
{
/* special ROM banking handler */
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_r);

/* additional protection */
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003p_w);
}

if (!strcmp(Machine->gamedrv->name,"kof2003b") ||
!strcmp(Machine->gamedrv->name,"kf2k3ba") ||
!strcmp(Machine->gamedrv->name,"kof2k3up"))
{
/* special ROM banking handler */
memory_install_read16_handler (0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_r);

/* additional protection */
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_w);
}

if (!strcmp(Machine->gamedrv->name,"kof2003"))
{
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, MRA16_RAM );
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, MWA16_RAM );

memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fffe0, 0x2fffef, 0, 0, mv0_prot_r );
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fffe0, 0x2fffef, 0, 0, mv0_prot_w );

memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff3, 0, 0, mv0_bankswitch_r );
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2ffff0, 0x2ffff3, 0, 0, mv0_bankswitch_w );

memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0xc00000, 0xc3ffff, 0, 0, MRA16_BANK3 );  // 256k bios
}
« Last Edit: December 18, 2005, 02:31:16 AM by James33 »
IQ Forum Member

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
King of Fighter 2003 and hacks drivers
« Reply #2 on: November 25, 2004, 07:08:42 AM »
thx for kof2k3up! so james, what is the crc of decrypted p1 of kof2k3up did u get?

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
King of Fighter 2003 and hacks drivers
« Reply #3 on: November 25, 2004, 11:02:54 AM »
Its decrypted but the bankswitching has not been removed .
IQ Forum Member

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Updated kof2003 ultra plus
« Reply #4 on: December 15, 2004, 02:25:19 AM »
Code: [Select]

ROM_START( kof2k3up ) /* Ultra Plus Hack */
ROM_REGION( 0x800000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1up.bin" , 0x000000, 0x800000, CRC(87294c01) SHA1(21420415a6b2ba1b43ecc1934270dc085d6bd7d9) )

NEO_SFIX_128K( "271-s1up.bin", CRC(e5708c0c) SHA1(5649446d3b0b1bd138b5a8b40b96a6d0f892f4d8) )

NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
/* decrypted */
ROM_LOAD( "271-v1d.bin", 0x000000, 0x1000000, CRC(2058ec5e) SHA1(567fdf328f87551a949dc601f4e71c55368debf0) )

NO_DELTAT_REGION

ROM_REGION( 0x6000000, REGION_GFX3, 0 )
/* decrypted */
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_END



// original code by bms1221
static void kof2k3up_px_decrypt( void )
{
int ofst;

UINT8 *rom = memory_region( REGION_CPU1 ) + 0xfe000;
UINT8 *buf = memory_region( REGION_CPU1 ) + 0xd0610;

for( int i = 0; i < 0x2000 / 2; i++ ){
ofst = (i & 0xff00) + BITSWAP8( (i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5 );
memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 2 );
}
}

static void kof2k3up_sx_decrypt( void )
{
    UINT8 *rom = memory_region( REGION_GFX1 );
    int rom_size = memory_region_length( REGION_GFX1 );

    for( int i = 0; i < rom_size; i++ ){
        rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
    }
}

DRIVER_INIT( kof2k3up )
{
// Driver by IQ_132 -- [url]http://neosource.1emu.net/[/url]
// Descramble P1 (bring part 8 to the front)
UINT8 *src = memory_region(REGION_CPU1);
memcpy(src+0x100000, src, 0x600000);
memcpy(src, src+0x700000, 0x100000);

kof2k3up_px_decrypt();
neogeo_fix_bank_type = 2;
kof2k3up_sx_decrypt();
init_neogeo();
}





Machine\neogeo.c
Code: [Select]


/* kof2003 bootleg init info */
static data16_t kof2003_tbl[4096];

READ16_HANDLER( kof2003_r)
{
return kof2003_tbl[offset];
}

WRITE16_HANDLER( kof2003_w )
{
data = COMBINE_DATA(&kof2003_tbl[offset]);
if (offset == 0x1ff0/2 || offset == 0x1ff2/2) {
UINT8* cr = (UINT8 *)kof2003_tbl;
UINT32 address = (cr[0x1ff3]<<16)|(cr[0x1ff2]<<8)|cr[0x1ff1];
UINT8 prt = cr[0x1ff2];
UINT8* mem = (UINT8 *)memory_region(REGION_CPU1);

cr[0x1ff0] =  0xa0;
cr[0x1ff1] &= 0xfe;
cr[0x1ff3] &= 0x7f;
neogeo_set_cpu1_second_bank(address+0x100000);

mem[0x58196] = prt;
}
}

WRITE16_HANDLER( kof2003p_w )
{
data = COMBINE_DATA(&kof2003_tbl[offset]);
if (offset == 0x1ff0/2 || offset == 0x1ff2/2) {
UINT8* cr = (UINT8 *)kof2003_tbl;
UINT32 address = (cr[0x1ff3]<<16)|(cr[0x1ff2]<<8)|cr[0x1ff0];
UINT8 prt = cr[0x1ff2];
UINT8* mem = (UINT8 *)memory_region(REGION_CPU1);

cr[0x1ff0] &= 0xfe;
cr[0x1ff3] &= 0x7f;
neogeo_set_cpu1_second_bank(address+0x100000);

mem[0x58196] = prt;
}
}




      if (!strcmp(Machine->gamedrv->name,"kof2003b") ||
!strcmp(Machine->gamedrv->name,"kof2003a") ||
!strcmp(Machine->gamedrv->name,"kof2k3up"))
{
/* special ROM banking handler */
memory_install_read16_handler (0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_r);

/* additional protection */
memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_w);
}


IQ Forum Member

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Driver init kof2k3up Modified
« Reply #5 on: December 16, 2004, 12:43:21 AM »
Code: [Select]

DRIVER_INIT( kof2k3up )
{
/* Codes by HalRIN,IQ_132,bms1221 Modified By James */
/* Descramble P1 (bring part 8 to the front) */
UINT8 *src = memory_region(REGION_CPU1);
memcpy(src+0x100000, src, 0x600000);
memcpy(src, src+0x700000, 0x100000);

int ofst;
UINT8 *rom = memory_region( REGION_CPU1 ) + 0xfe000;
UINT8 *buf = memory_region( REGION_CPU1 ) + 0xd0610;

for( int i = 0; i < 0x2000 / 2; i++ ){
ofst = (i & 0xff00) + BITSWAP8( (i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5 );
memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 2 );
}

UINT8 *srom = memory_region( REGION_GFX1 );
int rom_size = memory_region_length( REGION_GFX1 );

for( int i = 0; i < rom_size; i++ ){
srom[ i ] = BITSWAP8( srom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
}
neogeo_fix_bank_type = 2;
init_neogeo();
}
IQ Forum Member

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
King of Fighter 2003 and hacks drivers
« Reply #6 on: December 27, 2004, 06:39:26 AM »
Code: [Select]
ROM_START( kof2003p ) /* Uni-Bios Fix - Bootleg Hack */
       ROM_REGION( 0x700000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271h-p1.bin" , 0x000000, 0x100000, CRC(dacf5b2d) SHA1(b776f3cf2a720325fed8f8908f18eacdc3cb05aa) )
ROM_LOAD16_WORD_SWAP( "271h-p2.bin" , 0x100000, 0x200000, CRC(8c06e880) SHA1(4345d10232d5c26d88a79463968e4a8f5d1a2a42) )
ROM_LOAD16_WORD_SWAP( "271h-p3.bin" , 0x300000, 0x400000, CRC(96842d45) SHA1(afa5346064b1b9b43eb6d817b5e4139c98b077f1) )[/
QUOTE]

@james
this is not the correct kof2003p set, is it?
the correct p pros are
Code: [Select]
ROM_LOAD16_WORD_SWAP( "271-p1p.bin", 0x000000, 0x100000, CRC(dacf5b2d) SHA1(b776f3cf2a720325fed8f8908f18eacdc3cb05aa) )
ROM_LOAD16_WORD_SWAP( "271-p1bl.bin", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
ROM_LOAD16_WORD_SWAP( "271-p3p.bin", 0x500000, 0x200000, CRC(0d0a5861) SHA1(823dd3d11574a42f98588a6d1f9bb5d721f34be2) )

let me know if your driver works with this code


btw, MC&HNY to all  :)
« Last Edit: November 28, 2005, 02:29:55 AM by iq_132 »

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
driver for the correct set of kof ex hero
« Reply #7 on: December 27, 2004, 03:59:01 PM »
Code: [Select]
ROM_START( kof03ex ) /* korean bootleg / hack of kof2003 */
ROM_REGION( 0x700000, REGION_CPU1, 0 )
ROM_LOAD16_WORD_SWAP( "271-p1ex.bin", 0x000000, 0x100000, CRC(dacf5b2d) SHA1(b776f3cf2a720325fed8f8908f18eacdc3cb05aa) )
ROM_LOAD16_WORD_SWAP( "271-p1bl.bin", 0x100000, 0x400000, CRC(92ed6ee3) SHA1(5e7e21eb40dfcc453ba73808760d5ddedd49c58a) )
ROM_LOAD16_WORD_SWAP( "271-p3ex.bin", 0x500000, 0x200000, CRC(0d0a5861) SHA1(823dd3d11574a42f98588a6d1f9bb5d721f34be2) )

/* Decrypted? */
NEO_SFIX_128K( "271-s1ex.bin", CRC(a5d78a9a) SHA1(4d5697a52c40b4fbb9602d49221f37fac36d97c6) )

/* Decrypted */
NEO_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )

/* Encrypted */
ROM_REGION( 0x1000000, REGION_SOUND1, ROMREGION_SOUNDONLY )
ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )

NO_DELTAT_REGION

/* Decrypted */
ROM_REGION( 0x6000000, REGION_GFX3, 0 )
ROM_LOAD16_BYTE( "271-c1d.bin", 0x0000000, 0x1000000, CRC(c29acd28) SHA1(8a10409c5a9ad95fa9b56e94c14f1b96101fb179) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c2d.bin", 0x0000001, 0x1000000, CRC(328e80b1) SHA1(c7f8069488be1a88a2ea03718b6a131f5c96bd3f) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c3d.bin", 0x2000000, 0x1000000, CRC(020a11f1) SHA1(85cfae76234f72b0039ebc02f931bb2a9c10b1af) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c4d.bin", 0x2000001, 0x1000000, CRC(991b5ed2) SHA1(99c4c470bc9cb388773e27de6df4a16803fc7b45) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "271-c5d.bin", 0x4000000, 0x1000000, CRC(c2de8b66) SHA1(40c2ea48fc20d470163a9dbb40c0276fc4cfceb9) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "271-c6d.bin", 0x4000001, 0x1000000, CRC(3ff750db) SHA1(714f14a2eb2df6f25d10a6b6aff4b3adfbc7a5dc) ) /* Plane 2,3 */
ROM_END

DRIVER_INIT( kof03ex )
{
data16_t *mem16 = (data16_t *)memory_region(REGION_CPU1);
mem16[0xf38ac/2] = 0x4e75;
neo_pcm2_v2(5);
init_neogeo();

/* special ROM banking handler */
memory_install_read16_handler( 0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003_r);
memory_install_write16_handler( 0, ADDRESS_SPACE_PROGRAM, 0x2fe000, 0x2fffff, 0, 0, kof2003p_w);
}

GAMEB( 2003, kof03ex,  kof2003,  neogeo, neogeo, neogeo,  kof03ex,  ROT0, "hack / bootleg", "The King of Fighters 2004 EX Hero" )

kof2003_r and kof2003p_w are the same as before
« Last Edit: May 10, 2005, 01:17:56 PM by iq_132 »

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
King of Fighter 2003 and hacks drivers
« Reply #8 on: December 27, 2004, 08:34:19 PM »
What does that meme patch does? i have the same P roms and game runs perfectly, but without that patch...
See ya!!!!!! :D

Good and evil co-exist because of the balance, lies are not part of it...

FB Alpha Plus! site infos updated, see the latest info clicking on my profile link...

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
King of Fighter 2003 and hacks drivers
« Reply #9 on: January 02, 2005, 06:43:27 AM »
Quote from: FerchogtX
What does that meme patch does? i have the same P roms and game runs perfectly, but without that patch...
See ya!!!!!! :D


this is an old fataku patch which seems not needed anymore

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
King of Fighter 2003 and hacks drivers
« Reply #10 on: January 02, 2005, 12:36:52 PM »
Why do you use the encrypted V rom in kof2k3 ex ?
IQ Forum Member

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
King of Fighter 2003 and hacks drivers
« Reply #11 on: January 03, 2005, 07:15:17 AM »
Quote from: James33
Why do you use the encrypted V rom in kof2k3 ex ?


because the real v roms are not dumped
only P and S were dumped
since I don't use the bootleg (useless), I use the decrypted kof2003 set as a parent (for which the encrypted V rom is available)

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
King of Fighter 2003 and hacks drivers
« Reply #12 on: January 03, 2005, 12:37:38 PM »
kof2003b isn't useless, from it kof2k4ex and kof2k3up uses the GFX sound and z80...
See ya!!!!! :D
P.D. Just for knowlodge, anyone can do what they want ;)

Good and evil co-exist because of the balance, lies are not part of it...

FB Alpha Plus! site infos updated, see the latest info clicking on my profile link...

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
King of Fighter 2003 and hacks drivers
« Reply #13 on: January 03, 2005, 08:57:37 PM »
Quote from: FerchogtX
kof2003b isn't useless, from it kof2k4ex and kof2k3up uses the GFX sound and z80


what do you know? only P & S were dumped
you can't just assume they use the same GFX sound and z80 until it's fully dumped :)

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
King of Fighter 2003 and hacks drivers
« Reply #14 on: January 03, 2005, 11:13:00 PM »
Quote from: X-or
what do you know? only P & S were dumped
you can't just assume they use the same GFX sound and z80 until it's fully dumped :)

Don't trust me, ask fataku...
See ya!!!!! :D

Good and evil co-exist because of the balance, lies are not part of it...

FB Alpha Plus! site infos updated, see the latest info clicking on my profile link...