2024-10-19 09:23:00
github.com
NES emulator in Rust
plastic is a NES emulator built from scratch using Rust.
This is a personal project for fun and to experience emulating hardware and connecting them together.
You can install the latest version of plastic or plastic_tui using cargo:
cargo install plastic
cargo install plastic_tui
If you want to experience the latest development version, you can build Plastic
yourself.
For example:
The main emulator is at plastic_core
And its a struct NES
, where the UI would clock it, and then
take the resulting audio and pixel buffers to handle them.
We have 2 UIs, one main and the other just for fun.
Simple ui built with egui
- Very simple and easy to use immediate mode UI.
This is just for fun, but it is actually working way better than
I expected. Check the demo.
If you have one of these terminals mentioned in this docs
Then you will have a much better experience, since these terminals support detecting button Release
, normally other terminals don’t have this feature, so
the input for this UI can be a bit wonky.
I used gilrs for gamepad support and its working very
nicely, keyboard on the other hand is not very responsive, so it
is advised to use gamepad. Also since this uses one character for
each pixel, it is advised to use the smallest font size your
terminal emulator supports. Have fun.
In all the UI providers I followed the same controlling scheme,
as well as the ability to reset through
:
keyboard | nes controller |
---|---|
J | B |
K | A |
U | Select |
I | Start |
W | Up |
S | Down |
A | Left |
D | Right |
gamepad (PS4) | nes controller |
---|---|
X | B |
O | A |
Select | Select |
Start | Start |
Button Up | Up |
Button Down | Down |
Button Left | Left |
Button Right | Right |
For now its static, and there is no way to change it except for
doing it in the code, TODO later.
This project is under MIT license.
NES is a product and/or trademark of Nintendo Co., Ltd. Nintendo Co., Ltd. and is not affiliated in any way with Plastic or its author
Most of the documentation for NES components can be found in the NES dev wiki
For the CPU(6502), this has the instruction set, and I used
Klaus2m5’s tests for testing the CPU alone without the other NES components.
Support Techcratic
If you find value in Techcratic’s insights and articles, consider supporting us with Bitcoin. Your support helps me, as a solo operator, continue delivering high-quality content while managing all the technical aspects, from server maintenance to blog writing, future updates, and improvements. Support Innovation! Thank you.
Bitcoin Address:
bc1qlszw7elx2qahjwvaryh0tkgg8y68enw30gpvge
Please verify this address before sending funds.
Bitcoin QR Code
Simply scan the QR code below to support Techcratic.
Please read the Privacy and Security Disclaimer on how Techcratic handles your support.
Disclaimer: As an Amazon Associate, Techcratic may earn from qualifying purchases.