Welcome!

Final Burn Neo => FBN Development => Topic started by: FerchogtX on June 11, 2005, 10:54:28 PM

Title: Enabling all BIOS in FBA
Post by: FerchogtX on June 11, 2005, 10:54:28 PM
Hi there!!! well, i'm here with a lil' problem, i want to enable all the BIOS (like mame does) to have the chance to select from various BIOS types intead of just 3 regions... but it looks difficult i tried that but AES doesn't work correctly and the settings seems to be scrambled XD... anyone can help me with this?
Thanks in advace,
See ya!!!!! :biggrin:
Title: Re: Enabling all BIOS in FBA
Post by: Shoometsu on June 20, 2005, 11:53:02 AM
yeah, I look foward for the same thing... :biggrin:
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 20, 2005, 12:21:20 PM
I don't know how to do that either :(

but here're some bios patches to help ease the pain.

Code: [Select]
// Patch out the JP (Japan), MVS, ? slot, version 5 BIOS (vs-bios.rom)
if (nBIOS == 0) {
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + 0x011C28)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011C2A)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011C3E)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + 0x011C40)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + 0x011C42)) = 0x1C92;

// Patch for Calendar errors
*((unsigned short*)(Neo68KBIOS + 0x011D3C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011D3E)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011D44)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011D46)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + 0x011D8A)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011D8C)) = 0x4E71;
}

// Hacks for Neo-Geo BIOS
// Patch out the AS (europe/asia), MVS, 1 slot, version 6 BIOS (No Z80) (asia-s3.rom)
if (nBIOS == 2) {
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + 0x010B00)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010B02)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010B16)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + 0x010B18)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + 0x010B1A)) = 0x0B6A;

// Patch for Calendar errors
*((unsigned short*)(Neo68KBIOS + 0x010C14)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010C16)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010C1C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010C1E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + 0x010C62)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010C64)) = 0x4E71;
}

// Patch out the US (United States), MVS, 2 slot, version 5 BIOS (usa_2slt.bin)
if (nBIOS == 1) {
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + 0x011AD6)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011AD8)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011AEC)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + 0x011AEE)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + 0x011AF0)) = 0x1B40;

// Patch for Calendar errors
*((unsigned short*)(Neo68KBIOS + 0x011BEA)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011BEC)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011BF2)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011BF4)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + 0x011C38)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x011C3A)) = 0x4E71;
}
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 20, 2005, 01:25:06 PM
Or something even sexier ;)

Code: [Select]
// Hacks for Neo-Geo MVS BIOS' (Removes green screen on boot)
if (nBIOS < 3) {
int ofst = 0;
if (nBIOS == 0) ofst = 0x1C28; // (vs-bios.rom) JP, MVS, ? slot, Ver. 5
//if (nBIOS == 0) ofst = 0x1B00; // (sp-j2.rom) JP, MVS, ? slot, Ver. 5
// (sp1.jipan.1024) JP, MVS, 4 slot, Ver. 3
if (nBIOS == 1) ofst = 0x1AD6; // (usa_2slt.bin) US, MVS, 2 slot, Ver. 5
if (nBIOS == 2) ofst = 0x1AD6; // (sp-e.sp1) AS, MVS, 6 slow, Ver. 5
//if (nBIOS == 2) ofst = 0x0B00; // (asia-s3.rom) AS, MVS, 1 slot, Ver. 6
//if (nBIOS == 2) ofst = 0x1B00; // (sp-s.sp1) AS, MVS, 4 slot, Ver. 3
// (sp-s2.sp1) AS, MVS, 1 slot, Ver. 5

// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + ofst + 0x010000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01001A)) = 0x006A + ofst;

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + ofst + 0x010114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + ofst + 0x010162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010164)) = 0x4E71;
}
Title: Re: Enabling all BIOS in FBA
Post by: Death Metal on June 20, 2005, 11:35:38 PM
Why do all patches seem to end in 0x4E71? Is this some magical, misterious hexadecimal number in the world of programming? :p
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 20, 2005, 11:53:45 PM
Well, if it's anything like 4e75, which I think it is, It's basically like a return command for c++ (I guess)
4e75                      RTS   (ReTurn from Subroutine)

That means so instead of continuing with the code that it was going to run, the patches make it skip that part.

as for this part:

      *((unsigned short*)(Neo68KBIOS + ofst + 0x010018)) = 0x00C1;
      *((unsigned short*)(Neo68KBIOS + ofst + 0x01001A)) = 0x006A + ofst;

the memory address of the bios in the neogeo is 0x00C10000.  This makes the bios skip right to offset + 0x6A + the bios address;
Title: Re: Enabling all BIOS in FBA
Post by: FerchogtX on June 21, 2005, 10:42:27 PM
Thanks for that man, really, youre the best :D
See ya!!!!! :biggrin:
Title: Re: Enabling all BIOS in FBA
Post by: Death Metal on June 22, 2005, 01:35:40 AM
Oh, I see. Thank you for clarifying that. :)

Oh, and last stupid question... where would one insert all of those, please? (God, I feel like a moron for not figuring that out!)
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 22, 2005, 02:40:06 AM
in neo_run.cpp right before this:

Code: [Select]
// Patch out checksum test (only needed for the irrmaze BIOS)
if (nBIOS == 9) {
*((unsigned short*)(Neo68KBIOS + 0x010D8C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + 0x010D8E)) = 0x4E71;
}
Title: Re: Enabling all BIOS in FBA
Post by: KingHanco on June 23, 2005, 03:17:13 PM
To FerchogtX - The requested URL /fbap/index.htm was not found on this server. - You know about this?

Nice to see you guys still working on mod or update their own fba still.
Title: Re: Enabling all BIOS in FBA
Post by: FerchogtX on June 26, 2005, 08:17:08 PM
To FerchogtX - The requested URL /fbap/index.htm was not found on this server. - You know about this?

Nice to see you guys still working on mod or update their own fba still.
The new url is http://fbap.1emulation.com (this will be reflected on next version)
BTW, tested the patches, works greatfully, I was wondering if there are values for kof2003 BIOS too...
See ya!!!! :biggrin:
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 26, 2005, 10:06:35 PM
Code: [Select]
if (nBIOS < 3 || nBIOS == 9) // Hacks for Neo-Geo MVS BIOS
{
int ofst = 0;
if (nBIOS == 0) ofst = 0x0C24; //  sp-j3.sp1 JP, MVS, ? slot, Ver. 6
// if (nBIOS == 0) ofst = 0x1C28; //  vs-bios.rom JP, MVS, ? slot, Ver. 5
// if (nBIOS == 0) ofst = 0x1B00; //  sp-j2.rom JP, MVS, ? slot, Ver. 5
//  sp1.jipan.1024 JP, MVS, 4 slot, Ver. 3
if (nBIOS == 1) ofst = 0x1AD6; //  usa_2slt.bin US, MVS, 2 slot, Ver. 5
// if (nBIOS == 2) ofst = 0x0B00; //  asia-s3.rom AS, MVS, 1 slot, Ver. 6
// if (nBIOS == 2) ofst = 0x1AD6; //  sp-e.sp1 AS, MVS, 6 slow, Ver. 5
if (nBIOS == 2) ofst = 0x1B00; //  sp-s2.sp1 AS, MVS, 1 slot, Ver. 5
//  sp-s.sp1 AS, MVS, 4 slot, Ver. 3
if (nBIOS == 9) ofst = 0x0C2A;  //  236-bios.bin AS, MVS, ? slot, Ver  T1 (irrmaze BIOS)

// Remove memory check
*((unsigned short*)(Neo68KBIOS + ofst + 0x010000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01001A)) = 0x006A + ofst;

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + ofst + 0x010114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + ofst + 0x010162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010164)) = 0x4E71;
}

Yup, 271-bios.bin is the same as  sp-j3.sp1 (well, a few bytes diff.)
Title: Re: Enabling all BIOS in FBA
Post by: FerchogtX on June 27, 2005, 10:15:12 PM
I know you're gonna kill me but... is there a list of the values only for kof2003 BIOS? or how to add ofst+the hex offset to know the independat values?
Thanks in advance.
See ya!!!! :biggrin:
P.D. nevermind, i found the values XD
Title: Re: Enabling all BIOS in FBA
Post by: FerchogtX on June 27, 2005, 11:22:23 PM
Code: [Select]
if (nBIOS < 3 || nBIOS == 9) // Hacks for Neo-Geo MVS BIOS
{
int ofst = 0;
if (nBIOS == 0) ofst = 0x0C24; //  sp-j3.sp1 JP, MVS, ? slot, Ver. 6
// if (nBIOS == 0) ofst = 0x1C28; //  vs-bios.rom JP, MVS, ? slot, Ver. 5
// if (nBIOS == 0) ofst = 0x1B00; //  sp-j2.rom JP, MVS, ? slot, Ver. 5
//  sp1.jipan.1024 JP, MVS, 4 slot, Ver. 3
if (nBIOS == 1) ofst = 0x1AD6; //  usa_2slt.bin US, MVS, 2 slot, Ver. 5
// if (nBIOS == 2) ofst = 0x0B00; //  asia-s3.rom AS, MVS, 1 slot, Ver. 6
// if (nBIOS == 2) ofst = 0x1AD6; //  sp-e.sp1 AS, MVS, 6 slow, Ver. 5
if (nBIOS == 2) ofst = 0x1B00; //  sp-s2.sp1 AS, MVS, 1 slot, Ver. 5
//  sp-s.sp1 AS, MVS, 4 slot, Ver. 3
if (nBIOS == 9) ofst = 0x0C2A;  //  236-bios.bin AS, MVS, ? slot, Ver  T1 (irrmaze BIOS)

// Remove memory check
*((unsigned short*)(Neo68KBIOS + ofst + 0x010000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01001A)) = 0x006A + ofst;

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + ofst + 0x010114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x01011E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + ofst + 0x010162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + ofst + 0x010164)) = 0x4E71;
}

Yup, 271-bios.bin is the same as  sp-j3.sp1 (well, a few bytes diff.)
I have a lil' question... does that bios is official?... i mean, is not a hack BIOS or something? MAME hasn't supported that since it was out... :confused:
See ya!!!!! :biggrin:
Title: Re: Enabling all BIOS in FBA
Post by: iq_132 on June 28, 2005, 06:02:25 PM
I'm guessing because it's too new of a bios or something ^^
Title: Re: Enabling all BIOS in FBA
Post by: FerchogtX on June 28, 2005, 10:26:52 PM
I'm guessing because it's too new of a bios or something ^^
I hope that someone can clarify if this BIOS are true or not... the mame, mame plus and even the fba teams couldn't ansewr that simple question...
You thisnk that maybe some froends can dump a rencent japanese board? maybe from there we can see if this BIOS are correct, even JhonBoy hasn't answered...
See ya!!!! :biggrin:
P.D. All patches worked at 100% thanks man :D