awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
bfirsh avatar

bfirsh/jsnes

0
View on GitHub↗
6,397 stars·851 forks·JavaScript·Apache-2.0·21 viewsjsnes.org↗

Jsnes

jsnes is a JavaScript-based NES emulator that runs classic NES games in the browser or in Node.js. It provides cycle-accurate CPU emulation, frame-buffer-based video rendering, and sample-buffer audio synthesis, along with a ROM cartridge mapper abstraction for broad game compatibility.

The emulator exposes a programmable core with a simple API for controlling emulation state, capturing screenshots, and managing save data. It supports keyboard control remapping at runtime, with settings persisted to localStorage, and offers state serialization for save and restore operations. Battery-backed SRAM changes are handled through a callback-driven persistence mechanism.

The project covers browser-based NES emulation with automatic canvas rendering and input handling, as well as headless emulation in Node.js for custom rendering pipelines. It also provides programmatic control over emulator state, including pause, resume, reset, and ROM reloading.

Features

  • Retro Game Emulation - Boots and runs classic NES games inside a web page with canvas rendering, audio, and input handling.
  • JavaScript Emulator Cores - Provides a JavaScript-based NES emulator with cycle-accurate CPU, PPU, and audio emulation for browser and Node.js.
  • Emulator Mapper Abstractions - Implements a pluggable mapper interface for broad NES cartridge compatibility.
  • Emulator SRAM Callbacks - Provides a callback mechanism for persisting battery-backed SRAM changes to external storage.
  • Save State Managers - Serializes complete emulator state into JSON for save and restore operations.
  • Emulation State Scripting - Provides a scripting interface for pausing, resuming, resetting, and reloading emulator state.
  • Web-Based Emulators - Runs classic NES games inside a web page with automatic canvas rendering, audio, and input handling.
  • Sample-Based Buffer Callbacks - Produces raw PCM audio samples from APU state through a sample-buffer-based pipeline.
  • Game Controller Remappers - Ships runtime keyboard remapping for NES controller buttons with localStorage persistence.
  • Emulation Session Control - Provides a simple interface for pausing, resuming, resetting, and reloading emulator state.
  • Programmable Emulator APIs - Exposes a simple API for controlling emulation state, capturing screenshots, and managing save data.
  • Cycle-Accurate Emulators - Implements cycle-accurate emulation of the 6502 CPU for precise NES hardware timing.
  • Emulator Frame Buffers - Generates complete 256x240 pixel frame buffers from PPU state for canvas drawing or external processing.
  • Keyboard Input Mapping - Translates browser keyboard events into NES controller button states via a configurable mapping table.
  • Node.js Emulation Cores - Runs NES CPU and PPU cycles programmatically in Node.js for custom rendering pipelines.
  • Game Keyboard Controls - Rebinds NES controller buttons to different keyboard keys at runtime with localStorage persistence.
  • Battery-Backed SRAM Persistence - Writes battery-backed SRAM changes to a callback for external save data storage.
  • Node.js Emulation Cores - Runs NES CPU and PPU cycles programmatically in Node.js for custom rendering pipelines.

Star history

Star history chart for bfirsh/jsnesStar history chart for bfirsh/jsnes

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does bfirsh/jsnes do?

jsnes is a JavaScript-based NES emulator that runs classic NES games in the browser or in Node.js. It provides cycle-accurate CPU emulation, frame-buffer-based video rendering, and sample-buffer audio synthesis, along with a ROM cartridge mapper abstraction for broad game compatibility.

What are the main features of bfirsh/jsnes?

The main features of bfirsh/jsnes are: Retro Game Emulation, JavaScript Emulator Cores, Emulator Mapper Abstractions, Emulator SRAM Callbacks, Save State Managers, Emulation State Scripting, Web-Based Emulators, Sample-Based Buffer Callbacks.

What are some open-source alternatives to bfirsh/jsnes?

Open-source alternatives to bfirsh/jsnes include: baekalfen/pyboy — PyBoy is a programmable Game Boy emulator and hardware simulation framework written in Python. It functions as an… mgba-emu/mgba — mGBA is a high-accuracy Game Boy Advance emulator and hardware-level debugger designed to run handheld console ROMs on… amhndu/simplenes — SimpleNES is a C++ application that simulates original Nintendo Entertainment System hardware to run legacy games on… rileytestut/delta. mamedev/mame — MAME is a vintage hardware emulation platform designed to recreate the circuitry of arcade games, computers, and… melonds-emu/melonds — melonDS is an open-source emulator that runs original Nintendo DS and DSi games on modern operating systems with…

Open-source alternatives to Jsnes

Similar open-source projects, ranked by how many features they share with Jsnes.
  • baekalfen/pyboyBaekalfen avatar

    Baekalfen/PyBoy

    5,159View on GitHub↗

    PyBoy is a programmable Game Boy emulator and hardware simulation framework written in Python. It functions as an emulation engine that allows users to execute original handheld software while providing a programmatic interface to control, probe, and automate game execution. The project is specifically designed as a reinforcement learning environment, exposing emulator states and controls to facilitate the training of machine learning agents. It distinguishes itself by providing tools for game area mapping and the extraction of simplified 2D screen representations and collision maps to suppor

    Pythoncythonemulatorgameboy
    View on GitHub↗5,159
  • mgba-emu/mgbamgba-emu avatar

    mgba-emu/mgba

    6,798View on GitHub↗

    mGBA is a high-accuracy Game Boy Advance emulator and hardware-level debugger designed to run handheld console ROMs on modern computers. It serves as a scriptable emulation environment that allows for the execution of portable hardware software and the simulation of associated peripherals. The project distinguishes itself through its focus on technical analysis, providing a suite of tools for retro game debugging and game logic inspection. It includes a host-client debug protocol that enables external debugger connectivity via TCP socket communication and an event-driven scripting engine for

    Cemulatorgame-boygame-boy-advance
    View on GitHub↗6,798
  • amhndu/simplenesamhndu avatar

    amhndu/SimpleNES

    5,087View on GitHub↗

    SimpleNES is a C++ application that simulates original Nintendo Entertainment System hardware to run legacy games on modern computers. It functions as a hardware simulator and retro gaming emulator designed to execute classic game ROMs by recreating the original console environment through software. The system implements a software version of the 6502 CPU and picture processing unit to render retro game video and audio. It recreates 8-bit console architecture to ensure the execution of original game ROMs. The project covers low-level hardware simulation, including cycle-accurate CPU emulatio

    C++c-plus-plusemulatornes-emulator
    View on GitHub↗5,087
  • rileytestut/deltarileytestut avatar

    rileytestut/Delta

    5,827View on GitHub↗
    Swift
    View on GitHub↗5,827
  • See all 30 alternatives to Jsnes→