• Stars
    star
    849
  • Rank 53,291 (Top 2 %)
  • Language
    C++
  • License
    MIT License
  • Created about 9 years ago
  • Updated 11 months ago

Reviews

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

Repository Details

A latency-hating emulator of 8- and 16-bit platforms: the Acorn Electron, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 and Amiga, MSX 1/2, Oric 1/Atmos, Sega Master System, Sinclair ZX80/81 and ZX Spectrum.

Clock Signal Application Icon

Clock Signal

Clock Signal ('CLK') is an emulator for tourists that seeks to be invisible. Users directly launch classic software, avoiding the learning curves associated with emulators and with classic machines.

macOS and source releases are hosted on GitHub. For desktop Linux it is also available as a Snap.

This emulator seeks to offer:

  • single-click load of any piece of source media for any supported platform;
  • with a heavy signal processing tilt for accurate reproduction of original outputs;
  • while minimising latency.

It currently contains emulations of the:

  • Acorn Electron;
  • Amstrad CPC;
  • Apple II/II+ and IIe;
  • Atari 2600;
  • Atari ST;
  • ColecoVision;
  • Commodore Vic-20 (and Commodore 1540/1);
  • Enterprise 64/128;
  • Macintosh 512ke and Plus;
  • MSX 1 and 2;
  • Oric 1/Atmos;
  • Sega Master System;
  • Sinclair ZX80/81; and
  • Sinclair ZX Spectrum.

Commodore Amiga emulation is also present, but for now remains wilfully inaccurate.

On the Mac it is a native Cocoa and Metal application; under Linux, BSD and other UNIXes and UNIX-alikes it uses OpenGL and can be built either with Qt or with SDL.

Single-step Loading

Through static and runtime analysis CLK seeks automatically to select and configure the appropriate machine to run any provided disk, tape or ROM; to issue any commands necessary to run the software contained on the disk, tape or ROM; and to provide accelerated loading where feasible.

With CLK installed the full process of loading a piece of software β€” even if you've never used the machine it runs on before β€” is therefore:

  1. locate it in your OS;
  2. double click it.

Loading a piece of software

So there's no need to wade through creating a new machine, inserting media into it or figuring out which loading command goes with this piece of software, and no import procedure β€” CLK does not attempt to take ownership of your files or to usurp your OS.

Keep your emulated titles on your desktop, in your dock, or wherever else you usually prefer to launch software from, and launch in a single step. Just like you'd expect from any other piece of desktop software.

Signal Processing

Consider an ordinary, unmodified Commodore Vic-20. Its only video output is composite. Therefore the emulated machine's only video output is composite. In order to display the video output, your GPU must decode composite video. Therefore composite video artefacts are present and correct not because of a post hoc filter but because the real signal is really being processed.

Similar effort is put into audio generation. If the real machine normally generates audio at 192Khz then the emulator generates a 192Khz source signal and filters it down to whatever the host machine can output.

Samples

1:1 Pixel Copying Composite Decoded
The Electron start screen, with a classic 1:1 pixel emulation The Electron start screen, decoded from an interlaced composite feed
Repton 3 in game, with a classic 1:1 pixel emulation Repton 3 in game, decoded from an interlaced composite feed
Stormlord with a classic 1:1 pixel emulation Stormlord decoded from a composite feed
Road Fighter with a classic 1:1 pixel emulation Road Fighter decoded from a composite feed
A segment of the ColecoVision Donkey Kong title screen with a classic 1:1 pixel emulation A segment of the ColecoVision Donkey Kong title screen decoded from a composite feed
Sonic the Hedgehog with a classic 1:1 pixel emulation Sonic the Hedgehog screen PAL decoded from a composite feed
1:1 Pixel Copying Correct Aspect Ratio, Filtered
Amstrad text, with a classic 1:1 pixel emulation Amstrad text, with correct aspect ratio and subject to a lowpass filter
The Amstrad CPC version of Stormlord, with a classic 1:1 pixel emulation The Amstrad CPC version of Stormlord, with correct aspect ratio and subject to a lowpass filter

Low Latency

The display produced is an emulated CRT, with phosphor decay. Therefore if you have a 140Hz 4k monitor it can produce 140 distinct frames per second at 4k resolution. Latency is dictated by the host hardware, not the emulated machine or emulator.

Audio latency is disjoint from frame rate and is generlaly restrained to 5–10ms.

Accurate Emulation

Accuracy affects usability; the more accurate an emulator, the more likely that a user can run every piece of software they're interested in without further intervention.

This emulator attempts cycle-accurate emulation of all supported machines. In some cases it succeeds.

Additional Screenshots

Apple IIe Prince of Persia Apple Macintosh MusicWorks
Amiga Indianapolis 500 Atari ST Stunt Car Racer
Amstrad CPC Chase HQ MSX 2 Space Manbow
Amiga James Pond II Atari 2600 Solaris
Acorn Electron Chuckie Egg Enterprise HERO
ColecoVision Galaxian SG1000 Chack'n'Pop
ZX81 3D Monster Maze ZX80 Kong
Vic-20 Gridrunner ZX Spectrum Chromatrons Attack
ZX Spectrum Menu VIC-20 BASIC

macOS Version Qt Version

Sponsorship

I've been asked several times whether it is possible to sponsor this project; I think that's a poor fit for this emulator's highly-malleable scope, and it makes me uncomfortable because as the author I primarily see only its defects.

An Amazon US wishlist is now attached in the hope of avoiding the question in future. A lot of it is old books now available only secondhand β€” I like to read about potential future additions well in advance of starting on them. Despite the optimism of some book sellers, please don't purchase anything that is currently listed only at an absurd price; they were sorted by secondhand price when added to the list, with the cheapest being $5.

More Repositories

1

CP-M-for-OS-X

A z80 emulator + CP/M-80 reimplementation that intends to allow original CP/M software to be used under OS X.
Objective-C
218
star
2

ProcessorTests

A language-agnostic JSON-encoded instruction-by-instruction test suite for the 65[c]02, 65816, 68000 and SPC700 that includes bus activity.
JavaScript
85
star
3

Isometric-Ray-Cast

Zero-overdraw isometric graphics for the ZX Spectrum, featuring the Ant Attack map.
Assembly
22
star
4

dsk2woz

A command-line tool to convert Apple II DSK images to WOZ format.
C
20
star
5

Phantasma

A remake of Incentive Software's Freescape engine, allowing games created with the 3d Construction Set to run on modern computers.
C++
17
star
6

Sam-Coupe-3d

An assembly vector 3d engine for the Sam CoupΓ©, a British Z80-based microcomputer of the late 80s. Would likely be adaptable to other similar micros, such as the Spectrum and Amstrad CPC.
Shell
15
star
7

Clock-Signal

An emulator that operates at the bus level (ie, all components communicate only using the same individual digital pathways as the original hardware, responding to a clock signal, etc); currently implemented: the Z80 and the various other parts that make up a ZX80 and a ZX81.
C
13
star
8

ElectrEm

One of my older projects; a cycle-accurate emulator of the Acorn Electron, a 6502-based British home computer of the early 80s.
C++
8
star
9

Basic-PlayStation-3d

Some very simple 3d work for the original 1995 Sony PlayStation. Just for fun.
7
star
10

GL-ES-Plasma-Effect

A quick version of the old demo scene "plasma" effect in OpenGL ES, with a wrapper project that allows execution on an iOS device.
Objective-C
3
star
11

Oric-DSK-CRC-Fixer

A small tool to correct those Oric disk images that have been built with invalid CRCs.
C
2
star
12

Return-to-Antescher

An SDL-based game I wrote in a very small amount of time in 2006 that re-uses the Ant Attack 3d map from a first person perspective with some faddish stencil lighting.
C++
2
star
13

FDI2Raw

A fork of Toni Wilen's fdi2raw.c which is intended to sever UAE connections and improve spec conformance
C
2
star
14

AndroidGoogleImageSearch

CodePath #2
Java
1
star
15

CLK-Snapcraft

1
star
16

Code-Writer-X

A tool to view Cliff Harris' CodeWriter documents under OS X.
HTML
1
star
17

Tetrominoes

A browser-based falling block game invented in Russia in the 1980s, in which the player attempts to make solid horizontal lines using tetronimoes β€” block shapes consisting of four squares each.
HTML
1
star
18

Android-Instagram-Viewer

An app to display the current popular items on Instagram; the week 1 CodePath assignment.
Java
1
star