首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

在零 CPU 的 Amiga 上播放 Atari ST 音乐

摘要

Audience This post is for anyone who loves the technical and historical aspects of chiptune music, as well as enthusiasts of the Amiga PAULA and Atari YM2149 audio chips。

the dots Amiga Atari and
2026-05-17 1 阅读 约6分钟阅读 z303
分享:
字号:
读者对象 这篇文章适合所有热爱 Chiptune 音乐的技术和历史方面的人,以及 Amiga PAULA 和 Atari YM2149 音频芯片的爱好者。背景 在我的 Cycle-Op 演示中,我展示了经典的罪点效果,该效果在 Amiga 500 上以 50 FPS 渲染 6405 个点。两年后,Amiga 传奇人物汉尼拔发布了期待已久的 3D 演示 3,其中包含许多令人印象深刻的效果。其中包括他自己的罪点记录,以 6682 点击败了我。最重要的是,在经典演示场景中有趣的烘焙传统中,汉尼拔给我留下了这样的信息:“嗨,伦纳德,你为 Atari 程序员很好地优化了你的点。但是,如果你像 Amiga 专家一样优化,那么还剩下数百个点。”这太好了,不容忽视。作为回应,我必须找到一种方法来打破他的新罪恶点记录,并且作为奖励,想出一个巧妙的转折来回答这个“雅达利程序员”的攻击:)目标作为对汉尼拔言论的认可,我立即有了在我未来的点记录尝试中在 Amiga 上播放雅达利音乐的想法。为此,我需要模拟 YM2149 声音芯片。我早在我的 AmigAtari 演示中就已经为 Amiga 编写了一个 Atari 音乐模拟器。然而,准确再现现代 Atari 音乐效果,例如 SID 声音、同步蜂鸣器和 Digidrums,不仅需要模拟 YM2149,还需要模拟 Atari 的硬件定时器。这种模拟非常消耗 CPU 资源,在我的 2020 AmigAtari 演示中消耗了大约 50% 的帧时间。这使得不可能同时打破罪点记录。所以我需要一个更简单的解决方案:一种在 Amiga 上播放 Atari 音乐而不使用任何 CPU 的方法。我的第一个粗略想法很简单:为什么不使用 Amiga PAULA 芯片本身来模拟 YM2149,而让可怜的 Motorola 68000 完全致力于绘制罪点呢? YM2149和PAULA 从表面上看,这两种芯片有很大不同。 YM2149 是 AY-3-8910 的略微修改版本,由雅马哈重新命名。这是一个比较简单的声音芯片。它具有只能产生方波的三种声音。伪随机噪声发生器和基本硬件音量包络,旨在作为廉价的 ADSR 包络替代品 PAULA,Amiga 的音频芯片,采用了完全不同的方法。它是一个 PCM 样本播放芯片,没有内置对方波、噪声生成或包络的支持。 PAULA 可以直接从主存储器播放四个独立签名的 8 位 PCM 样本,每个样本都有自己的播放速率和音量。对于 1985 年推出的芯片来说,这种设计非常先进。第一个想法和原型 大多数 Atari 音乐严重依赖方波,这使得最初的概念看起来很简单。我将方波的单个周期作为 8 位样本存储在内存中,并使用一个 PAULA 声音循环播放它。为了避免将完整的 Atari 音乐驱动程序移植到 Amiga,我使用了一种与我为超快 Amiga MOD 播放器开发的技术类似的技术,LSP:在专用数据流中预先计算每帧的所有 PAULA 状态。计划是: 编写一个 PC 工具,读取 Atari .sndh 音乐文件并逐帧模拟它 提取 50 Hz 时三个 YM 声音的周期和音量值 将这些值转换为 PAULA 兼容的周期和音量值 将结果存储在专用数据文件中 在 Amiga 方面,播放变得极其轻量:每一帧,程序只需读取几个值并更新三个 PAULA 通道的周期和音量,每个通道循环一个微小的方波样本。第一个无聊的结果 除了方波之外,你能播放什么类型的 Atari 音乐?让我们试试 Buggy Boy,一款非常古老的 ATARI 游戏。不太令人兴奋,是吗?无意冒犯最初的 Atari 端口,但纯粹的方波听起来相当平淡,而且肯定不足以伴随未来的 Amiga sin-dots 世界纪录。我需要更好的东西。 YM 包络诡计 到 20 世纪 80 年代末,几位才华横溢的 demoscene 音乐家发现了从 YM2149 中获得更丰富声音的方法。其中最有影响力的人物之一是 Jochen Hippel,他更广为人知的名字是 TEX 的 MadMax。 YM 包络硬件最初设计为简单的 ADSR 替代品,但很少按预期使用。主要原因是该芯片仅提供一个由所有三种声音共享的包络发生器。这意味着所有通道必须使用完全相同的包络形状。但富有创造力的音乐家发现了一个很棒的解决方案。他们没有使用包络来调制方波的音量,而是使用包络本身作为声源。这产生了在许多经典 Atari 配乐中都能听到的清脆、嗡嗡声的音色,例如传奇的 Thalion Software 简介:我可怜的 YM 到底怎么能输出如此糟糕的声音?对于任何听着 Buggy Boy 这样的简单音乐长大的人来说,第一次听到这首歌都是一种启示。这种独特的扫掠效果没有正式名称,但为了本文的目的,我们将其称为 MadMax Buzzer。如何
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱