Added the remaining homebrews (frogfest, npong10, poknight, columnsn, beast) and they all ran. Frogfest and Beast don't appear to do anything useful; Poknight and Npong10 worked but are boring; and Columnsn was the best of the lot, once I worked out the rules. Its only problem is when it's game over you can't see your score. Are you using these roms? "265-p1sr.bin", 0x100000, CRC(ebedae17)? "265-s1sr.bin", 0x020000, CRC(fecbb589)? If so, this code should work for you: DRIVER_INIT( kof2k2sr )
{
int i;
UINT8 *rom = memory_region( REGION_GFX1 );
int rom_size = memory_region_length( REGION_GFX1 );
for( i = 0; i < rom_size; i++ )
{
rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
}
init_neogeo();
} I should have said, the p1 rom was encrypted. I used "265-p1super", CRC (ab683690). I changed over to what you suggested, then realised almost all the roms were wrong. After fixing that, and using your driver_init, it worked like a charm. That game requires some patches if I remember correctly, try using the ones from regular cthd2003 Still struggling with this, I'm sure it's something wrong in the "text", perhaps I've got the wrong roms again. Now, something that might be handy in the future, I've created a crude "generic" sx_decrypter routine: //-------------------------------------------common sx decrypter
static void sx_decrypt( int value )
{
int sx_size = memory_region_length( REGION_GFX1 );
UINT8 *rom = memory_region( REGION_GFX1 );
int i;
if (value == 1)
{
UINT8 *buf = malloc( sx_size );
memcpy( buf, rom, sx_size );
for( i = 0; i < sx_size; i += 0x10 )
{
memcpy( &rom[ i ], &buf[ i + 0x08 ], 0x08 );
memcpy( &rom[ i + 0x08 ], &buf[ i ], 0x08 );
}
free( buf );
}
if (value == 2)
{
for( i = 0; i < sx_size; i++ )
{
rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 );
}
}
}Call it either by: sx_decrypt(1) [used by samsh5bl, svcplus, kof2003b and kog], or sx_decrypt(2) [used by svcsplus, kof2k2mp, kof2k2sr and kof10thu]. I hope to improve on it later.