Skip to content
nathsouPublic

Latest commit

 

History

89 Commits

Folders and files

Repository files navigation

NESSY

Logo

A Nintendo Entertainment System (NES) emulator for the web

Play it online

Screenshots

Metroid Super Mario Bros. Tetris

Contra The Legend of Zelda Super Mario Bros. 3

Kirby's Adventure Castlevania Mega Man 2

Features

  • Save states (CTRL+S to save, CTRL+L to load last)
  • Customizable controls
  • Full Screen mode
  • Working audio
  • Auto generated ROM backgrounds in the library
  • Save state preview in the saves menu
  • Gamepad support
  • Supported mappers: NROM (0), MMC1 (1), UNROM (2), MMC3 (4)

Settings Menu

Press ESC / Tab to toggle the UI

Use the arrow keys to navigate the menus and press enter to validate

Library Saves

Todo / Ideas

  • Support more mappers (3, 66, 118, ...)
  • Use an AudioWorkletNode instead of a scriptProcessor
  • Support iNes 2.0 roms
  • Expose the core's second joypad in frontend controls
  • Time travel mode (Save states recorded at regular intervals)
  • Replay mode (Replay all inputs from the start)
  • Different color palettes
  • Better UX
  • VR / 3D mode with sprites in front and bg tiles in the background?
  • Optimize! (JIT Compiler / frame by frame or scanline by scanline rendering instead of pixel by pixel)
  • Wide mode (for scrolling games, visualize the prefilled tiles in advance)

Embedding

Nessy can easily be embedded on other platforms, see the 3ds/ folder for a 3ds port (no sound and very slow frame rate for now).

3DS

Validation and compatibility

Run cargo test --all-targets --locked and node tests/audit_controls.mjs (Node 24+). The audit fixes and conformance results include the pinned public ROM suite and reproduction commands.

Emulation now advances peripherals on each CPU bus cycle. Direct users of CPU::step() must not also call Bus::advance() for those cycles. The Nes interface handles this automatically.

Save format 1 includes audio, mapper IRQ timing, and complete video state. Older format-0 saves are rejected rather than restored incompletely; create new saves after upgrading. The web frontend still starts if an old automatic save cannot be resumed.

Releases

Contributors

Languages