让ZX Spectrum的1位蜂鸣器播放数字音频
Digital Audio on the ZX Spectrum's 1-Bit Beeper
我完成了ZX Spectrum系列文章,探索如何让这台经典电脑上简单的1位蜂鸣器输出高质量数字音频。经过两次彻底的重写和多次尝试,我最终在硬件和模拟器上都验证了效果。虽然声音在没有外部放大器时非常微弱,且几乎占满所有RAM,但技术确实可行。我借鉴了PC Speaker的RealSound技术,利用电路电容和扬声器质量的物理特性,通过精确控制脉冲宽度来模拟模拟信号。尽管Z80 CPU的时序限制极严,不得不使用汇编语言直接操作芯片,但最终实现了令人惊喜的音频播放效果。
电路具有电容,扬声器具有质量,因此1位信号从0变为1或反之需要时间,而扬声器振膜移动产生声波也需要额外时间。
HN 评论区
15- socializer
在 8 位机时代,做这类事情本身其实并不特别难。真正的难点在于做完这个之后还能做其他事情,因为你基本上需要占用整个 CPU 来进行音频合成。对于游戏来说,计算画面、游戏状态和声音之间存在着非常现实的权衡,而声音往往被放在次要位置。
这也是为什么那些拥有图形精灵或声音生成硬件支持的 8 位电脑,即便 CPU 性能较弱,看起来和听起来都更好的原因。这背后还有一个未被讲述的故事,解释了为什么 16 位机的图形看起来好那么多:关键不在于 CPU,而在于拥有带独立内存的专用显卡/芯片组,以及能处理多声道声音和 MIDI 合成的声卡等。
- urbandw311er
我记忆中有一款 Spectrum 游戏通过扬声器播放某种合成语音,听起来简直超前得离谱。我相信那款游戏叫 iBall。样本里好像说了句“Fight iBall!”之类的。是我记错了吗?还是说这只是我的一场高烧梦?
- musha68k
由于各种限制,ZX Spectrum 其实是个极佳的娱乐编程系统;只可惜我错过了去年最新一批 Spectrum Next。