Author Topic: KOF2003 japanese no matter BIOS selected...  (Read 7315 times)

Offline Fixer

  • Newbies
  • *
  • Posts: 11
  • Karma: +0/-0
KOF2003 japanese no matter BIOS selected...
« on: June 06, 2005, 07:52:25 AM »
Whats up, Before I get into the problem I'm having, a little back info on me :D.  I'm new to compiling MAME and essentially just trying to get everything I've got working in one single version of it (that I have working in other versions).  So far I've been pretty successful, thanks to people like James over at 1emulation & arcade@home.  The drivers you guys write are too easy to use a majority of the time :).  And I'd really like to better understand the INIT section of the drivers, the ROM_START / END is simple enough now, but the INIT is killing me with its seemingly nonsensical text.  Some form of guide would be awesome if anybody has written something like that?

But anyway, on to the problem at hand.

King of Fighters 2003 (encrypted) loads up fine in MAME32k .90, and I'm trying to get it to work in my personal compiled MAME32 .97 that I've been working on for about 5 days now on and off.  I got the game to load, but it loads with ONLY the japanese text/properites (like Mai's bouncing).  I'd like to get it to load up with the english BIOS, when I select Erope V2 or one of the various Uni-Bios.  But no matter which one I select it seems like its locked in japanese.  If it had this behavior this in MAME32k .90 I woudln't care, but since I know that it's my build and not the romset, I'd really like to figure out what's causing it.  Unfortunately there are so many lines of INIT information for kof2003 (included with lots of other games) so I'm not sure if I'd be able to show all of it to you right away (I am going to work off of a fresh / non-modified text file tomorrow to try and just use the bare minimum of information to see if I can get that working).

I'm going to cut/paste my INIT code, the ROM_START/END is copied and pasted, so I'm hoping that it will be something easily found without having a bunch of code to look through ><.  Going to post those in the next post, in this post I'm gonna post a link to my neogeo.c file in the hopes that if someone is willing, they might go through the entire INIT section to make sure its working well.

My neogeo.c link (zipped) - if anyone wants to check it out and debug this game for me ^_^.

Or perhaps share their neogeo.c file that works with all of the KOF's (minus 10th & 2004), all of the Samurai Showdowns, all of the Metal Slugs...and SNK v Capcom (reg & plus if somoene's gotten plus working).  Then I could read their neogeo.c and see what the differences are to try and learn more.

It's so hard to find DRIVER's save for just from a few people - would be nice if there was an archive of all drivers for games that MAME doesn't support on its own...but I understand why there isn't (at least not easy to find through google).

Offline Fixer

  • Newbies
  • *
  • Posts: 11
  • Karma: +0/-0
Re: KOF2003 japanese no matter BIOS selected...
« Reply #1 on: June 06, 2005, 07:53:48 AM »
A couple of sections out of my neogeo.c file, in case you don't want to look through the entire thing.  But I'm afraid that I probably didn't cut & paste whatever is actually causing the problem; since I'm not familiar enough with the INIT section to really know what it all means and what does what.

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

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

rom = memory_region( REGION_CPU1 );

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

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

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

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

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

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

free( buf );

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

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

free(buf);
}

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

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

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

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

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

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

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);
}
}

// imcomplete
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 );
}

static void svcchaos_px_decrypt( void )
{
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;
UINT8 *rom, *buf;

rom = memory_region( REGION_CPU1 );

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 = malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );

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

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

free( buf );

buf = malloc( 0x800000 );
memcpy( buf, rom, 0x800000 );
memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 );
memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 );
free( buf );
}
Code: [Select]
DRIVER_INIT( kof2003 )
{
kof2003_px_decrypt();
kof2003_sx_decrypt();

neogeo_fix_bank_type = 2;
init_neogeo();

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
}

Offline neo04

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +1/-0
Re: KOF2003 japanese no matter BIOS selected...
« Reply #2 on: June 06, 2005, 10:43:29 AM »
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( 0x100000, 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-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) ) /* 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

Offline Fixer

  • Newbies
  • *
  • Posts: 11
  • Karma: +0/-0
Re: KOF2003 japanese no matter BIOS selected...
« Reply #3 on: June 06, 2005, 11:21:58 AM »
Thanks, one stinkin number ><.  I'll get a handle on it one day :p.  Thank you very much :).

Now though, the "how to play" screen doesn't show up.  Not that I need to know, but that's kind of strange.  Games in english though so I'm happy. :D  And that was simple enough to fix too, just a dip switch setting (must have set it sometime during my attempt to swap language through that).
« Last Edit: June 06, 2005, 11:36:20 AM by Fixer »

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: KOF2003 japanese no matter BIOS selected...
« Reply #4 on: June 27, 2005, 10:39:34 PM »
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( 0x100000, 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-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) ) /* 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
But... that is incorrect, why irrmaze can switch regions and hardware without that? I know why, in machin\neogeo.c and src\inptport.c are some functions for enabling regions and hard type, if someone can find the values for kof2003 bios can be usefull, this fix f***s up the zoom effect unless you don't use a japannese BIOS or the UniBios...
Here is the code in inptport.c for irrmaze:
Code: [Select]
#ifdef USE_NEOGEO_HACKS
int remove_neogeo_territory = 0;
int remove_neogeo_arcade = 0;

if (Machine->gamedrv && !stricmp(Machine->gamedrv->source_file+12, "neogeo.c"))
{
int system_bios = determine_bios_rom(Machine->gamedrv->bios);

/* first mark all items to disable */
remove_neogeo_territory = 1;
remove_neogeo_arcade = 1;

switch (system_bios)
{
// enable arcade/console and territory
case NEOGEO_BIOS_EURO:
remove_neogeo_arcade = 0;
remove_neogeo_territory = 0;
break;

// enable territory
case NEOGEO_BIOS_DEBUG:
remove_neogeo_territory = 0;
}

// enable arcade/console and territory
if (!strcmp(Machine->gamedrv->name,"irrmaze"))
{
remove_neogeo_arcade = 0;
remove_neogeo_territory = 0;
}
}
#endif /* USE_NEOGEO_HACKS */
Code: [Select]
#ifdef USE_NEOGEO_HACKS
{
struct InputPort *port;

for (port = iip.ports; port->type != IPT_END; port++)
{
int n = 0;

while (port[n].type == IPT_DIPSWITCH_NAME)
{
if ((remove_neogeo_territory && !strcmp(port[n].name, "Territory")) ||
    (remove_neogeo_arcade && (!strcmp(port[n].name, "Machine Mode") ||
                              !strcmp(port[n].name, "Game Slots"))))
{
while (port[++n].type == IPT_DIPSWITCH_SETTING)
;
}
else
break;
}

if (n)
memmove(port, &port[n], n * sizeof *port);
}

}
#endif /* USE_NEOGEO_HACKS */
in machine\neogeo.c:
Code: [Select]
#ifdef USE_NEOGEO_HACKS
if ((system_bios == NEOGEO_BIOS_EURO) && (strcmp(Machine->gamedrv->name,"kof2003")) &&
(strcmp(Machine->gamedrv->name,"kof2k3nd")))
{
    /* Set up machine country */
    src = readinputport(5);
    res = src & 0x3;

    /* Console/arcade mode */
    if (src & 0x04)
    res |= 0x8000;

    /* write the ID in the system BIOS ROM */
    mem16[0x0200] = res;

    if (memcard_manager==1)
    {
    memcard_manager=0;
    mem16[0x11b1a/2] = 0x500a;
    }
    else
    {
    mem16[0x11b1a/2] = 0x1b6a;
    }
}

if (system_bios == NEOGEO_BIOS_DEBUG)
{
/* Set up machine country */
src = readinputport(5);
res = src & 0x3;

/* write the ID in the system BIOS ROM */
mem16[0x0200] = res;

if (memcard_manager==1)
{
memcard_manager=0;
mem16[0x11b1a/2] = 0x3cac;
}
else
{
mem16[0x1194c/2] = 0x1b6a;
}
}

if (neogeo_has_trackball)
{
/* Set up machine country */
src = readinputport(5);
res = src & 0x3;

/* Console/arcade mode */
if (src & 0x04)
res |= 0x8000;

/* write the ID in the system BIOS ROM */
mem16[0x0200] = res;

if (memcard_manager==1)
{
memcard_manager=0;
mem16[0x10c44/2] = 0x4366;
}
else
{
mem16[0x10c44/2] = 0x0c94;
}
}
#endif /* USE_NEOGEO_HACKS */
I Will not post the other code because it only patches the memory checks and the green screen on boot so, this is the important thing, the is supposed to enable the regions in irrmaze bios, should be something similar for kof2003
Anyone knows?
See ya!!!! :biggrin:

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
Re: KOF2003 japanese no matter BIOS selected...
« Reply #5 on: June 28, 2005, 07:17:08 AM »
Since this is a Jap Jamma PCB board you are not meant to change Bios to english at all ( Only the MVS is meant to do that )  In a way this version of kof2003 is not really meant to be in the MVS drivers ( Neogeo.c ) Should  be in its own .
Anyway to solve this problem there would have to be a Englsih dump of the Jamma PCB to get the english bios from it .
Or release the MVS version of kof2003 .
« Last Edit: June 28, 2005, 07:19:17 AM by James33 »
IQ Forum Member

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: KOF2003 japanese no matter BIOS selected...
« Reply #6 on: July 01, 2005, 09:42:43 PM »
Since this is a Jap Jamma PCB board you are not meant to change Bios to english at all ( Only the MVS is meant to do that )  In a way this version of kof2003 is not really meant to be in the MVS drivers ( Neogeo.c ) Should  be in its own .
Anyway to solve this problem there would have to be a Englsih dump of the Jamma PCB to get the english bios from it .
Or release the MVS version of kof2003 .
Of course you're right!!!, but irrmaze has a hack for enabling different regions, meybe we will never see a dump of the other BIOS, in the mean time we can make an innocent hack to enable all regions, just like fba does, that src that i posted is meant to do that in irrmaze BIOs maybe we can make something similar for kof2003, then the NEOGEO_BIOS line becomes useless
See ya!!!!! :biggrin:

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...