ANESE (Another NES Emulator) is a Nintendo Entertainment System Emulator being written for fun and learning.
Strong Accuracy is a long-term goal, but the primary goal is simply getting ANESE to play some of the more popular titles :smile:
I am aiming for clean and interesting C++11 code, with a emphasis on keeping the source readable, maintainable, and comprehensible. Performance is important, but not a primary focus.
NOTE: The APU is not my code. I wanted to get ANESE up and running before
new-years 2018, so i’ve decided to use Blargg’s venerable
to handle sound (for now). Once I polish up some of the other aspects of the
emulator, I will revisit my own APU implementation (which is currently just a
It is being built with cross-platform in mind, with builds being tested on
MacOS, Linux (Ubuntu), and Windows regularly, with strict compiler flags, and
Lastly, I am trying to avoid looking at the source codes of other NES emulators, since IMO, half the fun of writing a emulator is figuring things out yourself :D
ANESE uses CMake, so make sure it is installed.
ANESE’s core doesn’t have any hard dependencies, but there are a couple used by the UI. Most of these dependencies are either bundled with ANESE (see: /thirdparty), although some do require additional installation:
apt-get install libsdl2-dev(on Ubuntu)
brew install SDL2
CMakeLists.txtto point to the SDL2 dev libs (or just plop them down into
# in ANESE root mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make
Building on Windows has been tested with VS 2017 using MSVC.
NOTE: make sure to build ANESE in release configuration, since without the compiler optimizations, it’s bloody slow. This is because I wrote the code to be clean and neat, without worrying about performance.
anese, and a file select dialog should prompt you for a rom file.
Alternatively, it can be called from the shell using standard
For a full list of switches, run
Windows Users: make sure the executable can find SDL2.dll.
Currently hardcoded to the following:
Any xbox-compatible controller should work.
There are also a couple emulator actions:
|Reset||Ctrl - R|
|Power Cycle||Ctrl - P|
|Toggle CPU logging||Ctrl - C|
|Speed++||Ctrl - =|
|Speed–||Ctrl - -|
main.ccI’M SORRY IN ADVANCE