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↗
jsnes.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.

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

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.
6,397 stars·851 forks·JavaScript·Apache-2.0·50 views

Star history

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

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

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.

Which projects share features with bfirsh/jsnes?

Projects with overlapping indexed features 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…

Projects sharing features with Jsnes

These projects share indexed features with Jsnes. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • 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
Compare all 30 related projects→