So, I hear you like emulators. It turns out that Go is a great language for writing retro-computing emulators. Here are the ones that I have tried so far:
trs80 by Lawrence Kesteloot
I really liked this one because it avoids the quagmire of OpenGL or SDL dependencies and runs in your web browser. I had a little trouble getting it going so if you run into problems remember to execute the trs80
command in the source directory itself. If you’ve used go get github.com/lkesteloot/trs80
then it will be $GOPATH/src/github.com/lkesteloot/trs80
.
GoSpeccy by Andrea Fazzi
GoSpeccy was the first emulator written in Go that I am aware of, Andrea has been quietly hacking away well before Go hit 1.0. I’ve even been able to get GoSpeccy running on a Raspberry Pi, X forwarded back to my laptop. Here is a screenshot running the Fire104b intro by Andrew Gerrand
Fergulator by Scott Ferguson
Like GoSpeccy, Fergulator shows the power of Go as a language for writing complex emulators, and the power of go get
to handle packages with complex dependencies. Here are the two commands that took me from having no NES emulation on my laptop, to full NES emulation on my laptop.
lucky(~) sudo apt-get install libsdl1.2-dev libsdl-gfx1.2-dev libsdl-image1.2-dev libglew1.6-dev libxrandr-dev lucky(~) % go get github.com/scottferg/Fergulator
sms by Andrea Fazzi
What’s this? Another emulator for Andrea Fazzi ? Why, yes it is. Again, super easy to install with go get -v github.com/remogatto/sms
. Sadly there are no sample roms included with Update: Andrea has included an open source ROM so we can have a screenshot.sms
due to copyright restrictions, so no screenshot.
Update: Several Gophers from the wonderful Go+ community commented that there are still more emulators that I haven’t mentioned.
- dcpu by Jim Teeuwen, an implementation of Notch’s DCPU specification.
- chip-8 by Yves Junqueira, which implements the CHIP-8 virtual machine used in some mid 1970’s home consoles.