jsspeccy2

Ground-up rewrite of the Javascript Spectrum emulator

GPL-3.0 License

Stars
165
Committers
6

JSSpeccy: A ZX Spectrum emulator in pure JavaScript

https://github.com/gasman/jsspeccy2

Foreword to version 2.x

When I started this project in 2009, writing an emulator in JavaScript was a silly idea. Now, thanks to advances in JavaScript engines, and new APIs emerging from HTML5 and WebGL, it has become a significantly less silly idea, which means that the time is right for a more serious attempt at the job.

What's new?

Everything, basically... it's a ground-up rewrite. In particular:

  • Z80 core uses typed arrays[0] where appropriate, for a healthy performance
    boost (and significantly less faffing around with '& 0xff' everywhere to get
    around the lack of strong typing in JavaScript)
  • More JavaScript-ish architecture - the Z80 instruction set is built up
    through copious use of closures, rather than borrowing Fuse's Perl generator
    script wholesale. (It's still heavily based on Fuse's Z80 core though.)
  • 128K support!
  • 99% accurate display emulation, for multicolour effects and the like
  • TZX file support (only via tape traps; custom loaders won't work)
  • Integration with the World Of Spectrum API, for instant loading of thousands
    of software titles

[0] https://developer.mozilla.org/en/javascript_typed_arrays

Building

Perl, CoffeeScript[1] and Closure Compiler[2] are required. To build:

make

This will place all web-distributable files into the 'dist' folder.

[1] http://jashkenas.github.com/coffee-script/ [2] https://developers.google.com/closure/compiler/

Browser support

Tested successfully on Chrome 32, Firefox 26 and Safari 7.0.1. Support for typed arrays and the PixelData API are absolutely required, and it'll almost certainly stay that way.

Matt Westcott [email protected] - http://matt.west.co.tt/ - @gasmanic