Page 1 of 1
List of Core Requiring BIOS Files
Posted: Fri Jun 19, 2020 7:53 pm
by Moondandy
I have been looking to get all the right BIOS files named properly and in the right folders, and presumably aren't the only one.
I've also been learning Python this evening and have written a basic script to check the games folders for cores I know need a BIOS file and flag up if it is missing, and am wanting to work for all cores and build my python skills as I go. I also imagine some of the computer cores needs specific files in specific places to run.
Any help would be super useful and I can update this first post so it contains a master list of all the cores requiring a BIOS:
Official Cores:
Bally Astrocade: boot.rom
Famicom Disk System: boot0.rom
Gameboy Advance: boot.rom (note: optional way to use official BIOS)
Gameboy Colour: boot1.rom
Mega CD: cd_bios.rom
PC CD Engine: cd_bios.rom
Neo Geo: 000-lo.lo + sfix.sfix + sp-s2.sp1 (MVS) + neo-epo.sp1 (AES) + uni-bios.rom
Unofficial Cores:
Atari Jaguar: boot.rom
Computer Cores:
Acorn Archimedes : /games/ARCHIE/riscos.rom
Amiga : KICK.ROM file must be in SD card root
Amstrad boot.rom : /games/Amstrad/boot.rom
ao486 (PC 486) boot0.rom, boot1.rom : /games/ao486/boot0.rom (+boot1.rom)
Apogee EXTROM : /_Computer/apogee.rom
Apple Macintosh Plus : /games/MacPlus/boot.rom
Commodore 16 boot.rom : /games/C16/boot.rom (Optional)
Commodore VIC-20 : /games/VIC20/boot.rom (Optional)
Sinclair QL : /games/QL/boot.rom
UPDATE: see script and more info in thread below
Re: List of Core Requiring BIOS Files
Posted: Sat Jun 20, 2020 12:43 pm
by Lancelot
GBA?
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 12:42 am
by Moondandy
Following on from a conversation on the discord channel, here is my very crude python script for checking to see if the needed console BIOS files are present in the right directories with correct naming, as well as key files needed for the computer cores. Hopefully it is of use to someone developing a more advanced script to actually grab all these files (the BIOS getter script that also in the update all script does (most of?) the console cores already.
Keep in mind this is my first ever script, so it is probably laughable to anyone who knows even a bit of python, but I had fun writing it and found it useful.
# To run this script first plug the MiSTer_Data SD card into your Mac.
# Copy this file to the root folder on the MiSTer_Data SD card
# Type in Terminal:
# "cd /Volumes/MiSTer_Data"
# Then type:
# "python3 mister-missing-bios-check-3.py" or whatever this script's name now is.
from pathlib import Path
print("Below is a breakdown of the Console cores requiring additional files in order to run and if present in your folder structure:")
my_file = Path("MISTer.ini")
if my_file.is_file():
print("")#MISTer.ini present
else:
print("! MISTer.ini file MISSING! : MISTer.ini should be in SD card root")
my_file = Path("names.txt")
if my_file.is_file():
print("")#names.txt present
else:
print("! names.txt file MISSING! : names.txt should be in SD card root")
my_file = Path("games/Jaguar/boot.rom")
if my_file.is_file():
print("Atari Jaguar BIOS present")
else:
print("! Atari Jaguar BIOS MISSING! : /games/Jaguar/boot.rom")
my_file = Path("games/Astrocade/boot.rom")
if my_file.is_file():
print("Bally Astrocade BIOS present")
else:
print("! Bally Astrocade BIOS MISSING! : /games/Astrocade/boot.rom")
my_file = Path("games/NES/boot0.rom")
if my_file.is_file():
print("Famicom Disk System BIOS present")
else:
print("! Famicom Disk System BIOS MISSING! : /games/NES/boot0.rom")
my_file = Path("games/GBA/boot.rom")
if my_file.is_file():
print("Gameboy Advance Official BIOS present")
else:
print("! Gameboy Advance Official BIOS MISSING! (Optional) : /games/GBA/boot.rom")
my_file = Path("games/GAMEBOY/boot1.rom")
if my_file.is_file():
print("Gameboy Colour BIOS present")
else:
print("! Gameboy Colour BIOS MISSING! : /games/GAMEBOY/boot1.rom")
my_file = Path("games/MegaCD/boot.rom")
if my_file.is_file():
print("Mega CD BIOS present")
else:
print("! Mega CD BIOS MISSING! : /games/MegaCD/boot.rom")
my_file = Path("games/TGFX16-CD/cd_bios.rom")
if my_file.is_file():
print("Turbo GFX / PC Engine CD BIOS present")
else:
print("! Turbo GFX / PC Engine CD BIOS MISSING! : /games/TGFX16-CD/cd_bios.rom")
my_file = Path("games/NeoGeo/000-lo.lo")
if my_file.is_file():
print("Neo Geo 000-lo.lo BIOS present")
else:
print("! Neo Geo 000-lo.lo BIOS MISSING! : /games/NeoGeo/000-lo.lo")
my_file = Path("games/NeoGeo/sfix.sfix")
if my_file.is_file():
print("Neo Geo sfix.sfix BIOS present")
else:
print("! Neo Geo sfix.sfix BIOS MISSING! : /games/NeoGeo/sfix.sfix")
my_file = Path("games/NeoGeo/sp-s2.sp1")
if my_file.is_file():
print("Neo Geo sp-s2.sp1 BIOS present")
else:
print("! Neo Geo sp-s2.sp1 BIOS MISSING! : /games/NeoGeo/sp-s2.sp1")
my_file = Path("games/NeoGeo/neo-epo.sp1")
if my_file.is_file():
print("Neo Geo neo-epo.sp1 BIOS present")
else:
print("! Neo Geo neo-epo.sp1 BIOS MISSING! : /games/NeoGeo/neo-epo.sp1")
my_file = Path("games/NeoGeo/uni-bios.rom")
if my_file.is_file():
print("Neo Geo uni-bios.rom BIOS present")
else:
print("! Neo Geo uni-bios.rom BIOS MISSING! : /games/NeoGeo/uni-bios.rom")
print("")
print("Below is a breakdown of the Computer cores requiring additional files in order to run and if present in your folder structure:")
print("")
file = Path("games/ARCHIE/riscos.rom")
if my_file.is_file():
print("Acorn Archimedes RiscOS ROM riscos.rom BIOS present")
else:
print("! Acorn Archimedes RiscOS ROM riscos.rom BIOS MISSING! : /games/ARCHIE/riscos.rom")
file = Path("KICK.ROM")
if my_file.is_file():
print("Amiga KICK.ROM image present")
else:
print("! Amiga KICK.ROM image MISSING! : KICK.ROM file must be in SD card root")
file = Path("games/Amstrad/boot.rom")
if my_file.is_file():
print("Amstrad boot.rom BIOS present")
else:
print("! Amstrad boot.rom BIOS MISSING! : /games/Amstrad/boot.rom")
file = Path("games/ao486/boot0.rom")
if my_file.is_file():
print("ao486 (PC 486) boot0.rom BIOS present")
else:
print("! ao486 (PC 486) boot0.rom BIOS MISSING! : /games/ao486/boot0.rom")
file = Path("games/ao486/boot1.rom")
if my_file.is_file():
print("ao486 (PC 486) boot1.rom BIOS present")
else:
print("! ao486 (PC 486) boot1.rom BIOS MISSING! : /games/ao486/boot1.rom")
file = Path("/_Computer/apogee.rom")
if my_file.is_file():
print("Apogee EXTROM apogee.rom file present")
else:
print("! Apogee EXTROM apogee.rom file MISSING! : /_Computer/apogee.rom")
file = Path("games/MacPlus/boot.rom")
if my_file.is_file():
print("Apple Macintosh Plus boot.rom BIOS present")
else:
print("! Apple Macintosh Plus boot.rom BIOS MISSING! : /games/MacPlus/boot.rom")
file = Path("games/C16/boot.rom")
if my_file.is_file():
print("Commodore 16 boot.rom BIOS present")
else:
print("! Commodore 16 boot.rom BIOS MISSING! (Optional) : /games/C16/boot.rom")
file = Path("games/VIC20/boot.rom")
if my_file.is_file():
print("Commodore VIC-20 boot.rom BIOS present")
else:
print("! Commodore VIC-20 boot.rom BIOS MISSING! (Optional) : /games/VIC20/boot.rom")
file = Path("games/QL/boot.rom")
if my_file.is_file():
print("Sinclair QL boot.rom BIOS present")
else:
print("! Sinclair QL boot.rom BIOS MISSING! : /games/QL/boot.rom")
print("")
print("Script complete.")
print("")
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 10:23 am
by akeley
So does C16 actually need the boot.rom, or is it optional?
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 10:57 am
by retrorepair
Nice, I didn't know about a few of those. Could you update your first post based on the findings in your script?
As above, does GBA not use the real BIOS then?
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 12:05 pm
by Moondandy
Sure, I can update it later.
With GBA:
"Opensource Bios from Normmatt is included, however it has issues with some games. Original GBA BIOS can be placed to GBA folder with name boot.rom"
https://github.com/MiSTer-devel/GBA_MiSTer
With C16:
"Put boot.rom into C16 folder."
https://github.com/MiSTer-devel/C16_MiSTer
I assume this means you need to add that file, but it's not a core I have tried.
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 1:08 pm
by Moondandy
I fixed a bug in the script for Astrocade and added in a check for the official GBA one. After running update all script with the bios getter script in it here is what I get (although I had a few BIOS in already i.e. Jaguar).
Below is a breakdown of the Console cores requiring additional files in order to run and if present in your folder structure:
Atari Jaguar BIOS present
Bally Astrocade BIOS present
Famicom Disk System BIOS present
Gameboy Advance Official BIOS present
Gameboy Colour BIOS present
Mega CD BIOS present
Turbo GFX / PC Engine CD BIOS present
Neo Geo 000-lo.lo BIOS present
Neo Geo sfix.sfix BIOS present
! Neo Geo sp-s2.sp1 BIOS MISSING! : /games/NEOGEO/sp-s2.sp1
! Neo Geo neo-epo.sp1 BIOS MISSING! : /games/NEOGEO/neo-epo.sp1
Neo Geo uni-bios.rom BIOS present
Below is a breakdown of the Computer cores requiring additional files in order to run and if present in your folder structure:
! Acorn Archimedes RiscOS ROM riscos.rom BIOS MISSING! : /games/ARCHIE/riscos.rom
! Amiga KICK.ROM image MISSING! : KICK.ROM file must be in SD card root
! Amstrad boot.rom BIOS MISSING! : /games/Amstrad/boot.rom
! ao486 (PC 486) boot0.rom BIOS MISSING! : /games/ao486/boot0.rom
! ao486 (PC 486) boot1.rom BIOS MISSING! : /games/ao486/boot1.rom
! Apogee EXTROM apogee.rom file MISSING! : /_Computer/apogee.rom
! Apple Macintosh Plus boot.rom BIOS MISSING! : /games/MacPlus/boot.rom
! Commodore 16 boot.rom BIOS MISSING! (Optional) : /games/C16/boot.rom
! Commodore VIC-20 boot.rom BIOS MISSING! (Optional) : /games/VIC20/boot.rom
! Sinclair QL boot.rom BIOS MISSING! : /games/QL/boot.rom
Script complete.
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 2:00 pm
by akeley
I thought so too, but now I think it's optional. The wording in the wiki suggests that, but it's the same with VIC-20 and yet that core does not require boot.rom (it adds some functionality but is not necessary).
PS: It's "Commodore", btw
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 2:26 pm
by Moondandy
Thanks for that, have updated script and ran again and updated the output also. Noted that the Commodore ones are optional and fixed the spelling. If you notice anything else please let me know!
Likewise, if you can think of any other files that it is worth validating for that would be cool to chuck in it is helping me learn Python if nothing else. I have it checking for the names.txt and MiSter.ini file already.
I had thought a validation script that checked each games folder and flagged any files that weren't supported could be a useful tool, but right now that is a bit beyond me and is a lot of work. It would be good to get this script so it doesn't have to be put onto the SD card to be run first (ideally be able to check of SSH).
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 2:41 pm
by lomdar67
This script would be even more useful if it would do a checksum check on the bios files. So you would be sure you have the right bios file...
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 3:20 pm
by Moondandy
I'm on day 1 Python scripting right now, that feels like day 2
. That seems a good idea though, but issue would be what to check against and there are different versions of various BIOS to be used - unless I am missing something.
Am I right in thinking there is no way to run a python script from within the MiSter its self? Only bash scripts?
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 3:31 pm
by lomdar67
Moondandy wrote: ↑Tue Jul 07, 2020 3:20 pm
I'm on day 1 Python scripting right now, that feels like day 2
. That seems a good idea though, but issue would be what to check against and there are different versions of various BIOS to be used - unless I am missing something.
Am I right in thinking there is no way to run a python script from within the MiSter its self? Only bash scripts?
Yea probably day two or three...
I think the biggest problem will be collecting all the data you need (the right checksums) and keeping that data up to date. Especially if you include beta builds like e.g. the X68000 and PC88 cores.
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 6:00 pm
by Moondandy
Well that seems like a long way off goal, and TBH I am not sure anyone is going to ever use this. I'm going to try get my head around lists and loops next and see if I can do this a bit cleaner and add in some more validation easily.
I've fixed another bug and now the only two files I seem to be missing are:
! Neo Geo sp-s2.sp1 BIOS MISSING! : /games/NEOGEO/sp-s2.sp1
! Neo Geo neo-epo.sp1 BIOS MISSING! : /games/NEOGEO/neo-epo.sp1
Now, the bios getter script only downloads these 3:
NeoGeo
000-lo.lo
sfix.sfix
uni-bios-40
It seems although Neo Geo Core the readme states this:
In addition, several bios files must be placed in the NEOGEO folder for the core to function properly:
000-lo.lo
sfix.sfix
sp-s2.sp1 (MVS)
neo-epo.sp1 (AES)
uni-bios.rom
Sometimes these files may be named slightly differently depending on where they are obtained, but they must be renamed to match the filenames above to work with MiSTer. You may choose between using original system BIOS (sp-s2.sp1/neo-epo.sp1) and uni-bios.rom. Using uni-bios is recommended, and can be obtained here.
Which confused me, I think it should say you either need sp-s2.sp1 or neo-epo.sp1 or uni-bios.rom, not all 3. I need to look at the core, and how bios switching works.
Re: List of Core Requiring BIOS Files
Posted: Tue Jul 07, 2020 6:18 pm
by lomdar67
sp-s2.sp1 (MVS) and neo-epo.sp1 (AES) are the original bios versions for MVS/AES.
uni-bios.rom is they “Universe“ bios including AES/MVS and Europe/Japan/US.
So you don’t necessarily need all three. These are more alternatives.
Re: List of Core Requiring BIOS Files
Posted: Wed Jul 08, 2020 7:48 pm
by MrX_Cuci
Are the hashes of the used files documented somewhere? Lots of trial and error without those.
Re: List of Core Requiring BIOS Files
Posted: Thu Jul 09, 2020 9:26 am
by retrorepair
MrX_Cuci wrote: ↑Wed Jul 08, 2020 7:48 pm
Are the hashes of the used files documented somewhere? Lots of trial and error without those.
I don't know that any of these cores check the hash? I don't really think they should anyway, there are lots of revisions of most of these BIOS files so unless we are going to use naming conventions a la MAME then hashes aren't very useful.
Re: List of Core Requiring BIOS Files
Posted: Thu Jul 09, 2020 6:27 pm
by MrX_Cuci
It has nothing to do with a naming convention. Let's look at the example above:
sp-s2.sp1 (MVS) and neo-epo.sp1 (AES) are the original bios versions for MVS/AES.
That's great to know, but there are a dozen files named like this, some good, some bad, some malware (Yikes!). How do we know we have the original files? This is weere the hash comes in. See this
https://wiki.neogeodev.org/index.php?title=System_ROM for the original hash of those files. I now only have to figure out what hash my files have and delete the bad ones.
So if anyone has a list of the correct original / oficial BIOS files, I would be greatfull. Mister is all about accuracy isn't it.
Re: List of Core Requiring BIOS Files
Posted: Thu Jul 09, 2020 8:22 pm
by retrorepair
MrX_Cuci wrote: ↑Thu Jul 09, 2020 6:27 pm
It has nothing to do with a naming convention. Let's look at the example above:
sp-s2.sp1 (MVS) and neo-epo.sp1 (AES) are the original bios versions for MVS/AES.
That's great to know, but there are a dozen files named like this, some good, some bad, some malware (Yikes!). How do we know we have the original files? This is weere the hash comes in. See this
https://wiki.neogeodev.org/index.php?title=System_ROM for the original hash of those files. I now only have to figure out what hash my files have and delete the bad ones.
So if anyone has a list of the correct original / oficial BIOS files, I would be greatfull. Mister is all about accuracy isn't it.
It's up to you to find the right file, if the file names are as you quoted, they will work. If they aren't working you must have a crap file. Malware? Find a better website, hashes won't help with that.
Mega CD (E) - M1 V1.00.bin
Mega CD (E) - M2 V2.00 ().bin
Mega CD (E) - M2 V2.00.bin
Mega CD (E) - M2 V2.00w.bin
Mega CD (J(E)) - M1 V1.00s.bin
Mega CD (J(UE)) - M2 V2.00 ().bin
Mega CD (J) - M1 V1.00p.bin
Sega CD (U) - M1 V1.10.bin
Sega CD (U) - M2 V2.00 (Non-Working).bin
Sega CD (U) - M2 V2.00w.bin
Sega CD (U) - M2 V2.11x (2.00).bin
Sega CD (U) - M2 V2.21.bin
X'EYE (JUE) - V2.00.bin
See the problem with hashes? There's four versions of the US model 2 BIOS there, how do you intend to hash those without having a different name for each? More over, if you want to pick one of them to have as "the bios", your accuracy argument goes out the window since you have no choice but to use an arbitrary revision.
Also you don't want to exclude hacks like the region free bios so it's a pointless exercise. If it's a bad rom it won't work, if it's a good rom it will. Real hardware works the same way, can't get more accurate than that.
Also, how often will you need to find these bios files? Once you are set up, back up, then just play.
Re: List of Core Requiring BIOS Files
Posted: Sun Jul 12, 2020 2:29 am
by H3ML5XLAXBKU
I had a crack at refactoring your code. Now it is pretty straight forward to add another bios check
Code: Select all
# To run this script first plug the MiSTer_Data SD card into your Mac.
# Copy this file to the root folder on the MiSTer_Data SD card
# Type in Terminal:
# "cd /Volumes/MiSTer_Data"
# Then type:
# "python3 mister-missing-bios-check-3.py" or whatever this script's name now is.
# file_name, path, required
mister_files = [
('MISTer.ini', 'MISTer.ini', False),
('names.txt', 'names.txt', False),
]
console_files = [
('Atari Jaguar BIOS', 'games/Jaguar/boot.rom', True),
('Bally Astrocade BIOS', 'games/Astrocade/boot.rom', True),
('Famicom Disk System BIOS', 'games/NES/boot0.rom', True),
('Gameboy Advance Official BIOS', 'games/GBA/boot.rom', False),
('Gameboy Colour BIOS', 'games/GAMEBOY/boot1.rom', True),
('Mega CD BIOS', 'games/MegaCD/boot.rom', True),
('Turbo GFX / PC Engine CD BIOS', 'games/TGFX16-CD/cd_bios.rom', True),
('Neo Geo 000-lo.lo BIOS', 'games/NeoGeo/000-lo.lo', True),
('Neo Geo sfix.sfix BIOS', 'games/NeoGeo/sfix.sfix', True),
('Neo Geo sp-s2.sp1 BIOS', 'games/NeoGeo/sp-s2.sp1', True),
('Neo Geo neo-epo.sp1 BIOS', 'games/NeoGeo/neo-epo.sp1', True),
('Neo Geo uni-bios.rom BIOS', 'games/NeoGeo/uni-bios.rom', True),
]
computer_files = [
('Acorn Archimedes RiscOS ROM riscos.rom BIOS', 'games/ARCHIE/riscos.rom', True),
('Amiga KICK.ROM image', 'KICK.ROM', True),
('Amstrad boot.rom BIOS', 'games/Amstrad/boot.rom', True),
('ao486 (PC 486) boot0.rom BIOS', 'games/ao486/boot0.rom', True),
('ao486 (PC 486) boot1.rom BIOS', 'games/ao486/boot1.rom', True),
('Apogee EXTROM apogee.rom', '_Computer/apogee.rom', True),
('Apple Macintosh Plus boot.rom BIOS', 'games/MacPlus/boot.rom', True),
('Commodore 16 boot.rom BIOS', 'games/C16/boot.rom', False),
('Commodore VIC-20 boot.rom BIOS', 'games/VIC20/boot.rom', False),
('Sinclair QL boot.rom BIOS', 'games/QL/boot.rom', True),
]
from pathlib import Path
def check_presence(files):
for file_name, path, required in files:
file = Path(path)
if file.is_file():
print(f"{file_name} is present")
else:
print(f"! {file_name} MISSING! {('(Optional)', '')[required]}: {path}")
print("Below is a breakdown of the Console cores requiring additional files in order to run and if present in your folder structure:")
print("")
check_presence(mister_files)
check_presence(console_files)
print("")
print("Below is a breakdown of the Computer cores requiring additional files in order to run and if present in your folder structure:")
print("")
check_presence(computer_files)
print("")
print("Script complete.")
print("")
One thing I noticed is that the script doesn't care if the directory is present or not. You might consider skipping the warning if the directory is not present.