About this project

NESd is a cross-platform NES emulator built with Dart and Flutter. It runs on macOS, Windows, Linux, Android and the web, and can also be self-hosted as a static web app or Docker container. Core emulation is described as cycle-accurate for the CPU, PPU and APU. The project supports both NTSC and PAL games, battery-backed SRAM saves, save states with thumbnails, rewind, and fast-forward at 2x, 3x, 4x or unlimited with audio. Game Genie cheats are supported, along with stackable CRT and smoothing video filters, and expansion audio for MMC5, Namco 163 and Sunsoft 5B games. Controls are customizable with multiple bindings per action, including gamepad support and customizable on-screen touch controls. Turbo A and B are available for both controllers with an adjustable fire rate. ROMs can be loaded from files or ZIP archives through a searchable file picker. Debugging features include a debug overlay and tools such as Display, Tile Viewer, Cartridge Info, APU Debug, Debugger and Execution Log, plus a log viewer with search, copy and file export. Installation options cover macOS (Intel and Apple Silicon), Windows, Linux (deb, rpm, AppImage and Flatpak), Android (APK and Google Play), and web. Desktop builds are unsigned, so first launch may require bypassing OS warnings. Nightly builds are published separately. The web version can be installed to the home screen and works offline after the first visit. A self-hostable Docker image is available, and static hosting is supported with notes about serving .mjs files as JavaScript and avoiding caching for index.html, flutter_bootstrap.js and sw.js. A rom URL parameter can start the emulator with a ROM, and a slot parameter can load a save state slot. The README reports support for 3,546 games across a list of mappers, and states that 121 of 126 test ROMs run in CI and pass, with a detailed table of CPU, PPU, APU and mapper test suites. NESd ships no game ROMs and is not affiliated with Nintendo. It is released under the MIT License.