CHIP-8 / CHIP-8 HIRES / SCHIP Emulator
CHIP-8 / CHIP-8 HIRES / SCHIP Emulator writen in GO with simple code to be easy to be studied and understood.
Optional GUI (Graphical user interface) made with fyne.io.
| CHIP-8 Space Invaders Game | Superchip (SCHIP) Spacefight 2091! |
|---|---|
![]() |
![]() |
| Blinky (Color theme) | Single Dragon (Color Theme) |
|---|---|
![]() |
![]() |
| CHIP-8 HiRes Astro Dodge (Color theme) | On-screen Debug (Color theme) |
|---|---|
![]() |
![]() |
| Optional GUI | Game selector screen |
|---|---|
![]() |
![]() |
Features
Pause and resume emulation
Reset emulation
Step Forward CPU Cycles for Debug
Step Back (Rewind) CPU Cycles for Debug (Need to be activated on command line with -Rewind)
On-screen Debug mode
Increase and Decrease CPU Clock Speed
Color Themes
Save States
Fullscreen
Binary and Hexadecimal rom format
Emulation Status from all games I have to test
Optional GUI
EMULATOR Build Instructions
- MAC
-
Install GO:
brew install go -
Install library requisites:
go get github.com/faiface/pixel/pixelglgo get github.com/faiface/beepgo get github.com/faiface/beep/wavgo get github.com/faiface/beep/speaker -
Compile:
go build -ldflags="-s -w" chip8.go
- Windows
-
Install GO (32 bits):
-
Install GCC / mingw-w64
-
Add GO and Mingw-64 bin folder in PATH variable
-
Install requisites:
go get github.com/faiface/pixel/pixelglgo get github.com/faiface/beepgo get github.com/faiface/beep/wavgo get github.com/faiface/beep/speaker -
If you receive some glfw missing file error, download the zip file from https://github.com/go-gl/glfw and extract the archive into the folder $GOPATH\vendor\github.com\go-gl\glfw\v3.2
-
Compile:
go build -ldflags="-s -w" chip8.go
EMULATOR Usage
-
Run:
$./chip8 [options] ROM_NAME
-
Options:
-DebugEnable Debug Mode-DrawFlagEnable Draw Graphics on each Drawflag instead @60Hz-Rewind ModeEnable Rewind Mode-SchipHackEnable SCHIP DelayTimer hack mode to improve speed-helpShow Command Line Interface options
- Keys
-
Original COSMAC Keyboard Layout (CHIP-8):
123C456D789EA0BF -
Original HP48SX Keyboard Layout (SuperChip):
789/456*123-0._+ -
Keys used in this emulator:
1234QWERASDFZXCVP: Pause and Resume emulationI: Step back (rewind) one CPU cycle in Pause ModeO: Step forward one CPU cycle in in Pause ModeK: Create Save StateL: Load Save State6: Change Color Themes7: Decrease CPU Clock Speed8: Increase CPU Clock Speed9: Enable / Disable Debug Mode0: ResetJ: Show / Hide FPS CounterH: Switch DrawMode (@DrawFlag OR @60Hz)N: Enter / Exit Fullscreen modeM: Change resolutionESC: Exit emulator
GUI Build Instructions
- MAC
-
Install GO:
brew install go -
Install requisites:
go get gopkg.in/ini.v1go get golang.org/x/image/colornamesgo get fyne.io/fyne -
Compile:
go build -ldflags="-s -w" Chip8GUI.go
- Windows
-
Install GO:
-
Install GCC / mingw-w64
-
Add GO and Mingw-64 bin folder in PATH variable
-
Install library requisites (need fyne beta/develop 1.3):
go get gopkg.in/ini.v1go get golang.org/x/image/colornamesgo get fyne.io/fyne -
Compile:
go build -ldflags="-s -w" Chip8GUI.go
GUI Usage
-
Open the program, configure emulator ROM paths
-
Restart the program to update the Games Tab
Documentation
Chip-8
Cowgod's Chip-8 Technical Reference
How to write an emulator (CHIP-8 interpreter) — Multigesture.net
Thomas Daley Wiki (Game Compatibility)
Columbia University - Columbia University
Superchip (SCHIP)
Chip-8 Extensions
GUI
Emulator TODO LIST:
- Correct minor problems reported in Emulation Status
- Emulate CHIP-8X
- Emulate MEGA-CHIP
GUI TODO LIST:
- Games Tab: Show image of the games
- Reload game list when update paths
- Add support for Hex roms
- Finish options (Debug, Pause...) in config screen
- Its currently not running on windows, apparently others are having same issues







