Author Topic: neo_pvc code for FBA  (Read 9483 times)

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
neo_pvc code for FBA
« on: November 25, 2004, 03:41:38 AM »
Here's the neo_pvc code for kof2003 (pcb version).
Note that you will also need the bankswitch to make this game work.

Code: [Select]
// Original code by HalRIN -  http://www52.tok2.com/home/foge/
// Converted to FBA code by IQ_132 - http://neosource.1emu.net/
static void kof2003_px_decrypt()
{
interleave_pdata();

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;
unsigned char *rom, *buf;

rom = Neo68KROM01;

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

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

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

for( i = 0; i < 0x0100000 / 0x10000; i++ ){
ofst = (i & 0xf0) + BITSWAP08( (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) +
  (BITSWAP08( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);

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

free( buf );

buf = (unsigned char*)malloc(0x900000);
memcpy( buf, rom, 0x900000 );

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

free(buf);
}


Here is the svcchaos (not svchaosa) neo_pvc code
It doesn't work without the bankswitch code (which is the same as used by kof2003)
Converted from mame code by Vorador
http://neo-source.com/showpost.php?p=1556&postcount=24
Code: [Select]
// Original code by HalRIN -- http://www52.tok2.com/home/foge/
static void svcchaos_px_decrypt()
{
const unsigned char xor1[ 0x20 ] = {
0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8,
0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f,
};

const unsigned char xor2[ 0x20 ] = {
0x69, 0x0b, 0x60, 0xd6, 0x4f, 0x01, 0x40, 0x1a, 0x9f, 0x0b, 0xf0, 0x75, 0x58, 0x0e, 0x60, 0xb4,
0x14, 0x04, 0x20, 0xe4, 0xb9, 0x0d, 0x10, 0x89, 0xeb, 0x07, 0x30, 0x90, 0x50, 0x0e, 0x20, 0x26,
};

int i;
int ofst;
unsigned char *rom, *buf;

rom = Neo68KROM01;

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

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, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 );
}

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

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

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

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

free( buf );

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );
memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );
free( buf );
}


Here is the svchaosa (not svcchaos) neo_pvc code
It doesn't work without the bankswitch code (which is the same as used by kof2003)
Converted from mame code by Vorador
http://neo-source.com/showpost.php?p=1556&postcount=24
Code: [Select]
// Original code by HalRIN -- http://www52.tok2.com/home/foge/
static void svcchaos_px_decrypt()
{
interleave_pdata();

const unsigned char xor1[ 0x20 ] = {
0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8,
0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f,
};

const unsigned char xor2[ 0x20 ] = {
0x69, 0x0b, 0x60, 0xd6, 0x4f, 0x01, 0x40, 0x1a, 0x9f, 0x0b, 0xf0, 0x75, 0x58, 0x0e, 0x60, 0xb4,
0x14, 0x04, 0x20, 0xe4, 0xb9, 0x0d, 0x10, 0x89, 0xeb, 0x07, 0x30, 0x90, 0x50, 0x0e, 0x20, 0x26,
};

int i;
int ofst;
unsigned char *rom, *buf;

rom = Neo68KROM01;

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

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, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 );
}

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

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

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

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

free( buf );

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );
memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );
free( buf );
}


Here is the neo_pvc code for mslug5
Here's a completely working driver for mlug5
http://neo-source.com/showpost.php?p=1551&postcount=10

Code: [Select]
// Original code by(?) HalRIN -- http://www52.tok2.com/home/foge/
// Converted to FBA code by iq_132 -- http://neosource.1emu.net/
static void mslug5_px_decrypt()
{
interleave_pdata();

const unsigned char xor1[ 0x20 ] = {
0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29,
0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03,
};

const unsigned char xor2[ 0x20 ] = {
0x36, 0x09, 0xb0, 0x64, 0x95, 0x0f, 0x90, 0x42, 0x6e, 0x0f, 0x30, 0xf6, 0xe5, 0x08, 0x30, 0x64,
0x08, 0x04, 0x00, 0x2f, 0x72, 0x09, 0xa0, 0x13, 0xc9, 0x0b, 0xa0, 0x3e, 0xc2, 0x00, 0x40, 0x2b,
};

int i;
unsigned char *rom, *buf;
int ofst;

rom = Neo68KROM01;

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

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

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

buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

for( i = 0; i < 0x0100000 / 0x10000; i++ ){
ofst = (i & 0xf0) + BITSWAP08( (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) ^ 0x00700) +
  (BITSWAP08( ((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2 ) << 12);

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

mslug5_patch();
}


Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
neo_pvc code for FBA
« Reply #1 on: November 25, 2004, 03:44:37 AM »
Make sure you have one of these P interleaving codes somewhere in your d_neogeo.cpp or most of those neo_pvc codes will not compile.

Here's fataku's version (which is much nicer)
Code: [Select]
// Code by fataku
static void interleave_pdata()
{
int i;
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
for (i=0;i<0x800000/2;i++){
dst[2*i+0]=src[i];
dst[2*i+1]=src[i+0x400000];
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}


Here's my version
Code: [Select]
// Code by iq_132 -- http://neosource.1emu.net/
static void interleave_pdata()
{
int j=0,i;
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
for (i=0;i<0x800000;i=i+4){
dst[i+0]=src[j];
dst[i+1]=src[j+1];
dst[i+2]=src[j+0x400000];
dst[i+3]=src[j+0x400001];
j=j+2;
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}


Offline Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
neo_pvc code for FBA
« Reply #2 on: November 25, 2004, 06:40:49 AM »
wich means that now we can run the x emu kof2003 pcb rom set? :D
<- Who are you?

Offline Vorador

  • Newbies
  • *
  • Posts: 18
  • Karma: +0/-0
  • Junior Member
neo_pvc code for FBA
« Reply #3 on: November 25, 2004, 06:54:02 AM »
Quote from: Shoometsu
wich means that now we can run the x emu kof2003 pcb rom set? :D


Nope yet. We need the bankswitch code too  :mad:

Offline Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
neo_pvc code for FBA
« Reply #4 on: November 25, 2004, 08:21:26 PM »
seems to be a matter of time, since we have the neo pvc code XD
<- Who are you?

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
neo_pvc code for FBA
« Reply #5 on: November 28, 2004, 12:32:47 AM »
Quote from: iq_132
Make sure you have one of these P interleaving codes somewhere in your d_neogeo.cpp or most of those neo_pvc codes will not compile.

Here's fataku's version (which is much nicer)
Code: [Select]
// Code by fataku
static void interleave_pdata()
{
int i;
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
for (i=0;i<0x800000/2;i++){
dst[2*i+0]=src[i];
dst[2*i+1]=src[i+0x400000];
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}


Here's my version
Code: [Select]
// Code by iq_132 -- http://neosource.1emu.net/
static void interleave_pdata()
{
int j=0,i;
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
for (i=0;i<0x800000;i=i+4){
dst[i+0]=src[j];
dst[i+1]=src[j+1];
dst[i+2]=src[j+0x400000];
dst[i+3]=src[j+0x400001];
j=j+2;
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}



I used yours because for some reason fataku's code did not work .
IQ Forum Member

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
neo_pvc code for FBA
« Reply #6 on: November 28, 2004, 01:22:31 AM »
Ok i will have a coffee hehe
IQ Forum Member

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
neo_pvc code for FBA
« Reply #7 on: November 28, 2004, 01:24:54 AM »
In cold weather... with a bit of rum that cofee will be UHMMMMM!!!! delicious!! XD
See ya!!!!! :D
P.D. 1st bankswitch for kof2003 is the same as svcchaos (kof2003b one) the second... maybe with alili changes in the values and offsets in the svcchaos patch function...
See ya!!!!

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 iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
neo_pvc code for FBA
« Reply #8 on: November 28, 2004, 04:05:53 AM »
Just use my code for now ;)


Offline fataku

  • Newbies
  • *
  • Posts: 22
  • Karma: +0/-0
  • Junior Member
neo_pvc code for FBA
« Reply #9 on: November 28, 2004, 11:36:16 AM »
Sorry, i made a mistake, this should work:

Code: [Select]
static void interleave_pdata()
{
int i;
unsigned char* src = Neo68KROM01;
unsigned char* dst = (unsigned char*)malloc(0x800000);
for (i=0;i<0x800000/4;i++){
dst[4*i+0]=src[2*i+0x000000];
dst[4*i+1]=src[2*i+0x000001];
dst[4*i+2]=src[2*i+0x400000];
dst[4*i+3]=src[2*i+0x400001];
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}
btw this also should work:
Code: [Select]
static void interleave_pdata()
{
int i;
unsigned short* src = Neo68KROM01;
unsigned short* dst = (unsigned short*)malloc(0x800000);
for (i=0;i<0x800000/4;i++){
dst[2*i+0]=src[i];
dst[2*i+1]=src[i+0x200000];
}
memcpy(Neo68KROM01,dst,0x800000);
free(dst);
}
« Last Edit: May 10, 2005, 03:03:08 AM by iq_132 »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
neo_pvc code for FBA
« Reply #10 on: December 14, 2004, 04:16:21 AM »
I was bored, so I decided to do this:

Code: [Select]
static void do_neopvc(int game)
{
unsigned int xor1[ 2 ][ 0x20 ] = { // kof2003 does not use XOR 1
{0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8,
0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f},
{0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29,
0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03},
};

unsigned int xor2[ 3 ][ 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},
{0x69, 0x0b, 0x60, 0xd6, 0x4f, 0x01, 0x40, 0x1a, 0x9f, 0x0b, 0xf0, 0x75, 0x58, 0x0e, 0x60, 0xb4,
0x14, 0x04, 0x20, 0xe4, 0xb9, 0x0d, 0x10, 0x89, 0xeb, 0x07, 0x30, 0x90, 0x50, 0x0e, 0x20, 0x26},
{0x36, 0x09, 0xb0, 0x64, 0x95, 0x0f, 0x90, 0x42, 0x6e, 0x0f, 0x30, 0xf6, 0xe5, 0x08, 0x30, 0x64,
0x08, 0x04, 0x00, 0x2f, 0x72, 0x09, 0xa0, 0x13, 0xc9, 0x0b, 0xa0, 0x3e, 0xc2, 0x00, 0x40, 0x2b},
};

int i, ofst, ofst2 = 0x00300;
unsigned char *src = Neo68KROM01;
unsigned char *dst = (unsigned char*)malloc( 0x800000 );

if (game != 1)
for( i = 0; i < 0x100000; i++ )
src[ i ] ^= xor1[ game-2 ][ (i % 0x20) ];

for( i = 0x100000; i < 0x800000; i++ )
src[ i ] ^= xor2[ game-1 ][ (i % 0x20) ];

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

memcpy( dst, src, 0x800000 );

for( i = 0; i < 0x10; i++ ){
ofst = (i & 0xf0) + BITSWAP08( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 );
if (game==2) ofst = (i & 0xf0) + BITSWAP08( (i & 0x0f), 7, 6, 5, 4, 2, 3, 0, 1 );
memcpy( &src[ i * 0x10000 ], &dst[ ofst * 0x10000 ], 0x10000 );
}

for( i = 0x100000; i < 0x800000; i += 0x100 ){
if (game==2) ofst2=0x00a00;
ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ ofst2) + (BITSWAP08( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12);
if (game==3)
ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (BITSWAP08( ((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2 ) << 12);
memcpy( &src[ i ], &dst[ ofst ], 0x100 );
}
}


Add the code above somewhere in your d_neogeo.cpp (It must be before any place you call it.)
Also, make sure you have P interleaving code in your build (the code fataku kindly posted above).

Lastly, add it to your drivers:

Code: [Select]
static void kof2003_px_decrypt()
{
interleave_pdata();

do_neopvc(1);

unsigned char *rom = Neo68KROM01;
unsigned char *buf = (unsigned char*)malloc(0x900000);

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

free(buf);
}


Code: [Select]
static void svcchaos_px_decrypt()
{
do_neopvc(2);

unsigned char *rom = Neo68KROM01;

unsigned char *buf = (unsigned char*)malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );
memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );

free( buf );

svcchaos_patch();
}


Code: [Select]
static void mslug5_px_decrypt()
{
interleave_pdata();
do_neopvc(3);
mslug5_patch();
}


Before anyone asks, kof2003 is still not working.


Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
neo_pvc code for FBA
« Reply #11 on: December 14, 2004, 04:38:26 AM »
great work :D  Thanks for all the effort .
IQ Forum Member

Offline bms888

  • Jr. Member
  • **
  • Posts: 93
  • Karma: +0/-0
  • Member
neo_pvc code for FBA
« Reply #12 on: December 14, 2004, 04:50:03 AM »
Quote from: iq_132
I was bored, so I decided to do this:

Code: [Select]
static void do_neopvc(int game)
{
unsigned int xor1[ 2 ][ 0x20 ] = { // kof2003 does not use XOR 1

[code]static void mslug5_px_decrypt()
{
interleave_pdata();
do_neopvc(3);
mslug5_patch();
}


Before anyone asks, kof2003 is still not working.



kof2003 is still not working,^_^

because kof2003 must use PCB bios.

Code: [Select]

static struct BurnRomInfo neokof03RomDesc[] = {
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},

{"", 0, 0, 0},
{"", 0, 0, 0},
{"271-osjd.bin",0x040000, 0xC521B5BC, 0x40}, //  A 68K BIOS (JP/AS, MVS)
{"271-osuh.bin",0x040000, 0xC6ED9E25, 0x40}, //  B 68K BIOS (US/AS, MVS)
{"", 0, 0, 0},
{"271-osah.bin",0x040000, 0xBBAA398F, 0x40}, //  D 68K BIOS (EU/AS, MVS)
{"", 0, 0, 0},
{"", 0, 0, 0},

{"sm1.sm1", 0x020000, 0x97Cf998B, 0x10}, // 10 Z80 program
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},

{"sfix.sfx", 0x020000, 0x354029FC, 1}, // 14 Text layer tiles
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},

{"000-lo.lo", 0x010000, 0xE09E253C,    1}, // 18 Zoom table
};

STD_ROM_PICK(neokof03);
STD_ROM_FN(neokof03);


Code: [Select]

// The King of Fighters 2003

static struct BurnRomInfo kof2003RomDesc[] = {
{"271-p1.bin",  0x400000, 0xb9da070c,  0x10}, //  0 68K code /* has PCB protection */
{"271-p2.bin",  0x400000, 0xda3118c4,  0x10}, //  1
{"271-p3d.bin", 0x100000, 0x59d376da,  0x10}, //  3 /* P3-ROM encrypted? */

{"271-c1d.bin", 0x1000000, 0xc29acd28,    1}, //  4 Sprite data
{"271-c2d.bin", 0x1000000, 0x328e80b1,    1}, //  5
{"271-c3d.bin", 0x1000000, 0x020a11f1,    1}, //  6
{"271-c4d.bin", 0x1000000, 0x991b5ed2,    1}, //  7
{"271-c5d.bin" ,0x1000000, 0xc2de8b66,    1}, //  8 /* The last 2 CxD roms contains S1-ROM */
{"271-c6d.bin" ,0x1000000, 0x3ff750db,    1}, //  9 /* data (1 MB) only, no sprite data */

{"271-m1d.bin", 0x080000, 0x0e86af8f,  0x10}, //  10 Z80 code /* overdumped? */

{"271-v1d.bin" ,0x1000000, 0x2058ec5e,    2}, //  11 Sound data /* comes from 4 V-ROMs dump */

{"271-p3.bin",  0x100000, 0x5cefd0d2,  0x10}, //  2
};

STDROMPICKEXT(kof2003, kof2003, [COLOR=Blue]neokof03[/COLOR]);
STD_ROM_FN(kof2003);


also need some PVC & bank code,maybe add some code to neo_run.cpp,^_^

Offline iq_132

  • Administrator
  • *****
  • Posts: 3728
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
neo_pvc code for FBA
« Reply #13 on: December 14, 2004, 04:53:49 AM »
Well, that's part of the reason.  Another part is that we miss a port of the bankswitch code to make it work correctly.