Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/ocfbnj/nesemulator

A cross-platform NES emulator in C++.
https://github.com/ocfbnj/nesemulator

cpp emulator nes

Last synced: about 1 month ago
JSON representation

A cross-platform NES emulator in C++.

Awesome Lists containing this project

README

        

# NesEmulator

[![CI](https://github.com/ocfbnj/NesEmulator/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ocfbnj/NesEmulator/actions/workflows/ci.yml)

This is an NES emulator. It implements Mapper0-4, which cover about 80% of iNes rom. The following games have been
tested, other games may or may not work:

- Super Mario Bros.
- Battle City
- Contra
- Teenage Mutant Ninja Turtles
- Double Dragon
- Zelda

## Usage

~~~bash
./NesEmulator
~~~

### Controller

#### Player1

| Button | Mapped to |
| :----: | :-------: |
| A | J |
| B | K |
| Select | Space |
| Start | Enter |
| Up | W |
| Down | S |
| Left | A |
| Right | D |

#### Player2

| Button | Mapped to |
| :----: | :---------: |
| A | Num1 |
| B | Num2 |
| Select | Right Shift |
| Start | Num0 |
| Up | Up |
| Down | Down |
| Left | Left |
| Right | Right |

#### Other

| Button | Effect |
| :----: | :-----------: |
| R | Reset |
| I | Quick Save |
| L | Quick Restore |

## How to build

### Prerequisites

- A compiler supporting C++20.
- Python3 installed.
- CMake installed.

### Building with Conan Package Manager

1. Install Conan

~~~bash
pip install conan -U
conan profile detect --force
~~~

2. Clone and Build

**Windows**

~~~bash
git clone https://github.com/ocfbnj/NesEmulator.git
cd NesEmulator
conan install . --build=missing
cmake --preset=conan-default
cmake --build --preset=conan-release
~~~

**Linux, macOS**

~~~bash
git clone https://github.com/ocfbnj/NesEmulator.git
cd NesEmulator
conan install . --build=missing
cmake --preset=conan-release
cmake --build --preset=conan-release
~~~

Now, you can find the binary in `build` directory.

## Screenshots

![Super Mario Bros](./images/Super%20Mario%20Bros.png)
![Battle City](images/Battle%20City.png)
![Contra](./images/Contra.png)
![Teenage Mutant Ninja Turtles III](./images/Teenage%20Mutant%20Ninja%20Turtles%20III.png)
![Double Dragon II](./images/Double%20Dragon%20II.png)

## References

Developing an NES emulator is exciting and interesting 😀. If you also want to develop your own one, you can refer to the following tutorials and references. ❤️

### Nesdev Wiki

-

### Tutorials

-
-
-

### Other NES implementations

-
-
-
-

### CPU

-
-
- (This page was closed.)

### Graphic

-
-
-

### Audio

-
-
-
-