hn.today

Show HN: FM-1 synth emulator with a reverse-engineered CPU and WebAssembly JIT

joakimeriksson.github.io4 points2 comments
Screenshot of Show HN: FM-1 synth emulator with a reverse-engineered CPU and WebAssembly JIT

This is a browser-based emulator that runs real FM-1 synthesizer firmware by reverse-engineering the JieLi AC791N chip and its pi32v2 CPU. Built in Rust and compiled to WebAssembly, it models the chip’s timers, flash, 240×240 screen, key matrix, encoders, knobs, audio output and a MIDI IN port, and it emulates both CPU cores. Hot code regions are JIT-compiled to WASM while running on the browser audio thread so the unchanged firmware update packages (.fwsc) boot and behave as if on hardware; community firmwares are fetched from their authors’ sites and Felucca is the default. Controls include computer keyboard, mouse/touch and Web MIDI (Chrome/Edge/Firefox), with status reporting of emulated clock, MIPS and audio quanta. The page starts at 100 MHz for realtime performance (real hardware is 240 MHz) and lets you change the clock or disable the JIT.

Concrete limitations and implementation notes are documented: Safari lacks Web MIDI, the page provides MIDI in only, M-VAVE’s factory firmware must be supplied by the user because its server blocks direct fetching, and some third‑party firmwares have channel or note-on quirks. On the developer machine firmwares ran faster than real time at 240 MHz (1.6-3.7×). Source code and a technical report describing the reverse engineering, two JITs and verification steps are published on GitHub and linked from the page.

Read on joakimeriksson.github.io2 comments on Hacker News

Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.

More in Web

The daily digest

Today's best Hacker News stories, summarized and screenshotted, one email a day.