NES Emulator + 6502 Studio

What NES Emulator + 6502 Studio is
NES Emulator + 6502 Studio is a free, open-source NES emulator that runs in a web browser through WebAssembly, with native builds also available. Its browser debugger, NES Studio, provides stepping, breakpoints, live disassembly, memory editing, CPU and PPU state, and pattern, nametable, and OAM viewers. A full-screen Play mode is included. The 6502 core implements all 151 official opcodes and documented illegal opcodes; the project reports passing nestest and blargg instr_test and matching the nestest golden log cycle for cycle. Graphics include backgrounds, sprites, DMA, scrolling, and four mirroring modes. Audio uses two pulse channels, triangle, and noise through WebAudio. It supports NROM, MMC1, UxROM, CNROM, and MMC3 cartridges. The project reports Super Mario Bros. 1-1 as fully playable, while Super Mario Bros. 3 boots with its attract demo. For scripting and agent work, it offers a deterministic C-ABI library, a Python Gymnasium-style Mario environment, and optional live-agent streaming through a locally run Python server. It is licensed under GPL v3.
Who it suits
It suits NES developers and researchers who want a browser debugger or deterministic, headless access for scripting and agent work. Native builds require a C++17 compiler, CMake 3.14 or newer, and GoogleTest; live-agent streaming needs a Python server and configured backend URL.
What it does well
- Browser debugger includes memory and CPU/PPU views
- Core implements official and documented illegal opcodes
- Supports five cartridge mappers, including MMC3
- C-ABI library provides deterministic stepping
- Python package includes a Gymnasium-style Mario environment
What to know first
- PPU timing ROM blargg ppu_vbl_nmi does not pass
- Live-agent button is hidden without a configured backend URL
- Native build requires C++17, CMake 3.14+, and GoogleTest
Limits
The PPU renders one scanline at a time, so the blargg ppu_vbl_nmi timing ROM does not pass; dot-based timing is described as future work. Live-agent streaming requires a local Python server, and its button is hidden in production builds unless a backend URL is configured.
Getting started
- Open the project on GitHub.
- Use the browser version, or follow the documented Docker and front-end setup with pnpm and Node 20+.
- For a native build, use a C++17 compiler, CMake 3.14 or newer, and GoogleTest.
- For live-agent streaming, run a Python server on your machine and configure a backend URL.
Verdict
NES Emulator + 6502 Studio combines a browser-based emulator and debugger with native and headless options for development. Its listed PPU timing limitation matters for users seeking that level of accuracy.
Questions
Is NES Emulator + 6502 Studio free and open source?
Yes. It is free, open source, and licensed under GPL v3.
What platforms does it support?
It runs in a web browser through WebAssembly, and native builds are supported via C++ and CMake.
What does NES Studio include?
The browser debugger includes stepping, running, breakpoints, live disassembly, a memory editor, CPU and PPU state views, pattern, nametable and OAM viewers, and full-screen Play mode.
Can it be used for agent development?
It includes a deterministic C-ABI library and a Python package with a Gymnasium-style Mario environment, plus an optional Gymnasium adapter for stable-baselines3. Live-agent streaming requires a Python server on the user's machine.
What build tools are required for a native build?
The project recommends Docker or lists a C++17 compiler, CMake 3.14 or newer, and GoogleTest.
Who makes the project?
The maker is Maxwell Knight, a fullstack engineer based in Israel.
Facts from NES Emulator + 6502 Studio's own pages
- Agent and Python tools
- The project provides a C-ABI shared library, a Python package with a Gymnasium-style Super Mario Bros environment, and an optional Gymnasium adapter for stable-baselines3. · github.com, 9 Oct 2026
- Agent integration
- NES Studio can replay .nesmovie recordings and can show live agent play through a Python streaming server; the live-agent button is hidden in production builds unless a backend URL is configured. · github.com, 4 Oct 2026
- Build requirements
- The README recommends Docker, or lists a C++17 compiler, CMake 3.14 or newer, and GoogleTest for a native build. · github.com, 9 Oct 2026
- Cartridge support
- The emulator supports NROM, MMC1, UxROM, CNROM and MMC3 mappers. · github.com, 4 Oct 2026
- CPU
- The 6502 core implements all 151 official opcodes and documented illegal opcodes, and the README says it passes nestest and blargg instruction tests. · github.com, 9 Oct 2026
- Debugger
- NES Studio includes stepping, running, breakpoints, live disassembly, a memory editor, CPU and PPU state displays, pattern, nametable and OAM viewers, and full-screen Play mode. · github.com, 9 Oct 2026
- Game compatibility
- The README describes Super Mario Bros. as fully playable through level 1-1 and Super Mario Bros. 3 as booting with its attract demo playing. · github.com, 9 Oct 2026
- Graphics and sound
- The PPU supports backgrounds, sprites, OAM and DMA, scrolling, sprite-0 hit, and four mirroring modes; the APU has pulse, triangle, and noise channels wired to WebAudio. · github.com, 9 Oct 2026
- Headless and deterministic use
- A C-ABI shared library exposes independent NES instances with deterministic stepping, and the project includes a Python package with a Gymnasium-style Super Mario Bros environment. · github.com, 4 Oct 2026
- Intended users
- The project describes its headless library, Python environment and live-agent workflow as suitable for scripting, training agents, development and research. · github.com, 4 Oct 2026
- Known limitation
- The PPU renders a whole scanline at a time, so the ppu_vbl_nmi dot-timing conformance ROM is not yet passing. · github.com, 9 Oct 2026
- License
- The repository states that the software is licensed under GPL v3. · github.com, 9 Oct 2026
- Live agent feature
- Live agent streaming requires a Python server on the user's machine, and the Spawn Agent button is hidden in production builds unless a backend URL is configured. · github.com, 9 Oct 2026
- Maker
- The GitHub profile identifies the maker as Maxwell Knight, a fullstack engineer based in Israel. · github.com, 9 Oct 2026
- Mapper support
- The emulator supports NROM, MMC1, UxROM, CNROM, and MMC3 with scanline IRQ. · github.com, 9 Oct 2026
- Purpose
- NES Emulator + 6502 Studio is a C++ Nintendo Entertainment System emulator compiled to WebAssembly with a browser debugger called NES Studio. · github.com, 9 Oct 2026
- Security and support
- The opened project page provides no security or compliance claims and no dedicated support terms. · github.com, 4 Oct 2026
- Setup
- The project documents Docker and front-end setup using pnpm and Node 20+, plus a native build requiring a C++17 compiler, CMake 3.14+ and GoogleTest. · github.com, 4 Oct 2026
- Testing
- The project reports 32 native gtest tests and 211 web Vitest tests, with conformance test ROMs fetched on demand and run in CI. · github.com, 4 Oct 2026
Where NES Emulator + 6502 Studio stands on Freedom251
- NES Emulators#24 of 26