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.
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 If you're getting compile errors it may be because
.multirust
doesn't have the needed SDL libs. Ref: Rust-SDL2/rust-sdl2#526 (comment)
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
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.
- 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/
- https://reddit.com/r/emudev & #emudev on Slack
- https://reddit.com/r/emulation
- http://laurencescotford.co.uk/?p=304 (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/