YM2610



The YM2610 is a sound synthesis chip made by Yamaha, used in every of the NeoGeo's hardware versions. It was merged with the Z80, the YM3016 and the Z80 memory controler in the NEO-YSA chip on late revisions of the NeoGeo CD and CDZ.

Its analog outputs only sound generated by the SSG. The FM and ADPCM parts use an external YM3016 DAC.

Communication
The YM2610 is programmed through two pair of "ports": A and B. They're usually called Address A, Data A, Address B, Data B. They're respectively linked to the Z80's ports 4, 5, 6 and 7.


 * Port A (Z80 ports 4 and 5) concerns the SSG, ADPCM-B and FM channels 1 and 2.
 * Port B (Z80 ports 6 and 7) concerns the ADPCM-A and FM channels 3 and 4.
 * Data A (Z80 port 5) can also be read ?

The Z80's A0 and A1 lines are directly connected to the YM2610's A0 and A1 inputs. A2 informs the NEO-D0 chip that the I/O request is for the YM2610.

Sound generation parts
Its able to produce sound using SSG, FM synthesis and ADPCM playback.

SSG (Simple Sound Generator)
Given its limited capacities, the SSG is rarely used for music in NeoGeo games. It's more often used for sound effects like coin-in, continue countdowns or "GO >>>" indicators in side-scrollers.

The SSG part has 3 square wave channels with programmable frequency, and a LFSR noise channel, all with programmable amplitude. An unique enveloppe generator with predefined shapes can also be linked to the SSG's channels amplitudes. (Is SSG only mono ?)

FM (Frequency Modulation)
The FM part has 4 channels, each having their own parametrable operators, panning and amplitude. It's the most used way of generatic music in games.

ADPCM
APDCM playback allows sampled sounds to be played along with the synthesized ones. Its used for anything that can't be easily synthesized like voices, percussions or wind instruments. Viewpoint uses a lot of sampled drum loops and explosion sounds.

The ADPCM-A part has 6 channels, with a fixed playback frequency of 18.5kHz. Samples can be any size from 256 bytes to 1MB, by 256 bytes increments.

The ADPCM-B part only has 1 channel, but the playback frequency can be changed.