Skip to content
SPECIFICTION
Get listed

HalfNES vs JSNES

HalfNES

github.com

JSNES

github.com

Side by side

FigureHalfNESJSNES
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
Web—Yes
WindowsYes—
macOSYes—
LinuxYesYes
Plans published11
Spec score · NES Emulators8.0 (#6)8.3 (#3)
AudioThe listed features include an accurate sound core and an NSF player.The API supports an audio callback and has sound emulation enabled by default with a default sample rate of 48000 Hz.
LicenseThe repository identifies its license as GPL-3.0.The repository identifies its license as Apache-2.0.
PurposeHalfNES is an accurate NES/Famicom emulator.JSNES is a JavaScript NES emulator library that works in browsers and Node.js.

Plans

HalfNES

  • HalfNESFree

HalfNES pricing →

JSNES

  • JSNESFree

JSNES pricing →

In their own words

HalfNES

HalfNES is a free NES and Famicom emulator for Linux, macOS, Windows, and other Java-compatible platforms. It supports the mapper numbers listed in its README, and says nearly all US releases will start, though some can show corrupted graphics or freeze. Its audio features include a sound core and an NSF player; display options include full screen and an NTSC filter. Controls can be remapped in Preferences, and joysticks work through DirectInput and xInput. HalfNES supports battery saves, but not savestates. GitHub releases provide a Windows executable and a JAR for other platforms, and both require Java 8 or newer. Linux users need to set execute permission on the JAR. Gamepads must be connected before a game loads to be detected, and their buttons cannot be configured. PAL games are supported but may have more issues; users need to select PAL in Preferences. The README gives a 2 GHz Athlon 64 or better as the requirement for full-speed play across all games, and notes that the NTSC filter needs substantially more processing power.

Visit github.com

JSNES

JSNES is a free JavaScript library for emulating NES games in browsers and Node.js. Its Browser helper handles canvas rendering, audio, keyboard and gamepad input, and frame timing; the lower-level NES class allows custom rendering and audio handling in Node.js. ROM data can be loaded from a URL or from a string, Uint8Array, or ArrayBuffer. The API runs frames, accepts controller input for either player, resets, adjusts frame rate, and includes methods for moving and triggering the Zapper. Applications can serialize and restore emulator state with `toJSON()` and `fromJSON()`. The `onBatteryRamWrite` callback lets an application capture battery-backed SRAM writes for persistent game saves. Sound emulation is enabled by default, with a default sample rate of 48000 Hz, and an audio callback is available. The README provides npm installation for Node.js or Webpack and an unpkg script for browser use, as well as a React embedding example. JSNES is licensed under Apache-2.0; its GitHub Issues tracker accepts bug reports and feature requests.

Visit github.com