A lightweight CHIP-8 emulator written in Rust with minimal dependencies and clean architecture.
I wanted to deep dive a bit more into low-level emulation in Rust and tackle a simpler project before attempting to write a Game Boy Advance (GBA) emulator.
Since this project is focused on correctness and clarity, it only incorporates some micro-optimizations like bitwise opcode parsing.
| Classic CHIP-8 Keypad | QWERTY Keyboard Mapping |
|---|---|
1 2 3 C |
1 2 3 4 |
You need the Rust toolchain installed. If you don't have it yet, set it up via rustup.rs.
- Clone this repository:
git clone https://github.com/dnlzrgz/chipster
cd chipster- Run a ROM by providing its file path:
cargo run --release -- "./demos/Maze (alt) [David Winter, 199x].ch8"- Wikipedia for the high-level description of CHIP-8.
- Chip-8 Technical Reference v1.0 for the detailed opcode descriptions and implementations notes.
- Another Chip-8 Emulator (in Rust) is the step-by-step walkthrough I mainly followed and use as inspiration.
- Building a CHIP-8 Emulator [C++] is a clearer and deeper explanation.
Note
The ROMs in this repository have been extracted from kripod/chip8-roms.
