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.  


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)

This guide written by AJ/freem, 2014-2015.
"NEOGEO" is a registered trademark of SNK Playmore Corp. All other company and product names used are trademarks or registered trademarks of their respective owners.
This guide is not authorized or licensed by SNK Playmore.