Home

Awesome

<p align="center"> <a href="https://prilik.com/ANESE"> <img height="128px" src="resources/icons/anese.ico" alt="ANESE Logo"> </a> </p> <p align="center"> <a href="https://github.com/daniel5151/ANESE/actions?query=branch%3Amaster"> <img src="https://github.com/daniel5151/ANESE/workflows/CI/badge.svg?branch=master" alt="Build Status GitHub Actions"> </a> <a href="https://ci.appveyor.com/project/daniel5151/anese"> <img src="https://ci.appveyor.com/api/projects/status/qgy19m8us3ss6ilt?svg=true" alt="Build Status Windows"> </a> <a href="https://travis-ci.org/daniel5151/ANESE"> <img src="https://travis-ci.org/daniel5151/ANESE.svg?branch=master" alt="Build Status macOS/Linux"> </a> </p>

ANESE (Another NES Emulator) is a Nintendo Entertainment System Emulator written for fun and learning.

Accuracy and performance are long-term goals, but the primary focus is getting popular titles up and running. There are still a lot of bugs, but many games are working quite well already.

ANESE is cross-platform, and is regularly tested on macOS, Windows, and Linux.

ANESE core uses clean and interesting C++11, emphasizing readability, maintainability, and approachability. It is well commented, providing in-line sources and insights for much of the implementation. It is also dependency free (aside from stdlib), making it easy to embed in other projects.

WideNES

wideNES is a novel technique that can automatically "map-out" levels and worlds in NES games. Check out the wideNES Readme for details.

A GIF is worth a 1000 words:

<p align="center"> <img src="resources/web/wideNES_metroid.gif" alt="wideNES on Metroid"> </p>

Pretty cool huh? Here's another one:

<p align="center"> <img src="resources/web/wideNES_smb1.gif" alt="wideNES on SMB1"> </p>

Downloads

Official releases of ANESE can be found on the Releases tab on GitHub.

Alternatively, for the most up-to-date version of ANESE, nightly builds are available. These are compiled directly from the latest ANESE commit, so there may/will be bugs.

Windows: You can download builds of ANESE from AppVeyor's build artifacts page.

macOS: Travis uploads ANESE.app bundles to this GDrive folder.

Building

Dependencies

ANESE's emulation core (src/nes) doesn't have any major dependencies, but the UI does use a couple. Most of these dependencies are bundled with ANESE (see: /thirdparty), although some require additional installation:

Generating + Compiling

ANESE builds with CMake

On macOS / Linux

# in ANESE root
mkdir build
cd build
cmake ..
make

make install # on macOS: creates ANESE.app in ANESE/bin/

On Windows:

mkdir build
cd build
cmake ..
msbuild anese.sln /p:Configuration=Release

Running

ANESE opens to a directory-browser, from which ROMs can be launched.

ANESE can run from the shell using anese [rom.nes] syntax. Certain features are only accessible from the command-line at the moment (e.g: movie recording / playback, PPU timing hacks). For a full list of switches, run anese -h

Windows Users: make sure the executable can find SDL2.dll! Download the runtime DLLs from the SDL website, and plop them in the same directory as anese.exe

Mappers

Most popular Mappers are implemented:

#NameSome Games
000NROMSuper Mario Bros. 1, Donkey Kong, Duck Hunt
001MMC1Legend of Zelda, Dr. Mario, Metroid
002UxROMMegaman, Contra, Castlevania
003CNROMArkanoid, Cybernoid, Solomon's Key
004MMC3Super Mario Bros 2 & 3, Kirby's Adventure
007AxROMMarble Madness, Battletoads
009MMC2Punch Out!!

Feel free to open a PR for any mappers you implement :)

Controls

Currently hard-coded to the following:

ButtonKeyController
AZX
BXA
StartEnterStart
SelectRight ShiftSelect
UpUp arrowD-Pad
DownDown arrowD-Pad
LeftLeft arrowD-Pad
RightRight arrowD-Pad

Any xbox-compatible controller should work.

There are also a couple of emulator actions:

ActionKeyController
Pause / Open MenuEscLeft Thumbstick Button
ResetCtrl - R
Power CycleCtrl - P
Toggle CPU loggingCtrl - C
Speed +25%Ctrl - =
Speed -25%Ctrl - -
Fast-ForwardSpaceRight Thumbstick Button
Make Save-StateCtrl - (1-4)
Load Save-StateCtrl - Shift - (1-4)

(there are 4 save-state slots)

DISCLAIMERS

TODO

These are features that will add major value to ANESE:

Here's a couple that have been crossed off already:

And here are some ongoing low-priority goals:

Roadmap

Key Milestones

Secondary Milestones

Tertiary Milestones (Fun Features!)

Accuracy & Compatibility

Attributions