Skip to content

A Chip8 emulator written in Go to further my knowledge on emulation.

License

Notifications You must be signed in to change notification settings

adrichey/go-chip8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

This is a quick and dirty Chip8 emulator written in Go to further my knowledge on emulation.

Test ROM Screenshot

How to build this application

  • You will need to install SDL2 locally. No optional packages are needed for this application. Follow the Requirements section instructions in the go-sdl2 package README.
  • Once installed, clone this repo and run go build
  • If on Windows, you'll need to copy the runtime SDL2.dll into the repo directory as well as indicated in the go-sdl2 package README.

How to use this application

Flags

  • -f: Path to a Chip8 ROM file
  • -d: Specifies the cycle delay to control the emulator cycle and update speeds (optional, default 5)
  • -s: Specifies the video scale for the emulator; Chip8 is 64x32 so 10 == 640x320 (optional, default 10)

Example

  • Linux: ./go-chip8 -f ./roms/1-chip8-logo.ch8
  • Windows: .\go-chip8.exe -f .\roms\1-chip8-logo.ch8

Example with optional args

  • Linux: ./go-chip8 -f ./roms/1-chip8-logo.ch8 -d 10 -s 20
  • Windows: .\go-chip8.exe -f .\roms\1-chip8-logo.ch8 -d 10 -s 20

Special Thanks

  • Austin Morlan for his excellent write-up: article
  • Tim Franssen for his collection of test ROMs: repo
  • Zophar's Domain for Pong which is now in the public domain: website | mirror

TODO

  • Implement sound functionality
  • Implement 5x33 properly to handle BCDs - Every test I have tried fails

About

A Chip8 emulator written in Go to further my knowledge on emulation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages