apt-get install libsdl2-dev # Ubuntu/Debian (wheezy-backports for Debian 7) brew install sdl2 # Mac OS X with homebrew yum install SDL2-devel # Fedora/CentOS pacman -S sdl2 # Arch Linux emerge libsdl2 # Gentoo
With nimble installed you can then install NimES:
nimble install nimes
There are a few possibilities to build NimES if you got the source already:
nimble install # installs nimes into ~/.nimble/bin OR nimble build # builds the binary in src/nimes OR nim -d:release c src/nimes # same without nimble $ nimes Usage: nimes <rom.nes>
If you don't want to use nimble, you'll have to get Nim's SDL2 wrapper manually.
You can also use nake for building:
$ nake Available tasks: desktop - Builds NimES for Desktop web - Builds NimES for the Web android - Builds NimES for Android clean - Removes build files
Building with Emscripten
nim -d:release -d:emscripten c src/nimes
You need the files
tetris.nes, pacman.nes, smb.nes, smb3.nes available for this.
Building for Android
You need the Android SDK (12 or later) and NDK (7 or later) installed. So far NimES on Android only opens a predefined
smb3.nes and controls don't even work. This is mainly to demonstrate that it could easily be ported to Android.
nim -d:release -d:android c src/nimes cd android ndk-build ant debug
The resulting apk is in
bin/org.nimes-debug.apk. You can try this nimes.apk. Some work will be necessary to improve the performance of the program as well as implement Android controls.
Porting to Android was pretty simple by following this guide.
|F||250% speed while pressed|
|F10||Speed - 5%|
|F11||Speed + 5%|
TODO / What's missing
- Loading screen to select games (also in emscripten)
- Second player
- Settings for controls/gamepad/joystick
- Performance could be improved significantly by making PPU render by scanline, not by pixel
- More mappers (0,1,2,3,4,7 working, NES mapper list)
- PAL video (NTSC only currently)
Source code information
The NES emulation code largely follows fogleman's excellent NES emulator in Go as well as these info materials and some other emulators: