How does OPL2 synthesis work?

I'm trying to find out how to synthesize the Adlib/OPL2 chip fully in software myself in C, but I can't find ANY information about how the chip works. Like how the basic wavetable (containing the sinus, sawtooth etc.) is converted to the DAC output. How does it all work? Anyone has a hardware pdf or any information about it, which describes the steps processed in the chip?
Last edited on
I'm assuming you were at least able to find an OPL2 doc that covers the register layout.


I don't have a technical doc on YM3812/OPL2 ... but I do have one on the YM2413/OPLL which is very similar. There is a lot of parallels between the two -- and you might be able to get by with just re-mapping the registers to match OPL2:

https://www.dropbox.com/s/wau1ad2y2bp2kt2/YM2413.pdf?dl=0



Though that technical doc alone does not clarify things very much.

When I was writing my NES emulator, one of the games uses a 'VRC7' chip which uses a modified OPLL for sound. I did some research into how it all worked by studying the above doc and comparing it with existing emulators.

I outlined my findings here:
http://forums.nesdev.com/viewtopic.php?t=9102

Note that the information there is not 100% accurate -- but IMO is a very good starting point for understanding how the sound is actually generated.

Other people in that thread contributed other links with additional, more detailed/correct info... so hopefully that whole thread is helpful.




But again... it's all OPLL... not OPL2. There are probably subtle differences in OPL2, but I'm sure the two are very similar.
Topic archived. No new replies allowed.