Clock Signal (CLK)

Émulateur v2025-03-20

Multi émulateur open source assez jeune demandant OSX 10.13 minimum et supportant les puces Apple Silicon (architecture Arm64). Les plateformes suivantes sont émulables : Acorn Electron, Amstrad CPC, Apple II/II+/IIe, Atari 2600, AtariST (expérimental), ColecoVision, Commodore Vic-20 (and Commodore 1540/1), Mac 512ke/Plus, MSX, Oric 1/Atmos, Sega MasterSystem, Sinclair ZX80/81 et ZX Spectrum +2a et +3.

Dernière mise à jour :

Plateformes

Acorn Electron Amstrad CPC Apple II Macintosh Atari 2600 Atari ST ColecoVision VIC-20 Amiga MSX MSX2 IBM PC Master System Oric 1 Oric Atmos ZX Spectrum Commodore 16 Commodore Plus/4

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits Metal Metal

Téléchargement et liens

Historique des versions

v2026-07-23
This release corrects a type error in changes made to the OpenGL code in 2026-07-20 that broke output for the CoCo, Master System, MSX and ColecoVision, affecting Qt and SDL targets. The macOS release is unchanged other than the version number.
v2026-07-20
This release: * resolves incorrect placement of data within a floppy disk track, potentially overwriting unrelated data, when any machine wrote two or more discontinuous regions during a single rotation; * corrects video output of the Apple II, Vic-20 and Atari 2600 for the OpenGL targets, i.e. SDL and Qt; * removes a half-second time skip at startup for all machines in Qt; and * improves and possibly entirely-resolves issues with audio output under Qt. All credit goes to @apenney for discovering, diagnosing and suggesting work on all of these. I can't guarantee I've yet succeeded in resolving all of his discoveries. Thanks!
v2026-06-06
This release improves parsing of Tandy CoCo CAS files.
v2026-05-28
This release adds a nascent emulation of the Tandy Colour Computer 1/2, which shares both the processor and peripheral interface adaptors of the Thomson MO5/6 and therefore increases my testing of those components, correcting bugs such as: * the 6809 and its timing of SYNC; and * the 6821 and the condition it applies for clearing interrupts.
v2026-04-30
This release fully introduces the Thomson MO6 as well as correcting some subtle race conditions affecting the 'Insert...' dialogue under macOS and initial display setup for the ST, MSX and Spectrum across all platforms. Here are the CPC and MO6 versions of MGT:
v2026-04-21
On the Thomson machines: * there is now some support for LEP and SAP files; * Memo5 images with the extension ROM are now recognised and appropriately routed; and * an attempt at emulation of the MO6 and Prodest 128 is now present, though I don't yet trust it enough for it to be a trusted target for software. You'll have to select it yourself. On the Master System: * save RAM is now present, though unretained; and * a substantial issue in the display of fixed right-hand columns has been corrected. Together these fix all issues with the recent [Road Fighter](https://www.smspower.org/Homebrew/RoadFighter-SMS) release.
v2026-04-07
Continuing to iterate on the MO5, this release: - adds support for disk drives and the .FD file format, and cartridges via the M5 file format; - corrects the memory map error that was causing an incorrect border colour at launch; and - fixes a timing error with 6809 LEAx instructions.
v2026-04-04
Primarily this release introduces a first swing at emulation of the Thomson MO5. Between it being this emulator's first 6809-based machine and my poor comprehension of French it will likely take longer than usual to work up to broad compatibility. It also reintroduces use of the Oric's composite ROM for video generation where supplied, increasing the accuracy of composite colours.
v2026-02-23
This release: 1. uses a history of recent frames to detect when machines are producing interlaced output; and 2. switches its frame-blending model in that case to avoid any visible up/down motion. As with diagonal scans this isn't more accurate in the prima facie sense: real CRTs don't blend frames. No parts of successive interlaced fields are visible at the same time. They just paint one field half a line lower than the other, and alternate rapidly. But it's arguably more accurate in the practical sense, especially when adapting 50Hz video to a non-50Hz display; a simple bob inevitably introduces some degree of visible stutter that appears as wiggle. Joining pairs of fields _potentially_ creates aliasing during motion — the famous comb effect — but _definitely_ avoids the wiggling. Key points: * this is all in reference to real interlaced video. Not those demos that alternate frames within a progressive scan and call themselves interlaced, such as a few on the ZX Spectrum. Those don't produce interlaced video; and * the functionality is built into the simulated CRT, being purely a function of the generated video signal. There is absolutely no around-the-back-hackery such as specific machines somehow magicking the fact that they're producing interlaced video into the CRT. Either they're timing their vertical syncs to produce an alternating offset relative to the horizontal syncs or they're not. Just like a real TV.
v2026-02-20
This release: - addresses some but not all of the regressions in output under macOS and Metal that can cause corrupted displays. Diagnosis continues as to other issues; - resolves an issue where systems that produce entire frames with no PCM-clocked content whatsoever — in practice most likely to be the Amstrad CPC and BBC Micro during loading transitions — would retain a static frame of output under both Metal and OpenGL; - bundles the Amstrad CPC, ZX Spectrum, ZX80 and ZX81 ROM images into the executable for all targets per @stevexyz's work on obtaining permission for the ZX80 and ZX81 ROMs, and my reading of Amstrad's historical comments on the others; - implements provisional read support for MOOF-format floppy disks; and - forces the emulator's characteristic slender-diagonal scan lines into strict horizontals. On the last point: on a real CRT you get very shallow diagonals. Within the emulator you get the same. CRTs treat horizontal and vertical timing as disjoint, which makes things like interlacing and progressive each 'just work'. It's not about being modal, it's a result of the general model. But philosophically, the diagonals create aliasing and aliasing is by definition a misrepresentation of the underlying signal. CRTs definitely don't do an essentially-horizontal line with one or two stair steps along them. So are exact horizontals actually less accurate? Another way to frame it is two potential forms of output, neither of which looks exactly like the original, and one of which has distracting artefacts. I've left the door open e.g. to do diagonals on very high DPI displays but forced horizontals everywhere else, and may vacillate.
v2026-02-10
This release improves composite decoding on the Mac, and significantly improves the entire video pipeline on OpenGL targets: * to give it the same quality of composite decoding as on the Mac; * to reduce aliasing in all video modes; and * better to fit the emulated machine to whatever window shape you select. It also better unifies this emulator's use of the two APIs to try to avoid one falling far behind the other again in the future. Outgoing OpenGL: Previous Mac/Metal: Current output on all platforms:
v2026-01-06
This release continues to iterate on improving the Qt build: * it now uses OpenGL ES rather than OpenGL, which is better matched to Wayland, the Raspberry Pi, etc; * issues with retention of UI selections are resolved; * updated Snapcraft packaging better integrates that version with KDE Neon; and * the recent 'dynamic crop' option has been added to the UI. For SDL: * OpenGL ES 3 is now preferred, with OpenGL 3.2 as an automatic fallback. On the Mac, minimal changes: * the non-functional 'File->Revert to Saved...' is now disabled, having previously either done nothing or crashed the application. For those building for themselves: * CMake can now make the Qt target, in addition to the SDL one; * however, this project's traditional QMake target survives as Qt Creator's support for opening projects from CMake didn't function when tested. As a result of both the build and Qt improvements, Snapcraft releases have resumed. Due to the OpenGL changes they are also now likely to work on a wider range of Linux targets.
v2025-12-12
This release: * substantially improves fast loading of tapes on the Commodore Plus 4; * improves the internal naming of options that became slightly opaque when exposed on the SDL command line — e.g. 'quickload' becomes 'accelerate-media-loading'; * corrects transitory framing errors when starting the ZX Spectrum; and * moves from Qt 5 to Qt 6, correcting an OpenGL-related crash on the way.
v2025-11-26
This release iterates on the Enterprise's optional newfound access to your local filing system; in particular it: * avoids a potential crash or wrong file contents if the Enterprise attempts to save content stored in a ROM; and * on macOS it avoids a potential hang when seeking user permission to reach outside of its sandbox, and tries to avoid asking for permission to create new files when it already has permission.
v2025-11-24
This: * adds support for host filesystem access from the Enterprise, allowing use of software distributed as .COM or .BAS; * allows the C-1540 and 1541 to write to disk images and makes D64 files no longer read-only; and * experiments with emulation of the BeebSID expansion on the BBC Micro (though noting that most of the SID compilation tune discs are broken to varying degrees with the 1770 DFS).
v2025-11-07
This release corrects an issue in CRTC addressing, which most visibly caused 6502 Second Processor Elite to display the first 8 lines of its radar area in the wrong graphics mode but is likely to improve both BBC Micro and Amstrad CPC emulation.
v2025-11-05
This release: * makes dynamic cropping optional for the BBC Micro and Amstrad CPC; * corrects faulty automatic cursor movement on the Archimedes that affected the SDL and Qt builds; * better maps mouse buttons under SDL; * fixes an issue with CRTC register reading, fixing the BBC Micro's Spellbinder; and * introduces preliminary 65C02 and Z80 second processor support for the BBC Micro.
v2025-10-19
Primarily this release is a coding fix, as the previous tagged release didn't build under multiple standard C++ environments; cf. #1608. Functionality changes: * the BBC Micro now requests and uses the Advanced Disc Toolkit ROM if available, fixing games that use *MRUN or *MLOAD to load.
v2025-10-18
This release: * introduces dynamic cropping of the visible area for the ZX Spectrum, BBC Micro and Amstrad CPC. The emulator will now make an effort to decide how much and which portion of the screen to display based on current video activity, hopefully eliminating the conflict between wanting to make sure no software ends up artificially cropped and wanting to show most software at a decent size when in a window; * corrects the direction of the vertical joystick axis when using digital inputs to supply an analogue machine (i.e. the Apple II or BBC Micro); * improves automatic selection of launch program for the Amstrad CPC; * corrects the Amstrad CPC's brightness when in 'monitor' mode on macOS; and * fixes a minor layout error in the machine picker that became visible with macOS 26.
v2025-10-03.2
This release primarily: * fixes a major bug that broke writing to disk on the: Atari ST, Acorn Electron, Oric and BBC Micro. It also: * corrects horizontal clocking and teletext line-counting issues on the BBC Micro; and * corrects a quirk of the light-pen interface, fixing Pharaoh's Curse.
v2025-10-03
This release: * corrects and improves cursor display on the BBC Micro; * adds a previously-absent one-cycle delay to pixel output on the Amstrad CPC, correcting off-by-one palette changes in Bomb Jack Extra Sugar Edition (and probably elsewhere); * further improves 6522 emulation, benefitting the Oric, Vic-20 and BBC Micro; * fixes a potential issue when mapping digital inputs to analogue joysticks such as on the Apple II in which pressing one direction could cause another to be ignored; and * adds joystick input for the BBC Micro. I also failed fully to observe it previously but the work that has gone into improving the 6845 for the BBC has paid dividends for the Amstrad CPC; e.g. Voyage 93 now runs flawlessly. Resolving #1019.
v2025-10-01
This release attempts emulation of the BBC Micro. Known issues: * the 1770 disc controller is the only media source currently implemented — no 8271, no tape. Unknown issues: * probably endless. Resolves #1548.
v2025-09-14
This release: * corrects palette selection in the Electron's 1bpp modes and improves timing slightly, while also bringing it into the club of machines that automatically reload tapes/disks/etc if they change outside of the emulator on macOS; * makes various minor improvements to PC emulation; and * corrects an error with automatic typing into the ZX80 and ZX81. Thanks go to @atsampson for correcting a build issue with GCC 15.
v2025-03-20
This release corrects: * a potential crash at startup for the emulated Macintosh Plus; and * likely failure of mouse movement to register after window resizing on macOS hosts.
v2025-03-05
This release fixes a potential crash on macOS when using File -> New... to create an empty machine.
v2025-02-26
This release: * adds nascent Commodore 16/Plus 4 emulation, a work-in-progress; * fixes a potential crash at startup for the MSX 2; * reduces potential memory leaks for any machine that uses disks; * improves the Mac UI with: a modern icon, improved menu wording and closer-to-QuickTime behaviour for showing the in-window machine controls; and * experimentally, primarily for the ZX Spectrum and on macOS only, attempts automatically to relaunch media that has been changed by an external program (e.g. if you reassemble software you are developing).
v2024-10-19
This release: * adds support for the Oric vsync hardware hack, and also corrects the Oric's 60Hz frame length better to support software vsync; and * improves — but far from perfects — its 6845 emulation, as primarily surfaced in the Amstrad CPC.
v2024-09-08
This release: * replaces the Electron's previous implementation of video output with one closely modelled on @moogway82's [JamSoftElectronULA](https://github.com/moogway82/JamSoftElectronULA), itself a derivative of @hoglet67's [ElectronFpga](https://github.com/hoglet67/ElectronFpga). It thereby substantially improves compatibility with recent Electron demos such as @0xC0DE6502's basketball.
v2024-08-27
This release: * corrects a bug that could cause half-screen games to flicker on the Acorn Electron; * improves automatic machine selection between the ZX Spectrum +3 and CPC for a large category of self-booting disk image; and * corrects 65C02 bus behaviour during BBR and BBS instructions, improving emulation accuracy of the Enhanced Apple IIe.
v2024-06-03
This release: * corrects a bug that — although not local to that machines — was most likely to miscolour the left border of the Vic-20 if it had changed close to horizontal retrace; and * adds the Archimedes' quick-load configuration option to the SDL command line, while also adding the Archimides itself to the Qt machine picker. For those building for themselves and for the inevitable future, the code is also now completely valid C++20, having previously stumbled over a difference in the way `std::memory_order` is declared between C++17 and C++20.
v2024-05-27
This release improves the Acorn Archimedes experience by: * automatically launching the content of disk images in most cases where the emulator is launched via an image; and * offering substantially accelerated loading.
v2024-05-05
This release primarily improves the Archimedes: - video emulation is improved, especially with regards to the left crop in titles like James Pond and Robocod, and the cursor being misplaced relative to content in 1bpp and 2bpp modes; - runtime machine selection helps to resolve speed issues with early titles such as Zarch; - errors in instruction fetch related to user mode have been fixed; and - minor improvements have been made to floppy drive emulation.
v2024-04-20
This release: * adds a Mockingboard to the Apple II; and * introduces tentative emulation of the Acorn Archimedes.
v2024-01-22
This release: * fixes broken horizontal scrolling on the Master System; * correctly declines to page on the Electron if receiving interrupt acknowledgments; * corrects mismapping of Apple II inverted characters; * avoids automatic key repeat on the early Apple IIs; and * with thanks to @ryandesign avoids potential performance issues on multi-GPU macOS machines with macOS 10.15+.
v2023-12-28
This release fixes a regression in static media analysis introduced by release 2023-12-26 that affected disk images for the Electron, Amstrad CPC, Oric and ZX Spectrum.
v2023-12-26
This release: * improves support for Apple II NIB images; * thanks to @ryandesign corrects Apple II/II+/IIe floating bus issues; * resolves a potential crash-at-startup for the Enterprise; * resolves potential stuck-on drive motors on the Amiga; * resolves some disk writing issues specific to the Enhanced Apple IIe; * thanks again to @ryandesign also corrects an internal optimisation around Disk II write protection sensing, and an error to do with data bus loading; and * adds emulation of the most basic form of IBM PC — an 8086 compatible with MDA or CGA graphics and a floppy drive. --- Addendum: PC emulation is somewhat uncharted territory for this emulator as it's a world where I'm not treating the bus(es) as king; there's no effort to emulate any specific, real machine, just to provide an accurate instruction set, memory and IO space. Overtly an attempt to broaden myself, time will tell whether this is a good fit for this project and for myself.
v2023-10-29
This release: * includes fixes by @ryandesign to the sequence of addresses accessed by the Apple II for video generation, correcting broken instances of vapour lock; * includes further build-system fixes by @ryandesign that reintroduce support for macOS 10.13; and * corrects address generation logic for the undocumented 6502 instructions `SHS`, `SHX`, `SHY` and `SHA`.
v2023-09-10
This release: - continues improvements to the MSX 2, especially its video chip and this emulator's automated detection of cartridge types; - corrects the 65c02's BCD results, where they differ from a vanilla 6502; - corrects the 65816's state after a BRK while in emulation mode; and - resolves some timing discrepancies in some of the unofficial NOPs on the base 6502.
v2023-05-15
This release: * adds MSX-MUSIC (i.e. OPLL) support for the MSX 2; * introduces missing MSX configuration options for the Qt build; and * adds a file association for .mx2 files.
v2023-05-08
This release expands MSX emulation to include a first attempt at the MSX 2; improvements and corrections are likely to follow.
v2022-11-25
This release: * addresses flag errors in the 68000's shift operators, improving compatibility; * adds support for Apple II .HDV files, and adds a SCSI status indicator; and * fixes a potential stuck-key problem with using the keyboard as an ersatz joystick under macOS.
v2022-09-16
This release: * fixes an error in Apple II disk image handling that caused corruption upon save; and * adds emulation of the Apple II SCSI card.
v2022-08-22
This release: * partially enables a properly-serialised blitter for the Amiga, mostly replacing the tentative instant blitter of previous releases; * adds 1mb and 4mb RAM size options for the Atari ST; * improves support for .ST disk images of non-default geometry; * resolves a crash on macOS when the app needs to request user provision of ROMs; and * gives a version number to macOS builds.
v2022-07-23
This release: * corrects an error in Amiga HAM output that transposed red and blue channel modifications; * improves Amiga sprite display: for programs that use both DMA and direct sprite accesses, and with regard to playfield interactions; and * rejigs the macOS binding to try to reduce CPU load and avoid a potential audio-ending race condition. Though it is now worse at scheduling across multiple CPU cores so there might be further swings of the pendulum yet to come.
v2022-07-08
This release resolves a regression in the previous, which caused the Acorn Electron and Vic-20 not to boot correctly.
v2022-07-01
This release: * improves the 68000: * the results of ABCD, SBCD and NBCD are now more accurate; * timing corrections have been made to CMPA.l, CLR.b, CLR.w, DIVU/S, NEGX.b, NEGX.w, NEG.b, NEG.w, NOT.w, NOT.b, MOVE to SR/CCR, MULU/S, TRAP, TRAPV, CHK and TAS; and * improves the 65816: * to correct an error in (d), y addressing calculation; * to correct a flag error in 16-bit BIT; and * to improve timing to a variety of other instructions.
v2022-04-17
This release resolves a bug that prevented the Apple IIe and Enhanced IIe from detecting an attached disk drive.
v2022-03-26
This release: * fixes an issue that caused the Amstrad CPCs to start with an unpredictable amount of RAM; and * more accurately observes the Amiga left and right screen margins.
v2022-03-13
* corrects an issue with Copper WAITs that caused a reasonable proportion of PAL Amiga titles to display incorrectly at the bottom of the screen; and * adds support for Amiga fast RAM, and allows user selection of the quantity of chip RAM.
v2021-12-19
This release adds a low-quality emulation of the Commodore Amiga, in the hope that it'll be a stepping stone towards at least a mediocre emulation of the Commodore Amiga.
v2021-08-09
This release: * improves raw keyboard handling for the pre-IIe Apple ][s, courtesy of contributions by @adamsmasher (thanks!); and * corrects a long-standing macOS graphical output bug affecting the Vic-20 and Apple II.
v2021-07-16
Besides minor tweaks to CPC and Enterprise automatic disk startup, and to Disk II activity indicators, this release primarily acts to bring the macOS UI more into line with modern Mac application design by pulling everything relevant to a particular machine into a single window. Trivia fact: today is the sixth anniversary of this emulator's initial commit.
v2021-07-09
This release improves the Enterprise: * adds support for the 8/12Mhz input select on the Enterprise's Dave chip; * adds a 6MHz CPU option; * improves handling of Dave's interval timers, especially with regard to reading of state; and * corrects a timing bug affecting opcode reads from non-video memory with wait states disabled. It also fixes a minor Qt-specific issue in which the status bar would retain LEDs from previous machines.
v2021-07-03
This release adds provisional emulation of the Enterprise 64 and 128. I don't think timing is quite on the nail, and only IMG files are supported for now. This has caused the following improvements elsewhere: * improved support for raw-sector FAT12 disk images allows use of 10-sector disk images with the MSX; and * all WD1770-based machines (the Electron, Atari ST, MSX and Oric Jasmin interface) will now start their drive motors even if spin-up is disabled — though the actual spin-up sequence will be skipped. In addition an issue that could cause a crash or floppy disk image corruption upon write for any MFM machine that doesn't number its sectors from 0 has been corrected; this specifically includes the Amstrad CPC, Atari ST and MSX.
v2021-06-13
This release: * adds support for Macintosh drive images, in addition to its existing support for volume images; * substantially improves messaging and semantics around ROM loading, hopefully to ease application setup; * accepts state snapshots by drag and drop, in addition to regular media images; * adds a square-pixel option for Apple II emulation, following verification that some monitors were so configured; and * corrects a potential inconsistency in the Master System's handling of interrupts.
v2021-05-05
This release: * attempts to improve Qt/X11 keyboard reading; * adds support for opening SNA, Z80 and SZX Spectrum snapshot files; * corrects a bug in Spectrum state management that would cause video to reset to RGB when toggling the fast-loading option; * adds joystick support to the ZX Spectrum (Kempston and Interface 2) and to the Oric (Altai); * improves compatibility with Oric TAP files; and * resolves a potential crash affecting some keyboard-based machines with paste functionality. For those keeping track, that puts ZX Spectrum file format support at: DSK, HFE, TAP, TZX, CSW, SNA, Z80, SZX.
v2021-04-21
Apologies for the rapid fire of late; this release: * corrects a regression that prevented the Atari ST from booting and therefore broke all Atari ST software; and * having fixed an issue around ROM timing, reinstates the +2 as the default Spectrum.
v2021-04-19
This release: * corrects an emulation issue with the ZX Spectrum's response to interrupt acknowledgement, fixing several titles; * ensures ZX Spectrum options are included in the SDL build's `--help`; * reintroduces support for Metal-capable Macs running macOS 10.13; and * further improves ZX Spectrum timing. The default machine for loading tape-based ZX Spectrum software has once again become the +2a pending investigation into a real-time tape-loading bug affecting the 128kb and +2 Spectrums.
v2021-04-16
This release adds emulation the 16kb, 48kb, 128kb and +2 Spectrums, and corrects a Qt-specific bug in Spectrum model selection. It may also have minor side effects on timing for other Z80 machines, though no concrete timing tests are known to be affected; most notably four-byte opcodes on the MSX and ColecoVision will execute a cycle more quickly.
v2021-04-06
This release: * resolves a bug shared by the Amstrad CPC and ZX Spectrum in which fast loading was completely ineffective for media inserted into an existing machine; * improves TAP support for the ZX Spectrum — previously it was possible for the final byte in a file to be omitted from audio generation; and * slightly improves fast loading compatibility on the ZX Spectrum in general.
v2021-03-25
This release substantially improves floating bus emulation for the ZX Spectrum. For macOS users it also: * introduces a new vertically-oriented machine picker; and * resolves a long-standing bug in which machines with activity indicators would start with focus in the wrong window. I think sticking with the existing tabbed machine picker for Qt is the right call; unlike Cocoa, Qt permits its tabs to scroll horizontally. They're also smaller, making for less of an issue.
v2021-03-23
This release adds a first attempt at emulating the ZX Spectrum +2a and +3. Notable limitations beyond the restricted model support, and general lack of testing to date: * only TAP, TZX, CSW, DSK and HFE files are currently supported — no state snapshot-type files; and * fast loading of tape content works for ROM-based data only. Quick loaders aren't accelerated. This is routinely the case in this emulator but is somewhat more obvious on the Spectrum due to the ubiquity of such things. Aside from that it also: * provides some acceleration for Amstrad CPC ROM-format tape data; * very slightly tweaks the Master System's blue output as per latest discoveries; and * of no interest whatsoever to anyone but other developers, prevents the ZX80 from triggering a false-positive assert when built in debug mode.
v2021-03-07
Apple IIe: * corrects pixel serialisation order in double low-res mode (i.e. alters colours); and * inverts the meaning of the exposed vertical blank value. Macintosh: * after a tip on how PWM values drive the 400kb floppy drive, provisionally enables Macintosh 128kb and 512kb emulation. This emulator had previously modelled only the 512ke and Plus, with the 800kb floppy drives. ZX81: * corrects a bug in which the Z80 could be permanently WAITing if NMIs were disabled at exactly the right moment, causing some software to hang. Oric: * includes various bugfixes for the 65816-powered Oric, which SDL users can play with. Qt: * fixes a potential crash if the user should attempt to provide a ROM file that can't be opened.
v2021-02-02
Electron: * adds support for SCSI-interfaced hard disks; * fixes support for ADL floppy disk images; and * adds autodetection logic potentially to use the Advanced Plus 6 ROM. Oric: * having discovered that some exist out in the wild, CPC-style DSK files are now evaluated for whether they might be Oric-relevant; and * for potential developers, offers a 65802-equipped Oric via the SDL build. There's no known software for such a machine so this is not currently exposed via Qt or on the Mac, and the underlying 65816 is likely still buggy. General: * adds support for the Apple Game Controller API.
v2020-12-09
This release: * fixes a potential crash in the Mac build when using a Retina display and a scaled resolution; and * reenables native M1 support.
v2020-11-29
This release: * corrects an error in handling of colour burst amplitude within the OpenGL scan target that could cause a bright green display if a colour screen was paired with a machine that does not provide a colour burst — in practice, the Apple II in text mode was the primary victim; * corrects an error in my Qt bindings which object sliced a keyboard class, potentially affecting any keyboard that deviates from the default — in practice, the Apple II was the primary victim as it uses non-positional, logical input almost exclusively; * improves the SDL target's handling of logical key symbols, affecting any and all machines with the logical keyboard mapping enabled; and * increases the range of keys that can be used as reset on an Apple II. It's now any F key, or those in the page up/down/delete/etc cluster on a standard PC keyboard.
v2020-11-21
Another Mac-centric release — there's a lot going on with the Mac right now — this build: * adds direct support for Apple Silicon. So this application does not require Rosetta to run. Thanks to @Tiza59 for testing! I hope to have my own M1-equipped machine in a month or so, so Apple Silicon support should become a regular feature.
v2020-11-13
This release affects the Mac build only; it: * notarises the app, making for a much easier first-time launch; and * resolves known Big Sur UI issues: * File -> New... could present a blank, uninteractive window; and * failing that, any cancelled new machine dialogues could reappear and be unresponsive at an attempt to close the application. It also bumps the minimum macOS version to 10.14; given that I no longer support output other than via Metal, this is a convenient way of avoiding the need for a fallback. This binary has been updated since its initial release.
v2020-11-07
Corrects RGB video display for the Atari ST and Amstrad CPC in macOS using the new Metal back-end.
v2020-10-02
A minor release, this: * adds F8+F12 as an alternate key combination for releasing the mouse in the Qt port; ctrl+escape is used natively by KDE; and * resolves a very minor thread safety issue in the macOS port related to window resizing.
v2020-09-17
* corrects a latent overflow error in the CRT that was visible via the new Metal back-end as a diagonal scan on top of the display running from bottom left to top right for machines with a coloured border and specific sync timing (in practice: the Master System, ColecoVision and MSX); and * makes a couple of negligible improvements to 6522 timer emulation, potentially benefitting the Vic-20 and Oric. The latter stems from having uncorked a new set of VIA tests; more accuracy improvements are likely to be forthcoming in that area.
v2020-09-16
Changes for all platforms: * resolves an issue in the emulated Macintosh that could cause a jumpy display; and * corrects a minor bug in audio processing that could cause incorrect filtering for non-integral sample rates. macOS specific: * adds a new Metal-based video processor; OpenGL is no longer used by the native Mac build. This is my first foray into Metal and I have a very limited capacity for testing, so there is a risk that compatibility issues will be uncovered. I hope to be able to fix these, please don't hesitate with reports. Given that OpenGL is deprecated on the Mac and will therefore at some point become unavailable, this is an unavoidable change.
v2020-08-02
This release: * applies a temporary patch to a long-standing race condition in the video output that could lead to the display partially blanking out or jumping up and down — the issue is believed resolved by this patch, but it's somewhat drastic and has negative side effects elsewhere, e.g. on window resizing, so a better correction will be sought; * corrects a regression that broke Oric Microdisc emulation; * corrects a potential crash in the dynamic analyser, most obviously when running large MSX cartridges; and * formally resolves a harmless-on-x86 race condition in the Macintosh's audio output. (For any who might be interested, on the first topic see ONE_BIG_LOCK in BufferingScanTarget.cpp)
v2020-07-27
This release applies some fixes to the Qt version of this emulator. SDL and native Mac versions are not altered in any way. Specifically: * a potential crash when using machines with indicator lights (e.g. drive access lights) has been corrected; * additional feedback is provided when importing ROMs and when trying to launch a file from the command line if it doesn't exist (and, in the latter case, a split-dispay GUI showing machine selection controls and boilerplate ROM request text will no longer be presented); and * a flaw in output timing has been addressed that seeks to resolve cases of the emulated machine's display not being updated.
v2020-07-20
This release corrects a regression in yesterday's that affected a large swathe of the disk-based machines. Compared to releases more than 24 hours, it differs in the same ways as yesterday's release, i.e.: Most substantially, this release introduces an experimental Qt for X11 build. I've found Qt to be extremely deficient in its keyboard handling; therefore the Qt port is currently supported on X11 only. Feedback is heavily encouraged. Otherwise: * improves the Master System's ability to boot without a BIOS image; * ensures the ZX80 and ZX81 loading procedure is more fully automated — that titles which do not automatically run after loading are `RUN`; and * adds support for most WOZ 2-format disk images for the Apple II, fixing some latent issues around booting 13-sector disks and improving the Disk II static analyser.
v2020-07-19
Most substantially, this release introduces an experimental Qt for X11 build. I've found Qt to be extremely deficient in its keyboard handling; therefore the Qt port is currently supported on X11 only. Feedback is heavily encouraged. Otherwise: * improves the Master System's ability to boot without a BIOS image; * ensures the ZX80 and ZX81 loading procedure is more fully automated — that titles which do not automatically run after loading are `RUN`; and * adds support for most WOZ 2-format disk images for the Apple II, fixing some latent issues around booting 13-sector disks and improving the Disk II static analyser.
v2020-05-10
This release: * adds volume controls; * corrects a bug in Apple II NIB handling that could cause a crash for some track layouts; and * introduces a preliminary attempt at OPLL emulation, bringing an initial version of FM audio to the Master System.
v2020-03-21
This release: * corrects potential crashes in macOS when: (i) switching a machine between monitors; or (ii) closing a machine; and * nearly completely rejigs the manner of command-line options provision for SDL/command-line users: * who can now create a new machine without providing a piece of media, or override any settings the emulator picks for itself if providing a piece of media; but * this is achieved by directly exposing various internal controls, replacing the old system of more complicated redeclaration, with the side effect that a few options have changed name or value, and some might need renaming in the future for better command-line sense.
v2020-03-10
This is a minor bugfix release for SDL users only; it partially unwinds the recent keyboard handling changes in order to restore classic behaviour for users not using the new `--logical-keyboard`. The specific underlying issue is this emulator's attempt to correlate text entry and key presses. SDL 2.x provides those things as distinct streams since text entry may come from a wide variety of things other than key presses, may require multiple key presses, etc. What this emulator wants to be able to do is, sometimes, check whether a key press it can't otherwise forward also produced SDL text entry. It tries to do that by timestamp primarily, but that's somewhat empirical and experimental. If and when I'm more confident in that, I can go back to something more like 2020-03-07 attempted. macOS binaries are attached for visibility but are unchanged from the previous release and named accordingly.
v2020-03-07
Primarily keyboard input changes: Adds a 'logical' keyboard mode, which is implemented as an extension of the existing text paste functionality, acting as if you pasted each letter that you type — it therefore work correctly with any keyboard layout your host OS supports. Also adds a few convenience key mappings, regardless of logical/physical keyboard mode: * for the ZX80 and ZX81: backspace (produces shift+0), break (shift+space; mapped to escape); * for the Vic-20: cursor left (shift+right) and up (shift+down) and F2, F4, F6 and F8 (shift+F1,F3,F5,F7 respectively); * for the Electron: F1... F0 (func+1... 0). Miscellany: * corrects obscure Z80 flag behaviour, meaning that the emulator now passes Zexall, all of Patrik Rak's tests, etc. No real software is known to rely on this behaviour, but other emulators have been doing it correctly for years.
v2020-02-16
This release: * fixes a potential crash on macOS if the user were to select File -> New... and then cancel the resulting dialogue; * fixes fullscreen for SDL users — alt+enter should once again toggle back and forth; * adjusts the function used for the AY's [non-linear] volume levels better to match real hardware, with the effect that lower volumes are further apart and higher volumes are closer together; * introduces stereo output for the Amstrad CPC, to match that machine's optional stereo output; and * fixes Oric Jasmin drive selection logic, and brings the Byte Drive implementation up to the relevant latest revelations.
v2020-02-12
This release rethinks the means by which emulation is scheduled: * machines that are running close to an integer multiple of your display's native output rate are now run very slightly too quickly or very slightly too slowly to bring them into sync, thereby eliminating tearing artefacts; * this is evaluated dynamically, so is fully compatible with machines such as the Atari 2600, ZX80/81 and Amstrad CPC which have variable frame timings; * machine update periods are now more granular, lowering input latency and improving parallelisation; * a further frame's length of output latency has been eliminated on macOS, where vsync frame output delays have been eliminated; and * on the Mac, where joystick input is polled, polling now occurs at a fixed 200 checks/second, independent of your display. Unfortunately it has still not proven possible to bring the SDL build up to parity with macOS builds in latency terms — SDL's built-in timer is low precision†, and it offers no means to observe vertical sync events without double buffering. Under macOS, SDL gets vertical sync events wrong — e.g. it offers them at a rate of 59.97Hz on my monitor, despite the fact that I'm running it at 30Hz non-interlaced — but your mileage may vary elsewhere. I test the Linux build under virtualisation so was not able to evaluate this factor there. Otherwise, it: * adds initial support for the Atari ST's .STX file format; * in support of which, system-wide improvements for 'fuzzy' disk bits are also of benefit to CPC .DSK support; * adds multi-sync output support for the Oric, so 60Hz mode is now useable; * corrects a handful of potential thread safety errors in SDL/kiosk mode; * SDL/kiosk users can now specify a machine speed multiplier, e.g. `--speed=0.75` to run at 75% of original speed, or `--speed=2.5` to run at 250% speed; * on macOS, resolves an issue that would lead to window contents being mis-scaled when dragging the window between Retina and non-Retina displays (in either direction); * also on macOS, resolves an issue where sound output could fail to recover from an ephemeral audio drop-out, leading to a permanent loss of audio; * attempts to resolve the problem of drive activity lights sometimes staying permanently on, that arrived in the previous release (and, indirectly, with disk drives having something sort-of momentum-esque, ish); * slightly extends Byte Drive 500 emulation to support four drives in principle; and * corrects a potential undefined-behaviour causing random memory write shortly after Oric startup. † for the record, I found the native macOS timer to be over 1,000,000 times as precise as SDL's — its jitter at its specified resolution of nanoseconds was better than SDL's at its specified resolution of milliseconds.
v2020-01-16
Modifies the type of RDY signal offered by the Byte Drive 500 interface, to avoid loading issues once the drive has initially spun down.
v2020-01-15
This release adds a first guess at implementation of the Oric's Byte Drive 500 disk interface. Which seems to work with the only known surviving Byte Drive 500 disk image, but that could be luck.
v2020-01-06
After a more productive Sunday than expected, this release: * adds emulation of the Oric's Jasmin interface; and * corrects an issue with AY- and YM-based machines in which channels were never quite fully off.
v2020-01-05
This release: * implements more of Atari's Intelligent Keyboard protocol, particularly with regard to joysticks — Turrican should now work correctly, amongst others; * adds in the ST's mirrored audio registers, causing many demos that were previously silent now to play music; and * continues improving the 68000, for the ST and Macintosh: * improves flag accuracy of `DIVU` and `DIVS` (although some unknowns still dangle); * corrects `JSR` target calculation when it's relative to A7; and * fixes access address field and read/write flag in stack frame from a bus or address error.
v2020-01-01
Improves the Atari ST: * the emulator's high-level implementation of the IntelligentKeyboard protocol now supports absolute mouse positioning and inverted scales; * known fixed titles: Lemmings, Gridrunner; * I've made a new guess at the mechanism behind the vertical/horizontal interrupts, preventing multiple firings; * known fixed titles: Cisco Heat, E-Motion; and * a potential buffer overrun in the emulated graphics subsystem has been fixed. Also continues the whipping of my 68000 into shape, currently to benefit the Atari ST and the Macintosh: * further `CHK` fixes: * N is now set correctly where the destination value is _both_ < 0 and greater than the effective address; * a previously missing prefetch cycle has been added to the `(xxx).l/w`, `d(An/PC)` and `d(An/PC, Xn)` address modes; and * the processor no longer returns to a `STOP` it was already at after an interrupt.
v2019-12-26
This release: * adds support for TheC64-style tags on Vic-20 software, which aren't ideal but are something I'm in favour of on balance, and wish to support; and * corrects the 68000 `RTR` instruction to preserve the entire top byte of the status register, not merely the supervisor bit, improving Macintosh and Atari ST emulation accuracy.
v2019-12-25
This release: * adds an Atari ST emulation that still needs a lot of work: * only ST and MSA files are supported so far, not the much superior STX — and they're always read-only; * only a high-level emulation is offered of the keyboard, mouse and joystick side of that serial interface, and even that's incomplete; * the video emulation is immature — many border-breaking full-screen effects work, but not all; and * even within those constraints, a decent amount of software just doesn't seem to work correctly. Improvements will be forthcoming. However, in pursuit of the Atari ST the following have been fixed to the benefit of other machines: * 68000 corrections, also benefitting the Macintosh, powered by randomised comparative testing: * `CMPA.w` no longer truncates the destination register for computation; * `NBCD (An)+` and `-(An)`, no longer always adjust An by two; * `CHK` no longer changes the N flag when the result is within bounds; * `MOVE -(An), SR/CCR` both now actually predecrement; and * `SBCD` sets carry and extend exactly when it adjusts the top nibble; * WD corrections, also benefitting the Oric, Electron and MSX: * multi-sector reads and writes no longer sometimes use a sector body as if it were an address (with the side effect that spurious CRC errors don't occur); * fixes have been applied to the track-zero and write-protect flags; and * the index pulse is now detectable in software.
v2019-11-17
This release: * corrects the 68000's `[AND/OR/EOR].[b/w] Dn, -(An)`, all of which were previously decrementing an incorrect register owing to a typo — this fixes MusicWorks, amongst others; * ensures the Oric's Microdisc can fire interrupts; * fixes a potential crash affecting machines with a greater than 1 byte-per-pixel format in their CRT-directed PCM output (i.e. everything except the Amstrad, ZX80/81 and Apple II); * resolves accidental mirroring of [Electron] DSD images, where as well as appearing where it should, side 2 was also reachable by stepping out beyond the bounds of side 1.
v2019-11-05
This release: * corrects an overflow issue within the graphics pipeline that could cause a crash when using almost any emulated machine, though it was much more likely to do so when using a machine with a user-selectable colour border.
v2019-09-28
This release corrects: * a timing miscalculation in the TMS9918 (and derivatives) which affected Master System After Burner; * an error in Apple II card state management which could cause cards to acquire an extra clock cycle from the aether (and, in practice, thereby broke Disk II writing); and * a more generic error in time counting in drives with a fixed rotation speed that crept in when variable-speed drive support was added for the benefit of the Macintosh and potentially affected all other emulated machines in fairly subtle ways.
v2019-09-22
* adds emulation of a 4mb Macintosh Plus, with its SCSI interface and corresponding support for hard disk images; * adds optional fast-boot support for the Macintoshes, in which the emulator forces their boot-up memory test to be skipped; * I've switched to a different model of Macintosh RAM timing: I now believe that for the models I emulate the proper behaviour is alternating four-cycle access and non-access windows while pixels are being output, and offering full bandwidth RAM access the rest of the time; and * on a Mac host, ensures better routing of the command key into the emulator — it now won't trigger normal app-level host shortcuts while the mouse is captured. So e.g. command+q will be signalled to the emulated Macintosh, causing the application it is running to exit, rather than causing the emulator to exit.
v2019-08-04
On Macintosh accuracy: * introduces video-motivated memory access delays, improving speed accuracy; * makes the IWM's windowing logic much more like that described in its patent; * reworks address decoding logic, yielding a small speed improvement and eliminating a small number of address space mapping errors; and * improves 68000 behaviour re: interrupt acknowledgement, timing of interrupt decisions, and DIVS timing. On usability: * introduces activity indicators for the Mac floppy drives; * provides on-screen exposition as to how to release your mouse cursor; and * following user feedback, the Cocoa version of Clock Signal now shows the File -> Open... dialogue at launch.
v2019-08-01
Corrects a bug that could cause a crash at startup on the Mac if starting a Macintosh via File -> Open... without having first provided a system ROM.
v2019-07-28
Quick fixes: * corrects a misassumption about Macintosh video address latching, that led to graphical glitches in MacMan, Skyfox and elsewhere; and * eliminates support for PlusToo-style BIN disk images, thereby resolving ambiguity over cartridge-image .bin files. The latter was preventing use of a variety of ColecoVision and Atari 2600 titles.
v2019-07-27
* adds a preliminary emulation of the Macintosh 512ke; * extends information provided for ROM identification in SDL; * corrects a potential VIC-20 crash at startup; * ensures the Swedish VIC-20 uses the correct ROM; * corrects a potential crash at startup for the Apple II if Apple II ROMs have been supplied but Disk II ROMs are missing; * improves Pravetz missing ROM announcements; and * disables under sampling for any display type that is "precise" — RGB outputs in particular. I'm planning to iterate on the Macintosh; it's very provisional. Amongst the known defects out of the gate: * the 68000 executes DIVS too quickly and checks interrupt status at the wrong time; * no costs accrue from memory contention; * incomplete IWM/drive emulation currently prevents support for emulation of the original 128k Macintosh and the 512k Macintosh; * insufficient user feedback is given when trying to insert new disks, or switch the system off. So lots to work on.
v2019-03-10
This release: * adopts an adaptive output quality aimed at improving the frame rate, especially on HiDPI(/'Retina') displays; * adds temporary mouse hiding to the Mac port; and * improves the emulation accuracy of AY IO ports.
v2019-03-03
Corrects a bug that could cause the Mac version to crash when starting a machine, and improves Nvidia compatibility. (Note: an earlier version of this release did not include the Nvidia fixes)
v2019-03-02
This release: * introduces a significant re-engineering of the video-handling pipeline in order to: * remove luminance aliasing errors; this should be particularly obvious on systems like the NTSC Master System and MSX when smooth scrolling horizontally; * add a monochrome composite path, now exploited by the Apple II; and * make it absolutely impossible for machines to leave noise at the edges of the display; * fixes two timing errors in the ColecoVision emulation: adds an M1 delay and makes the SN76489 access delay the proper length; * introduces European and Japanese operation modes for the MSX (with the former being in compressed 50Hz PAL-o-vision, naturally — though to me it looks a lot nicer without the NTSC TMS rainbow effect); * corrects a bug that would cause screenshots to be written incorrectly if not a multiple of 4 pixels wide; * resolves timing issues in Apple II video generation that were causing a sync fault that would curve the first line of the display; * resolves errors in MSX tape handling, specifically of the CAS file format and a bug according to which the fast tape routines could get confused and intercede during user program execution; and * causes the the Electron to handle output-buffer-full events properly so that the display doesn't jump if processing falls behind. The following are known regressions, relating to the same issue: * the Oric is temporarily not using its original colour ROM for video output; and * that's to do with the way that chroma sampling is phase aligned and my belief that what I was doing before for the Oric probably wasn't sufficiently rigorous, a side effect of which is also that chroma crawl isn't always presented correctly.
v2018-10-29
Corrects a bug that gave the ColecoVision, MSX and Master System a moderate chance of crashing upon startup.
v2018-10-26
This release: * adds provisional support for the Sega Master System and its most immediate predecessor, the SG-1000; * corrects a keypad reading error affecting the ColecoVision, thereby correcting those games that were blocked at their title screen; and * introduces even more accurate VRAM access timing for both of the TMS machines — the ColecoVision and the MSX.
v2018-09-15
* corrects an over-brightness issue affecting the MSX, CPC, ColecoVision, 2600 and Vic-20 that on some machines made some colours indistinguishable; * ensures that 'double' Apple IIe modes (80-column text, double high resolution and double low resolution) no longer output four pixels of old data on the right edge of the display; * corrects MSX pasting behaviour — previously only short strings would work; * eliminates potential near-pixel-boundary output errors on the Electron; and * ensures that window resizing can't leave a stray column of pixels on the left.
v2018-09-09
Primarily Apple II fixes: * selecting the alternate character set no longer leads to a corrupted display; * DSK files are now converted to disks with track skew; * decoding of the keyboard and audio ports is less specific; * an error in 40/80-column text selection in mixed mode is corrected; and * the two undocumented graphics modes are now implemented. On the Mac, the Info.plist has also been corrected (thanks to @MaddTheSane !) so that the app no longer incorrectly claims its icons apply to all possible file formats which share extensions with those that it recognises.
v2018-08-26
This release: * expands the 6502 emulation to include, in reverse order of sophistication: * the WDC 65C02, and the Rockwell and Synertek 65C02 subsets of it; * the original NMOS 6502, as it has to date; and * the NES 6502, for completeness, while I'm in the area. * uses its new 65C02 support to offer the Enhanced Apple IIe; * improves Apple II video emulation further: * IIe double-width video is shifted 1.75 colour cycles to the left; and * soft switches that affect graphics mode now take two cycles to come into effect. * adds a direct 'Insert Media...' option into the macOS File menu, to make the route for changing disks, etc, explicit. You can still drag and drop directly onto the window in both macOS and SDL.
v2018-08-05
This release makes big strides in its Apple II emulation: * Apple IIe emulation is added, enabling use of such noteworthy titles as Prince of Persia and Airheart; * an issue with joystick emulation is fixed, making it work correctly with a much wider array of titles; and * a spin-down error with the Disk II is fixed, which was causing large quantities of software to load a lot more slowly in the emulator than in real life. It also: * adds built-in screenshot grabbing for both the SDL (ctrl+shift+d) and macOS (command+shift+d) targets; and * eliminates a ColecoVision cartridge size sanity check that was found to be inappropriate for large quantities of homebrew software.
v2018-07-22
* corrects a potential TMS (i.e. MSX and ColecoVision) output error that could lead to 8 pixels of garbage next to 8px-wide sprites; * resolves a long-standing error whereby fullscreen-mode use could leave accumulated drawing errors on the right edge of the display on machines with less-predictable sync (so: primarily the Amstrad CPC and ZX80/81); * adds joystick input support to the MSX for both SDL and macOS; and * adds support for real joysticks under macOS. Without any configuration options for now.
v2018-07-11
Observing that the rule of thumb for a new release is improved functionality, not quantity of changes: * corrects a regression that had prevented UEFs from launching an Electron; * corrects a TZX parsing error that inhibited usage of many files from the MSX Files Repository at http://tsx.eslamejor.com (or anything else with a custom info block); and * most strongly affecting the SDL version, ensures that only ROMs a machine actually needs are sought. That final bullet point actually encompasses a significant simplification of machine startup conventions, supposing you're watching the source.
v2018-07-05
Contains a substantial alteration of the data structure used to hold [arbitrarily multi-rate] modified diskettes, leading to much more predictable behaviour for certain combinations of clock rate — in particular the Disk II when written to from either the Apple II or the Oric. Also: * tweaks the CPC's visible area again, better to match the CTM monitor; * corrects an AY reading bug whereby values loaded onto the data bus remained visible for all time, even when the bus was ostensibly running in the other direction; * implements open collector logic for reading from an AY IO register that is ostensibly in output mode; and * takes yet another crack at trying to rationalise Apple II .NIB handling with emulating a real disk drive.
vuntagged-83a648386d4da3db578a
For the Apple II: * adds joystick emulation, completing the set of base II+ hardware; * introduces an optional attempt to accelerate DOS 3.3 loading; and * attempts to improve NIB support. But that might be a losing battle. It's an emulator fiction format, for inaccurate emulators; very hard to reconcile with real hardware (or emulated real hardware). For the Amstrad CPC: * properly models the Gate Array's handling of the CRTC's HSYNC period to include blank and a colour burst; * thereby adds support for composite video output; * adds joystick emulation; and * tweaks the Z80 very slightly to pass the WinAPE Z80 timing tests. For the SDL version: * real joysticks are now properly transcribed to emulated machines; and * the ROM path can be specified on the command line, supposing you don't want it to be system-wide. For the Mac version: * your real keyboard can now be toggled between being a keyboard and pretending to be a joystick; and * activity indicators are now available: disk is the main thing exposed. For all machines and versions: * I've tightened up the inter-frame blending a little; the display should be less soft.
v2018-06-03
Bug fixes: * I was decoding the quadrature channel of NTSC colour as though it had PAL-style alternated phase. Which for various reasons caused half of the Apple II high-resolution colours to be swapped. This is now fixed; * the validation applied to ZX81 .p files was too strict, causing at least one title (Humpty Dumpty) to be rejected. It has now been loosened; * my attempt at 1bpp texture decoding on the GPU had precision issues in practice, affecting the output of the Apple II and the ZX80/81. At least for now I've switched to 1 byte per pixel; * a port decoding error put the ZON-X AY read register in the wrong location in the ZX81 IO map. It's now where it should be; and * it turned out that the machine-visible copy of AY registers (as audio is generated on a separate thread, there are two copies) wasn't being initialised correctly. It is now.
v2018-05-24
* improves Disk II emulation, introducing support for writing to DSK and WOZ files, albeit temporarily at a performance penalty; * corrects a regression in Oric Microdisc support; and * introduces the proper penalty for SN76489 access to the ColecoVision.
v2018-05-15
* adds provisional Apple II emulation; * correspondingly adds Pravetz/8DOS support for the Oric; * corrects a row counter reset bug on the ZX80/81; * corrects handling of ADF files for the Electron; * reintroduces text pasting on the Mac; and * substantially improves pasting into the Oric.
v2018-04-13
* corrects timing of the raster count increment under both NTSC and PAL for the VIC 6560; * reduces the amount of data uploaded to the GPU when running a ZX80 or ZX81; and * ensures that when creating a new Vic-20, the user's selection of whether to include a 1540 is honoured.
v2018-04-07
A Vic-20-heavy release: * corrects phase and luminance for the VIC for both PAL and NTSC; * introduces S-Video support for appropriate machines, which in practice means for the MSX and the Vic-20. The Vic-20 sees a substantial improvement; * corrects machine-configured low-pass audio filters, which makes Vic-20 audio a lot more accurate; and * makes minor optimisations to the Vic-20 specifically.
v2018-03-23
Corrects a few immediately-apparent issues with yesterday's build: * improper import paths broke the Linux build; * any C1540 image would cause a crash; and * the CPC static analyser would block the intended expansion of HFE support.
v2018-03-22
* improves the static analyser's ability to discern CPC and Oric disks; as a result HFE is now a supported file format for all disk platforms other than the MSX; * improves the dynamic analyser's ability to spot a malfunctioning Atari 2600; as a result BIN is now a supported file format for the ColecoVision; * formalises calculation of output volume when multiple audio devices are present to avoid overflow errors; and * resolves a handful of cases of undefined behaviour, in particular a race condition affecting machine shutdown.
v2018-03-07
Two audio changes: * adds ZON X emulation to the ZX81; * corrects an error that could cause improper AY output through a timing error when using the ColecoVision's Super Game Module.
v2018-03-04
Introduces joystick input via the keyboard in the SDL target for machines with no keyboard. So, specifically: makes the ColecoVision usable from the SDL version.
v2018-03-03
Adds an emulation of the ColecoVision, including MegaCarts and the Super Game Module. In pursuit of which it: * corrects two separate latent errors in Z80 NMI handling; and * corrects a mode selection error in the TMS, and finally adds multicolour mode. A completely distinct timing error in the MSX was also discovered and corrected.
v2018-02-21
Introduces a new piece of functionality: dynamic analysis. When the emulator can't determine up front exactly which configuration is correct for a piece of media, it just tries several of them simultaneously and tracks how likely it is that each is correct. Whichever is winning is the one presented to the user. Through this mechanism it: * substantially improves MSX MegaROM handling.
v2018-01-18
* fixes handling of 8kb Electron and MSX ROMs; * widens the UTI types declared by the Mac version; and * introduces, at least provisionally, a Mac application icon.
v2018-01-15
Corrects a counting error in bandwidth allocated to composite video, significantly improving the 2600, Vic-20 and MSX displays. As the MSX composite output now accurately models its target, that option is now provided via the Mac GUI.
v2018-01-13
Adds provisional emulation of the MSX 1, including support for: * tape images, as CAS or TSX; * disk images, as DSK or DMK; and * ROM images, although auto detection (i.e. guesswork) for paging schemes for those greater than 32kb is often questionable. Work on that latter point is ongoing.
v2017-11-23
Quick fixes stemming from yesterday's release: * the Electron's Mode 3 is now correctly timed; * Oric video output is rendered correctly on the SDL target.
v2017-11-22
Clock Signal is now explicitly cross-platform; an experimental Linux/BSD-targetted SDL build target has been added. Known issues: * no joystick input makes the Atari 2600 and some Vic-20 titles unusable. Some translation of previously Mac-side process to generic C++ has occurred so other minor regressions are possible, but should be unlikely.
v2017-11-03
Rejigs the way that files may be held internally to defeat a presumption of a single opening and closing. Thereby allows for: * CPC .DSK files are now writeable.
v2017-10-24
* reconstructs the disk subsystem, leading to improvements to the 8272 and to floppy drive emulation across the board; * implements write support for HFE files; * switches to a platform-neutral system of keyboard mapping, simultaneously correcting minor errors in the CPC key map and adding missing keys to the Vic-20; * ... including the restore key, which is notable because it is wired up to a VIA control line and thereby can generate an NMI; * corrects access alignment mistakes in the Electron and CPC video subsystems, giving a minor speed improvement on x86 and making the code much more likely to function on other architectures; * corrects various other accidental uses of undefined behaviour, mostly related to variable initialisation, and ports a central piece of timing to C++11; * corrects potential start and end of line artefacts on the Electron's display; and * includes very minor 6845 accuracy improvements. But it's not there yet.
v2018-08-31
A bug fix release, resolving: * a race condition that could cause all machines with audio output (i.e. everything except the ZX80 and ZX81) to crash the application when shutting down; and * a failure properly to establish initial state that could cause the Electron to fail properly to issue its media loading commands.
v2017-08-27
* introduces drop-onto-the-window as a means for replacing the currently-inserted media in any machine; * improves CPC emulation accuracy (but doesn't yet perfect it); * introduces read-only HFE file format support (for the CPC only until detection gets better); * substantially improves logic for deciding how to launch a CPC disk image; * improves emulator's ability to distinguish ZX80 and ZX81 content; * reduces processing costs almost across the board.
v2017-08-16
Fixes: * an error in disk write accumulation affecting the Electron and Oric; reformatting a disk and then writing to a sector would make later sectors inaccessible; * PAL gamma is now enforced for PAL machines, which makes a visible difference to the Oric, Vic-20 and Atari 2600; * a false assumption about counter reloading in the AY that could produce scratchy audio in the Oric; and * the Vic's colour palette if configured as an NTSC machine. Also introduces an early, provisional version of Amstrad CPC emulation. It's not yet cycle perfect, so further work is required.
v2017-07-30
Significantly rejigs Z80 timing to permit proper half-cycle accurate WAIT sampling, with wide knock-on code effects as I've performed some codification of the manner of receipt for clock signals. Also improves Acorn Electron CSW support; that machine has a high-level tape interface for which the logic is fairly opaque so quite a lot depends on my implementation decisions and I've switched from plain thresholding to applying a PLL to zero crossings.
v2017-07-15
This release adds provisional ZX80 and ZX81 emulation. It also corrects potential graphical glitching that affected all machines, and introduces CSW file format support for all tape-based machines.
v2017-05-16
Makes some formal decisions re: handling discrete composite functions, and corrects an issue with recognition of GCR-encoded disks.
v2017-05-14
Corrects Vic-20 colours, and introduces a much faster fast loading mode for it.
v2017-03-26.2
A quick fix to the earlier release, correcting: * a bug in the TIA that could cause border-period motion events to occur prematurely†; and * an incomplete adaptation of the 6502 to its slightly improved multiple bus listener semantics, that was causing issues with Atari titles that execute code from the RIOT's RAM. † most visibly, causing horizontal blocks of colour on the left margin in Pitfall 2 and Double Dragon, though I'm still not 100% sure that what's happening now is correct, it's clearly more correct.
v2017-03-26
Introduces significant enhancements to the Atari 2600 emulation, greatly improving compatibility, including: * fixes to the RIOT timer; * improvements to the TIA emulation; * support for all of the 2600's contemporaneous bankswitching schemes, and the appropriate detection code to select one.
v2017-01-30
A quick bug fix to the previous release, correcting: - a potential race condition memory access error on vertex buffer construction between the emulation thread and the OpenGL thread; and - a mistaken use of `memcpy` where it should have been `memmove` in audio processing — i.e. part of the audio buffer was left in an undefined state†. † though I suspect no user-perceivable difference with the current implementations of both on the one platform I happen presently to support.
v2017-01-27
Decreases GPU use when in composite mode; attempts to introduce icons for associated file types; halves the clock divider applied by the AY as I attempt to seek a proper implementation.
v2017-01-01
This adds implementations of the three WD17xx 'Type 3' commands — read track, write track and read address.
v2016-12-31
Introduces writeable disks for the Oric and Electron; switches to using the Oric's original colour ROM for composite colour generation, with a temporary bump in composite sampling resolution and corresponding increased GPU burden.
v2016-12-06
Introduces Microdisc floppy emulation for the Oric, as well as improving its static analyser and hopefully decreasing display processing costs across the board.
v2016-11-08
Primarily fixes the interpretation of Oric .TAP files; also a single 6522 fix that benefits both the Oric and the Vic.
v2016-11-03
Improved Oric support, particularly to add typing and fast loading.
v2016-10-20
An initial version with Oric emulation and uncountably many issues with its Oric emulation.

Captures d'écran

Un émulateur affichant des jeux rétro sur écran composite avec des interfaces de "Clock Signal" et des options de jeu comme Pitfall et Chase HQ Attribut alt : Capture d’écran d’un logiciel émulant des jeux vidéo anciens comme "Pitfall!" et "Chase H.Q" sur plusieurs systèmes rétro avec interface utilisateur et paramètres de jeu