Hardware – Neo-Geo Programming Guide
Introducing the Hardware
The Neo-Geo consists of a number of chips working in tandem.
- Main CPU: 68000 @ 12MHz
- Sound CPU: Z80 @ 4MHz
- Sound Chips: YM2610 + YM3016
- Graphics Chip: (depends on device and revision)
- Various other chips, depending on device, device revision, etc...
You might be familiar with some of these chips from working on other environments, or you might not be. The graphics hardware is custom, as is to be expected with arcade hardware from the late 1980s/early 1990s.
68000
The 68000 is a 16-bit big-endian CPU from Motorola. It is used as the main processor
on the Neo-Geo. The 68000 found on a Neo-Geo may or may not be sourced from Motorola.
Some systems are known to have Toshiba 68K (TMP68HC000
) chips.
Z80
The Z80 is an 8-bit CPU from Zilog. The Neo-Geo uses it as a sound co-processor,
and as such, it can only access the YM2610, M1 ROM (cart)/.Z80
files (CD),
and its own RAM. Z80s found on Neo-Geo hardware are likely to be second source.
Known second-sources include SGS-Thomson (Z8400BB1
) and Toshiba (84C00AM-6
).
YM2610
The YM2610 is a sound synthesis and playback chip from Yamaha. Sound synthesis and generation is split up into three parts: SSG, FM synthesis, and ADPCM playback.
SSG (Simple Sound Generator)
When they say "simple", they mean it; the SSG has three square wave channels and a LFSR-based noise channel. The SSG is typically used for sound effects. Notable in-game uses include Zupapa (loud effects) and various Nazca games.
FM (Frequency Modulation)
FM is where the music primarily goes. There are four FM channels, with each having four operators, panning, amplitude modulation, phase modulation, feedback, and algorithms. Programming FM is a very large subject that has been the topic of many books, so I won't even begin to try covering it in full here.
ADPCM
ADPCM is used for sampled sound playback from the V ROMs (cart) or .PCM
files (CD). There are two categories of ADPCM sounds on the Neo-Geo: ADPCM-A and ADPCM-B.
ADPCM-A
ADPCM-A has 6 channels with a fixed playback frequency of 18.5185kHz. Audio is compressed as 4 bit per sample and played back as 12 bit.
ADPCM-B
ADPCM-B has 1 channel with a variable playback frequency between 1.85kHz to 55.555kHz. Audio is compressed as 4 bit per sample and played back as 16 bit.
Important note: ADPCM-B is NOT supported on the Neo-Geo CD/CDZ!
YM3016
An external Digital to Analog converter.
Graphics
Though there have been various versions of the Neo-Geo graphics chip, the functionality is similar throughout the family.
Graphics Capability
- Max Fix Tileset: 128KiB (without bankswitching)
- Max Sprite Tileset: 128 MiB
- Max Displayable Sprites: 380
- Max Sprites per Scanline: 96
- VRAM: 64KiB + 4KiB
- Colors: Max 3841 simultaneous colors out of the 65536 master palette (15 colors * 256 palettes + background color)
Other Chips
The Neo-Geo can also rely on other chips. Some of these chips are on the system board, while others are on the cartridge board(s). By no means is the below an exhaustive list.
MVS Backup RAM
The MVS Backup RAM is a battery-backed 64KiB RAM which stores game scores, cabinet information, and bookkeeping information.
NEC uPD4990
A Real Time Clock chip used on MVS boards to store the calendar's time and date.
Hitachi HD6301
An 8-bit microcontroller responsible for multiplayer communication in cartridge
games. Found on PROG-HERO
and PROG42G-COM
boards.
Current Neo-Geo ROMsets do not include the program data from this chip, so multiplayer
modes cannot be fully tested properly.
SNK NEO-CMC
The SNK NEO-CMC is a class of ASIC that provides protection, banking, and latching. Any game using a NEO-CMC chip has encrypted C ROMs (the Fix layer tiles are at the end of the C ROM data). The NEO-CMC 050 also required encrypting the M1 ROMs. A more positive addition of the NEO-CMC is its Fix bankswitching mechanism, allowing for more than 4096 tiles. Operation is different between the NEO-CMC 042 and 050, and this will be explained later in the guide. Or if you're impatient, there's always the NeoGeoDev Wiki.