← IOKIG
running, probably

pyChip8SDL

A CHIP-8 emulator written in Python 3 + SDL2. Reads CHIP-8 binaries from the spec at devernay.free.fr/hacks/chip8/C8TECH10.HTM and runs them with the original 64×32 monochrome display, 16-key hex keypad, and a single-tone buzzer.

Built mostly as a learning exercise — emulating something small and well-specified before climbing the ladder. Source on GitHub.

pyChip8SDL emulator window showing the classic Pong ROM running — paddles, ball, and score digits on the 64x32 monochrome display.
emulator — pong running on the 64×32 display
pyChip8SDL debugger window — registers, disassembly, stack, memory hex dump, and keypad state.
debugger — registers, disasm, memory

what's inside

107 ROMS

Demos, programs, and games ship inside the repo — pick from a numbered list or pass a path.

LIVE DEBUGGER

A second window shows V0–VF, I, PC, SP, the stack, timers, the keypad, disassembly around PC, and a memory hex dump.

PAUSE · STEP · RESET

Space pauses, F10 single-steps the CPU, F2 resets and clears the screen. Timers stop while paused; the buzzer is silenced.

QWERTY KEYPAD

The CHIP-8 hex keypad is mapped onto 1234 / QWER / ASDF / ZXCV. Esc quits.

controls

CHIP-8 keypad        Keyboard
1 2 3 C              1 2 3 4
4 5 6 D       →      Q W E R
7 8 9 E              A S D F
A 0 B F              Z X C V

Different games use different keys. Pong: 1 / Q (left paddle up/down), 4 / R (right). Esc quits.

View on GitHub

Install steps and the full ROM list live in the repo README.