Skip to content
Screenshot published by the flycast-wasm project
Screenshot published in the flycast-wasm project's official README. Image source: flycast-wasm project on GitHub.

flycast-wasm

DREAMCAST EMULATOR

flycast-wasm

Flycast-WASM is a WebAssembly/libretro build of the Flycast Dreamcast emulator that runs in the browser (EmulatorJS-style frontends). It includes a custom SH4→WASM dynamic recompiler (JIT) intended to get native-class performance in modern browsers while remaining a libretro-style core.

dreamcastPRIMARY SYSTEM
2026PROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

Brings Flycast (a mature Dreamcast/Naomi/Atomiswave emulator) to the web by compiling upstream Flycast to WebAssembly and adding a custom SH4→WASM JIT. The goal was to demonstrate a performant Dreamcast experience inside a browser tab and to provide a libretro-style WASM core usable by web frontends (EmulatorJS and similar).

BEST FOR

What this is best for

Running Dreamcast titles in a web environment or embedding a Flycast core into a browser-based libretro frontend. Useful for experimentation, demos, and deploying Dreamcast emulation where native builds aren’t desirable or possible.

The people behind flycast-wasm

History and status

The repository documents a two-phase development: an initial Emscripten/CMake port (proof of life) followed by a custom SH4→WASM dynamic recompiler written to regain performance. The README and technical writeup describe development through March–August 2026, and the author states the project is complete as a proof-of-concept JIT but that some features (notably WinCE MMU support for certain titles) remain on the roadmap. The project is published under GPLv2 and is actively maintained by the repository owner, with releases for pre-built core files. Development is described as slower after the intensive sprint that implemented the JIT, but not parked.

What flycast-wasm supports

  • Browser (WebAssembly libretro core, WebGL2 renderer)
  • EmulatorJS-style web frontends
  • Build host: Linux or WSL2 with Emscripten SDK 3.1.74+
  • Requires user-supplied Dreamcast BIOS files (dc_boot.bin, dc_flash.bin) and game images (CHD, CDI, GDI, or CUE)

Download and availability

OFFICIAL DOWNLOADS

Get flycast-wasm

Pre-built core artifacts and releases are provided on the project's GitHub Releases page. The release package supplies the built core (flycast_libretro.js and the .wasm) plus config files for web frontends; BIOS and games are not included and must be provided by the user.

Get flycast-wasm ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

flycast-wasm setup guide

Setup note: Notes before you start: this is a libretro-style core compiled to WebAssembly. You will need: a web frontend that can load libretro WASM cores (EmulatorJS-style), a static server that can send the required cross-origin isolation headers, legally dumped Dreamcast BIOS files and game images, and (if you want to build from source) Linux or WSL2 and Emscripten SDK 3.1.74 or newer.

  1. 1) Obtain the core and frontend files: Download the pre-built release from the project's GitHub releases. The release contains flycast_libretro.js and the matching .wasm module plus config/core metadata files. Place those files where your web frontend expects cores (typically alongside the frontend HTML/JS).
  2. 2) Web server and security headers: Host the frontend and the core files from an HTTP(S) server that serves the following headers (required by the WASM runtime and some browser isolation requirements): Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp. Without these headers the core may be blocked from using required browser features (SharedArrayBuffer, some Worklet patterns). Configure your server (NGINX, Apache, or static hosting with header support) to return these headers for the frontend and core files.
  3. 3) Register the core with your frontend: Register the core metadata with your EmulatorJS-style frontend. The repository includes config/core.json and config/dreamcast-core-options.json showing the expected metadata and tuned core options. Use those files as-is or adapt to your frontend’s core registration format.
  4. 4) Provide BIOS and game images: Supply legally dumped Dreamcast BIOS files (dc_boot.bin and dc_flash.bin) and game images (supported formats: CHD, CDI, GDI, or CUE). Place them where your frontend can load them. The project does not include BIOS or game content and does not host it.
  5. 5) Run and tune core options: Launch the frontend and select the Flycast-WASM core and a Dreamcast image. If you encounter audio glitches, look at the provided tuned core options file; the core exposes settings that were tuned for browser timing and audio via an AudioWorklet ring. The README and config/dreamcast-core-options.json contain recommended option values for smoother audio and frame pacing.
  6. 6) Building from source (optional, developer setup): Requirements: Linux or WSL2, Emscripten SDK (recommended v3.1.74 or newer), git, and the upstream Flycast source at the pinned commit noted in the repository. General build steps from the repository: clone upstream flycast at the pinned commit, update submodules, apply the port and JIT patches from the flycast-wasm repo (patches/), copy the JIT source files into the upstream source tree as documented, then run the provided build-prod.sh script to produce the production core (diagnostics stripped). The README contains the exact clone/checkout/patch commands used by the author; follow those verbatim for a reproducible build.
  7. 7) Known limitations and next work items: The README and technical writeup call out missing full SH4 MMU support needed for some WinCE titles (e.g., Sega Rally 2). The author documents future work such as region compilation, per-title bytecode caching, WebGPU renderer plans, and several cosmetic fixes. Expect some titles to require additional compatibility work until WinCE/MMU support is implemented.

Software reminder: The core requires that you supply your own legally obtained Dreamcast BIOS files and game images; no BIOS, firmware, games, or keys are included with the project.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for flycast-wasm as they are published.