https://github.com/y-taka-23/rust-chip8
A CHIP-8 emulator in Rust with iced-powered GUI
https://github.com/y-taka-23/rust-chip8
chip8 emulator game gui iced rust
Last synced: 11 months ago
JSON representation
A CHIP-8 emulator in Rust with iced-powered GUI
- Host: GitHub
- URL: https://github.com/y-taka-23/rust-chip8
- Owner: y-taka-23
- License: mit
- Created: 2022-01-11T11:07:38.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-01-12T02:00:40.000Z (over 4 years ago)
- Last Synced: 2025-05-13T05:49:25.067Z (about 1 year ago)
- Topics: chip8, emulator, game, gui, iced, rust
- Language: Rust
- Homepage:
- Size: 200 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
CHIP-8 Emulator in Rust
========================
[](https://github.com/y-taka-23/rust-chip8/actions/workflows/ci.yml)

A CHIP-8 emulator written in Rust and [iced](https://github.com/iced-rs/iced)-powered GUI.
* All 34 CHIP-8 instructions (SUPER CHIP instructions are not supported)
* Sound support by sinusoidal wave beep
* 500 Hz clock speed
* 3 colors of the good-old-time CRT display
How To Run
------------------------
ROM files are not included in the repository. You can download them from e.g.:
* [Chip-8 Games Pack - Chip-8 ROM - Zophar's Domain](https://www.zophar.net/pdroms/chip8/chip-8-games-pack.html)
Remark that, in the game pack, BLITZ and VBRIX don't work correctly. It's not from the emulator's mulfunction, but from implementation bugs in ROMs.
```console
$ git clone https://github.com/y-taka-23/rust-chip8.git
$ cd rust-chip8
$ cargo run -- path/to/ROM_FILE
```
Keyboard Mapping
------------------------
The CHIP-8 keys in the left are mapped to the corresponding keys of a normal keyboard in the right.

Options
------------------------
You also can pass the options like `cargo run -- path/to/ROM_FILE --clock 250`.
```
chip8 0.1.0
USAGE:
chip8 [OPTIONS]
ARGS:
File of the CHIP-8 ROM
OPTIONS:
--clock ... Change the clock speed (1-500 Hz) [default: 500]
--color ... Select the display color (white/green/amber) [default: white]
-h, --help Print help information
-V, --version Print version information
--verbose Show the detailed execution trace
```
Reference
------------------------
* [Cowgod's Chip-8 Technical Reference](http://devernay.free.fr/hacks/chip8/C8TECH10.HTM)
* [Chip-8 Games Pack - Chip-8 ROM - Zophar's Domain](https://www.zophar.net/pdroms/chip8/chip-8-games-pack.html)