Author Topic: Enabling all BIOS in FBA  (Read 13851 times)

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Enabling all BIOS in FBA
« 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:

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 Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
Re: Enabling all BIOS in FBA
« Reply #1 on: June 20, 2005, 11:53:02 AM »
yeah, I look foward for the same thing... :biggrin:
<- Who are you?

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #2 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;
}


Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #3 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;
}


Offline Death Metal

  • Member
  • ***
  • Posts: 121
  • Karma: +3/-0
  • Crimson Blade
Re: Enabling all BIOS in FBA
« Reply #4 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

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #5 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;


Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: Enabling all BIOS in FBA
« Reply #6 on: June 21, 2005, 10:42:27 PM »
Thanks for that man, really, youre the best :D
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 Death Metal

  • Member
  • ***
  • Posts: 121
  • Karma: +3/-0
  • Crimson Blade
Re: Enabling all BIOS in FBA
« Reply #7 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!)
« Last Edit: June 22, 2005, 01:39:50 AM by Death Metal »

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #8 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;
}


Offline KingHanco

  • Sr. Member
  • ****
  • Posts: 401
  • Karma: +0/-4
  • "Special " Member
Re: Enabling all BIOS in FBA
« Reply #9 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.

Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: Enabling all BIOS in FBA
« Reply #10 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:
« Last Edit: June 26, 2005, 08:35:31 PM by FerchogtX »

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 iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #11 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.)


Offline FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: Enabling all BIOS in FBA
« Reply #12 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
« Last Edit: June 27, 2005, 10:20:38 PM by FerchogtX »

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 FerchogtX

  • FBNeo Dev
  • ******
  • Posts: 375
  • Karma: +7/-0
  • FB Alpha Team ;)
    • FB Alpha Plus! Web Site
Re: Enabling all BIOS in FBA
« Reply #13 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:

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 iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: Enabling all BIOS in FBA
« Reply #14 on: June 28, 2005, 06:02:25 PM »
I'm guessing because it's too new of a bios or something ^^