Welcome!
General Emulation => MAME => Topic started by: James33 on November 24, 2004, 07:13:28 PM
-
This should give you an idea even if your rom crc do not match .
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
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();
}
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
-
machine/neogeo.c
/* 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;
}
}
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
}
-
thx for kof2k3up! so james, what is the crc of decrypted p1 of kof2k3up did u get?
-
Its decrypted but the bankswitching has not been removed .
-
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
/* 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);
}
-
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();
}
-
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
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 :)
-
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
-
What does that meme patch does? i have the same P roms and game runs perfectly, but without that patch...
See ya!!!!!! :D
-
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
-
Why do you use the encrypted V rom in kof2k3 ex ?
-
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)
-
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 ;)
-
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 :)
-
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
-
Don't trust me, ask fataku...
See ya!!!!! :D
if that's the same fataku I know, he hasn't aknoledged kof2003ex and up hacks use the bootleg m/v/c roms
-
Well, if from svcboot , plus, plusa and splus USES ROMS (don't trust me, Billy JR. dumped that carts as far as i know, smo others were dumped by ****)
It's logical that this bootlegs USES the GFX and sound of the BOOTLEG parent if this doesn't convice you:
You dont need to load the roms C5 and C6, since those roms are used for extract the S1 information in the real game, but this bootleg use a S1 roms so the C5 and C6 are useless.
But the real bootleg board uses that roms isn't? kof2003b does that... I guess...
See ya!!!!!! :D
The bootleg board have 8 C roms (8mb each), so NO, doesnt have those roms, just take a look in those C roms, oh wait, you cant ^_^
That means that the bootleg board has the "old" 8 C-ROMs dump and the ex hero set uses the same?... Why Razoola chaged this?... Hard Drive reasons? ^_^ XD
See ya!!!!! :D
maybe, or maybe he doesnt have the full bootleg set at that time, like some roms from bootleg set that arent publics...
Source:
http://neo-source.com/index.php?topic=208.0
Now you can make your own conclutions, I use this lyout just to match the bootleg cart info, but i know that the roms are wrong...
See ya!!!!! :D
-
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)
If you have the encrypted V roms then its a matter of decrypting them which has already been done .Decrypted V roms are never dumped they are decrypted from the encrypted roms Which I doubt the encrypted V roms are used in the bootleg set.
-
If you have the encrypted V roms then its a matter of decrypting them which has already been done .Decrypted V roms are never dumped they are decrypted from the encrypted roms Which I doubt the encrypted V roms are used in the bootleg set.
The only thisng here is that kof2003b has some protections in tha V-ROMs and GFX (i guess) so, they cannot have the same protection as an official snk/playmore cart, i mean things like the PCM2 playmore chip protection or even cmc encryptyon cannot be implemented ina bootleg, because bootleggers doesn't use (or know) how to use them or add them...
They can have protectuions, but this cannot be considered as encryption at all, that's my point of view ;)
See ya!!!! :D
-
Oh ok. Thanks iq_132 for point me to the right place.
I will read these.
====================================================================
Ok I try all these and it does read the roms. Then the game bootup and return to the Mame32-X (my build) screen once again. lol...Heh...I will wait until I get some help on this. Edit - Not working and removed from my build.
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, 0 )
ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
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
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();
}
To machine/neogeo.c
/* 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 );
}
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
}
-
I missed this somehow... does KingHanco = KillerBee ??
You got it ;)
http://neo-source.com/index.php?topic=418.0
-
I missed this somehow... does KingHanco = KillerBee ??
That me.
-
I knew I'd seen it someplace.
The mis-spelling of "below" as "bellow" was a vital clue.
Lol, I thought the complete and utter disregard of any sort of grammar or spelling rules would have tipped you off ^^
-
Ok I updated these. I don't know I did it correcty or not. Here I go. First part I didn't updated it. The 2nd part I did.
//The King of Fighters 2003
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, 0 )
ROM_LOAD( "271-v1.bin", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) )
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
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 );
}
}
// © PLAYMORE 2002 20-09-2004
//-------- to decypt v roms -----------------
static void neo_pcm2_playmore_2002(int value)
{
//kof2002,matrimelee,mslug5 (pcb and mvs),samsho5,svcchaos (pcb and mvs),kof2003 (pcb and mvs),samsh5sp (mvs and aes)
//offset,xor address
unsigned int addrs[7][2]={
{0x000000,0xA5000}, //kof2002
{0xFFCE20,0x01000}, //matrimelee
{0xFE2CF6,0x4E001}, //mslug5
{0xFEB2C0,0x0A000}, //samsho5
{0xFFAC28,0xC2000}, //svcchaos
{0xFF14EA,0xA7001}, //kof2003
{0xFFB440,0x02000}, //samsh5sp
};
unsigned int xordata[7][8]={
{0xF9,0xE0,0x5D,0xF3,0xEA,0x92,0xBE,0xEF}, //kof2002
{0xC4,0x83,0xA8,0x5F,0x21,0x27,0x64,0xAF}, //matrimelee
{0xC3,0xFD,0x81,0xAC,0x6D,0xE7,0xBF,0x9E}, //mslug5
{0xCB,0x29,0x7D,0x43,0xD2,0x3A,0xC2,0xB4}, //samsho5
{0xC3,0xFD,0x81,0xAC,0x6D,0xE7,0xBF,0x9E}, //svcchaos
{0x4B,0xA4,0x63,0x46,0xF0,0x91,0xEA,0x62}, //kof2003
{0x4B,0xA4,0x63,0x46,0xF0,0x91,0xEA,0x62}, //samsh5sp
};
UINT8 *src = memory_region(REGION_SOUND1);
UINT8 *buf = malloc(0x1000000);
int i, j, d;
memcpy(buf,src,0x1000000);
for (i=0;i<0x1000000;i++)
{
j=BITSWAP24(i,23,22,21,20,19,18,17,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16);
j=j^addrs[value][1];
d=((i+addrs[value][0])&0xffffff);
src[j]=buf[d]^xordata[value][j&0x7];
}
free(buf);
}
DRIVER_INIT( kof2003 )
{
kof2003_px_decrypt();
kof2003_sx_decrypt();
neo_pcm2_playmore_2002(5);
neogeo_fix_bank_type = 2;
init_neogeo();
}
static unsigned short CartRAM[0x1000];
void pvc_w8(unsigned int offset, unsigned char data)
{
*(((unsigned char*)CartRAM)+offset)=data;
}
unsigned char pvc_r8(unsigned int offset)
{
return *(((unsigned char*)CartRAM)+offset);
}
// These perform some palette calculations
// Unpack palette word to RGB dword
void pvc_prot1( void ) // on writes to e0/e1
{
unsigned char b1, b2;
b1 = pvc_r8(0x1fe1);
b2 = pvc_r8(0x1fe0);
pvc_w8(0x1fe2,(((b2>>0)&0xf)<<1)|((b1>>4)&1));
pvc_w8(0x1fe3,(((b2>>4)&0xf)<<1)|((b1>>5)&1));
pvc_w8(0x1fe4,(((b1>>0)&0xf)<<1)|((b1>>6)&1));
pvc_w8(0x1fe5, (b1>>7));
}
// Pack RGB dword to palette word
void pvc_prot2( void ) // on writes to e8/e9/ea/eb
{
unsigned char b1, b2, b3, b4;
b1 = pvc_r8(0x1fe9);
b2 = pvc_r8(0x1fe8);
b3 = pvc_r8(0x1feb);
b4 = pvc_r8(0x1fea);
pvc_w8(0x1fec,(b2>>1)|((b1>>1)<<4));
pvc_w8(0x1fed,(b4>>1)|((b2&1)<<4)|((b1&1)<<5)|((b4&1)<<6)|((b3&1)<<7));
}
void pvc_write_bankswitch( void )
{
UINT32 bankaddress;
bankaddress = ((CartRAM[0xff8]>>8)|(CartRAM[0xff9]<<8));
*(((unsigned char *)CartRAM) + 0x1ff0) = 0xA0;
*(((unsigned char *)CartRAM) + 0x1ff1) &= 0xFE;
*(((unsigned char *)CartRAM) + 0x1ff3) &= 0x7F;
neogeo_set_cpu1_second_bank(bankaddress+0x100000);
}
static READ16_HANDLER( pvc_prot_r )
{
return CartRAM[ offset ];
}
static WRITE16_HANDLER( pvc_prot_w )
{
COMBINE_DATA( &CartRAM[ offset ] );
if (offset == 0xFF0)pvc_prot1();
else if(offset >= 0xFF4 && offset <= 0xFF5)pvc_prot2();
else if(offset >= 0xFF8)pvc_write_bankswitch();
}
if (!strcmp(Machine->gamedrv->name,"kof2003"))
{
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);
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0xc00000, 0xc3ffff, 0, 0, MRA16_BANK3 ); // 256k bios
}
ROM_START( kof2003b )
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_BIOS_SOUND_512K( "271-m1d.bin", CRC(0e86af8f) SHA1(769102b67bb1a699cfa5674d66cdb46ae633cb65) )
ROM_REGION( 0x1000000, REGION_SOUND1, 0 )
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( kof2k3up )
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, 0 )
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_END
ROM_START( kof2003a )
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, 0 )
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( 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, 0 )
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) ) /* 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( kof2003a )
{
neogeo_fix_bank_type = 2;
init_neogeo();
}
DRIVER_INIT( kof2k3up )
{
int i;
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( 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 );
}
int i;
UINT8 *srom = memory_region( REGION_GFX1 );
int rom_size = memory_region_length( REGION_GFX1 );
for( 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();
}
static UINT16 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"))
{
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, kof2003_w);
}
Let me know what is wrong that I update those. Thanks.
-
Why the hell don't you just try them?
Try to follow this:
Step 1. - ADD THE CODE
Step 2. - COMPILE MAME
Step 2.1. - If you have a problem, try and fix it, go back to step 2.
Step 3. TRY IT, LEARN.
-
Hell...This isn't what I want it show. I problemy screw it up. :mad:
I bet that why your mad at me.
(http://img212.imageshack.us/img212/1358/untitled7gh1.th.png) (http://img212.imageshack.us/my.php?image=untitled7gh1.png)
I'm so stupid.
-
The hazards of using old code. NEO_SFIX_512K macro doesn't exist, that's why kof2003a and kof2003p aren't going to work. I think you should leave them out until the other problems have been sorted out.
kof2k3up has variable declarations scattered throughout the driver. We have discussed this before, you will need to fix it yourself.
I will disbaled the 2.
Anyway I think this is the problem on the kof2k3up. This is what it causes to loop bellow. I will point to that instead by using the kof2k2pc_sx_decrypt();. I think it will fixs that part.
static void kof2k2pc_sx_decrypt( void )
{
UINT8 *rom = memory_region( REGION_GFX1 );
int rom_size = memory_region_length( REGION_GFX1 );
int i;
for( i = 0; i < rom_size; i++ ) {
rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
}
}
DRIVER_INIT( kof2k2mp )
{
unsigned char *src = memory_region(REGION_CPU1);
unsigned char *dst = (unsigned char*)malloc(0x80);
int i, j;
if (dst)
{
for (i = 0; i < 0x500000; i+=0x80)
{
for (j = 0; j < 0x80 / 2; j++)
{
int ofst = BITSWAP8( j, 6, 7, 2, 3, 4, 5, 0, 1 );
memcpy(dst + j * 2, src + i + ofst * 2, 2);
}
memcpy(src + i, dst, 0x80);
}
}
free(dst);
neogeo_fix_bank_type = 0;
kof2k2pc_sx_decrypt();
cmc50_neogeo_gfx_decrypt(0xec);
neo_pcm2_swap(0);
init_neogeo();
}
-
I will disbaled the 2.
Anyway I think this is the problem on the kof2k3up. This is what it causes to loop bellow. I will point to that instead by using the kof2k2pc_sx_decrypt();. I think it will fixs that part.
/me is proud of Hanco :) You are learning :eek:
-
iq_132, do you have the 2 patches for the 271-s1d.bin (0xbeea2419) and the 271-v1d.bin (0x2058ec5e) for the kof2003b?
I can't find the correct roms set for these drivers. Could it be the roms sets are out dated? I will keep looking though. :biggrin:
-
Nope. Try Neo04's site.
-
Scatch that. Who need patches anyway. There is another way to do this.
I found a very helpful website that show you how to merge the roms together.
I merge the old kof2003 which I found on eMule and I think it a kof2003b because the d roms in the zip.
MakeRoms.bat with this in it and then save it. Click on it next -> copy /b 271-v1d.rom+271-v2d.rom+271-v3d.rom+271-v4d.rom 271-v1.rom
(http://img381.imageshack.us/img381/5443/untitled6pp.png) (http://imageshack.us)
Then let the cmpro rename it to 271-v1d.bin.
I wonder why I couldn't find the rom. I have to merge it to make a 271-v1d.bin that I need. :biggrin:
The rom works without a problem.
Hmmm...I gotting alot of errors on the kof2k3up just now. I will have to disabled that for now. The kof2003b and the kof2003 the only thing works on making and gameplay. The rest are out dated because of the lates Mame source. I'm not sure anyone will updated all this. Because I'm not. If not then I won't worry about it until someone will updated those drivers. I won't complain anymore about this until then. :(
(http://img227.imageshack.us/img227/1196/untitled3gh1.th.png) (http://img227.imageshack.us/my.php?image=untitled3gh1.png)
-
/me is proud of Hanco :) You are learning :eek:
Oh really are you 100% sure ? :biggrin:
-
lol, about 17%, but it's a start.
-
I found the problem. I had the same problem on the mslug3d and over look. I saw it missing and add the ) in there.
Ha Ha Ha. :D
Not fixs.
if (!strcmp(Machine->gamedrv->name,"kof2003b" || !strcmp(Machine->gamedrv->name,"kof2k3up"))
{
/* || !strcmp(Machine->gamedrv->name,"kof2003a")) */
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, kof2003_w);
}
Fixs.
if (!strcmp(Machine->gamedrv->name,"kof2003b") || !strcmp(Machine->gamedrv->name,"kof2k3up"))
{
/* || !strcmp(Machine->gamedrv->name,"kof2003a")) */
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, kof2003_w);
}
=============================================================================
Edit. I will wait until next year when Mame Plus get the kof2003 drivers. It will be best thing to do.
-
Edit. I will wait until next year when Mame Plus get the kof2003 drivers. It will be best thing to do.
Thats just lazy .
-
Thats just lazy .
It is. Then why not help me out on what I'm stuck on. You haven't said anything yet on what is I need to add. :biggrin:
-
Because you do not seem to learn anything .
When you copy a driver you keep them how they are . You do not change them ( Which you seem to do )
-
I couldn't stop thinking about those. I will continue now.
-
I'm fairly certain the Cx and V are available now...
-
KOF2003:
The driver is loading decrypted V and C roms. Are the encrypted ones available? What are the CRC's?
Is there decryption code available?
The encrypted V rom has been around for a very long time now and the code . And yes the encrypted C's are now released as well , So far there is no code the C roms .
-
Yeah, neoconv, I wrote it a while back... or if you have the kof2003a Vx just copy /b 271-v1a.bin+271-v2a.bin 271-v1.bin
-
neoconv handles sample (v) rom encryption/decryption nothing more. convert2 handles graphics (c) rom encryption/decryption for all roms MVS. currently excluded are mslug5, svcchaos, and kof2003 PCB (coincidently developed in house) as they use kof2000 tables each with an additional XOR. program will more likely than not see an update when mslug5 PCB is dumped and public.
-
I'm fairly certain the Cx and V are available now...
The m1 is also available now?
-
Replace the screwup one with this.
GAME ( 2003, kof2003, 0, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
Into
GAMEB( 2003, kof2003, neogeo, neogeo, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
There nothing wrong with this game as far I tested.
I already post at the Mame forum about this.
-
No, the line is correct... read carefully the comment at the end:
GAME ( 2003, kof2003, 0, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
The game boots and work fine. Your fix is wrong even if it works instead. :wink:
-
Replace the screwup one with this.
GAME ( 2003, kof2003, 0, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
Into
GAMEB( 2003, kof2003, neogeo, neogeo, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
There nothing wrong with this game as far I tested.
I already post at the Mame forum about this.
lol , The game is not broken . That was how it was meant to be :)
-
lol , The game is not broken . That was how it was meant to be :)
It looking for the 000.lo.lo, sfix.sfx and sm1.sm1 which I already have.
Edit: Ok I forgotting to deleted the nvram before test it. It just will not run on Mame32. I going to put the cheated way back in there now until Mame do something about it.
Maybe it need to be like this.
GAME ( 2003, kof2003, 0, 0, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
-
No, the line is correct... read carefully the comment at the end:
GAME ( 2003, kof2003, 0, neogeo, neogeo, kof2003, ROT0, "SNK Playmore", "The King of Fighters 2003 (Japan, JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
The game boots and work fine. Your fix is wrong even if it works instead. :wink:
Don't work on the Mame32FX over here. I just now try it. How did you got it to work anyway? :confused:
There is something wrong about that kof2003 source.
-
Don't work on the Mame32FX over here. I just now try it. How did you got it to work anyway? :confused:
There is something wrong about that kof2003 source.
Oh! I'm dumb... I tested kof2003a..... Yes, you're right! It doesn't work because in the ROM_START (kof2003) it loads the BIOS roms. So your first fix is correct. Please forgive me... :idiot:
-
Oh! I'm dumb... I tested kof2003a..... Yes, you're right! It doesn't work because in the ROM_START (kof2003) it loads the BIOS roms. So your first fix is correct. Please forgive me... :idiot:
That ok. I forgive you. :biggrin:
-
Haze and others MAMEDev explained well that kof2003.zip doesn't need to be a neogeo BIOS clone. You can remove your fix safely and fix your kof2003 rom with the new release of CLRMAME which correctly handles the "bug". :wink:
-
Haze and others MAMEDev explained well that kof2003.zip doesn't need to be a neogeo BIOS clone. You can remove your fix safely and fix your kof2003 rom with the new release of CLRMAME which correctly handles the "bug". :wink:
I use the patch that Haze made to over patch the source with some fixes that he did. :biggrin:
-
which would be the correct INIT for kof2003b, in the MAME32 Plus 0.103u2??
I am half lost...
Thanks!!!