• Stars
    star
    164
  • Rank 230,032 (Top 5 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created over 13 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ground-up rewrite of the Javascript Spectrum emulator
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

More Repositories

1

jasmid

UNMAINTAINED. A MIDI file reader and synthesiser in Javascript
JavaScript
415
star
2

bonsai-c

C to WebAssembly + asm.js compilation for humans
JavaScript
291
star
3

jsspeccy3

a ZX Spectrum emulator for the browser
JavaScript
115
star
4

jsmodplayer

A Javascript .MOD music player. (Check out BillyWM and sneilan's forks - this one's out of date...)
JavaScript
69
star
5

django-unjoinify

A library for efficiently retrieving deeply-nested data sets
Python
45
star
6

wagtail-form-example

An example of implementing a Django form on a Wagtail site, without using the 'wagtailforms' module
Python
43
star
7

pharmageddon

a demo on a pharmacy sign
C++
41
star
8

shortcrust

A Python OpenGL framework for Raspberry Pi and the demoscene
Python
24
star
9

fakeplasticcubes

A 9K demoscene intro in Javascript (and framework for future 4-64K intros)
JavaScript
23
star
10

telepath-poc

a proof-of-concept for bridging Python and Javascript objects, for Wagtail StreamField and more
Python
20
star
11

libayemu

C emulation of the AY-3-8912 sound chip and parser for associated file formats - fork of http://sashnov.nm.ru/libayemu.html
C
19
star
12

hdfmonkey

A Swiss Army Knife for working with FAT partitions on Spectrum emulator HDF images
C
16
star
13

papaya

an AY-3-8912 sound chip expansion board for the Raspberry Pi
C
14
star
14

bahn

Ruby API for Deutsche Bahn train information
Ruby
14
star
15

wagtail-freezer

Generates static HTML sites from a Wagtail project
Python
13
star
16

spectrum-sizecoding

Resources from my ZX Spectrum sizecoding seminar at Lovebyte 2021
Assembly
12
star
17

wagtail-headless-preview-poc

Wagtail headless preview proof-of-concept
Python
11
star
18

bazematic

A browser-based ZX Spectrum live-coding environment
HTML
8
star
19

openzxrom

Free replacement for the ZX Spectrum system ROM. (Superseded by OpenSE BASIC: http://sourceforge.net/projects/sebasic/ )
Assembly
6
star
20

actionparsnip

pointy-clicky visualisation builder for javascript
JavaScript
6
star
21

MIDI-to-CNC

Fork of MIDI-to-gcode converter http://tim.cexx.org/?p=633
Python
6
star
22

goldfinch

An open-ended C/Z80 software stack for mass-storage access on the ZX Spectrum
Ruby
6
star
23

midibeep

Convert Standard MIDI (.mid) files into Spectrum BEEP statements
Ruby
5
star
24

spacecrab

An emulator for the Space Invaders arcade machine in CoffeeScript
JavaScript
5
star
25

divideo

Video encoder for ZX Spectrum + DivIDE interface
C
5
star
26

pybahn

A Python library for accessing Deutsche Bahn train information
Python
5
star
27

wagtail-multiple-databases

Sample Wagtail project using multiple databases
Python
4
star
28

kisskill

The ZX Spectrum music video for 'Kiss Kill' by Candy Says
Assembly
4
star
29

wolfy

Wolfenstein raycasting engine for the r0ket platform
C
4
star
30

ticmodplayer

a .mod music player for TIC-80
Python
3
star
31

wagtailstreamfield

prototype for StreamField in Wagtail - see https://github.com/torchbox/wagtail/issues/823
Python
3
star
32

ticfile

A library for reading and writing TIC-80 .tic cartridge files
Python
3
star
33

pnginator

tool for packing javascript into a PNG with an HTML payload
Ruby
2
star
34

fusefat-hdf

ABANDONED - FUSE module for mounting FAT filesystems, extended to support HDF disk images (as used on ZX Spectrum emulators)
C
2
star
35

boogiebadge

a toy sound tracker for the MCH2022 badge
Python
1
star
36

stniccc

An abortive attempt at processing the 2D polygon data from STNICCC 2000 into a coherent 3D scene
JavaScript
1
star
37

this-week-in-wagtail

CSS
1
star
38

bfscript

bfscript: enterprise level web scripting in Brainfuck
JavaScript
1
star
39

djangocon-telepath-demo

Python
1
star
40

alan

a static analyser for Z80 machine code
Python
1
star
41

tic-set-screen

Command-line tool for replacing the cover image of a TIC-80 .tic cartridge file
Python
1
star
42

streamfield-stress-test

A Wagtail project with a really complex StreamField, for testing form rendering performance
Python
1
star
43

mahlerproject

The code powering the 2014 MHS Oxford performance of Mahler's 1st Symphony on 12 networked ZX Spectrums
Assembly
1
star
44

telepathdemo

test project for Wagtail telepath development
Python
1
star
45

exogenesis

demo for the Novation Launchpad
Python
1
star
46

hello-django-libsass

The simplest possible Django project using django-libsass
Python
1
star
47

btfd

Build tool for managing Sphinx documentation across multiple versions
Python
1
star
48

wosproxy

HTTP proxy to the World Of Spectrum archive, for HTML apps and other non-FTP-friendly clients
Python
1
star
49

dogsandducks

Using social media to establish links between human activity and river pollution
Python
1
star