Open source BIOS

nauman

Student
Joined
Mar 18, 2025
Messages
51
Reaction score
108
Location
Sweden
Hey everyone!

Thought I would kickoff the new year by announcing a project I have been lurking with for the past months.

So much about the Neo Geo BIOS have been "hidden" for the very few that read assembly fluently and since I love odd challenges I took it upon myself to write one in C.
Not only would the whole thing make much more sense to myself while I demystify a lot of the things happening underneath, but I also realize during the whole project that more people could probably gain a lot of insight if I published everything on Github.

Before I encountered the lovely weirdness of the original BIOS, the end goal was to make a 1:1 copy of the sp-s2.sp1 version of the BIOS. That goal shifted swiftly to be more like a close brother than anything :D In the end, it is more about the insights of the inner working and trying to improve the handling of the hardware it depends upon. It is still very close to the original though.

This have never been about replacing the amazing work of the original BIOS, the UniBIOS or other projects. These versions will always be the golden standard. Look at this project more in the eyes of someone who wants to understand and make it their own, wherever that road leads you.

While the BIOS works (at least in MAME), please treat it as an early alpha and for the love of god, do not expect it to be perfect :D

Main repository can be found here

Please share your thoughts while I continue my assembly journey!
 
Interesting project. Appreciate the efforts and will be curious to see what else you come up with.

If you're looking for more hacking projects, may I suggest:
A cartridge conversion of Zintrick with music that has all the voices.

An audio hack for Razoola's Crossed Swords 2 conversion, similar to elrayzeur's except that it preserves the original sound effects from the game's original sound driver (rather than replacing everything with mono sound effect recordings in NGFX Soundbuilder).
 
Hi, cool project.
Did I understand your GitHub read-me, that the goal is a re-implementation of the original BIOS in C for preservation, readability etc. plus new features? Did you use reverse engineering tools to help step-by-step conversion from assembler to C or did you re-write the "basic/general working" of the BIOS in C?
Thanks.
 
Hi, cool project.
Did I understand your GitHub read-me, that the goal is a re-implementation of the original BIOS in C for preservation, readability etc. plus new features? Did you use reverse engineering tools to help step-by-step conversion from assembler to C or did you re-write the "basic/general working" of the BIOS in C?
Thanks.
By implementing all components of the BIOS in a language that is more "word centric", like C, it would hopefully make it more clear for more people what is actually happeningen in the background.

I have mainly used a disassembler (Ghidra) to view the assembly code from the original BIOS. Then I have interpreted different parts and translated it to its C equivalent. The core part of the code is following the same pattern/flow as the original code and only a few parts have been ignored so far due to it just being weird or unnecessary. To be honest, some parts are also freestyled around the essence of the function, especially for the menus. My hops is that this project can grow and start implementing features beyond the original version, but hey, got to start somewhere so the first step is a close copy to the original.

Maybe worth mentioning, some parts of the code cannot be converted to C due to the limitations of the compiler or language limitations. Jumping and reseting stack-pointers for example is not pure C :p
 
Very cool project man. I wish I knew more about this type of stuff!! Ill have to check it out in MAME :)
 
Back
Top