The People Who Taught Computers to Sing FM: A History of Yamaha FM Chip Emulators
Decapsulated Yamaha YMF262 (OPL3). Photo: Olli Niemitalo, CC0, via Wikimedia Commons.
At Kasser Synths we spend our days with real Yamaha FM chips on the bench. But most people who love the sound of the Mega Drive, of arcade boards or of DOS-era Sound Blaster cards heard it again, years later, through an emulator. That did not happen by accident. Behind every faithful YM2612 or OPL3 core there are people who spent years listening to recordings, writing test programs, photographing silicon under a microscope and arguing about single bits on forums.
This post is our thank you to them. It is a short history of the open source Yamaha FM emulators for three chip families (YM2612/YM3438, YM2151 and YMF262), who built them, what they achieved, and where they are still honest about their limits.
Three ways to emulate a chip
Before the names, a quick map. Over roughly thirty years, FM emulation has moved through three approaches:
Behavioural emulation from documentation and listening. Read the manual, record the real chip, and write code until it sounds right. This is how the first generation of cores was built in the late 1990s.
Hardware-tested emulation. Write test programs that run on the real console or card, measure exactly what the chip does in edge cases, and fold those findings back into the code.
Die-shot based emulation. Remove the chip’s package, photograph the silicon, trace the circuits and reproduce the actual logic, sometimes down to individual clock cycles.
None of these replaced the others overnight. Each generation stood on the shoulders of the previous one, and the credits inside the source files show it.
The silicon detectives: decaps and die shots
The modern, very accurate cores would not exist without the people who opened the chips.
Olli Niemitalo (@OlliNiemitalo) and Matthew Gambrell decapsulated OPL2 and OPL3 chips and, in a report dated 20 April 2008, Olli wrote: “Me and Matthew Gambrell reverse-engineered the YM3812/YMF262 ROM tables.” Their “OPLx decapsulated” work recovered the log-sine and exponential tables at the heart of Yamaha’s OPL chips. Those tables are credited in Nuked-OPN2 and Nuked-OPL3 to this day.
Silicon Pr0n (siliconpr0n.org), with John McMaster (@johndmcmaster) and digshadow, published decaps and die shots of Yamaha FM chips. Nuked-OPN2 credits digshadow for the YM3438 decap and die shot, Nuked-OPL3 credits John McMaster and digshadow for the YMF262 die shots, and Nuked-OPM credits John McMaster for the YM2151.
Sauraen (@Sauraen) traced the YM2203 and YM2612 dies and published a VHDL description of their architecture (copyright 2015). With admirable honesty, the operator file opens with the notice “This is an UNTESTED implementation!” and explains which parts might contain wrong bits. Genesis Plus GX credits “YM2612 die shot analysis by Sauraen” in its FM core.
gtr3qq provided the YM2164 decap credited in Nuked-OPM.
Decapsulated Yamaha YM3812 (OPL2). Photo: Olli Niemitalo, CC0, via Wikimedia Commons.
On the hardware testing side, Nemesis (Roger Sanders, author of the Exodus emulator) ran extensive tests on real Mega Drive hardware from 2008 onwards and shared them in the famous SpritesMind thread “New Documentation: An authoritative reference on the YM2612”. That thread became the shared notebook of a whole community, and both Genesis Plus GX and ymfm cite it as a foundation.
YM2612 and YM3438 (OPN2): the Mega Drive voice
The YM2612 is the FM chip of the Sega Mega Drive/Genesis. The YM3438 (OPN2C) is its CMOS sibling, used in Sega arcade boards, in the TeraDrive and, in integrated form, inside the ASICs of many later Mega Drive revisions.
The MAME lineage: Tatsuyuki Satoh and Jarek Burczynski
The first widely used open source OPN2 core lived in MAME’s fm.c (MAME: @mamedev_org). Its header carries “Copyright (C) 1998 Tatsuyuki Satoh” and “Copyright (C) 2001, 2002, 2003 Jarek Burczynski”. Satoh built much of MAME’s early Yamaha sound support, and Burczynski refined it for years with tests against real chips from the OPN family. For a long time almost every open source Mega Drive emulator used this core as its reference, which also meant they shared its flaws.
Two other cores from that era deserve a mention. Stéphane Dallongeville (Stef) wrote the YM2612 core of Gens, inspired by MAME’s constants and tuned through his own tests on a real console. Steve Snake wrote the core of Kega, widely regarded at the time as the most accurate, but it was closed source, so its findings never reached the rest of the community.
Genesis Plus GX: Eke-Eke and a decade of fixes
Genesis Plus GX, maintained by Eke-Eke and originally based on Genesis Plus 1.2a by Charles MacDonald, took the MAME core and kept fixing it. Its changelog reads like a list of solved mysteries: SSG-EG, CSM mode, the detune overflow bug heard in games using the GEMS sound engine, LFO behaviour in channel 3 special mode, and more. The header credits the people behind those fixes: “Huge thanks to Nemesis, most of those fixes came from his tests on Sega Genesis hardware”. In his 2008 dev diary post “YM2612 reveals his secrets”, Eke-Eke described how hard it was to emulate a chip for which “no technical documentation really exists to describe how the FM synthesiser chip internally works.”
Milestones worth remembering:
2017: Genesis Plus GX fixed several details “verified on YM2612 die” and “verified on YM3438 die”, which shows the die-shot era arriving.
3 December 2017: it added discrete YM2612 DAC distortion emulation, the so-called “ladder effect”, and configurable chip types (discrete, ASIC-integrated or enhanced).
Nuked-OPN2: nukeykt and the die-shot revolution
In September 2017 Alexey Khokholov (nukeykt, Nuke.YKT, @nukeykt) released Nuked-OPN2 v1.0, a cycle-accurate YM3438 emulator “based on YM3438 die shot reverse engineering”. On 23 September 2017 his pull request adding it as an alternative core to Genesis Plus GX was merged. Eke-Eke’s response is a nice snapshot of the community spirit: he doubted most games would sound very different, “but it’s still a great achievement and a nice thing to have in Genesis Plus GX.”
Nuked-OPN2 emulates undocumented registers, SSG-EG and CSM, and offers a YM2612 mode as well as the native YM3438 behaviour. It is the default YM2612 core in the Furnace tracker.
ymfm: Aaron Giles and one core for many chips
Aaron Giles, a long-time MAME developer, wrote ymfm during the summer and fall of 2020. It is a BSD-licensed family of Yamaha FM cores covering OPM, OPN, OPL and more. Its OPM and OPN cores replaced the old code in MAME 0.230 (March 2021), and the OPL cores followed in MAME 0.231. Giles gives generous credit: ymfm was written “using the analysis and deduction by Nemesis as a starting point”, cross-checked against Nemesis’s Exodus and Khokholov’s Nuked cores, with operator and channel mixing research by David Viens (@plgDavid) and Hubert Lamontagne.
What we love about ymfm is how clearly it states its goal: “The goal of these cores is not 100% digital accuracy.” Instead it aims for “extremely high (audibly indistinguishable) accuracy”, reasonable performance and readable code, and it openly points users who need bit-exact output to the decap-based Nuked cores.
BlastEm: Mike Pavone
Mike Pavone’s BlastEm is a high-accuracy Mega Drive emulator with its own YM2612 implementation. Version 0.6.2 (March 2019) added optional emulation of “YM2612 imperfections (aka ‘ladder effect’)”, and BlastEm 1.0.0 (September 2026) added emulation of the additional YM2612 pan “leakage” present on real hardware.
Known limitations and open questions (OPN2)
The ladder effect is a YM2612 thing, not a YM3438 thing. The YM2612’s built-in 9-bit DAC has a crossover distortion that exaggerates quantization at low volume. The name “ladder effect” came from SpritesMind user HardWareMan, after seeing it on an oscilloscope. The YM3438 has an improved DAC that greatly reduces it (we look at both chips side by side in YM2612 vs YM3438: the ladder effect explained). Since Nuked-OPN2 was traced from a YM3438 die, its YM2612 DAC behaviour is a model on top of that, and the source code itself labels it “YM2612 DAC emulation(not verified)”. We love that honesty.
Cycle accuracy costs CPU. Nuked-OPN2 runs at the chip’s internal clock instead of once per output sample. Genesis Plus GX describes its Nuked options as “cycle accurate, very high quality” with “substantial CPU requirements”. This is the main reason lighter cores such as ymfm and the improved MAME core are still widely used.
The chip is not the whole console. Emulators reproduce the digital side of the chip. The analog path after it (DAC behaviour, filtering, op-amps) changed between console revisions. Genesis Plus GX offers a low-pass filter “to better simulate the characteristic sound of a Model 1”. Community hardware notes point out that some later revisions sound muffled mainly because of their audio amplifier circuitry, not because of the YM3438 itself. One emulator setting cannot be every console.
Composers used the quirks. Some early Mega Drive soundtracks were written around the YM2612’s distortion, so a “cleaner” chip or emulator can sound wrong for those games. Accuracy here means choosing which chip you are emulating.
YM2151 (OPM): the arcade workhorse
The YM2151 powered a huge number of arcade boards, the Sharp X68000 and Yamaha synths such as the DX21, DX27 and DX100. It outputs digital data to an external DAC, the YM3014B. If you want to know how it differs from the Mega Drive chip, read YM2151 vs YM2612: arcade FM vs Mega Drive FM.
Jarek Burczynski’s YM2151 core
For years the reference YM2151 emulator was Jarek Burczynski’sym2151.c (copyright 1997 to 2002, version 2.150 “final beta”, May 2002), with “some of the optimizing ideas by Tatsuyuki Satoh”. Its header is a little monument to pre-decap research. Burczynski thanks Beauty Planets “for making a lot of real YM2151 samples”, Shigeharu Isoda for scanning his Japanese YM2151 manual and “answering MANY of my questions”, and several people, Aaron Giles among them, for recording samples from arcade games so he could compare. In 2016 MAME set the GPL licence on his code at his request. In 2021 ymfm replaced it in MAME.
Nuked-OPM
Nuked-OPM, started by nukeykt in October 2020, is a cycle-accurate YM2151 and YM2164 (OPP) emulator built from the YM2151 die shots by John McMaster and a YM2164 decap by gtr3qq. In Furnace it is the default core for rendering, while ymfm is the default for real-time playback.
Known limitations (OPM)
Accuracy versus CPU, again. The Furnace documentation describes Nuked-OPM as “very CPU heavy, only recommended for users with recent hardware”, and ymfm as much lighter but less accurate.
Still evolving. Even a die-based core is not “finished” on day one. Nuked-OPM was still receiving LFO fixes in August 2026, and nukeykt has since published an even lower-level YM2151-LLE project.
The DAC lives outside the chip. As with every OPM board, the external DAC and the analog filtering after it shape the final sound, and they are outside the scope of a chip core.
YMF262 (OPL3): the sound of DOS
The YMF262 brought four-operator FM and stereo to PC sound cards such as the Sound Blaster Pro 2.0 and Sound Blaster 16. It too relies on an external DAC (the YAC512). We tell the story of the chip itself in The Yamaha YMF262: crafting the soundscape of 90s PC gaming.
Ken Silverman’s early OPL2 emulator
One of the earliest open OPL2 emulators came from Ken Silverman, best known as the creator of the Build engine. His ADLIBEMU.C (copyright 1998 to 2001) describes itself as a digital emulator “for OPL2 and possibly OPL3”, and its comments are a beautiful window into the guesswork of the time: “Attack curve. What function is this anyway?” DOSBox’s original OPL code states that it was “Originally based on ADLIBEMU.C”.
MAME’s fmopl and ymf262
In MAME, Tatsuyuki Satoh and Jarek Burczynski wrote fmopl.c for OPL and OPL2. In 2002 Burczynski made the envelope generator “binary exact” (verified on a real YM3812). He released ymf262.c, his OPL3 core, on 3 March 2003, thanking Olivier Galibert and Chris Hardy for chips and documenting OPL2 and OPL3 differences that were missing from Yamaha’s datasheets.
The YM3812 (OPL2) waveforms, numbered 0 to 3. Diagram: Olli Niemitalo, public domain, via Wikimedia Commons (enlarged).
DOSBox and DBOPL
DOSBox 0.73 (May 2009) added “two new opl2+opl3 emulators”, credited to the DOSBox Team. The source of DBOPL is candid about its origins and trade-offs: “The generation was based on the MAME implementation but tried to have it use less memory and be faster in general”, and “MAME uses much bigger envelope tables and this will be the biggest cause of it sounding different at times.” For many years DBOPL was the OPL sound most DOSBox users heard.
Nuked-OPL3
nukeykt announced Nuked OPL3 on the VOGONS forum on 26 December 2013. Its history shows how accuracy is earned. Early versions drew bug reports from forum members comparing them with real cards, and one user at the time still found the DOSBox core closer to real OPL3 output. In 2016 nukeykt explained that his emulator was slower than the DOSBox and MAME cores because “my goal is accuracy to real YMF262.” In 2018 he described version 1.8 this way: “v1.8 fixes differences that i found between v1.7 and actual YMF262 die shot.” Its source credits the MAME team (Burczynski and Satoh), forums.submarine.org.uk (carbon14, opl3), the OPLx decapsulated work and Silicon Pr0n.
Today Nuked OPL3 is used across the DOS and Doom communities, including Chocolate Doom and DOSBox Staging, which made it the default from version 0.75.0. In 2023 nukeykt went further still with the very low-level YMF262-LLE and YM3812-LLE projects.
Known limitations (OPL3)
Performance on small machines. When DOSBox Staging made Nuked the default, it advised users on very limited hardware to switch to the lighter “fast” core. A DOSBox Staging developer measured Nuked at roughly twice the host CPU of the fast core on a low-power single-board computer, although that was only a couple of percent of DOSBox’s total load.
Timing is not only the core’s job. Some games abused the OPL2 as a crude sample player. If the host emulator renders audio in blocks instead of applying each register write at the exact sample, those tricks break, however accurate the core is. DOSBox-X, developed by Jonathan Campbell (@greatcodeholio) and contributors, added a sample-accurate option partly for cases like this.
Faithful includes the warts. Real OPL hardware had hanging notes and DC bias. DOSBox Staging reproduces them and offers optional mitigation for listeners who prefer comfort to authenticity.
The DAC and the card. Different sound cards used different DACs, filters and amplifiers, and those are outside the chip core.
A commercial path: Plogue and the chipsynth line
Not every great FM emulation is open source, and this story would be incomplete without Plogue Art et Technologie, the Montreal company started by David Viens (@plgDavid) and Sébastien Beaulieu, which took the name Plogue in 2000. Plogue’s chipsynth plugins are commercial, closed source instruments, so we cannot point you to their code. What we can do is share what Plogue says publicly about how they work.
Rather than tracing die shots, Plogue describes a measurement-driven approach built around real hardware: “custom Hardware-assisted systematic testing procedures by our in house reverse engineering team in Montreal” (PortaFM), “large amounts of testing on special hardware rigs” (MD) and “exactly matching the digitally captured output” of the original chips (OPS7). They also pay close attention to the analog side: DACs, filters and output stages.
chipsynth PortaFM (May 2018), the first in the line, built around the OPLL (YM2413). Its cycle-accurate cores now switch between OPLL, OPL2 (YM3812) and OPK2 (YM7129).
chipsynth MD (September 2019), “a bit accurate OPN2 (YM2612) emulator” with DAC and impulse-response emulation. In the manual, dated 3 September 2019, David Viens wrote that “some of the work made on this product goes back some 6 years and required the creation of plenty of custom test hardware”.
chipsynth OPS7 (September 2021), covering Yamaha’s six-operator DX7 generation by matching the EGS and OPS chips, including the original DAC’s compander and analog filtering.
chipsynth OPMZ (September 2026), covering the YM2151 (OPM), YM2164 (OPP), YM2414 (OPZ) and YM2424 (OPZ2), built “from numerous digital captures”. Plogue says the OPZ used in the TX81Z “was completely undocumented before the development of chipsynth OPMZ”.
Plogue’s research also reaches the open source world: as mentioned above, ymfm credits David Viens and Hubert Lamontagne for its operator and channel mixing research.
Things to keep in mind. Because the code is closed, the community cannot study, verify or reuse it the way it can with Nuked or ymfm, and the accuracy claims are Plogue’s own. They are also instruments first, designed to be played and programmed rather than to run original software.
What we learn from this story
Three things stand out to us as makers.
First, credit flows in every direction. Nuked credits MAME and the decappers, ymfm credits Nemesis and Nuked, Genesis Plus GX credits Nemesis and Sauraen. Almost nobody here worked alone, and almost everyone wrote their thanks into the code.
Second, the best developers are honest about limits. “Not verified”, “UNTESTED”, “not 100% digital accuracy”. Those words are not weaknesses, they are what makes this work trustworthy.
Third, a chip core is only part of the sound. The DAC, the filters, the amplifier and the speaker around the chip are a big part of what we remember, and each original machine had its own.
Emulators and real chips
Emulators are a wonderful way into FM synthesis. They are free, they are everywhere, and thanks to the people above they are astonishingly good. If they spark your curiosity, that is a great place to start. And if one day you want to play the real chip live, with its own DAC, its analog character and its quirks under your fingers, that is exactly why we build our synths by hand in Santander: the DAFM Genesis (YM2612/YM3438), the DAFM Arcade (YM2151) and the DAFM Blaster (YMF262). And if you are weighing up both options, our guide Real Yamaha FM chip vs emulation compares them honestly.
Este sitio web utiliza cookies propias y de terceros para el correcto funcionamiento, análisis de la navegación y visualización por parte del usuario. Si continúa navegando, entenderemos que acepta su uso.
Se recomienda al usuario que lea atentamente esta Política de Cookies para informarse sobre el uso responsable que la página web hace de ellas y sobre las opciones que el usuario tiene para configurar su navegador y gestionarlas. Leer política de cookies
Cookies necesarias
Las cookies necesarias son absolutamente esenciales para que el sitio web funcione correctamente. Esta categoría solo incluye cookies que garantizan funcionalidades básicas y características de seguridad del sitio web. Estas cookies no almacenan ninguna información personal.
Las cookies necesarias que se utilizan en esta web son:
_PHPSESSID: Esta Cookie es usada por el lenguaje de encriptado PHP para permitir que las variables de sesión sean guardadas en el servidor web. Esta cookie es esencial para el funcionamiento del sitio web.
cmoove_gdpr_popup: Cookie técnica y necesaria que contiene el valor de si se ha aceptado la política de cookies.
mfn-builder: Esta cookie técnica y necesaria es usada por el tema de la web para cargar los contenidos de manera estructurada.
Si desactivas estas cookies no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.
Cookies no necesarias
Cualquier cookie que no sea particularmente necesaria para que el sitio web funcione y se use específicamente para recopilar datos personales del usuario a través de análisis, anuncios y otros contenidos integrados se denominan cookies no necesarias. Es obligatorio obtener el consentimiento del usuario antes de ejecutar estas cookies en su sitio web.
Las cookies no necesarias que se utilizan en esta web son:
_ga: se utiliza para distinguir los usuarios que acceden al sitio web.
_ga_*: se utiliza para generar datos estadísticos acerca de cómo utiliza el usuario el sitio web.
¡Por favor, activa primero las cookies estrictamente necesarias para que podamos guardar tus preferencias!