TomHarte/CLK
GitHub: TomHarte/CLK
CLK 是一款低延迟复古计算机模拟器,旨在精确模拟经典硬件以无缝运行旧软件。
Stars: 1116 | Forks: 61

# 时钟信号
时钟信号('CLK')是一款力求“隐形”的模拟器。用户直接启动经典软件,避免了模拟器和老式机器通常带来的学习曲线。
macOS 和源代码发行版 [托管在 GitHub 上](https://github.com/TomHarte/CLK/releases)。基于 Qt 的 Linux 版本可作为 [Snap](https://snapcraft.io/clock-signal) 获取。
这款模拟器旨在提供:
* 单击加载任何受支持平台的任何源媒体;
* 侧重于信号处理,以精确重现原始输出;
* 尽可能减少延迟。
目前它包含对以下机器的模拟:
* Acorn Electron;
* Amstrad CPC;
* Apple II/II+ 和 IIe;
* Atari 2600;
* Atari ST;
* BBC Micro;
* ColecoVision;
* Commodore Vic-20;
* Enterprise 64/128;
* Macintosh 128K、512K、512Ke 和 Plus;
* MSX 1 和 2;
* Oric 1/Atmos;
* Sega Master System;
* Sinclair ZX80/81;
* Sinclair ZX Spectrum;以及
* Thomson MO5/6。
以下机器也已存在,但仍在开发中:
* Acorn Archimedes;
* Commodore Plus 4;
* Commodore Amiga;以及
* 早期 PC 兼容机。
在 Mac 上,它是一个原生的 Cocoa 和 Metal 应用程序;在 Linux、BSD 和其他 UNIX 及类 UNIX 系统上,它使用 OpenGL,并且可以使用 Qt 或 SDL 构建。
## 单步加载
通过静态和运行时分析,CLK 会自动选择并配置合适的机器来运行任何提供的磁盘、磁带或 ROM;发出运行磁盘、磁带或 ROM 上软件所需的任何命令;并在可行时提供加速加载。
安装 CLK 后,加载软件的完整过程——即使您从未使用过它所运行的机器——就是:
1. 在您的操作系统中找到它;
2. 双击它。

无需费力创建新机器、将媒体插入其中或弄清楚哪条加载命令对应这个软件,也没有导入过程——CLK 不会尝试接管您的文件或取代您的操作系统。
将您模拟的软件标题放在桌面上、Dock 中或您通常习惯启动软件的任何其他地方,然后单步启动。就像任何其他桌面软件一样。
## 信号处理
考虑一台普通的、未改装的 Commodore Vic-20。它唯一的视频输出是复合视频。因此,模拟机器的唯一视频输出也是复合视频。为了显示视频输出,您的 GPU 必须解码复合视频。因此,复合视频伪影会正确呈现——这不是事后滤波的结果,而是因为真实的信号正在被真实地处理。
音频生成也投入了类似的努力。如果真实机器通常在 192Khz 下生成音频,那么模拟器就会生成一个 192Khz 的源信号,并将其滤波到主机可以输出的频率。
### 采样
## 低延迟
产生的显示是模拟的 CRT,带有磷光衰减。因此,如果您有一台 140Hz 4K 显示器,它可以在 4K 分辨率下每秒产生 140 个不同的帧。延迟由主机硬件决定,而不是模拟的机器或模拟器。
音频延迟与帧率分离,通常限制在 5-10 毫秒。
## 精确模拟
精确性是一个用户体验问题;模拟器越精确,用户就越有可能无需进一步干预就能运行他们感兴趣的所有软件。
这款模拟器尝试对所有支持的机器进行周期精确的模拟。在某些情况下,它做到了。
## 附加屏幕截图


时钟信号('CLK')是一款力求“隐形”的模拟器。用户直接启动经典软件,避免了模拟器和老式机器通常带来的学习曲线。
macOS 和源代码发行版 [托管在 GitHub 上](https://github.com/TomHarte/CLK/releases)。基于 Qt 的 Linux 版本可作为 [Snap](https://snapcraft.io/clock-signal) 获取。
这款模拟器旨在提供:
* 单击加载任何受支持平台的任何源媒体;
* 侧重于信号处理,以精确重现原始输出;
* 尽可能减少延迟。
目前它包含对以下机器的模拟:
* Acorn Electron;
* Amstrad CPC;
* Apple II/II+ 和 IIe;
* Atari 2600;
* Atari ST;
* BBC Micro;
* ColecoVision;
* Commodore Vic-20;
* Enterprise 64/128;
* Macintosh 128K、512K、512Ke 和 Plus;
* MSX 1 和 2;
* Oric 1/Atmos;
* Sega Master System;
* Sinclair ZX80/81;
* Sinclair ZX Spectrum;以及
* Thomson MO5/6。
以下机器也已存在,但仍在开发中:
* Acorn Archimedes;
* Commodore Plus 4;
* Commodore Amiga;以及
* 早期 PC 兼容机。
在 Mac 上,它是一个原生的 Cocoa 和 Metal 应用程序;在 Linux、BSD 和其他 UNIX 及类 UNIX 系统上,它使用 OpenGL,并且可以使用 Qt 或 SDL 构建。
## 单步加载
通过静态和运行时分析,CLK 会自动选择并配置合适的机器来运行任何提供的磁盘、磁带或 ROM;发出运行磁盘、磁带或 ROM 上软件所需的任何命令;并在可行时提供加速加载。
安装 CLK 后,加载软件的完整过程——即使您从未使用过它所运行的机器——就是:
1. 在您的操作系统中找到它;
2. 双击它。

无需费力创建新机器、将媒体插入其中或弄清楚哪条加载命令对应这个软件,也没有导入过程——CLK 不会尝试接管您的文件或取代您的操作系统。
将您模拟的软件标题放在桌面上、Dock 中或您通常习惯启动软件的任何其他地方,然后单步启动。就像任何其他桌面软件一样。
## 信号处理
考虑一台普通的、未改装的 Commodore Vic-20。它唯一的视频输出是复合视频。因此,模拟机器的唯一视频输出也是复合视频。为了显示视频输出,您的 GPU 必须解码复合视频。因此,复合视频伪影会正确呈现——这不是事后滤波的结果,而是因为真实的信号正在被真实地处理。
音频生成也投入了类似的努力。如果真实机器通常在 192Khz 下生成音频,那么模拟器就会生成一个 192Khz 的源信号,并将其滤波到主机可以输出的频率。
### 采样
| 1:1 Pixel Copying | Composite Decoded |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 1:1 Pixel Copying | Correct Aspect Ratio, Filtered |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
标签:Cocoa, DNS解析, JSON 请求, Linux应用, macOS应用, Metal, OpenGL, Qt框架, SDL框架, 信号处理, 单击加载, 复古游戏, 复古游戏机, 复古计算机, 多平台支持, 实时信号处理, 嵌入式系统, 延迟优化, 开源项目, 服务识别, 游戏机模拟, 硬件模拟, 经典软件, 计算机历史, 计算机模拟, 高精度模拟







































