Guide

P, C, S, M, V: what is actually inside a Neo Geo ROM

A Neo Geo game is not one file. It is five kinds of ROM, each wired to a different part of the board. A MAME romset keeps them as separate files in a zip; a .neo packs the same contents into a single file for a NeoSD flashcart. Same game, two containers.

The five kinds of ROM

ROMHolds
PThe 68000 program — the game itself
CSprite graphics, in numbered pairs
SThe fix layer: 8×8 tiles for text and HUD
MThe Z80 audio program
VSound samples for the YM2610

The split is physical, not organisational. Each type feeds a different chip on a different bus, which is why the C-ROMs ship in pairs (the video hardware reads two at once) and why you cannot simply concatenate everything and hope. If you want the detail on how graphics are packed, that is its own subject.

Romset or .neo: which one you want

Neither is more “real” than the other, and going from one to the other is repackaging rather than conversion. Any tool that can produce a Neo Geo game should be able to give you both, because they answer different questions: does it work, and does it work on the machine.

The BIOS is not part of your game

The Neo Geo has a system BIOS, and it is separate from any cartridge — the console is a base unit and the games are carts, arcade board or not. An emulator needs that BIOS before it can boot anything, which catches people out: a perfectly good romset that refuses to start is usually a missing BIOS, not a broken build.

For homebrew there is an open replacement — nullbios, part of the ngdevkit project — which is redistributable and boots a cartridge without shipping anything owned by SNK. It is what Neo Studio uses so a project can run in the browser without you supplying a BIOS of your own.

Getting one out of a project

Neo Studio compiles a project into all five regions and exports either container: a .neo for a NeoSD, or a MAME romset. In between, the built ROM boots in an emulator embedded in the same page, so the round trip from an edit to a running game is a few seconds rather than a toolchain.

Enter the beta How to make a Neo Geo game →