stianeklund/chip8

A CHIP-8 & SuperChip interpreter written in Rust using rust-sdl2

If you're getting compile errors it may be because

chip8

A CHIP-8 & SuperChip interpreter written in Rust using rust-sdl2

This is a CHIP-8 & SuperChip interpreter written in Rust and depends on RUST-SDL2 (SDL2 bindings to Rust).

CHIP-8 games are upscaled to Super Chip size (128x64).

Full compatability aside from audio.

Building the project:

This project depends on Rust-SDL2 & therefor depends on libsdl2 development libraries.

E.g for Ubuntu / Debian Linux: sudo apt install libsdl2-dev Please refer here for more details: https://github.com/AngryLawyer/rust-sdl2 .multirust doesn't have the needed SDL libs. Ref: https://github.com/Rust-SDL2/rust-sdl2/issues/526#issuecomment-241396593

The project can be built by running: cargo build It needs to be run with the rom as a passing argument, e.g: cargo run /path/to/romfile/rom

Running the CHIP8 interpreter:

Key mapping is: 1-9 & A-F as if it were a real Hexadecimal keypad.

CPU cycle speed can be changed by pressing Page Up & Page Down. Some games play better on a higher cycle speed. E.g Brix works better at 4 cycles.

You can also enter debug mode by pressing F12, this will print a LOT of values to CLI and is not pretty.


Screenshots:

SpaceFight2091 (SCHIP):

SpaceFight2091 (SCHIP):

Cars (SCHIP):

Brix (CHIP-8, upscaled):

Joust (SCHIP):


Sources used:

  • https://en.wikipedia.org/wiki/CHIP-8
  • http://devernay.free.fr/hacks/chip8/C8TECH10.HTM
  • http://www.multigesture.net/wp-content/uploads/mirror/goldroad/chip8.shtml
  • http://www.emutalk.net/threads/19894-Chip-8/
  • http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/
  • #404 & #emudev on Slack
  • #404

On pixel drawing:

  • #404 (Written with the Cosmac VIP in mind. Gives a good visualization of how drawing works in relation to memory addresses).
  • http://craigthomas.ca/blog/2015/02/19/writing-a-chip-8-emulator-draw-command-part-3/

Information - Updated Nov 06, 2021

Stars: 7
Forks: 0
Issues: 0

Repositories & Extras

NES emulator in Rust that also runs in Chrome and other modern browsers

Pinky is an Rust completely from scratch and optimized for a native feel and look

NES emulator in Rust that also runs in Chrome and other modern browsers

NES emulator in Rust

This is a personal project for fun and to experience emulating hardware and connecting them together

NES emulator in Rust

Rust Playstation Emulator

A PlayStation emulator written in simias and his guide

Rust Playstation Emulator

CHIP-8 Emulator in Rust

CHIP-8 language used in the mid-1970s

CHIP-8 Emulator in Rust

6811 Emulator in Rust but A major work in progress

Only a few opcodes have been implemented but i'm looking for helps if your into this type of thing

6811 Emulator in Rust but A major work in progress

Chip 8 Emulator in Rust

This is a personal project to learn programming in Rust

Chip 8 Emulator in Rust

NES Emulator in Rust-WASM

Requires Rust with cargo, nodejs, and wasm-pack

NES Emulator in Rust-WASM

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

YAREGB is Yet Another Rust Emulator (for) Game Boy

This is a study project and HEAVILY borrows code and observation from mooneyegb and blargg test roms

YAREGB is Yet Another Rust Emulator (for) Game Boy

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

Experimental 6502 emulator in Rust

With this project I try to learn Rust

Experimental 6502 emulator in Rust
Facebook Instagram Twitter GitHub Dribbble
Privacy