YM2610: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[File:Cd2_ym2610.jpg|thumb|300px|right|YM2610 chip]]
{{ChipInfo
|picture=Cd2_ym2610.jpg
|pkg=SDIP64
|manu=yamaha
|date=1990 ?
|gates=
|used_on=All systems
}}


The YM2610 is a sound synthesis chip made by Yamaha, used in every versions of the NeoGeo hardware.
The YM2610 is a sound synthesis and playback chip made by Yamaha, found in all versions of the NeoGeo hardware.
It was merged with the Z80 memory controlers in the [[NEO-YSA]] chip on some versions of the NeoGeo CD and CDZ.
It was later merged with other chips in {{Chipname|NEO-YSA}} and {{Chipname|NEO-YSA2}}, which are used on some versions of the NeoGeo CD, the [[CDZ]], the {{PCB|MV1C}} and on [[ROM-Only boards]].


The chip's analog outputs were only able to output sound by the SSG. The FM and ADPCM sounds were sent digitally to the [[YM3016]] DAC.
The YM2610 requires a {{Chipname|YM3016}} external DAC (Digital to Analog Converter) chip for the [[FM]] and [[ADPCM]] sounds. The only direct analog output is for the [[SSG]] mono sounds. Both analog signals are then mixed together before amplification.


==Multiplexed bus==
The original YM2610 chip gets quite warm during normal operation.


ADPCM-A ROM addressing:
=Parts=
*SDRMPX low to high: SDRAD0~SDRAD7 are set to address bits 0~7, SDRA8,SDRA9 are set to bits 8~9, (SDRA20~SDRA23 are set to bits 20~23 ?)
Sound comes from 3 different generators, each having their own channels:
*SDRMPX high to low: SDRAD0~SDRAD7 are set to address bits 10~17, SDRA8,SDRA9 are set to bits 18~19, SDRA20~SDRA23 are set to bits 20~23


ADPCM-B ROM addressing:
* [[SSG]] (Software Sound Generator): 3 channels
*SDPMPX low to high: SDPAD0~SDPAD7 are set to address bits 0~7, SDPA8~SDPA11 are set to bits 8~11
* [[FM]] (Frequency Modulation): 4 channels
*SDPMPX high to low: SDPAD0~SDPAD7 are set to address bits 12~19, SDPA8~SDPA11 are set to bits 20~23
* [[ADPCM]] (Sample playback): 7 channels


24 bits: 16MiB ADPCM ROM Max.
Providing 14 channels in total.


== Communication ==
=Programming=


The YM2610 is programmed through two pair of "ports": A and B. They're usually called Address A, Data A, Address B, Data B.
See [[Z80/YM2610 interface]] and [[YM2610 registers]].
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.
=Pinout=
* 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.
[[File:Ym2610_pinout.png|right|640px]]


== Sound generation parts ==
* {{Sig|SDD|SDD*}}: {{Chipname|Z80}} data bus
Sound can come from different parts, having their own channel(s): SSG, FM synthesis and ADPCM playback.
* {{Sig|RAD|RAD*}}: ADPCM-A multiplexed address/data
* {{Sig|RMPX|RMPX}}: ADPCM-A address/data select
* {{Sig|ROE|ROE}}: APDCM-A data output enable
* {{Sig|RA|RA*}}: ADPCM-A address
* {{Sig|ANA|ANA}}: SSG analog output
* {{Sig|SH1|SH1}}: {{Chipname|YM3016}} latch 1
* {{Sig|SH2|SH2}}: YM3016 latch 2
* {{Sig|OP0|OP0}}: YM3016 serial data
* {{Sig|PA|PA*}}: ADPCM-B address
* {{Sig|POE|POE}}: ADPCM-B data output enable
* {{Sig|PMPX|PMPX}}: ADPCM-B address/data select
* {{Sig|PAD|PAD*}}: ADPCM-B multiplexed address/data
* {{Sig|IRQ|IRQ}}: Interrupt request output
* {{Sig|CS|CS}}: Chip select
* {{Sig|WR|WR}}: Write
* {{Sig|RD|RD}}: Read
* {{Sig|SDA|A*}}: Z80 address bus
* {{Sig|PHI M|PHI M}}: [[Clock]] input
* {{Sig|PHI S|PHI S}}: YM3016 clock output


=== SSG (Simple Sound Generator) ===
<br clear="right"/>
Given its limited capacities, the SSG is more often used for simple sound effects (coin sound, cursors in menus...) rather than music.


The SSG has '''3 square wave channels''' with programmable frequency, and '''a LFSR noise channel''', all with programmable amplitude.
=Multiplexed ADPCM bus=
An unique enveloppe generator with predefined shapes can also be linked to the SSG's channels amplitudes.


See [[YM2610 registers#SSG|YM2610 registers: SSG]]
Access to the [[V ROM]]s are made via partly multiplexed buses. See [[YM2610 bus timing]] for more details about the access sequences.


=== FM (Frequency Modulation) ===
The {{Sig|SDRMPX|SDRMPX}} and {{Sig|SDPMPX|SDPMPX}} signals are used to control latches or the {{Chipname|PCM}} chip in [[cartridges]] to demultiplex address and data. When {{Sig|SDROE|SDROE}} or {{Sig|SDPOE|SDPOE}} goes low, SDRAD* and SDPAD* are tristated so that the V ROMs can output data.
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.


See [[YM2610 registers#FM|YM2610 registers: FM]]
* SDRA* for ADPCM-A


=== ADPCM ===
{|class="wikitable"
APDCM playback allows sampled sounds stored in the [[V ROM]]s or [[PCM file]]s to be played. It's used for anything that can't be easily synthesized like voices, percussions and wind instruments.
!rowspan="2"|SDRMPX edge
!colspan="8"|SDRAD*
!colspan="6"|SDRA*
|-
!0
!1
!2
!3
!4
!5
!6
!7
!8
!9
!20
!21
!22
!23
|-
|Low to high
|0
|1
|2
|3
|4
|5
|6
|7
|8
|9
|?
|?
|?
|?
|-
|High to low
|10
|11
|12
|13
|14
|15
|16
|17
|18
|19
|20
|21
|22
|23
|}


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.  Audio is compressed as 4bit per sample and played back as 12bit.  Samples cannot cross 1MB pages i.e. top 4 bits of end address should be equal to the start address.
* SDPA* for ADPCM-B


The ADPCM-B part only has 1 channel, but the playback frequency can be changed.  Audio is compressed as 4bit per sample and played back as 16bit.
{|class="wikitable"
!rowspan="2"|SDPMPX edge
!colspan="8"|SDPAD*
!colspan="6"|SDPA*
|-
!0
!1
!2
!3
!4
!5
!6
!7
!8
!9
!10
!11
|-
|Low to high
|0
|1
|2
|3
|4
|5
|6
|7
|8
|9
|10
|11
|-
|High to low
|12
|13
|14
|15
|16
|17
|18
|19
|20
|21
|22
|23
|}


See [[YM2610 registers#ADPCM-A|YM2610 registers: ADPCM-A]] and [[YM2610 registers#ADPCM-B|ADPCM-B]]
24 address bits allow for 16MiB max V ROMs (without bankswitching).


== Trivia ==
=Trivia=


*[[Viewpoint]] uses a lot of sampled drum loops and voice samples for BG music.
* A lot of games have several recordings of the same instrument playing different notes, rather than having only one sample and change the ADPCM-B playback frequency to vary its pitch. (Trumpet in [[Viewpoint]], electric guitar in [[Super Sidekicks]]). Why ?
*A lot of games have several recordings of the same instrument playing different notes, rather than having only one sample and changing the ADPCM-B playback frequency to change its pitch. (Trumpet in Viewpoint, electric guitar in Super Sidekicks). Why ?
* Nazca's [[sound driver]]s are able to use the SSG channels for music playback. (Maybe all can ?)
*Nazca's [[sound driver]]s are able to use the SSG channels for music playback. (Maybe all can ?)


== Datasheet ==
=Datasheet=
 
Japanese datasheet: [[http://www.ajworld.net/neogeodev/ym2610am_en.html ajworld.net]]


Incomplete/translated datasheet: [[http://furrtek.free.fr/noclass/neogeo/YM2610.pdf YM2610.pdf]]
Incomplete/translated datasheet: [[http://furrtek.free.fr/noclass/neogeo/YM2610.pdf YM2610.pdf]]

Latest revision as of 18:19, 26 July 2017

Package SDIP64
Manufacturer
First use 1990 ?
Used on All systems

The YM2610 is a sound synthesis and playback chip made by Yamaha, found in all versions of the NeoGeo hardware. It was later merged with other chips in NEO-YSA and NEO-YSA2, which are used on some versions of the NeoGeo CD, the CDZ, the MV1C and on ROM-Only boards.

The YM2610 requires a YM3016 external DAC (Digital to Analog Converter) chip for the FM and ADPCM sounds. The only direct analog output is for the SSG mono sounds. Both analog signals are then mixed together before amplification.

The original YM2610 chip gets quite warm during normal operation.

Parts

Sound comes from 3 different generators, each having their own channels:

  • SSG (Software Sound Generator): 3 channels
  • FM (Frequency Modulation): 4 channels
  • ADPCM (Sample playback): 7 channels

Providing 14 channels in total.

Programming

See Z80/YM2610 interface and YM2610 registers.

Pinout

  • SDD: Z80 data bus
  • RAD: ADPCM-A multiplexed address/data
  • RMPX: ADPCM-A address/data select
  • ROE: APDCM-A data output enable
  • RA: ADPCM-A address
  • ANA: SSG analog output
  • SH1: YM3016 latch 1
  • SH2: YM3016 latch 2
  • OP0: YM3016 serial data
  • PA: ADPCM-B address
  • POE: ADPCM-B data output enable
  • PMPX: ADPCM-B address/data select
  • PAD: ADPCM-B multiplexed address/data
  • IRQ: Interrupt request output
  • CS: Chip select
  • WR: Write
  • RD: Read
  • SDA: Z80 address bus
  • PHI M: Clock input
  • PHI S: YM3016 clock output


Multiplexed ADPCM bus

Access to the V ROMs are made via partly multiplexed buses. See YM2610 bus timing for more details about the access sequences.

The SDRMPX and SDPMPX signals are used to control latches or the PCM chip in cartridges to demultiplex address and data. When SDROE or SDPOE goes low, SDRAD* and SDPAD* are tristated so that the V ROMs can output data.

  • SDRA* for ADPCM-A
SDRMPX edge SDRAD* SDRA*
0 1 2 3 4 5 6 7 8 9 20 21 22 23
Low to high 0 1 2 3 4 5 6 7 8 9 ? ? ? ?
High to low 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  • SDPA* for ADPCM-B
SDPMPX edge SDPAD* SDPA*
0 1 2 3 4 5 6 7 8 9 10 11
Low to high 0 1 2 3 4 5 6 7 8 9 10 11
High to low 12 13 14 15 16 17 18 19 20 21 22 23

24 address bits allow for 16MiB max V ROMs (without bankswitching).

Trivia

  • A lot of games have several recordings of the same instrument playing different notes, rather than having only one sample and change the ADPCM-B playback frequency to vary its pitch. (Trumpet in Viewpoint, electric guitar in Super Sidekicks). Why ?
  • Nazca's sound drivers are able to use the SSG channels for music playback. (Maybe all can ?)

Datasheet

Japanese datasheet: [ajworld.net]

Incomplete/translated datasheet: [YM2610.pdf]