New Documentation: An authoritative reference on the YM2612

For anything related to sound (YM2612, PSG, Z80, PCM...)

Moderator: BigEvilCorporation

GManiac
Very interested
Posts: 92
Joined: Thu Jan 29, 2009 2:05 am
Location: Russia

Post by GManiac » Sat Mar 19, 2011 12:56 pm

Okay, I understand.
And if you run this test on MD1 you should see only 2 steps: from -1 to 0 and from 0 to +1. You won't see step from -2 from -1 because of glitch, so level "-1" will be last longer on X axis.
And step -1 to 0 will be HUGE (that is ladder effect).

Also, I noticed another glitch in MD1 DAC. Some larger levels have really less voltage. For example, +35 is higher than +36. I don't know concrete values. But you can record sine wave at 0.50 Hz, TL 0 and see this glitch.

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Sat Mar 19, 2011 3:27 pm

Wrong value at sine table?

GManiac
Very interested
Posts: 92
Joined: Thu Jan 29, 2009 2:05 am
Location: Russia

Post by GManiac » Sat Mar 19, 2011 4:17 pm

No, we've discussed this. Glitch in DAC. Sine table is normal, I tested it using phase modulation.

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Wed Mar 30, 2011 4:17 pm

I have confirmed that MD2 uses an YM3438.

I got a bunch of Yamaha chips today and YM3438 were among them. I did some tests as I did on my MD2 and to my surprise everything matched :D

downside of YM3438 is that it has very high impedance output that picks up lot of digital noise. Also the output is significantly louder than YM2612, and this all matches with MD2 output aswell.
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Fri Jun 03, 2011 12:11 pm

Does anyone have any info on how to program YMF288 ? It should be YM2608 without ADPCM and GPIO, ADPCM being replaced with a noise generator.
I've been searching for quite a while and have not been able to find any programming info.
AY and FM side should be identical to YM2608, but noise generator I know nothing about.

I have found pinouts of SOP and QFP version and it seems to use regular I2S DAC interface aswell so you don't need any Yamaha DACs.

http://sue.niko.to/ps98
http://sue.niko.to/ps98/ps98@ymf288-s_sch.png

http://www.kurusugawa-ele.jp
http://www.kurusugawa-ele.jp/product/pc ... _v1p42.pdf

It was also used on PC-9801-118 and someone has to know how it works. Some people have tried to get datasheets etc. form Yamaha and other places but without luck....



I am building a music making computer and for sound quality reasons I don't want to use YM2612/3438 (only 9bit internal DAC), so I thought I will use YM2151 but it seems this is a very whiny and slow chip, I am having very hard time making right sound with it over LPT (I still have not succeeded yet). YM2203, YM2608 and YM2610 all have external DACs but also very huge chip packages and things I don't need (ADPCM, GPIO).
YMF288 would be ideal, but I'd like to get a bit more info about it (the noise generator in particular).

EDIT: YM2610 is described having a controllable noise channel... is it AY noise or something else ? Search continues...
EDIT2: I found a japanese text that tells about differences, and there is no special noise channel.

So YMF288 is YM2608 with these changes :
*ADPCM is removed
*GPIO is removed
*Writes can be done much faster
*No CSM mode
*Added Standby mode
*Regular I2C audio output, so no need for Yamaha floating point DAC
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Sat Jun 04, 2011 3:28 am

The only programming documentation I've seen for that chip is what I assume is the japanese document you've already come across, from this site:
http://www.ylw.mmtr.or.jp/~hosino/ma-ne ... ymf288.txt
It's comparing the differences between the YMF288 and the YM2608. Since we have complete documentation for the YM2608, hopefully that document gives enough info to figure out what it does.

Actually, looking at it, that same document is in the zip archive I gave in the very first post in this thread. There's some other documentation in that same archive on the PC-9801-86. Maybe something else in there is of use to you?

I tend to collect documentation whenever I come across it, whether it's useful to me at the time or not, just in case I need it later. Here's everything I've "harvested" about various sound chips over the years (warning, 140MB file!):
http://nemesis.hacking-cult.org/MegaDri ... /FMDocs.7z
It's a bit of a mess, lots of random stuff not really organized, but some of it might be useful to someone.

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Sat Jun 04, 2011 8:31 am

That archive is a gold mine :D

It will take a while to go through it, but form first glance all I got is already in the archive.

Also I can provide better pics of YMF262-F, YM3812, YM2151, YM3438, YM2612, YM3012, YAC512, YAC513 and YMF278B.
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Sat Jun 04, 2011 2:21 pm

TmEE co.(TM) wrote:Also I can provide better pics of YMF262-F, YM3812, YM2151, YM3438, YM2612, YM3012, YAC512, YAC513 and YMF278B.
Image

Nemesis
Very interested
Posts: 791
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Sun Jun 05, 2011 10:35 pm

Cool, thanks for those images HardWareMan. It would be good to get more pictures of those chips too TmEE, some of those chips really don't have good images online.

I've always thought an online wiki, specifically around collecting and sharing documentation for various chips and systems, would be really good for the emulation community. You know, something specifically about the technical info you'd need to learn how to emulate or program for a device. Right now, everything is scattered everywhere, and it often takes a long time to find the "best" version of a document, simply because we have a dozen different versions of the same document floating around (case in point: The Genesis Software Manual). Most of the time you have to crawl old forum threads from various places in order to find info. Websites which are maintained by individuals, where other people can't contribute or maintain the information, always end up out of date. A wiki would be really great for allowing all the versions of a doucment to be hosted, but indicating which is the best of all of them, allowing users to submit more documents and write a community "errata", etc. We could also have a "most wanted" section, to try and get users to notice when they have things which other people want. All in all, I think it'd be a great idea. I might actually try and set something like that up. I've got unlimited download/upload and a static IP with my ISP now, so I could try and host a server.

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Mon Jun 06, 2011 8:05 am

I also foundo ne other very interesting FM chip that was used in FM Towns II, the YMF276, which is YM2612/3438 with i2s DAC interface... FM Towns did have a separate PCM chip in it so the DAC channel may be cut in YMF276... I am unable to find any definitive info though.

In any case I will order some YMF288 and YMF276 in nearer future.
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Mon Jun 06, 2011 10:49 am

I got an opportunity to make decap of YM2612. Should I? It will cost, but I think I can handle it.
PS Hi-res photos ofcourse will be shared. :3

GreenLine
Interested
Posts: 17
Joined: Tue May 10, 2011 3:42 pm

Post by GreenLine » Mon Jun 06, 2011 8:09 pm

HardWareMan wrote:I got an opportunity to make decap of YM2612. Should I? It will cost, but I think I can handle it.
PS Hi-res photos ofcourse will be shared. :3
I think it contains the same tables as the "OPLx decapsulated" document, but if you decide to do the decap I'd like to contribute to the cost.

King Of Chaos
Very interested
Posts: 273
Joined: Fri Feb 29, 2008 8:12 pm
Location: United States

Post by King Of Chaos » Thu Jun 09, 2011 1:15 am

Go for it if you want to, never know it may yield something useful.

andlabs
Very interested
Posts: 62
Joined: Sat Aug 08, 2009 4:44 pm

Post by andlabs » Wed Oct 12, 2011 2:24 pm

These have probably been answered here before and this may not be the right topic for the latter question but :/ I'm trying to figure out how the YM2612 works by reading the MAME code...

1) I understand that "int ksr = kc >> SLOT->KSR" (in refresh_fc_eg_slot) gets what the YM2608 translated doc calls "key-scaling value of the rate", which is shown calculated for a block number and a two-bit note value (same as YM2151, apparently, though that uses a two-bit note value and cents instead of freqnum). The MAME code calculates that two-bit note value by indexing into an array opn_fktable. Where did this calculation come from?

2) What is ((SLOT->ar + SLOT->ksr) < 32+62) checking? I've seen it sprinkled throughout the code...

Thanks.

Eke
Very interested
Posts: 884
Joined: Wed Feb 28, 2007 2:57 pm
Contact:

Post by Eke » Wed Oct 12, 2011 4:40 pm

I understand that "int ksr = kc >> SLOT->KSR" (in refresh_fc_eg_slot) gets what the YM2608 translated doc calls "key-scaling value of the rate", which is shown calculated for a block number and a two-bit note value (same as YM2151, apparently, though that uses a two-bit note value and cents instead of freqnum). The MAME code calculates that two-bit note value by indexing into an array opn_fktable. Where did this calculation come from?
opn_fktable is used to calculate the key-code value for detune (see post below about phase generator)
What is ((SLOT->ar + SLOT->ksr) < 32+62) checking? I've seen it sprinkled throughout the code...
This limit is the maximal RATE value, which is capped at 63 (see post below about envelope generator). When the rate is maximal, envelope directly switches to the next "phase".


Everything should be better explainable by these posts from Nemesis:

viewtopic.php?t=386&postdays=0&postorder=asc&start=106

viewtopic.php?t=386&postdays=0&postorder=asc&start=167

There is a third one explaining operator unit in between...

Post Reply