Chip8 Emulator Chip8 Emulator

Chip8 Emulator

A chip8 emulator written in Golang

Tech Used

  • Go (Golang) – core emulator implementation
  • Ebiten – rendering, game loop, sound output and input handling

Running the emulator

Prerequistes

  • go 1.24.4

Clone the repositry

Terminal window
git clone https://github.com/rentri/goChip8.git

Run & Build

Terminal window
cd goChip8

Run without building

Terminal window
go run . <path-to-rom>

OR

Build

Terminal window
go build -o chip8

Then run

Terminal window
./chip8 <path-to-rom>

Showcase

Tetris

Tetris

Breakout

Breakout

Space Invaders

Space Invaders

Pong

Pong

Tests Passed

Chip-8 Splash Screen

Splash Screen

IBM LOGO

IBM Logo

CORAX+ opcode test

Opcode Test

Flags test

Our implementation of SHR and SHL instructions uses modern beavior. Hence 8XY6 & 8XYE fail the last check.

Flags Test

Quirks test

Quirks Test

Some key presses may occasionally not register due to high CPU speed or keyboard polling. If you press a key when the emulator was not checking if it is pressed, you will experience “key miss”, where the press won’t be registered. The slower the emulation speed the higher chance for it to happen.

Keypad Test

Credits


← Back to projects