CHIP-8 emulator written in Rust



CHIP-8 emulator written in Rust. This is intended to be a project for gaining experience writing emulators and practice Rust.


You'll need to install the SDL2.0 Development Libraries. The README of the rust-sdl2 project has very detailed information on how to install it in different platforms and it also covers scenarios that may be relevant to you.


$ cargo run -- games/<GAME>

You should replace with whatever game tickles your fancy. The games under games/ are public domain.


$ cargo test


The original CHIP-8 16-key hexadecimal keypad has the following layout:

| 1 | 2 | 3 | C |
| 4 | 5 | 6 | D |
| 7 | 8 | 9 | E |
| A | 0 | B | F |

I'm using the following mapping:

| 1 | 2 | 3 | 4 |
| Q | W | E | R |
| A | S | D | F |
| Z | X | C | V |


Space Invaders

alt text


alt text


And here is a list of some of the projects that I've read and used as a source of inspiration. I didn't copy any of the code, but some names may be exactly the same simply because there was no better alternative.



Pedro Rodrigues
Polyglot Software Engineer :: ☕
Pedro Rodrigues
RGB (Rust Game Boy) is a simple emulator for the original game boy

RGB RGB (Rust Game Boy) is a simple emulator for the original game boy and the color game boy. Warning: This no longer compiles in the latest versions

Niven Achenjang 15 Mar 15, 2021
A Game Boy research project and emulator written in Rust

Mooneye GB Mooneye GB is a Game Boy research project and emulator written in Rust. The main goals of this project are accuracy and documentation. Some

Joonas Javanainen 594 Jun 14, 2021
Learn emulator and programming languages, target chip8, nes, gbc, gba ...

[WIP]learn emulator go-chip8 go run main.go source https://githu

早晨海风 4 Apr 30, 2021
ZX Spectrum emulator written in Rust

rustzx ZX Spectrum emulator which I writing in rust. I develop this project just for fun and for learning the basics of computer architecture. License

Vladislav Nikonov 61 Jun 16, 2021
An NES emulator written in Rust

Pinky Pinky is an NES emulator written in Rust completely from scratch based only on publicly available documentation. You can run it in your Web brow

Koute 634 Jun 14, 2021
NES emulator in rust

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

Amjad Alsharafi 17 May 27, 2021
R.A.Z.E. A ZX Spectrum Emulator

R.A.Z.E. A ZX Spectrum emulator This project is part of a friendly competition to build an emulator using Rust and WebAssembly. Check the live version

Rodrigo Rivas Costa 29 Jun 5, 2021
RustBoyAdvance-NG is a Nintendo™ Game Boy Advance emulator and debugger, written in the rust programming language.

RustBoyAdvance-NG Nintendo GameBoy Advance ™ emulator and debugger, written in rust. WebAssembly Demo: P

MishMish 401 Jun 15, 2021
Commodore 64 emulator written in Rust

Rust64 - a C64 emulator written in Rust This is my attempt to study the Rust programming language and have fun at the same time. The goal is to presen

Krzysztof Kondrak 178 Jun 7, 2021
Rustual Boy - A Virtual Boy emulator.

Rustual Boy Description Rustual Boy is a Virtual Boy emulator. It can be used to play existing Virtual Boy games, as well as be a helpful development/

null 217 May 28, 2021
A Flash Player emulator written in Rust

website | demo | nightly builds | wiki Ruffle Ruffle is an Adobe Flash Player emulator written in the Rust programming language. Ruffle targets both t

Ruffle 8.1k Jun 13, 2021
NES emulator written in Rust

sprocketnes is an emulator for the Nintendo Entertainment System written in the Rust programming language. Its purpose is to serve as a technology dem

Patrick Walton 681 May 27, 2021
Intel 8080 cpu emulator by Rust

i8080 i8080 is a emulator for Intel 8080 cpu. 8080 Programmers Manual 8080 opcodes [dependencies] i8080 = { git = ""

Mohanson 45 Jun 11, 2021
Full featured Cross-platform GameBoy emulator by Rust. Forever boys!.

Gameboy Full featured Cross-platform GameBoy emulator. Forever boys!. You can start a game with the following command, here with a built-in game "Boxe

Mohanson 920 Jun 12, 2021