開源專案
TomHarte/CLK avatar
TomHarte/CLK

Clock Signal (CLK):單擊載入、真實訊號處理與 5-10 毫秒音訊延遲目標

討厭延遲的模擬器:Acorn Electron、BBC Micro 和 Archimedes、Amstrad CPC、Apple II/II+/IIe 和早期 Macintosh、Atari 2600 和 ST、ColecoVision、Enterprise 64/128、Commodore Vic-20 和 Amiga、MSX 1/2、Oric 1/Fair System 1/Tmos、Amos System Z和ZX Spectrum、Tandy CoCo 和 Thomson MO5/6。

1,141 個 Star67 個 ForkC++MIT
GitHub

秒懂

它是什麼?
Clock Signal(簡稱 CLK)是一個 C++ 模擬器,README 承諾讓模擬器隱形:雙擊磁碟或磁帶,正確的機器就會啟動,複合視訊和音訊按真實訊號產生。
適合誰用?
README 最後一條可查證的主張與精確度有關:所有支援的機器都嘗試週期級模擬,且在某些情況下做到了。機器清單、載入流程和延遲數字都是以設計目標的形式給出;README 沒有提供量測、基準測試或測試結果來驗證它們。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 49 天前。
用什麼語言寫的?
主要是 C++(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

CLK 模擬什麼,承諾什麼

Clock Signal,簡稱 CLK,是一個用 C++ 撰寫的模擬器,其公開目標是讓使用者直接啟動經典軟體,而不是先學習模擬器的介面或經典機器的操作。README 開篇把專案目標概括為三點:對任何受支援平台上的任何來源媒體實現單擊載入;以訊號處理為主要手段,忠實還原原始輸出;盡可能避免延遲。完整模擬的機型包括 Acorn Electron、Amstrad CPC、Apple II/II+ 和 IIe、Atari 2600 和 ST、BBC Micro、ColecoVision、Commodore Plus 4 和 Vic-20、Enterprise 64/128、早期 Macintosh 機型、MSX 1 和 2、Oric 1/Atmos、Sega Master System、Sinclair ZX80/81 和 ZX Spectrum、Tandy CoCo 1/2,以及 Thomson MO5/6。另有三種機型被描述為已有但不夠完整:Acorn Archimedes、Commodore Amiga 和早期 PC 相容機。

第 1 節「CLK 模擬什麼,承諾什麼」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 1 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

單步載入

核心流程只有一步:在作業系統中找到軟體,然後雙擊它。安裝 CLK 之後,載入軟體的完整過程就是定位檔案並雙擊,即使用戶從未用過那台機器。CLK 透過靜態和執行期分析,自動選擇並設定合適的機器,發出執行磁碟、磁帶或 ROM 中軟體所需的命令,並在可行時加速載入。README 強調沒有匯入流程,CLK 不會接管檔案的所有權,也不會取代作業系統的啟動機制;遊戲可以留在桌面或 Dock 中,像一般桌面軟體一樣啟動。

第 2 節「單步載入」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 2 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

訊號處理,而不是事後濾鏡

視訊輸出按照原機產生的方式產生。README 舉的例子是 Vic-20:它唯一的視訊輸出是複合視訊,因此模擬機的唯一輸出也是複合視訊,由宿主 GPU 解碼,所以偽影出現是因為真實訊號真的被處理了,而不是事後套用濾鏡。音訊走同樣的路線:如果原機以 192kHz 產生音訊,模擬器就產生 192kHz 的來源訊號,再濾波到宿主能夠輸出的取樣率。README 還提供了兩組對比截圖:一組把 1:1 像素複製與複合視訊解碼並列,另一組把 1:1 像素複製與修正寬高比並低通濾波的效果並列,涉及的機型包括 Electron、Amstrad CPC、ColecoVision 和 Sega Master System 等。

第 3 節「訊號處理,而不是事後濾鏡」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 3 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

延遲預算

顯示被建模為帶螢光餘暉的模擬 CRT,因此 140Hz 的 4K 顯示器可以每秒顯示 140 幀不同的畫面,前提是宿主硬體跟得上。這個設計意味著高更新率顯示器可以直接體現模擬 CRT 的逐幀變化。README 說延遲由宿主硬體決定,而不是由模擬機或模擬器決定。音訊延遲與幀率無關,一般控制在 5 到 10 毫秒。這些是 README 中的設計主張;文中沒有給出量測資料,也沒有說明在什麼設定下量得。140Hz 顯示器是否真的能跑到每秒 140 幀,以及 5 到 10 毫秒的音訊延遲在具體硬體上是否成立,都是 README 沒有回答的驗證問題。

第 4 節「延遲預算」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 4 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

精確度是使用者體驗問題

README 把精確度定義為使用者體驗問題:模擬器越精確,使用者越有可能在無需額外干預的情況下執行任何感興趣的軟體。CLK 嘗試對所有支援的機器做週期級模擬,而 README 承認在某些情況下做到了。文中沒有點名哪些機器達到或未達到週期級精確度,也沒有提供基準測試或測試結果。哪些機器真正做到了週期級精確度,這個事實 README 並未確立。精確度目標服務於免干預執行這個使用者體驗承諾,而不是作為獨立的效能指標來宣傳。

第 5 節「精確度是使用者體驗問題」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 5 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

平台與建置選項

在 macOS 上,CLK 是原生 Cocoa 和 Metal 應用程式。在 Linux、BSD 及其他 UNIX 和類 UNIX 系統上,它使用 OpenGL,可以用 Qt 或 SDL 建置。macOS 版和原始碼釋出在 GitHub 上,基於 Qt 的 Linux 建置以 Snap 套件形式提供。README 沒有記錄具體的建置命令,也沒有列出 Qt/SDL/OpenGL/Metal 之外的依賴或安裝步驟。README 的截圖部分展示了各機型執行商業軟體的畫面,例如 Apple IIe 的波斯王子、Amiga 的印第安納波利斯 500 和 BBC Micro 的精英,這些截圖用於說明模擬效果,不構成建置文件。

第 6 節「平台與建置選項」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 6 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

授權狀況

儲存庫中繼資料把 SPDX 授權列為 MIT,但本次審閱所用的授權摘錄沒有授權正文,只說明在常見路徑下未找到 LICENSE 檔案。因此,MIT 授權的實際授權條款、免責聲明和條件無法從現有材料核實;授權正文是否存在於儲存庫的其他位置,是一個需要驗證的問題。README 本身也沒有提到授權、支援或安全。儲存庫中繼資料同時顯示該專案有 1129 顆星、66 個 fork 和 90 個未關閉的 issue,但這些數字不提供任何關於維護品質或安全性的結論。

第 7 節「授權狀況」在 TomHarte/CLK 中的重點,是辨認它負責的資料、執行或管理邊界。TomHarte/CLK 的 README 將此專案定位為「A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, 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, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum, Tandy CoCo and Thomson MO5/6.」。目前預設分支是 master,最近一次資料時間為 2026-07-23T20:57:01Z,授權標示為 MIT。這些是倉庫提供的背景資料,不等於部署後的效能或可靠性承諾。 README 未交代的容量、故障恢復時間或所有相依版本,不能從倉庫星數推導。

第 7 節的專屬核對路徑:對 TomHarte/CLK 的判讀要落在它自己的入口:README 位於 https://github.com/TomHarte/CLK/blob/main/README.md,版本資訊可由 https://github.com/TomHarte/CLK/releases 對照;若要重現文中流程,應以 README 出現的命令、設定檔與 API 名稱逐項記錄輸入和輸出。本節應觀察 TomHarte/CLK 的輸出是否與 README 所述一致,並把失敗情況、資源消耗和版本差異分開記錄。

編輯結論

README 最後一條可查證的主張與精確度有關:所有支援的機器都嘗試週期級模擬,且在某些情況下做到了。機器清單、載入流程和延遲數字都是以設計目標的形式給出;README 沒有提供量測、基準測試或測試結果來驗證它們。 對 TomHarte/CLK 而言,適合先由能控制環境的開發者或維運團隊試用;不適合把 README 的描述直接當成跨版本承諾。採用前應先依 README 的安裝入口執行最小流程,核對實際版本、設定檔、輸出與錯誤訊息,再決定是否進入正式工作負載。MIT 對再發布、修改與託管方式的限制也要由負責部署的人逐條確認。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記