LemonNES Logo

The

LemonNES Emulator Project

Driven by my passion for emulation, LemonNES was my first attempt at building a custom Nintendo Entertainment System (NES) emulator from the ground up to explore low-level hardware architecture and reverse-engineering.

While the code is still experimental and not production-ready, it was an incredibly rewarding project that allowed me to dive deep into how software can recreate hardware behavior. It taught me how difficult it is to emulate a system accurately, and how much optimization goes into creating an engine that remains fast across a wide range of games. Plus, the emulator is one of the smallest NES emulators in existence, clocking in at just about 115kb for the entire application, including the interface and features. To use it, simply click the folder button to upload your own legally obtained ROM file, and you're good to go! You can also download the HTML document to use it offline (doesn't work on iOS devices offline) here.

Test the Emulator below

Can't see the demo? Visit lemonnes.github.io

The emulator is written completely in JavaScript (CSS and HTML too) and runs entirely client-side, making it accessible to anyone with a modern desktop or mobile browser.

It features support for several cartridge mappers (0, 1, 2, 3, 4, and 9) alongside a few handy features like a CRT filter, touch controls, save states, hardware controller inputs, and audio emulation.

I also bundled the web engine inside a native web-wrapper to target Android devices. You can grab the build directly from the GitHub Releases page.

Built With

  • HTML5
  • JavaScript
  • CSS3
  • Web Audio API