Clock Signal: back again for the Mac and UNIX-ishes
Posted: Mon Mar 05, 2018 9:54 pm
Hi all. I wrote a ZX80/81 emulator back in 2011, of which I am sure any recollection has long ago fallen by the wayside. If you recall it at all, it might be as the emulator that burnt your CPU by simulating and propagating every single bus transition, or it might be because it was a good OS X-centric option.
I failed to keep this forum abreast of what happened next, so: what amounts to a version 2.0 is available. It's a rewrite and, nowadays, a multimachine emulator. Compared to the previous:
The full CRT emulation has a potentially-interesting outcome: a new frame is generated every time your computer wants one. Each frame is different, just like it would be if you pointed a high-refresh-rate video camera at a CRT.
This means:
Run as many ZX80s and ZX81s as you like at the same time. Put them on various screens. Put them into tabs. Have fun.
The SDL version is primarily intended for launching from the command-line. I expect people to associate it with the appropriate file type — O, P or TZX [EDIT: and CSW] — then just double click to launch the ZX80 or ZX81 software. Like there's no emulator at all. You want to run a piece of classic software so you launch it exactly like any other piece of software. No additional level of indirection as you launch an emulator and navigate.
There are a bunch of other machines supported, all 6502 or Z80s at the minute, and it's in its third year of active development so feedback is likely to be acted upon.
It would also be greatly appreciated.
EDIT: having failed to record any videos lately, here's an animated GIF of the emulated ZX80 that I happen to have posted elsewhere:
That hopefully demonstrates what I'm talking about re: CRT emulation. You'll notice that other things come for free, such as having the proper pixel aspect ratio. And don't worry! Since it is a real emulation of the real electronics, the ZX81 doesn't bounce around. It's not some subjective post hoc effect, it's just the emulated CRT trying to regain synchronisation after the emulated ZX80 introduces an abrupt phase change.
I failed to keep this forum abreast of what happened next, so: what amounts to a version 2.0 is available. It's a rewrite and, nowadays, a multimachine emulator. Compared to the previous:
- it retains the original's half-cycle timing precision and full bus communication fidelity;
- but, it rearranges itself to talk at a higher level: partial machine cycles, not individual signal transitions;
- it therefore communicates exactly the same quality of information and samples all the correct inputs exactly as well as it ever did, but substantially reduces your CPU's load;
- it spends some of that saving on a full hardware-level emulation of a CRT. Composite input, flywheel syncs, the lot. Though since neither the ZX80 nor the ZX81 generate a colour burst, the signal isn't filtered all that strongly and there are no false colour artefacts. But it is low-pass filtered a little, because that's what happens in real life.
The full CRT emulation has a potentially-interesting outcome: a new frame is generated every time your computer wants one. Each frame is different, just like it would be if you pointed a high-refresh-rate video camera at a CRT.
This means:
- no emulator-classic judder as the fiction of pushing a whole frame at a time causes a 50Hz to your display mapping that, if it's 60Hz, just shows every fifth frame twice; and
- if you're a gaming type who obsesses about latency to the extent of having bought a 120Hz or a 144Hz monitor, this emulator will accordingly benefit. Get a full 120 or 144 distinct frames a second. Have a video latency of only 1/120th or 1/144th of a second.
Run as many ZX80s and ZX81s as you like at the same time. Put them on various screens. Put them into tabs. Have fun.
The SDL version is primarily intended for launching from the command-line. I expect people to associate it with the appropriate file type — O, P or TZX [EDIT: and CSW] — then just double click to launch the ZX80 or ZX81 software. Like there's no emulator at all. You want to run a piece of classic software so you launch it exactly like any other piece of software. No additional level of indirection as you launch an emulator and navigate.
There are a bunch of other machines supported, all 6502 or Z80s at the minute, and it's in its third year of active development so feedback is likely to be acted upon.
It would also be greatly appreciated.
EDIT: having failed to record any videos lately, here's an animated GIF of the emulated ZX80 that I happen to have posted elsewhere:
That hopefully demonstrates what I'm talking about re: CRT emulation. You'll notice that other things come for free, such as having the proper pixel aspect ratio. And don't worry! Since it is a real emulation of the real electronics, the ZX81 doesn't bounce around. It's not some subjective post hoc effect, it's just the emulated CRT trying to regain synchronisation after the emulated ZX80 introduces an abrupt phase change.