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

Offline X-or

  • Newbies
  • *
  • Posts: 38
  • Karma: +0/-0
King of Fighter 2003 and hacks drivers
« Reply #15 on: January 04, 2005, 01:02:13 PM »
Quote from: FerchogtX
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

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 #16 on: January 04, 2005, 08:19:56 PM »
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:
Quote from: fataku
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.
Quote from: FerchogtX
But the real bootleg board uses that roms isn't? kof2003b does that... I guess...
See ya!!!!!! :D
Quote from: fataku
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 ^_^
Quote from: FerchogtX
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
Quote from: fataku
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
« Last Edit: May 10, 2005, 01:19:38 PM by iq_132 »

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 James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
King of Fighter 2003 and hacks drivers
« Reply #17 on: January 05, 2005, 02:29:37 AM »
Quote from: X-or
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.
IQ Forum Member

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 #18 on: January 06, 2005, 07:53:25 PM »
Quote from: James33
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

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 KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
The King of Fighters 2003 won't run.
« Reply #19 on: November 28, 2005, 12:22:44 AM »
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.

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, 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
}
« Last Edit: November 28, 2005, 03:08:50 PM by KingHanco »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: King of Fighter 2003 and hacks drivers
« Reply #20 on: December 01, 2005, 11:00:04 AM »
I missed this somehow... does KingHanco = KillerBee ??

You got it ;)
http://neo-source.com/index.php?topic=418.0


Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: King of Fighter 2003 and hacks drivers
« Reply #21 on: December 01, 2005, 04:45:54 PM »
I missed this somehow... does KingHanco = KillerBee ??

That me.

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: King of Fighter 2003 and hacks drivers
« Reply #22 on: December 02, 2005, 12:37:47 PM »
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 ^^


Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: King of Fighter 2003 and hacks drivers
« Reply #23 on: December 12, 2005, 10:54:02 PM »
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.

Code: [Select]
//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
        }


Code: [Select]
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.
« Last Edit: December 12, 2005, 10:56:08 PM by KingHanco »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: King of Fighter 2003 and hacks drivers
« Reply #24 on: December 12, 2005, 11:36:10 PM »
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.


Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: King of Fighter 2003 and hacks drivers
« Reply #25 on: December 13, 2005, 01:54:30 AM »
Hell...This isn't what I want it show. I problemy screw it up. :mad:

I bet that why your mad at me.



I'm so stupid.

Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: King of Fighter 2003 and hacks drivers
« Reply #26 on: December 13, 2005, 02:19:09 PM »
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.

Code: [Select]
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();
}

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: King of Fighter 2003 and hacks drivers
« Reply #27 on: December 13, 2005, 03:42:48 PM »
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.

* iq_132 is proud of Hanco :) You are learning  :eek:


Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: King of Fighter 2003 and hacks drivers
« Reply #28 on: December 13, 2005, 04:30:24 PM »
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:

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: King of Fighter 2003 and hacks drivers
« Reply #29 on: December 13, 2005, 04:59:10 PM »
Nope.  Try Neo04's site.