Table of Contents
tsChip8 is an accurate Chip8 and SuperChip emulator written in TypeScript and rendered with WebGL.
For those who don’t know what Chip8 and SuperChip are, according to Wikipedia:
CHIP-8 is an interpreted programming language, developed by Joseph Weisbecker. It was initially used on the COSMAC VIP and Telmac 1800 8-bit microcomputers in the mid-1970s. CHIP-8 programs are run on a CHIP-8 virtual machine. It was made to allow video games to be more easily programmed for these computers.
CHIP-8 has a descendant called SCHIP (Super Chip), introduced by Erik Bryntse. In 1990, a CHIP-8 interpreter called CHIP-48 was made for HP-48 graphing calculators so that games could be programmed more easily. Its extensions to CHIP-8 are what became known as SCHIP. It features a larger resolution and several additional opcodes meant to make programming easier.
- Full Chip8 and SuperChip compatibility.
- Settings that allow to simulate wrong behaviours in order to execute problematic games.
- Four rendering modes that can be switched at any time:
- WebGL-LED: The game is shown in some kind of led screen in a virtual 3D environment, that features some realtime lighting and a screen refresh rate shader effect. Because why not!
- WebGL-Voxel: Similar to the WebGL renderer but the screen is rendered with GPU instanced voxels.
- Canvas: The game will be rendered into a 2D canvas.
- ASCII: The game will be rendered with text characters. Easy to implement since the Chip8 and SuperChip are monochrome.
- All rendering modes allow to customize rendering colors.
- Sound is also emulated. Chip8 has very basic sound capabilities. It’s only capable to reproduce a “beep” sound of configurable duration.
- It includes a bunch of public domain ROMs for you to play and test, and also a simple game made by myself called LOL Hunt.
How to play #
You can load any of the included ROMs in the list located at the top left corner of the window, and the press Play. You can also load a ROM stored in your device with the Load button.
The Chip8 / SuperChip key pad is mapped to the following keyboard keys (the inputs depend on each game):
1 2 3 4 Q W E R A S D F Z X C V
All included ROMs work out of the box. However, due to some features of the Chip8 being wrongly documented, there are some games out there with bad code that will present issues. If you see graphical glitches in a game, stop it, change the compatibility settings, and then hit Play again. Some games will require one of them enabled, or maybe even both. Try until you get the game working.
You can play the emulator here: tsChip8
And here’s the source code: https://github.com/MaikelChan/tsChip8