Skip to content
NesUEFI

NesUEFI

NES EMULATOR

NesUEFI

NesUEFI is an open-source NES emulator port that runs as a UEFI application so it can boot from a FAT32 removable medium or run under UEFI virtual machine firmware (OVMF/qemu). It is a bare-metal-style port of LiteNES and uses GNU-EFI and a ported Adafruit GFX for drawing.

nesPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

NesUEFI demonstrates running a simple NES emulator without a host operating system by compiling the emulator as a UEFI application. The project is aimed at OS/firmware and bare-metal hobbyists who want to run a classic system directly from firmware or an EFI bootloader environment.

BEST FOR

What NesUEFI is good for

Quick experiments with bare-metal UEFI applications, demos on real hardware or in QEMU/OVMF, and learning how to port C libraries (graphics, filesystem, timers) into a GNU-EFI environment. It is useful as a demonstration/learning project rather than a general-purpose NES compatibility solution.

The people behind NesUEFI

History & verification

The project's canonical source is the GitHub repository shadlyd15/NesUEFI, which documents that the emulator is a port of LiteNES and that its core drivers (graphics, FS, timer) are implemented with GNU-EFI. The repository contains a compile guide, a note that OVMF can be used to run under qemu, and instructions for making a FAT32 USB stick with /efi/boot/bootx64.efi (or bootia32.efi) to boot on real hardware. The README lists known limitations (no mapper support beyond NROM/mapper 0, no audio/APU implementation, single-player only, PS/2 keyboard only) and gives a small list of tested mapper-0 games. The repo is MIT-licensed and provides source, makefiles, and a compile_guide. Releases are published through the repository's Releases section.

What NesUEFI supports

  • Target: UEFI firmware environments (x86_64 and 32-bit EFI builds included in repo instructions)
  • Run under qemu with OVMF (UEFI VM firmware)
  • Boot from FAT-formatted removable media (FAT32 ESP style)
  • Input: PS/2 keyboard (project notes say PS/2 only; laptop keyboards may or may not work)

Download and availability

OFFICIAL DOWNLOADS

Get NesUEFI

Official source and release artifacts are provided from the project's GitHub repository and Releases page. Build from source following the compile guide or download prebuilt EFI binaries if available in the repository Releases.

Get NesUEFI ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

NesUEFI setup guide

Setup note: Verified setup notes and a practical build/run sequence based on the project's README and compile_guide. Follow these steps closely; UEFI applications and direct-boot experiments can affect real hardware if done incorrectly.

  1. Get the source and read the docs: Clone the official repository (shadlyd15/NesUEFI) and open README.md and compile_guide.md in the repo. Confirm the available releases on the repository Releases page before building.
  2. Install build dependencies: Install the GNU-EFI development library (the repo points to the GNU-EFI project), a gcc toolchain, an objcopy that can create EFI PE files, mtools, and qemu if you plan to test in a VM. On Linux these are typically built/installed from source or packages; follow the GNU-EFI documentation referenced by the project for exact steps.
  3. Configure the Makefile: Edit the Makefile variables to point to your GNU-EFI headers and libs (INCDIR, LIBDIR, EFILIB) and set OVMF_DIR if you will run under qemu/OVMF. The README lists example variables and where to change them.
  4. Build and produce an image for testing: Run make to build the NesUEFI application. The repository includes a make target to produce a FAT image and copy a splash.bmp and listed .nes files into it (make img). To add ROMs to the test image, list them in the Makefile's mcopy commands.
  5. Run in qemu (recommended first): Use qemu with OVMF to emulate a UEFI environment and boot the produced image. The README provides a 'make run' target for this. This avoids manipulating real hardware while verifying the build.
  6. Prepare a real USB stick (optional, at your own risk): Format a removable drive FAT32, create /efi/boot/, and place the built EFI application renamed to bootx64.efi (for x86_64) or bootia32.efi (for 32-bit). Copy splash.bmp and your .nes ROM files to the root. Boot via your machine's UEFI boot menu. The README explicitly warns to proceed at your own risk and that NesUEFI should not include or provide any commercial ROM/BIOS files.
  7. Controls and limitations to expect: Default keyboard mapping is listed in the README (W/A/S/D for directions, K/J for A/B, etc.). Expect these limitations: only mapper 0 (NROM) games are supported; no audio/APU emulation yet; single-player only; PS/2 keyboard driver required as of the README; many mappers and features are TODO.

Software reminder: NesUEFI is source-licensed MIT. The project does not include commercial game ROMs, firmware, or BIOS files — you must supply your own legally obtained .nes files. The README warns about hardware risk and lists many missing emulator features.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for NesUEFI as they are published.