A very simple ZX Spectrum 48K emulator
GOomiak (pron. ɡũmʲjak) is a ZX Spectrum 48K emulator written in GO.
- Pretty good Zilog Z80 chip emulation
- Basic level ULA emulation
- Screen drawing is more-or-less similar to how ULA draws screen and blocks CPU in a process
- No contended memory support
- No contended I/O support
- No sound support
- TAP (including autoloading) and Z80 files support
Absolutely not. I wanted to learn GO, and needed some excercise. Also, always wanted to write an emulator. However, I wasn't aware how big of a mess Z80 is. If I knew, I would probably settle with something simpler (NES probably). But hey - had ton of fun writing it, learned a lot and the app is usable. My main goal was to make it run this game and it does it.
If you're looking for a proper Speccy emulator, but somehow ended up here, I highly recommend Fuse or ZEsarUX. Both provide amazing quality of emulation (especially the latter one).
- Spectrum ROM images are freely available. Amstrad have kindly given their permission for the redistribution of their copyrighted material but retain that copyright. Kudos to them.
- DiagROM Homepage
You need GO installed. Then it's as simple as:
~/goomiak/src$ go run main.go
Most of the emulator has proper test coverage (especially CPU). To run tests:
~/goomiak/src$ go test ./...
You can also run some pre-made tap files with tests, to see them in action (you need to quit emulator everytime tests program finish, to load next one):
~/goomiak$ make all
There are also many tests, which I found, in the tests directory. If you plan to write your own Z80 emulator, they may provide some help.