• Stars
    star
    233
  • Rank 172,230 (Top 4 %)
  • Language
    C++
  • License
    MIT License
  • Created over 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Python3 NES emulator and OpenAI Gym interface

build-status PackageVersion PythonVersion Stable Format License

nes-py is an NES emulator and OpenAI Gym interface for MacOS, Linux, and Windows based on the SimpleNES emulator.

Bomberman II Castelvania II Excitebike
Super Mario Bros. The Legend of Zelda Tetris
Contra Mega Man II Bubble Bobble

Installation

The preferred installation of nes-py is from pip:

pip install nes-py

Debian

Make sure you have the clang++ compiler installed:

sudo apt-get install clang

Windows

You'll need to install the Visual-Studio 17.0 tools for Windows installation. The Visual Studio Community package provides these tools for free.

Usage

To access the NES emulator from the command line use the following command.

nes_py -r <path_to_rom>

To print out documentation for the command line interface execute:

nes_py -h

Controls

Keyboard Key NES Joypad
W Up
A Left
S Down
D Right
O A
P B
Enter Start
Space Select

Parallelism Caveats

both the threading and multiprocessing packages are supported by nes-py with some caveats related to rendering:

  1. rendering is not supported from instances of threading.Thread
  2. rendering is supported from instances of multiprocessing.Process, but nes-py must be imported within the process that executes the render call

Development

To design a custom environment using nes-py, introduce new features, or fix a bug, please refer to the Wiki. There you will find instructions for:

  • setting up the development environment
  • designing environments based on the NESEnv class
  • reference material for the NESEnv API
  • documentation for the nes_py.wrappers module

Cartridge Mapper Compatibility

  1. NROM
  2. MMC1 / SxROM
  3. UxROM
  4. CNROM

You can check the compatibility for each ROM in the following list

Disclaimer

This project is provided for educational purposes only. It is not affiliated with and has not been approved by Nintendo.

More Repositories

1

gym-super-mario-bros

An OpenAI Gym interface to Super Mario Bros. & Super Mario Bros. 2 (Lost Levels) on The NES
Python
676
star
2

limit-order-book

A C++ and Python implementation of the limit order book.
C++
230
star
3

a-neural-algorithm-of-artistic-style

Keras implementation of "A Neural Algorithm of Artistic Style"
Jupyter Notebook
117
star
4

RackNES

A Nintendo Entertainment System (NES) emulator module for VCV Rack.
C++
97
star
5

playing-mario-with-deep-reinforcement-learning

An implementation of (Double/Dueling) Deep-Q Learning to play Super Mario Bros.
Jupyter Notebook
68
star
6

rosbag-tools

Tools and scripts for working with ROS bag files.
Python
51
star
7

gym-tetris

An OpenAI Gym interface to Tetris on the NES.
Python
46
star
8

PotatoChips

Eurorack modules based on programmable sound chip emulation.
C++
45
star
9

gym-zelda-1

An OpenAI Gym interface to The Legend of Zelda on the NES.
Python
24
star
10

ios-semantic-segmentation

An example of semantic segmentation on iOS using CoreML and Keras.
Swift
17
star
11

MIMS

MIMS (Medical Informatics Management System) is an iOS solution to Medical Informatics
Swift
6
star
12

semantic-segmentation-baselines

Baseline implementation of deep learning semantic segmentation models.
Jupyter Notebook
6
star
13

nes-iOS

An NES emulator for iOS based on the nes-py emulation system
C++
5
star
14

very-good-semantic-segmentation-labeling-app

A Python app for labeling semantic segmentations in images.
Python
5
star
15

keras-pyramid-pooling-module

An implementation of the Pyramid Pooling Module as a Keras layer.
Jupyter Notebook
4
star
16

parse-server-boilerplate

boilerplate code for starting Parse Server projects in node.js
JavaScript
4
star
17

gotorch

Tensors and Dynamic neural networks in Golang
Go
4
star
18

object-pool

A simple template implementation of an object pool in C++.
C++
3
star
19

financial-analysis

A python package with basic financial analysis functions
Python
3
star
20

UIPopupDatePicker

a simple PopupDialog for selecting a datetime
Swift
2
star
21

ntsc-py

a CTypes interface to Blargg's NTSC shaders for Python
Jupyter Notebook
2
star
22

robust-graph-convolutional-networks-against-adversarial-attacks-implementation

A Keras implementation of the paper "Robust Graph Convolutional Networks Against Adversarial Attacks"
Jupyter Notebook
2
star
23

parse-server-mock

mock elements to make unit testing parse-server cloud code easier
JavaScript
1
star
24

UIXibView

a UIView subclass for easily building IBDesignable views without boilerplate
Swift
1
star
25

UIBankPayoutFlow

an iOS UI flow for applications that require payout information to a bank account
Swift
1
star
26

csv

a C++ implementation of a CSV reader / writer
C++
1
star
27

gotorch-example

An example usage of GoTorch
Go
1
star