blob: e14b9768bf666863d8ae380828287043c6a5aad9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# Yet Another Entertainment System
> A simple portable NES emulator written in C++.
The emulator currently supports the following mapper types:
- NROM
- (TODO)
It was mainly targeted for a simple custom operating system to run on the bare-metal. Because of this, it does not use
any standard libraries and it does not do dynamic memory allocations. It also supports using a modified NES controller
via serial port.
## Using the Emulator
The emulator comes with its own GUI allowing the user to change some settings and select a ROM using its built-in file
browser. There is only some platform-specific functionality which needs to be implemented. Some frontends can be found
in the [app](app) directory:
- A macOS port using `GameController.framework` and `SpriteKit.framework`.
- A (WIP) SDL port using SDL 3.
In addition, you can find two more helper applications:
- `controller` for testing a controller connected using serial port (see below).
- `encrypt` for encrypting ROMs using AES (might one day be useful in some cases)
You can build all of the applications using CMake:
```
mkdir build
cd build
cmake ..
make
```
Dependencies on Linux can also be installed using Nix, by running a development shell:
```
nix develop .
```
## Using the Controller
It is also possible to modify an original NES controller to work with this emulator using an Arduino.
You can find the Arduino sketch for it in [controller](controller).
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|