my FBA code here:
// The King of Fighters 2003 Ultra Plus (bootleg)
static struct BurnRomInfo kof2k3upRomDesc[] = {
// {"271-p1up.bin" , 0x800000, 0x87294c01, 0x10}, // 0 68K code
{"271-p1up.bin" , 0x100000, 0xE3A57A9C, 0x10}, // 0 68K code /* has protection */
{"271-p1bl.bin" , 0x400000, 0x92ed6ee3, 0x10}, // 2 /* same as 271-p1bl.bin from kof2003b */
{"271h-p3.bin" , 0x200000, 0x0d0a5861, 0x10}, // 1
{"271-s1up.bin" , 0x020000, 0xe5708c0c, 1}, // 3 Text layer tiles
{"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
{"271-v1d.bin" , 0x1000000, 0x2058ec5e, 2}, // 11 Sound data
};
STDROMPICKEXT(kof2k3up, kof2k3up, neogeo);
STD_ROM_FN(kof2k3up);
static void kof2k3up_px_decrypt()
{
int i;
UINT8 *src = (UINT8 *)(Neo68KROM01);
unsigned short *tmp = (unsigned short *)malloc(0x2000);
unsigned short *rom = (unsigned short *)(src+0xfe000);
memcpy(tmp,src+0xd0610,0x2000);
for ( i=0; i<0x2000/2; i++)
rom[i] = tmp[BITSWAP16(i,15,14,13,12,11,10,9,8,7,6,0,4,3,2,1,5)];
free(tmp);
}
static void kof2k3up_sx_decrypt()
{
UINT8 *srom = (UINT8 *)(NeoTextROM + 0x020000);
for (int i=0;i<0x20000;i++) {
srom[i]=BITSWAP08(srom[i],7,6,0,4,3,2,1,5);
}
}
static int kof2k3upInit()
{
memset(kof2003b_tbl,0,0x2000);
pNeoInitCallback = kof2k3up_px_decrypt;
pNeoInitCallbackgfx = kof2k3up_sx_decrypt;
pNeoInitCallbackmap = kof2003bMapHandler;
return NeoInit();
}
struct BurnDriver BurnDrvkof2k3up = {
{"kof2k3up", "The King of Fighters 2003 Ultra Plus (bootleg)", NULL, "SNK Playmore Corporation", "Neo Geo", "2003", "kof2003", "neogeo"},
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG | BDF_LOCKED, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_NEWBANKSYSTEM | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, kof2k3upRomInfo, kof2k3upRomName, neogeoInputInfo, neogeoDIPInfo,
kof2k3upInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};