Welcome!
Final Burn Neo => FBN Development => Topic started by: BisonSAS on December 03, 2004, 12:13:51 AM
-
Here's the PCB BIOS support for kof2003. :)
in neo_run.cpp
find:
Neo68KBIOS = Next; Next += 0x020000; // 68K boardROM
replace:
Neo68KBIOS = Next; Next += nCodeSize; // 68K boardROM
find:
if ((BurnDrvGetHardwareCode() & HARDWARE_SNK_CONTROLMASK) == HARDWARE_SNK_TRACKBALL) {
nNewBIOS = 9;
}
add this after:
if (strcmp(BurnDrvText(0), "kof2003") == 0 || strcmp(BurnDrvText(0), "kof2k3ba") == 0) {
nNewBIOS = 3;
}
find:
// Patch out checksum test (the AES BIOS doesn't have one)
if (nBIOS == 9) {
*((unsigned short*)(Neo68KBIOS + 0x010D8C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D8E)) = 0x4E71;
}
add this after:
// Implemented PCB BIOS by BisonSAS
// Patch out the BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6
if (nBIOS == 3) {
/* PCB BIOS patch, for system ROM error */
*((unsigned short*)(Neo68KBIOS + 0x010AA4)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010AA6)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D86)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D88)) = 0x4E71;
}
find:
static int neogeoReset()
{
NeoLoad68KBIOS((NeoSystem & 0x07) ^ 4);
if (nBIOS == -1 || nBIOS == 9) {
// Write system type & region code into BIOS ROM
*((unsigned short*)(Neo68KBIOS + 0x000400)) = ((NeoSystem & 4) << 13) | (NeoSystem & 0x03);
}
replace:
static int neogeoReset()
{
NeoLoad68KBIOS((NeoSystem & 0x07) ^ 4);
if (nBIOS == -1 || nBIOS == 9 || nBIOS == 3) {
// Write system type & region code into BIOS ROM
*((unsigned short*)(Neo68KBIOS + 0x000400)) = ((NeoSystem & 4) << 13) | (NeoSystem & 0x03);
}
in d_neogeo.cpp
find:
STDDIPINFO(neotrackball);
add this after:
static struct BurnDIPInfo neopcbDIPList[] = {
// Offset
{0x19, 0xF0, 0x00, 0x00, NULL},
// Defaults
{0x00, 0xFF, 0xFF, 0x00, NULL},
{0x01, 0xFF, 0x7F, 0x00, NULL},
// Fake DIPs
{0x02, 0xFF, 0xFF, 0x86, NULL},
{0, 0xFE, 0, 2, "Autofire"},
{0x00, 0x01, 0x04, 0x00, "Off"},
{0x00, 0x01, 0x04, 0x04, "On"},
// DIP 1
{0, 0xFE, 0, 2, "Setting mode"},
{0x00, 0x01, 0x01, 0x00, "Off"},
{0x00, 0x01, 0x01, 0x01, "On"},
// 1 or 2 coin slots
{0, 0xFE, 0, 2, "Coin chutes"},
{0x00, 0x02, 0x02, 0x00, "1"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0x00, 0x02, 0x02, 0x02, "2"},
{0x02, 0x00, 0x3F, 0x06, NULL},
// 2 or 4 coin slots
{0, 0xFE, 0, 2, "Coin chutes"},
{0x00, 0x82, 0x02, 0x00, "2"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0x00, 0x82, 0x02, 0x02, "4"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0, 0xFE, 0, 5, "Commmunicaton"},
{0x00, 0x01, 0x38, 0x00, "Disabled"},
{0x00, 0x01, 0x38, 0x08, "Setting 1"},
{0x00, 0x01, 0x38, 0x10, "Setting 2"},
{0x00, 0x01, 0x38, 0x18, "Setting 3"},
{0x00, 0x01, 0x38, 0x20, "Setting 4"},
{0x00, 0x01, 0x38, 0x28, "Setting 5"},
{0x00, 0x01, 0x38, 0x30, "Setting 6"},
{0x00, 0x01, 0x38, 0x38, "Setting 7"},
{0, 0xFE, 0, 2, "Free play"},
{0x00, 0x01, 0x40, 0x00, "Off"},
{0x00, 0x01, 0x40, 0x40, "On"},
{0, 0xFE, 0, 2, "Stop mode"},
{0x00, 0x01, 0x80, 0x00, "Off"},
{0x00, 0x01, 0x80, 0x80, "On"},
// Fake DIPs
// Memory card
{0, 0xFD, 0, 2, "Memory card"},
{0x02, 0x01, 0x80, 0x80, "Writable"},
{0x02, 0x01, 0x80, 0x00, "Write-protected"},
// MVS/AES system
{0, 0xFD, 0, 2, NULL},
{0x02, 0x02, 0x04, 0x04, "MVS system"},
{0x02, 0x00, 0x30, 0x00, NULL},
{0x02, 0x02, 0x04, 0x00, "AES system"},
{0x02, 0x00, 0x30, 0x00, NULL},
// Region
{0, 0xFD, 0, 3, "Region"},
{0x02, 0x01, 0x03, 0x00, "Japan"},
{0x02, 0x01, 0x03, 0x01, "USA"},
{0x02, 0x01, 0x03, 0x02, "Asia / Europe"},
{0x02, 0x01, 0x03, 0x03, "Japan"},
};
STDDIPINFO(neopcb);
find:
STD_ROM_PICK(neotrackball);
STD_ROM_FN(neotrackball);
add this after:
static struct BurnRomInfo neopcbRomDesc[] = {
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"271-bios.bin", 0x040000, 0xc521b5bc, 0xD0}, // 3 68K BIOS (JP, MVS, ? slot, version 6, supports kof2003 PCB)
{"", 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},
{"", 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(neopcb);
STD_ROM_FN(neopcb);
in kof2003 driver or kof2k3ba
find:
STDROMPICKEXT(kof2003, kof2003, neogeo);
STD_ROM_FN(kof2003);
replace:
STDROMPICKEXT(kof2003, kof2003, neopcb);
STD_ROM_FN(kof2003);
find:
neogeoDIPInfo
replace:
neopcbDIPInfo
Tested using kof2k3ba ;)
See ya!! :D
-
thanks a lot man!!! this is great... Only a question: this patches the calendar and the booting green screen?
// Implemented PCB BIOS by BisonSAS
// Patch out the BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6
if (nBIOS == 3) {
/* PCB BIOS patch */
*((unsigned short*)(Neo68KBIOS + 0x010AA4)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010AA6)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D86)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D88)) = 0x4E71;
}
Just for know, great work man
See ya!!!!! :D
-
Only a question: this patches the calendar and the booting green screen?
No, this patch's for system ROM error.
(http://www.imghst.com/uploads/bisonsas/kof2003-11-03-220558.png)
For calendar error using generic fix:
uPD4990AInit((int)((long long)12000000 * nBurnCPUSpeedAdjust / 256)); // This is used to avoid calendar errors while overclockng a neogeo game
Patch for booting green screen is unknown. :confused: :(
I updated the information of the patch:
// Implemented PCB BIOS by BisonSAS
// Patch out the BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6
if (nBIOS == 3) {
/* PCB BIOS patch, for system ROM error */
*((unsigned short*)(Neo68KBIOS + 0x010AA4)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010AA6)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D86)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D88)) = 0x4E71;
}
See ya! :cool:
-
For calendar error using generic fix:
uPD4990AInit((int)((long long)12000000 * nBurnCPUSpeedAdjust / 256)); // This is used to avoid calendar errors while overclockng a neogeo game
where do I put this exactly :confused:
-
where do I put this exactly :confused:
in neo_run.cpp
find:
uPD4990AInit(12000000);
replace:
uPD4990AInit((int)((long long)12000000 * nBurnCPUSpeedAdjust / 256)); // This is used to avoid calendar errors while overclockng a neogeo game
See ya! :D
-
in neo_run.cpp
find:
uPD4990AInit(12000000);
replace:
uPD4990AInit((int)((long long)12000000 * nBurnCPUSpeedAdjust / 256)); // This is used to avoid calendar errors while overclockng a neogeo game
See ya! :D
thnkx, working XD
-
thanks a lot man!!! this is great... Only a question: this patches the calendar and the booting green screen?
// Implemented PCB BIOS by BisonSAS
// Patch out the BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6
if (nBIOS == 3) {
/* PCB BIOS patch */
*((unsigned short*)(Neo68KBIOS + 0x010AA4)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010AA6)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D86)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D88)) = 0x4E71;
}
Just for know, great work man
See ya!!!!! :D
patches the calendar and the booting green screen? ^_^
in old mame (ex: mame32K),you just change your src code from this
DRIVER_INIT( kof2003 )
{
kof2003_px_decrypt();
kof2003_sx_decrypt();
[COLOR=Blue] neogeo_fix_bank_type = 2;
init_neogeo();[/COLOR]
install_mem_read16_handler(0, 0x2fe000, 0x2fffff, MRA16_RAM );
install_mem_write16_handler(0, 0x2fe000, 0x2fffff, MWA16_RAM );
install_mem_read16_handler(0, 0x2fffe0, 0x2fffef, mv0_prot_r );
install_mem_write16_handler(0, 0x2fffe0, 0x2fffef, mv0_prot_w );
install_mem_read16_handler(0, 0x2ffff0, 0x2ffff3, mv0_bankswitch_r );
install_mem_write16_handler(0, 0x2ffff0, 0x2ffff3, mv0_bankswitch_w );
install_mem_read16_handler(0, 0xc00000, 0xc3ffff, MRA16_BANK3 ); // 256k bios
}
to this:
DRIVER_INIT( kof2003 )
{
kof2003_px_decrypt();
kof2003_sx_decrypt();
install_mem_read16_handler(0, 0x2fe000, 0x2fffff, MRA16_RAM );
install_mem_write16_handler(0, 0x2fe000, 0x2fffff, MWA16_RAM );
install_mem_read16_handler(0, 0x2fffe0, 0x2fffef, mv0_prot_r );
install_mem_write16_handler(0, 0x2fffe0, 0x2fffef, mv0_prot_w );
install_mem_read16_handler(0, 0x2ffff0, 0x2ffff3, mv0_bankswitch_r );
install_mem_write16_handler(0, 0x2ffff0, 0x2ffff3, mv0_bankswitch_w );
install_mem_read16_handler(0, 0xc00000, 0xc3ffff, MRA16_BANK3 ); // 256k bios
[COLOR=Red] neogeo_fix_bank_type = 2;
init_neogeo();[/COLOR]
}
-
Here's the PCB BIOS support for kof2003. :)
in neo_run.cpp
find:
Neo68KBIOS = Next; Next += 0x020000; // 68K boardROM
replace:
Neo68KBIOS = Next; Next += nCodeSize; // 68K boardROM
find:
neogeoDIPInfo
replace:
neopcbDIPInfo
Tested using kof2k3ba ;)
See ya!! :D
maybe not add neopcbDIPInfo,^_^
-
I've discovered some intersting thing on kof2k3 bios:
If u split 271-bios.bin in two parts u will see:
Part 1 128kb crc 5172FF3B = jap version 6 bios
Part 2 128kb crc B5C742B2 = part of kof2003 68k rom
So if the first part its a bios, u just have to change it for bios u want:
like:
sp-e.sp1 + part 2 = 271-osuh.bin crc C6ED9E25
vs-bios.rom + part2 = 271-osah.bin crc BBAA398F
uni-bios.20 + part2 = 271-unibios.bin crc CECAD563
So now theres no need to use that whole code to run just one bios, u can use juse it (i renamed the bios name, just to make it not confused, but u can change it whatever u want)
static struct BurnDIPInfo neopcbDIPList[] = {
// Offset
{0x19, 0xF0, 0x00, 0x00, NULL},
// Defaults
{0x00, 0xFF, 0xFF, 0x00, NULL},
{0x01, 0xFF, 0x7F, 0x00, NULL},
// Fake DIPs
{0x02, 0xFF, 0xFF, 0x86, NULL},
{0, 0xFE, 0, 2, "Autofire"},
{0x00, 0x01, 0x04, 0x00, "Off"},
{0x00, 0x01, 0x04, 0x04, "On"},
// DIP 1
{0, 0xFE, 0, 2, "Setting mode"},
{0x00, 0x01, 0x01, 0x00, "Off"},
{0x00, 0x01, 0x01, 0x01, "On"},
// 1 or 2 coin slots
{0, 0xFE, 0, 2, "Coin chutes"},
{0x00, 0x02, 0x02, 0x00, "1"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0x00, 0x02, 0x02, 0x02, "2"},
{0x02, 0x00, 0x3F, 0x06, NULL},
// 2 or 4 coin slots
{0, 0xFE, 0, 2, "Coin chutes"},
{0x00, 0x82, 0x02, 0x00, "2"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0x00, 0x82, 0x02, 0x02, "4"},
{0x02, 0x00, 0x3F, 0x06, NULL},
{0, 0xFE, 0, 5, "Commmunicaton"},
{0x00, 0x01, 0x38, 0x00, "Disabled"},
{0x00, 0x01, 0x38, 0x08, "Setting 1"},
{0x00, 0x01, 0x38, 0x10, "Setting 2"},
{0x00, 0x01, 0x38, 0x18, "Setting 3"},
{0x00, 0x01, 0x38, 0x20, "Setting 4"},
{0x00, 0x01, 0x38, 0x28, "Setting 5"},
{0x00, 0x01, 0x38, 0x30, "Setting 6"},
{0x00, 0x01, 0x38, 0x38, "Setting 7"},
{0, 0xFE, 0, 2, "Free play"},
{0x00, 0x01, 0x40, 0x00, "Off"},
{0x00, 0x01, 0x40, 0x40, "On"},
{0, 0xFE, 0, 2, "Stop mode"},
{0x00, 0x01, 0x80, 0x00, "Off"},
{0x00, 0x01, 0x80, 0x80, "On"},
// Fake DIPs
// Memory card
{0, 0xFD, 0, 2, "Memory card"},
{0x02, 0x01, 0x80, 0x80, "Writable"},
{0x02, 0x01, 0x80, 0x00, "Write-protected"},
// MVS/AES system
{0, 0xFD, 0, 2, NULL},
{0x02, 0x02, 0x04, 0x04, "MVS system"},
{0x02, 0x00, 0x30, 0x00, NULL},
{0x02, 0x02, 0x04, 0x00, "AES system"},
{0x02, 0x00, 0x30, 0x00, NULL},
// Region
{0, 0xFD, 0, 3, "Region"},
{0x02, 0x02, 0x03, 0x00, "Japan"},
{0x02, 0x00, 0x30, 0x00, NULL},
{0x02, 0x02, 0x03, 0x01, "USA"},
{0x02, 0x00, 0x30, 0x00, NULL},
{0x02, 0x02, 0x03, 0x02, "Asia / Europe"},
{0x02, 0x00, 0x30, 0x00, NULL},
{0x02, 0x02, 0x03, 0x03, "Japan"},
{0x02, 0x00, 0x30, 0x00, NULL},
// Custom BIOS
{0, 0xFD, 0, 3, NULL},
{0x02, 0x01, 0x30, 0x00, "Normal BIOS"},
{0x02, 0x01, 0x30, 0x10, "Debug BIOS"},
{0x02, 0x01, 0x30, 0x20, "Universe BIOS"},
};
static struct BurnRomInfo neopcbRomDesc[] = {
{"271-osjd.bin", 0x040000, 0xc521b5bc, 0xD0}, // 68K BIOS (JP, MVS, 3 slot, version 6, supports kof2003 PCB)
{"271-osuh.bin", 0x040000, 0xC6ED9E25, 0xD0}, // 68K BIOS (US, MVS, 6 slot, version 1, supports kof2003 PCB)
{"271-osah.bin", 0x040000, 0xBBAA398F, 0x50}, // 68K BIOS (AS, MVS, ? slot, version 3, supports kof2003 PCB)
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"271-aes.bin",0x040000, 0xE8B1F6F4, 0xD0}, // 6 68K BIOS (AS, AES)
{"", 0, 0, 0},
{"271-debug.bin",0x040000, 0x31413A92, 0xD0}, // 8 68K BIOS (JP, devkit)
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"271-unibios.bin",0x040000, 0xCECAD563, 0xD0}, // C Universe BIOS (v2.0)
{"", 0, 0, 0},
{"", 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(neopcb);
STD_ROM_FN(neopcb);
Now we just have to wait until the encrypted c and m come out (it will be easy)
-
Yes I allready knew that .
Nice job on the code :)
-
I've updated the whole bios set, now the names are correct, and theres suport for all bios...
I will pass the crc of the part 1 bios files latter
See ya xD
-
Now I sit and wonder how this sort of support could work for Mame :)
-
I've discovered some intersting thing on kof2k3 bios:
If u split 271-bios.bin in two parts u will see:
Part 1 128kb crc 5172FF3B = jap version 6 bios
Hey Jimmy,
Part 1 128kb it's not the bios japan 6.
112.363 differences found. :eek:
:cool:
-
I think he meant Jap. Version 3
-
I think he meant Jap. Version 3
2 versions of the bios japan exist, and more the version of Kof 2003.
Look:
BIOS NEO-GEO MVS SYSTEM (JAPAN) Ver. 6.00
vs-bios.rom -> CRC: F0E8F27D
(http://www.imghst.com/uploads/bisonsas/2020bb-10-27-204426.png)
BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6 PCB Kof 2003
271-bios.bin -> CRC: C521B5BC
Part 1 128kb CRC: 5172FF3B
(http://www.imghst.com/uploads/bisonsas/kof2003b-10-27-204249.png)
BIOS JAPAN VERSION 2(?)
sp-j2.rom -> CRC: ACEDE59C
(http://www.imghst.com/uploads/bisonsas/zupapan-11-17-065624.png)
All have different CRC. ;) :cool:
-
i'm talking about sp-j3.sp1 crc 3856533F there are only about 10 real diffs between the first 128k of the 271 bios and this.
-
Look like 1 protype, 1 master and 1 beta on kof 2003??? :)
-
Hey Jimmy,
Part 1 128kb it's not the bios japan 6.
112.363 differences found. :eek:
:cool:
Yeah, i always confuse those bios name xD :D
Thanks for correct me xD
See ya :cool:
-
Look like 1 protype, 1 master and 1 beta on kof 2003??? :)
There not just for kof2003 :)
except for:
BIOS NEO-GEO MVS SYSTEM (JAPAN/J3) Ver. 6 PCB Kof 2003
271-bios.bin -> CRC: C521B5BC
Part 1 128kb CRC: 5172FF3B
-
BIOS for kof2003 has different CRC and info because has support for the zoom effect and other instructions for the game, so this bios is the real decrypted japan version for kof2003 PCB, one of the other bios can have the same data because are normal MVS BIOS
See ya!!!!!! :D
-
My kof2003 pcb bios support code,can play with all Region(JAP/USA/EURO) and all mode(MVS & AES), don't use any hack bios,^_^
static struct BurnRomInfo neokof03RomDesc[] = {
{"271-osjd.bin",0x040000, 0xC521B5BC, 0xD0}, // 0 68K BIOS (JP/AS, MVS)
{"usa_2slt.bin",0x020000, 0xE72943DE, 0xD0}, // 1 68K BIOS (US, MVS, 2 slot, version 2)
{"sp-s2.sp1", 0x020000, 0x9036D879, 0xD0}, // 2 68K BIOS (AS, MVS, 1 slot, version 2)
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"aes-bios.bin",0x020000, 0xD27A71F1, 0xD0}, // 6 68K BIOS (AS, AES)
{"", 0, 0, 0},
{"neodebug.bin",0x020000, 0x698EBB7D, 0xD0}, // 8 68K BIOS (JP, devkit)
{"", 0, 0, 0},
{"", 0, 0, 0},
{"", 0, 0, 0},
{"uni-bios.20", 0x020000, 0x0c12c2ad, 0xD0}, // C Universe BIOS (v2.0)
{"", 0, 0, 0},
{"", 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);
STDROMPICKEXT(kof2003, kof2003, [COLOR=Blue]neokof03[/COLOR]);
STD_ROM_FN(kof2003);