// Click REC to start recording pitch values as a JS array (sampled every 0ms)\nconst pitches = [];
CHIP-8 is an interpreted programming language developed in the mid-1970s by Joseph Weisbecker for the COSMAC VIP and Telmac 1800 microcomputers. It was designed to make game programming easier. Programs are run on a virtual machine with a 64×32 pixel monochrome display, 16 input keys, and a simple sound timer.
SuperChip extends CHIP-8 with a 128×64 high-resolution mode, 16×16 sprites, scrolling, persistent flag registers, and a larger font. Select "SuperChip (Legacy)" for original HP-48 behavior or "SuperChip (Modern)" for updated quirks.
XO-Chip (Octo Extensions) further extends SuperChip with: 64KB address space, 16-bit i := long NNNN, two drawing bitplanes (4 colors), save/load vx - vy register ranges, scroll-up, 16-byte audio pattern buffer with configurable pitch, and 16 flag registers for persistence.
Recording-friendly audio: This build uses a pitch-of-0 approach when ST=0. Instead of starting/stopping oscillators (which creates pops/clicks in recordings), a persistent oscillator runs continuously with its frequency set to 0 Hz during silence. This ensures clean audio capture for screen recordings and streams.
Keyboard mapping: 1234 / QWER / ASDF / ZXCV → CHIP-8 keys 123C / 456D / 789E / A0BF
Quirks by mode:
XO-Chip instructions:
5XY2 save vx - vy (range store, no I increment)5XY3 load vx - vy (range load, no I increment)F000 NNNN i := long NNNN (16-bit address)FN01 plane n (select drawing planes 0-3)F002 audio (load 16-byte pattern buffer)FX3A pitch := vx (set audio playback rate)00DN scroll-up n (scroll display up 0-15px)FN75/FN85 save/load flags v0-vN (up to 16 bytes)