Cross-platform implementation of the original Chip-8 interpreter.
Find a file
2026-07-28 18:56:52 +02:00
docs chore: update 2026-07-28 18:56:52 +02:00
emulator chore: update 2026-07-28 18:56:52 +02:00
libchip8 chore: update 2026-07-27 16:54:17 +02:00
.gitignore update 2025-08-26 19:23:57 +02:00
Cargo.lock chore: update 2026-07-27 16:29:25 +02:00
Cargo.toml chore: work 2026-06-12 11:42:39 +02:00
README.md chore: update 2026-07-28 18:56:52 +02:00

Chip-8 Emulator

Cross-platform original Chip-8 interpreter written in Rust.

The emulator uses a small number of dependencies, mainly macroquad for graphics and rodio for audio.

Demo image - IBM logo

Installation

  1. Clone the repository
  2. Build from source with cargo build --release
  3. The resulting binary will be in ./target/release/emulator

Usage

Point the emulator to a ROM and it should work.

emulator ./path/to/my/ROM.ch8

Code organization

The codebase is split into 2 crates:

  • libchip8 - core reusable Chip-8 logic
  • emulator - GUI integration with libchip8

Testing

https://github.com/Timendus/chip8-test-suite was used for testing.

Test Status
Chip-8 logo
IBM logo
corax+
flags
quirks
keypad
beep

Screenshot of flags from the test suite

Things to improve

The keypad is not registering as being pressed when held for short time.