Skip to content
The Legend of Zelda gameplay on NES
Gameplay from The Legend of Zelda on NES. Image from the Retro Replay media library.

awesomenes

NES EMULATOR

awesomenes

Awesomenes — a small open-source NES (Nintendo Entertainment System) emulator implemented in Go, intended as a learning / hobby project. It runs NROM (mapper 0) games and has partial support for MMC3 (mapper 4); audio is not implemented yet.

NESPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

Awesomenes is a personal/hobby NES emulator written in Go that uses publicly available NES documentation (nesdev wiki) as its reference. The author aims for a compact, readable implementation rather than maximum compatibility or production-grade feature completeness.

BEST FOR

What it does well

Clear, compact Go code for learning how NES components fit together; working CPU and PPU implementations allowing NROM games like Super Mario Bros. and Donkey Kong to run; keyboard and Joy-Con input mapped for play; straightforward build/run instructions for Go developers.

The Legend of Zelda gameplay on NES
Gameplay from The Legend of Zelda on NES.

The people behind awesomenes

History & status

The repository (rbaron/awesomenes) is an actively published hobby project with a modest commit history and community interest (stars). The README documents implemented components (CPU, PPU), supported mappers (mapper 0 fully, partial mapper 4/MMC3), tested games, and a roadmap that explicitly lists missing features such as APU (audio) and save states. The project is maintained on GitHub and distributed under the MIT license. Because this is a personal/hobby emulator, compatibility is limited compared with mature NES emulators; expect glitches on more complex mapper-based cartridges.

What awesomenes supports

  • NES (Nintendo Entertainment System) ROM images (.nes)
  • Mapper 0 (NROM) – mostly working
  • Mapper 4 (MMC3) – partial support, some glitches
  • Keyboard input (configurable via README)
  • Nintendo Switch Joy-Con support (per README)
  • SDL2-based rendering and input (requires system SDL2)

Download and availability

OFFICIAL DOWNLOADS

Get awesomenes

Source and releases are available from the project's GitHub repository. The README documents how to fetch and run the emulator using Go tooling; prebuilt binaries may appear under the repository's Releases page if provided by the author.

Get awesomenes ↗

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.

awesomenes setup guide

Setup note: Practical setup notes (verified from the project's README). This guide describes building and running Awesomenes on a development machine. It assumes you have a working Go toolchain and can install system packages (SDL2).

  1. 1) Install prerequisites: Install Go (1.XX or newer — use the version you already use for Go development). Install SDL2 on your platform (the README specifically mentions Homebrew on macOS: brew install sdl2). On Linux use your distribution package manager (libsdl2-dev / libsdl2).
  2. 2) Fetch the source: Use the Go command to obtain the repository into your GOPATH/module-aware environment: go get github.com/rbaron/awesomenes. Alternatively, git clone the repository from GitHub to a folder and build from there.
  3. 3) Build and run: With SDL2 available, either install via go install github.com/rbaron/awesomenes@latest or build inside the cloned repository (go build .). Run the emulator by supplying a valid NES ROM file: awesomenes MY_ROM.nes. The README shows the same invocation.
  4. 4) Controller and input: Default keyboard mappings (from README): arrow keys=NES arrows, A key=NES A, S key=NES B, Enter=start, Right Shift=select. The project documents Nintendo Switch Joy-Con mapping as well.
  5. 5) Known limitations and troubleshooting: Audio is not implemented (APU missing) as of the README; expect silent output. Only simple mappers are supported (mapper 0 works well; mapper 4/MMC3 has partial support with glitches). If a game fails, try a known NROM test ROM. Ensure SDL2 is correctly installed and accessible to the Go binary; on macOS, using Homebrew's sdl2 usually satisfies this. The README lists tested games and the roadmap.
  6. 6) Advanced: releases and binaries: Check the repository's Releases page for prebuilt binaries; otherwise, build locally. Do not expect bundled commercial game ROMs, BIOS, or firmware—these are not included.

Software reminder: This project is source-distributed under an open-source license (MIT). You must provide your own NES ROMs (user-supplied). The emulator does not include commercial game files or system firmware.

Sources and further reading

Detailed guides and tutorials

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