A simple CHIP-8 emulator written in Rust.

Overview

CHIP-8 emulator

This is a small learning project to get familiar with emulator development, the Rust programming language and the SDL2 library.

Disclaimer: As I am still learning Rust, my code is probably pretty terrible and full of bugs ... so you are forewarned.

setup

If you want to try the emulator yourself, just follow the steps below:

  1. download the latest version here
  2. unpack the archive
  3. run chip-8-emulator.exe
  4. when asked if you want to continue with the default configuration, input y for yes
  5. done!

Of course, my welcome program is pretty boring so just grab some programs from the internet and have fun. I've linked to a few programs that I've tried myself below. Before you can actually run other programs you need to change the program_path attribute in the config file (./config/chip8-emulator.toml) either via the menu or by editing the file directly.

If you want to use other fonts, (again) just grab some from the internet. As with the program, you need to change the font_path attribute in the config. I've linked some fonts below that I could find.

Note: The fonts are often provided as text files. In order for the emulator to be able to interpret them, you need to convert to binary first. The result should be an 80 byte (1 byte per row * 5 rows per char * 16 chars) long binary file.

keypad

The original keypad was organized like this:

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

I've mapped these keys to the following:

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

You can also use Y instead of Z.

useful resources

Thanks to all the authors of these resources for their great effort!

fonts

Thanks to zZeck for collecting all of these fonts!

tested programs

Thanks to all the people who wrote these programs!

tests

demos

games

but can it run crysis?

license

Source code in this repository is licensed under the MIT license. For more information, see the included LICENSE file.

You might also like...
My attempt at making a chip-8 emulator

ate-chip My attempt at making a chip-8 emulator Credits Here are some of the things that I used for reference while building this http://devernay.free

Emulator of CHIP-8

CHIP-8-Emulator This emulator supports CHIP-8 and SUPERCHIP games. Installation Since Sdl2 is used, you'll need the Sdl2 runtime library for you syste

A CHIP-8 emulator

Ruschip - A CHIP-8 Emulator written in Rust Features Supports multiple CHIP-8 variants (planned not added) Supports most--if not all--of the quirks, a

Nes-emulator - A NES emulator made to learn the Rust programming language

nes-emulator Building $ rustc --version rustc 1.32.0 (9fda7c223 2019-01-16) $ cargo --version cargo 1.32.0 (8610973aa 2019-01-02) $ cargo build --rel

Rust library for handling CHIP-8 configuration options

octopt octopt is a library for handling CHIP-8 configuration settings. It contains Rust data structures that aim to represent all possible CHIP-8 opti

CHIP-8 implementation in Rust targeting AVR microcontrollers
CHIP-8 implementation in Rust targeting AVR microcontrollers

CHIP-8 implementation for a very simple breadboard toy This is a CHIP-8 virtual machine implementation running on AVR. Its big party trick is that it

RGB (Rust Game Boy) is a simple emulator for the original game boy
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

A simple NES emulator implemented in Rust. (WIP)

remu A 🔥 🚀 BLAZINGLY FAST* 🔥 🚀 NES emulator implemented in Rust. Status: Work in progress. About This emulator is mainly meant to be more of a lea

NES emulator written in Rust to learn Rust

OxideNES A NES emulator in Rust. CPU should be accurate, PPU is mostly accurate, timing between the 2 is off for some corner cases and hardware qui

Releases(v0.1.0)
Owner
null
A CHIP-8 emulator written in Rust

damn8 A CHIP-8 emulator written in Rust To run, pass a path to a rom in the command line. TODO: Use function pointers to handle opcodes instead of a l

null 1 Jan 11, 2022
CHIP-8 emulator written in Rust as a side project.

marisa-rs a CHIP-8 emulator, with learning purposes in mind, written in Rust. this is mainly a learning project of mine for deeper knowledge in emulat

Lumine 0 Jul 26, 2022
A CHIP-8 emulator written in Rust

chip8 A CHIP-8 emulator written in Rust Goal The goal of this project is to build a fully functional emulator (but I should name it an interpreter) of

Fabian Vilers 2 Jun 30, 2022
A CHIP-8 emulator written in Rust 🦀

A Rusty CHIP-8 Emulator CHIP-8 is an interpreted programming language, developed by Joseph Weisbecker. It was initially used on the COSMAC VIP and Tel

Varun Shenoy 2 Aug 15, 2022
CHIP-8 emulator written in Rust 🦀!

CHIP-Ahoyto ?? CHIP-8 emulator written in Rust ?? . The goal of this project is purely experimental and a learning tool for rust. The work of this emu

João Magalhães 3 Dec 15, 2022
A Chip-8 Emulator written in Rust & SDL2

Crab-8 A fully featured Chip-8 Emulator written in Rust. This project was written as a learning & development project in rust, and as such the code ma

Harry Smith 3 Dec 1, 2022
A CHIP-8 emulator for Rust in ~350 LOC

chip8 An implementation of the CHIP-8 for Rust in ~350 lines of code. What is CHIP-8? CHIP-8 is a virtual machine (along with a supporting programming

Daniel Gatis 8 Apr 23, 2022
A CHIP-8 emulator in Rust with iced-powered GUI

CHIP-8 Emulator in Rust A CHIP-8 emulator written in Rust and iced-powered GUI. All 34 CHIP-8 instructions (SUPER CHIP instructions are not supported)

Yuto Takahashi 6 Dec 27, 2022
CHIP-8 emulator/interpreter in Rust

rCHIP-8 A CHIP-8 interpreter/emulator written in Rust. Currently the interpreter only runs on UNIX terminals because of the method used to control the

Ian Knight 4 Feb 13, 2023
A CHIP-8 emulator/interpreter in Rust

rchip8 A CHIP-8 emulator/interpreter in Rust To run the emulator just type "cargo run -- -d". It will run a simple inline program in main. Commandlin

null 3 Oct 7, 2023