A rust, terminal ui chip8 emulator with debug information.
git clone git@github.com:mcountryman/chip8.git
cd chip8
# To start the emulator
cargo run --release -- /path/to/game.ch8
# To start the emulator in a paused state
cargo run --release -- /path/to/game.ch8 --is-paused=true
While running the following keyboard shortcuts will be available:
space
- Pause/unpause the virtual machine.enter
- Steps virtual machine to the next instruction.esc
- Exit the virtual machine.ctrl + c
- Exit the virtual machine.q
- Sends0xa
key to the virtual machine.w
- Sends0xb
key to the virtual machine.e
- Sends0xc
key to the virtual machine.a
- Sends0xd
key to the virtual machine.s
- Sends0xe
key to the virtual machine.d
- Sends0xf
key to the virtual machine.0
- Sends0x0
key to the virtual machine.1
- Sends0x1
key to the virtual machine.2
- Sends0x2
key to the virtual machine.3
- Sends0x3
key to the virtual machine.4
- Sends0x4
key to the virtual machine.5
- Sends0x5
key to the virtual machine.6
- Sends0x6
key to the virtual machine.7
- Sends0x7
key to the virtual machine.8
- Sends0x8
key to the virtual machine.9
- Sends0x9
key to the virtual machine.
- Small video memory
Utilizes a stack allocated array of
u64
where each bit inu64
represents a pixel. - Debug interface.
Displays the virtual machine register values, stack values, and disassembly.
- Responsive interface.
Game window can be displayed in three different resolutions using three character sets: braille, quarter block and full block characters.
- cowgod Provided documentation of chip8 instructions and architecture.
- starrhorne Provided references for instruction execution, and ideas for parsing instructions.