The BIOS – Neo-Geo Programming Guide
The Neo-Geo BIOS
The Neo-Geo has a BIOS ROM that contains both user functions and system code. It only expects a few things of your program, and it gives you a number of functions in return. This section will only cover the "retail" BIOS (as opposed to the Debug BIOS or the Universe BIOS).
BIOS Calls
The BIOS exposes a few functions that games can call, knowing that every BIOS will have these calls in the same location.
Address | Name | Description | Notes |
---|---|---|---|
$C00402 |
SYSTEM_RESET |
||
$C00438 |
SYSTEM_INT1 |
The BIOS's VBlank routine. | |
$C00444 |
SYSTEM_RETURN |
Returns from the game to the BIOS. | |
$C0044A |
SYSTEM_IO |
Reads the hardware registers and updates relevant BIOS RAM locations. | |
$C00450 |
CREDIT_CHECK |
Check a player's number of credits. | |
$C00456 |
CREDIT_DOWN |
Deduct credits. | |
$C0045C |
READ_CALENDAR |
Read values from uPD4990 chip. | MVS-only |
$C00462 |
SETUP_CALENDAR |
Sets up uPD4990 chip. | MVS-only |
$C00468 |
SYS_CARD |
||
$C0046E |
SYS_CARD_ERROR |
Handles card errors and displays the correct message. | |
$C004C2 |
FIX_CLEAR |
Clears the Fix Layer. | First and last columns filled with tile 0x20 . |
$C004C8 |
LSP_1st |
Clear SCB2-4, first SCB1 tilemap. | |
$C004CE |
MESS_OUT |
Fix layer message output. | |
$C004D4 |
CONTROLLER_SETUP |
Initializes controllers. |
BIOS RAM
A chunk of RAM (the $10F300
-$10FFFF
area) is reserved
for use by the BIOS. You probably shouldn't be writing to it, but every game probably
reads from it at one point or another. (I'm too lazy to decompile every single game,
though.)
(todo: create a table of BIOS RAM locations)