An open API service indexing awesome lists of open source software.

https://github.com/rbaron/awesomenes

🎮 A NES emulator written in Go
https://github.com/rbaron/awesomenes

emulator nes

Last synced: 16 days ago
JSON representation

🎮 A NES emulator written in Go

Awesome Lists containing this project

README

          

# 🎮 awesomenes

A NES emulator written in Go.


dk
smb



dk

# 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 github.com/rbaron/awesomenes
$ awesomenes MY_ROM.nes
```

# Status

Games that use the [mapper](http://wiki.nesdev.com/w/index.php/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
```

# Roadmap

✅ 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)

# Resources

All the information used to build this emulator was found on the awesome [nesdev wiki](https://wiki.nesdev.com).