5 releases

0.1.4 Nov 9, 2021
0.1.3 Oct 14, 2021
0.1.2 Oct 12, 2021
0.1.1 Oct 12, 2021
0.0.1 Oct 11, 2021

#4 in #chip-8

Download history 12/week @ 2022-01-27 13/week @ 2022-02-03 7/week @ 2022-02-10 17/week @ 2022-02-17 2/week @ 2022-02-24 3/week @ 2022-03-03 2/week @ 2022-03-10 57/week @ 2022-03-17 12/week @ 2022-03-24 1/week @ 2022-03-31 7/week @ 2022-04-07 3/week @ 2022-04-14 45/week @ 2022-04-28 40/week @ 2022-05-05 83/week @ 2022-05-12

168 downloads per month

MIT and LGPL-3.0-or-later

21KB
327 lines

Termin-8

crates.io

Octo-compliant CHIP-8 emulator frontend that runs in your terminal.

It uses deca as the emulator backend, which supports CHIP-8, SUPER-CHIP (SCHIP) and XO-CHIP programs.

Installation

First, install Rust. Then, in your terminal:

cargo install termin-8

Usage

Termin-8 should work on Windows, Linux, and macOS. If it doesn't, please file an issue.

Download CHIP-8 ROMs from the internet, like the Chip8 Community Archive, or make your own in Octo.

Then run Termin-8 in your terminal:

termin-8 ROM

There are some command line options:

termin-8 --help

The hexadecimal CHIP-8 keypad is customarily mapped to the following keyboard keys:

1 2 3 4
q w e r
a s d f
z x c v

In addition, the arrow keys are bound to WASD.

You can also use some other keys:

  • i: interrupt execution, or continue execution after interrupt
  • o: single-step (while interrupted)
  • Esc: exit

Terminal requirements

Note that the terminal requirements vary depending on what kind of program you attempt to run.

Here's a table with the required terminal size and Unicode support needed to get features such as XO-CHIP color support, depending on the resolution of the CHIP-8 program you're running and the Unicode Block Elements support of your font:

CHIP-8 resolution Unicode version Minimum terminal size Pixel size XO-CHIP colors
64x32 (lores)
CHIP-8, SCHIP, XO-CHIP
1.0.0 128x32 ██
64x32
64x16
3.2 32x16
128x64 (hires)
SCHIP, XO-CHIP
1.0.0 256x64 ██
128x64
128x32
3.2 64x32

Notes:

  • In your browser, the smallest pixel block (▘) probably looks square, but this might not be the case with your monospace terminal font.
  • Pretty much all fonts support the basic Unicode Block Elements in Unicode 1.0.0 which are used for the larger pixel blocks (█, ▀ and ▄), but support for the smallest blocks (like ▘) from Unicode 3.2 is much less common. Font families like DejaVu and Fira Code support them.

Limitations

  • Some games might not detect keypresses correctly. This is because detecting when a key is released is very hard in a terminal. Termin-8 does an approximation of keypress duration, but your OS's "key repeat" settings will influence how often it can poll for key presses.
  • Your terminal's bell will sound when there's sound, but XO-CHIP music is not supported (as a terminal can't play sound on its own).

Dependencies

~5.5MB
~110K SLoC