██████ ██ ██ ██████ █████
██ ██ ██ ██ ██ ██ ██
██ ███████ ██████ █████
██ ██ ██ ██ ██ ██
██████ ██ ██ ██ █████
A CHIP-8 implementation.
chp8 /path/to/rom.ch8
- Zero-dependency,
no_stdcore - Quirks
The system is divided into two main components: the virtual machine Vm and host Host.
block-beta
columns 1
io<["I/O"]>(up, down)
block:Host
Display
Sound
Keyboard
end
space
block:VM
CPU
Memory
end
Host <-- "Syscalls" --> VM
The virtual machine integrates the CPU and memory.
It has no dependencies and is compatible with no_std environments.
The Host trait provides the Vm with access to the keyboard, framebuffer, and sound.
Think of Vm as the interpreter and Host as the emulator.
The chp8 binary implements a host using SDL2.
I found the following resources helpful:
- Guide to making a CHIP-8 emulator by Tobias Langhoff
- Bulding a CHIP-8 Emulator (C++) by Austin Morlan
- Tim Franssen's CHIP-8 test suite
- Matt Mikolay's collection of CHIP-8 resources