A CHIP-8 Console on a TinyFPGA BX Board

Alasdair Allan
2 min readDec 23, 2018

These days I’m often the person standing on stage, trying to add some historic perspective to new developments. But even I had to look up CHIP-8, because it’s been a while. Initially written for the COSMAC VIP micro-computer towards the end of the 1970s, perhaps its most famous ports actually ran some 20 years later, on the HP-48 series of graphing calculators.

Now, thanks to Paweł Marczewski, it’s running on the TinyFPGA BX board.

Space Invaders on the CHIP-8 VM running on a TinyFPGA BX. (📷: Paweł Marczewski)

CHIP-8 is an interpreted programming language, that ran on a number of 8-bit micro-computers between the late 1970s and early 1980s. The machines typically had on a few KB of memory, so the CHIP-8 interpreter itself was crammed into only 512 bytes of memory, while programs—generally entered in raw hexadecimal—were of similar size, or even at times smaller and run on a CHIP-8 virtual machine.

Revived in the 1990s by Andreas Gustafsson to provide an interpreted language for the then popular HP-48 graphing calculators to let people write general use programs and, rather critically, games. This CHIP-48 port as it became known was the inspiration for a number of other ports; however most of these were based around a CHIP-8 emulator and disassembler written by David Winter.

A modern CHIP-8 emulator written in Python using Pygame. (📹: Plrang)

Full details of the Marczewski’s FPGA port can be found in the project’s GitHub repo, and the code is licensed under the MIT license, except for the games subdirectory. This contains copies of many of the classic video games ported to CHIP-8 like Pong, Space Invaders, Tetris, and Pac-Man. These are, reportedly, but not terribly reliably, usually regarded as being in the public domain.