Skip to content

YM2608 to YM2610B converter

Technical discussion about the VGM format, and all the software you need to handle VGM files.

Moderator: Staff

  • moonsunk Offline
  • Posts: 2
  • Joined: 2021-02-15, 9:20:33

YM2608 to YM2610B converter

Post by moonsunk »

Recently, I felt the need to convert vgmfile for ym2608 to ym2610B(TAITO).

Do you have any converters available in advance in this regard?
If need to make it because nothing is released yet, please let me know the difference between the two chips what I need to know.

I don't know much about their chips, so if anyone has a plan to make it, that's also welcome.
  • User avatar
  • ValleyBell Offline
  • Posts: 4768
  • Joined: 2011-12-01, 20:20:07
  • Location: Germany

Post by ValleyBell »

The YM2608 and YM2610 aren't all that different, actually.
But there is no pre-made tool to convert from YM2608 to YM2610.

In order to do the manual conversion in VGMs, you need to
  • VGM header: set the YM2610 clock instead of the YM2608 clock
    The value is the same, except that you need to add 0x8000 0000 in order to enable YM2610B mode.
  • data blocks: change the type of "YM2608 DELTA-T" data blocks to "YM2610 DELTA-T"
    and add a ROM dumps of the YM2608 rhythm ROM as "YM2610 ADPCM ROM data"
  • VGM commands: change "YM2608 port x, write" to "YM2610 port x, write"
    If there is any PCM involved (either ADPCM-A rhythm or Delta-T), you will need to fix the registers as well.
    The register offsets of ADPCM-A and ADPCM-B (DeltaT) are different between 2608 and 2610. SSG and FM stuff is completely unchanged.
    You'll need to look up the YM2608/2610 register maps in order to know what to change.
  • If the YM2608 song uses ADPCM-A rhythm, you'll need to add commands to set the start/end offsets of all ADPCM-A channels. (Those are hardwired on the YM2608.)
  • If ADPCM-B/DeltaT is used, you may need to adjust the DeltaT start/end register values. IIRC the YM2610 has different offset multiplicators in order to support larger ROMs.
  • moonsunk Offline
  • Posts: 2
  • Joined: 2021-02-15, 9:20:33

Post by moonsunk »

I'm so happy that it's what I wanted to hear.
It was very helpful for me to consider in this regard.
I'll stop by often to ask questions from now on.
I look forward to your kind cooperation.

Thank you very much.
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

You need to adjust the sample addresses as well, and add padding. The YM2608 has 256K sample RAM and the start / stop address is in 32 byte steps. The 2610B has 16 MB sample ROM and the start / stop address is in 256-byte steps. You can scan the music data to find sample start / stop addresses.

Additionally, the YM2608 TOM and RIM rhythm channels play at half the clock speed so the samples need to be converted to match.

I’ve cooked up a YM2608 -> YM2610B converter this afternoon, I’ll share it here after I brush it up.
  • User avatar
  • grauw Offline
  • Posts: 150
  • Joined: 2015-02-22, 3:40:22

Post by grauw »

YM2608 to YM2610B converter available here:

https://hg.sr.ht/~grauw/vgmtransmute
Post Reply