Hardware – Neo-Geo Programming Guide


Introducing the Hardware

The Neo-Geo consists of a number of chips working in tandem.

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

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.

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.