音樂芯片對決:以 sin-dot 效果挑戰 Amiga 和 Atari 极限
音樂愛好者和科技迷們一定會喜歡這篇文章。我們將探討 chiptune 音樂的技術和歷史,特別是針對 Amiga PAULA 芯片與 Atari YM2149 調音器的精妙對決。
不久前,在我的 Cycle-Op 示範程式中,我展示了一個經典的 sin-dot 效果,該效果在 Amiga 500 上以每秒 50 帧的速度渲染了 6,405 個點。兩年後,Amiga 大師 Hannibal 發布了他的期待已久的 3D Demo 3 程式。其中一個令人印象深刻的特性就是他的 sin-dot 記錄,超越了我的成績,達到了 6,682 個點。
為了回應這個挑戰並在科技競賽中保持競爭力,我決定用一種聰明的辦法來突破 Hannibal 的紀錄。更重要的是,我要以一個巧妙的方式回擊他在程式設計上的「玩笑」:「Leonard,你把點數優化得很好,對一個 Atari 程式員來說已經很不錯了。但如果你像 Amiga 專家一樣優化,還會剩下很多未被利用的潛力。」
為了回應這個挑戰,我決定在未來嘗試打破新的 sin-dot 記錄時,在 Amiga 上播放 Atari 音樂作為一種致敬。
技術挑戰與解決方案
要實現這個想法,我需要模擬 YM2149 擴音器。這是一個由雅馬哈重新推出的 AY-3-8910 調音器,具有三個聲音通道,可以產生方波和偽隨機噪音生成器。然而,準確地重現現代 Atari 音樂效果(如 SID 壓縮、同步蜂鳴器和數位鼓)需要模擬 YM2149 以及 Atar 的硬體計時器,這會大量消耗 CPU 資源。
我決定尋找一個更簡單的解決方案:在 Amiga 上播放 Atari 音樂而不使用任何 CPU 計算資源。我的第一個想法是直接利用 Amiga PAULA 調音器來模擬 YM2149,這樣就能把整個摩托羅拉 68000 總線完全用於繪製 sin-dot。
PAULA 是 Amiga 的聲音芯片,其設計與 YM2149 大不相同。PAULA 是一個 PCM 样本播放器,沒有內置的方波或噪音生成功能,只能從主存中直接播放四個獨立的 8 位元有符號 PCM 聲道。
這個想法看似簡單:將 Atari 方波的一個週期存儲為 8 位元樣本並在 PAULA 上循環播放。然而,為了避免移植完整的 Atari 音樂驅動程式到 Amiga,我使用了一種類似於我在我的超快 Amiga MOD 播放器 LSP 中開發的技術:提前計算每幀的所有 PAULA 狀態並存儲在專門的數據流中。
這個計劃的目標是:
未來展望
這個項目不僅是一次對技術極限的挑戰,也是一個展示不同芯片之間創造性合作的例子。透過這種方式,我們可以看到不論是在硬件還是軟件方面,創新總是能夠突破既有的限制,開創新的可能性。
結語:科技競賽中的無限可能
這場由 Amiga 和 Atari 代表的音樂芯片對決,不僅是技術上的較量,更是兩個時代和文化交織下的藝術表現。透過這樣的技術競爭和合作,我們得以探索更多未知的可能性,並激發未來創新的火花。
對於科技迷來說,這個故事提醒我們:即使在看似封閉的系統中,創新與突破永遠存在著無限可能。
