A NES emulator written in Go.
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 github.com/rbaron/awesomenes
$ 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)
Arrow keys -> NES arrows
A -> NES A
S -> NES B
Enter -> NES start
Right shift -> NES select
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.