Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
85 lines (55 sloc) 1.74 KB

🎮 awesomenes

A NES emulator written in Go.

dk smb


Getting and running

awesomenes uses sdl2 for rendering and input processing. It may be necessary to install it beforehand. On macOS, using homebrew:

$ brew install sdl2

Other systems/package managers should provide similar sdl2/libsdl2 packages. Then use the go get:

$ go get
$ awesomenes MY_ROM.nes


Games that use the mapper 0 (NROM) mostly work, although without audio so far. Games that use mapper 4 (mmc3) should work with some eventual glitches.

Tested games:

  • Donkey Kong (NROM)
  • Super Mario Bros. (NROM)
  • Super Mario Bros. 2 (mmc3)
  • Super Mario Bros. 3 (mmc3, with some glitches)

Controller inputs

Keyboard (controller 1)

Arrow keys  -> NES arrows
A           -> NES A
S           -> NES B
Enter       -> NES start
Right shift -> NES select

Nintendo Switch Joycon (controller 1)

Directional -> NES arrows
Down arrow  -> NES A
Right arrow -> NES B
SL          -> NES select
SR          -> NES start


✅ CPU emulation

✅ Video support (picture processing unit - PPU)

✅ Keyboard input

✅ Mapper 0

✅ Joystick input (tested with Nintendo Switch Joycon)

✅ Mapper 4 (...kinda)

➖ More mappers

➖ Save state

➖ Audio support (audio processing unit - APU)


All the information used to build this emulator was found on the awesome nesdev wiki.

You can’t perform that action at this time.