NES EMULATOR
CycloaJS
CycloaJS is an open-source NES (Famicom) emulator implemented in JavaScript. It is a browser-playable port of a C++ project (Cycloa) and is distributed under the AGPL-3.0+ license. A live demo is hosted and the source is available on GitHub.

WHY IT MATTERS
Why CycloaJS matters
CycloaJS is primarily an educational and performance-focused port of a native C++ NES emulator into JavaScript, demonstrating how cycle-heavy emulation code can be adapted to run in modern browsers and comparing performance to other JS-based NES projects.
BEST FOR
Best use case
Embedding or testing NES ROMs in a browser environment for experimentation, demonstrations, and web-based demos of emulator performance. Not intended as a full-feature parity replacement for mature native emulators.
The people behind CycloaJS
History & provenance
CycloaJS is a JavaScript port of Cycloa, a C++ NES emulator. The repository documents that the original C++ project is available separately and that CycloaJS was created to survey JavaScript performance. The project source, README, and demo are hosted publicly; development activity and commit history are available in the GitHub repository.
What CycloaJS supports
- Modern desktop browsers (Chrome, Firefox)
- iPad Safari (demo notes indicate partial support)
- Any platform with a standards-compliant browser and JavaScript
- Browser audio: Chrome and Firefox (Web Audio API)
Download and availability
OFFICIAL DOWNLOADS
Get CycloaJS
Official source and release artifacts are published on the project's GitHub repository and Releases page. The project is AGPL-3.0+ licensed; no commercial games, BIOS, or firmware are provided.
Get CycloaJS ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗CycloaJS setup guide
Setup note: This guide describes how to run CycloaJS from the official GitHub repository or use the hosted demo. CycloaJS runs in-browser and requires a web server to host files if you run it locally. CycloaJS expects NES ROM files (.nes) supplied by the user; the repository includes sample homebrew ROMs in a roms folder but does not include commercial ROMs.
- Fetch the official source or use the demo: Official source: Clone or download the repository from https://github.com/ledyba/CycloaJS. For a quick test, open the hosted demo at https://app.7io.org/CycloaJS/ in a compatible browser.
- Run the demo locally (recommended for development): If you want to run CycloaJS files locally, serve the repository folder with a simple HTTP server (for example: Python 3: python -m http.server 8000 in the repo root). Do not open files directly via file:// — browsers restrict features (SharedArrayBuffer, audio) when not served over HTTP/S. Once served, open http://localhost:8000/index.html (or the repository's index.html) in a supported browser.
- Provide a ROM (.nes): The web UI accepts drag-and-drop of .nes files or selecting a ROM via the demo UI. Only supply ROM images you are legally permitted to use. The repository includes some sample homebrew ROMs in its roms folder; commercial games are not included.
- Controls and input: Keyboard mappings are documented in the demo (A=Z, B=X, Start=Enter, Select=Space, arrow keys for D-pad). The project README and demo note that player 2 and Gamepad API support are not currently available/working.
- Audio and browser compatibility: Sound output is available in Chrome and Firefox via the Web Audio API. The README and demo note tested compatibility with Chrome, Firefox, and iPad Safari; behavior and sound availability vary by browser.
- Embedding CycloaJS: CycloaJS can be embedded into web pages by including the emulator files and integrating the provided HTML/JS. If embedding in other projects, follow the repository's index.html and script patterns and ensure the hosting server serves files with appropriate headers for modern browser features.
- Building / development notes: The repository contains source under src/ and build artifacts. Review the README and Jakefile for any build tasks. The project is AGPL-3.0+ licensed; if you modify and distribute the project or host it as a service, comply with the AGPL terms.
Software reminder: CycloaJS is a browser-based emulator and requires user-supplied ROM files. It does not include commercial ROMs, BIOS, or firmware. Ensure you have the legal right to use any ROM you load.
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for CycloaJS as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation
