工程趣聞 2026 年 4 月 26 日

2026-04-26 — C64 音樂原始碼、Shor 演算法破解橢圓曲線、Discret 11 逆向、Mine Lisp IDE、Lute

Martin Galway 公開 Commodore 64 …

Martin Galway 公開 Commodore 64 遊戲音樂的 6510 組合語言原始碼

GitHub · 2026-04-26

1980 年代英國遊戲作曲家 Martin Galway 將其為 Commodore 64 創作的遊戲配樂的組合語言原始碼發布於 GitHub,授權為 GPL-3.0。這批程式碼涵蓋了 Wizball、Athena、Times Of Lore、Insects In Space 等作品,以及 Galway 設計的兩代音樂播放器的完整實作。

SID 晶片與音樂播放器架構

Commodore 64 搭載的 MOS Technology 6581/8580 SID(Sound Interface Device)晶片提供三個獨立合成聲音通道,每個通道支援四種波形(三角波、鋸齒波、矩形波、雜訊)、ADSR 包絡(Attack/Decay/Sustain/Release)控制,以及環形調製和濾波器。Galway 的第一代音樂播放器於約 1984 年設計並沿用至 1987 年中期;第二代以 Athena 作品首次亮相,改善了多聲部同步與音效/音樂的混合方式。

版權背景

Galway 在創作這批音樂時並未持有版權(屬公司所有),其後從 Infogrames 取得權利後才得以此形式公開。repository 的 100% 內容為組合語言原始碼,包含 wizball.asmgameover.asm 等檔案,以及 Ocean Software 組合器指引文件。

歷史意義

SID 音樂是 1980 年代電腦文化的標誌性組成部分,衍生出獨立的 chiptune 音樂社群(High Voltage SID Collection 已收錄超過 50,000 首 SID 作品)。此次原始碼公開讓研究者可直接分析作曲家如何在 3 個硬體音頻通道和有限的 CPU 時間(PAL C64 的 6510 以 985 kHz 運行)的限制下編排複雜音效。

原始來源:MartinGalway/C64_music — GitHub


在真實 IBM 量子硬體上實作 Shor's Algorithm 破解橢圓曲線私鑰

GitHub · 2026-04-26

yuvadm 的 quantumslop 專案實作了以 Shor's Algorithm 在真實 IBM 量子電腦上求解橢圓曲線離散對數問題(ECDLP),目標曲線方程為 y² = x³ + 7(與比特幣 secp256k1 同形式)。專案作為 Q-Day Prize Challenge 的提交,記錄了 4 位至 17 位元挑戰的求解結果及對應的量子電路細節。

電路規模與保真度

量子電路的複雜度隨位元數指數增長:4-bit 挑戰需 11 個 qubit、774 個雙量子位元閘(估計電路保真度約 2.1%);17-bit 挑戰需 69 個 qubit、111,816 個閘(估計保真度 10⁻²⁴⁴)。實際執行於 IBM ibm_torino、ibm_fez、ibm_kingston、ibm_marrakesh 等 Heron r2 後端。

雜訊容忍分析

在 6-bit 挑戰上(群階 n=31),以每次執行 8 shots 進行 10 次獨立實驗,成功還原私鑰 4 次(40%)。若結果完全隨機,理論成功率約 20%(Monte Carlo 模擬基準)。單尾二項式檢定:P(X ≥ 4 | n=10, p=0.20) = 0.121,邊際統計顯著。

成功的關鍵侷限

動態電路(dynamic circuits)在 8-bit 以上需要全 QPU 同步——所有 156 個物理 qubit 必須閒置等待古典控制器處理條件指令,成為主要效能瓶頸。實際可靠求解範圍目前限於低位元數挑戰;17-bit 的成功(私鑰 1,441)在統計上可能仍有隨機成份,但提供了在真實硬體上執行完整 Shor's Algorithm 流程的罕見紀錄。

原始來源:yuvadm/quantumslop — GitHub


Discret 11:逆向工程 1980 年代法國付費電視的模擬加擾系統

fabiensanglard.net · 2026-04-26

Fabien Sanglard 逆向工程了 Discret 11,這套由 Thomson 設計、於 1984 年 11 月 4 日隨 Canal Plus 開播的模擬電視加密系統,解析其逐行移位加擾機制與 LFSR 金鑰排程。

加擾機制

Discret 11 使用 11-bit 金鑰對 SECAM 訊號的每條掃描線進行獨立加擾。SECAM 每幀有 576 條可見行,加擾以 6 幀為一個週期(LFSR 每 6 幀重置)。每條掃描線的延遲量由 LFSR 產生的偽隨機值決定,共三種可能:0、13 或 26 像素。延遲操作的物理實現是將掃描線右移並以黑色填補左側,利用 SECAM 電視的水平 overscan 區域:右移「丟失」的像素恰好等於左側填補的量,接收端解碼時只需反向移位。

金鑰派生與防破解設計

使用者輸入 8 位數字代碼(非 4 位,刻意防止暴力破解和金鑰分享),代碼與儲存在解碼器 EEPROM 中的設備序號經硬體雜湊後,生成六個 11-bit 金鑰,分別對應不同內容類別。解碼器同步機制依賴第 310 和 622 行的黑白閃爍標記,兼作觀眾規模統計用途。音訊以 12.8 kHz 載波 AM 調製,無真正加密保護。

迅速破解與退場

儘管設計包含多層防破解措施,電路圖於 1984 年洩漏後盜版快速蔓延。Discret 11 最終於 1992 年開始被 Nagravision 取代,1995 年退役。

原始來源:Discret 11 — Fabien Sanglard


Mine:專為 Coalton 與 Common Lisp 打造的整合開發環境

Coalton Project · 2026-04-24

Coalton 語言團隊發布 Mine,一個專門為 Coalton 和 Common Lisp 設計的 IDE,採用「單一下載、開箱即用」的設計哲學,目標是降低 Lisp 開發環境的傳統高設定門檻。

Coalton 語言背景

Coalton 是嵌入 Common Lisp 的靜態型別函式語言,借鑑 Haskell 的型別類別系統,並可與 Common Lisp 雙向互操作。傳統上,Common Lisp 開發依賴 Emacs + SLIME/SLY + ASDF + Quicklisp 的組合,每個元件均需個別安裝和配置,對新使用者造成顯著摩擦。

核心功能

Mine 提供熱重載與動態除錯(Common Lisp 的 image-based 開發模型)、可讀的堆疊追蹤整合除錯器、跳至定義、帶套件別名感知的自動補全、函式簽名與型別的即時顯示、結構化編輯(S-expression 層級操作)以及 Quicklisp 整合的套件管理。IDE 刻意不支援擴充性,維持固定的外觀和操作方式,以降低「如何設定」的認知負擔。

設計立場

Mine 明確定位為「不是文字編輯器框架」,這與 Emacs 生態的深度客製化傳統形成對比。其優先級是讓初學者在不了解 Lisp 工具鏈歷史的情況下也能立即開始開發,同時提供足以支援專業使用的功能深度。

原始來源:Introducing mine — Coalton Project


Lute:Luau 語言的獨立通用執行時

lute.luau.org · 2026-04-26

Lute 是 Luau(Roblox 的 Lua 方言)的新型獨立執行時,目標是讓 Luau 脫離 Roblox 平台限制,可用於通用腳本和工具開發。

Luau 語言特性

Luau 由 Roblox 基於 Lua 5.1 開發並開源,主要新增特性包括漸進式型別系統(支援型別推斷和型別標注,但不強制)、表達式型別(type expressions,含泛型)、字串插值(`Hello, {name}!`)、位元運算符等,以及高效能的 Codegen JIT 編譯器。相較原版 Lua,Luau 在沙盒安全性上也有強化,適合在不信任環境中執行使用者腳本。

Lute 的定位

Leno 和 Bun 為 JavaScript/TypeScript 提供了「脫離 Node.js」的執行時選項,Lute 類似地嘗試為 Luau 提供類似的獨立執行環境:標準函式庫(檔案 I/O、網路、進程管理)、套件管理整合,以及對 Luau 型別系統的完整支援。

生態意義

Luau 的 Codegen JIT 效能在小型腳本語言中具有競爭力,且型別系統的設計優於 Python 的可選型別提示(type stubs 方案),若 Lute 生態成熟,可能吸引將 Luau 作為 Python/Lua 替代的採用。

原始來源:Lute — Luau Runtime


End of article
0
Would love your thoughts, please comment.x
()
x