Hacker News 中文摘要

RSS订阅

Amiga 屏幕入门指南 -- Amiga Screens: A Primer

互联网上一条不成文规矩是,每当提及阿米加(Amiga)相关事物,至少一名阿米加粉丝会现身解释屏幕概念。阿米加屏幕可具不同分辨率,能拖动,其他用户附和,而非用户仍不解其妙。2026年秋写就,盼将路人转为屏幕爱好者。为实用,重点放在原始芯片集 OCS(Original ChipSet)上,后续增强芯片集 ECS(Enhanced ChipSet)与高级图形架构 AGA(Advanced Graphics Architecture)升级移除部分限制,基本原理与用户体验依旧适用。

正文

互联网上不成文规矩:一提阿米加相关,必有粉丝(包括我)来解释屏幕概念。阿米加屏幕可有不同分辨率,还能拖动,其他用户附和,但非用户可能仍不明白好在哪。写下这些字句,是希望把外行变成彻头彻尾的屏幕爱好者。

为实用,以下聚焦初代阿米加图形硬件 OCS(Original ChipSet)。后续 ECS 和 AGA 虽有改进,但基本原理与体验一致。

典型的阿米加屏幕,显示带打开的命令行窗口的 Workbench 桌面

屏幕即是屏幕

阿米加上“屏幕”特指操作系统定义的显示区域。游戏和 demo 程序员不太纠结此概念,硬件手册称其为“playfield”,demo 码农谈 raster splits,但为简单我们沿用屏幕。

根本上,阿米加屏幕就是绘制图形的区域,可有不同分辨率和色深,程序能开任意数量不同分辨率屏幕。

如今因现代系统和液晶屏,多用单一固定分辨率。但 CRT 时代,开不同分辨率很常见。比如 VGA 的 MS-DOS 看图器,浏览用 16 色 720x400 文本模式,看图时开 256 色 320x200。

分辨率与色深变化是所有家用机共性,是硬件权衡速度内存的结果。当时内存极贵,阿米加标配少量 RAM 被 CPU、视频、音频共享,故提供对分辨率色深的高度控制。

索引与位平面

阿米加通常用索引调色板:每屏有限颜色寄存器存用户定义色,从 12 位色域(AGA 为 24 位)选。例如索引 0 设 $000 黑,1 设 $F00 红。

为改像素颜色值,用平面图形:增加位平面(bpl)来提升色深。每位平面独立存内存,改像素颜色索引需切换各平面中的位。

故 1 位平面得 2 色,2 得 4,至初代 5 位平面 32 色(AGA 8 位平面 256 色)。

位平面组合以表示每像素颜色索引的示意图(来自阿米加硬件参考手册)

OCS/ECS 每屏最大位平面数由显示分辨率定,适配 PAL/NTSC 电视。OCS 有低分辨率和高分辨率。PAL 下低分 320x256(交错 320x512)最多 32 色(5 bpl);高分 640x256(交错 640x512)最多 16 色(4 bpl)。用 overscan 可略增,高分达 724x283,但不保证所有显示器完全可见。

低分下第 6 位平面可用于 HAM(Hold-And-Modify),可同时自由用全部 4096 色(有些限制);或 EHB(Extra Half-Brite),将 32 色板复制为 32 个半亮副本。

Deluxe Paint 编辑 EHB 图像。注意右下角颜色选择器:最右两列是前兩列的半亮副本。因 12 位色域限制,半亮不总完美

阿米加有真正抢占式多任务,平面图形省资源。文本编辑器用 2 色屏省下的内存可同时跑 32 色图形程序。且仅需精确位数存像素,保持寻址合理,不浪费字节。屏幕可任意尺寸位置,如在物理显示底部放 320x50 低分屏。不多用像素也省内存。

硬件戏法

阿米加原设计是游戏机,图形硬件特性多。屏幕重定位瞬时,整屏滚动极快,系统甚至允许配置大于可见区的桌面屏并用鼠标滚动。

在重绘周期任意点改分辨率色深也容易,故多屏可同时组合甚至重叠,用户体验统一。例如:

同时显示两个不同分辨率和色深的屏幕

上例用 AMOS(一种 BASIC)创建,它对屏幕概念有自己抽象。但各屏仍能独立做绘制、滚动、重定位、改调色板等操作。

快速切换由 copper(协处理器)控制,它与视频渲染同步,也改颜色值和硬件精灵。这能造出“copper 渐变”或“copper 条”:每水平线改一次某颜色寄存器值,产生醒目渐变及超 32 色调色板索引的更多颜色。

普通 4 色 Workbench 屏幕。背景渐变由 copper 在视频渲染时定期改颜色索引 0 值产生

组合不同分辨率色深屏用途多。每屏最多 32 色但各屏可不同,游戏可用 32 色主区加 32 色界面,同时显 64 色以上,再结合 copper 渐变增色。

终端用户体验

除游戏外,迅捷图形处理也利于多任务生产力软件,这就说到屏幕拖动。

因早期分辨率低,多数应用全屏跑。阿米加多任务下,用户可用屏右上按钮或快捷键快速切屏,也可点住屏标题栏向下拖,露出后面另一程序屏,如下。

用户显示器上屏幕拖动可能的样子

我得承认,尽管粉丝吹捧,屏幕拖动实际用途有限(至少我 workflow 中)。但 1985 年多任务加彩图除昂贵 Unix 站外少见,效果肯定惊人。例如稍拖下聊天屏看后面浏览器下载进度,但阿米加全屏切换太轻松,拖动反而麻烦。

为展示处理多迅捷,我拍了短片:连液晶屏的阿米加 600(7 MHz,约 1985 年阿米加 1000 同种硬件)同时播放音乐、跑文本编辑器和 Deluxe Paint,并切屏拖动:

点击上方观看影片

双游戏场

阿米加支持双游戏场(dual playfields):两重叠屏时,前屏颜色索引 0 变透明显后屏内容,其他索引不变,各屏仍能独立滚动、绘制、改调色板等。

来自阿米加硬件参考手册的双游戏场示意图

下图双游戏场加精灵:酒红背景粉星绘于背景场(4 色屏);绿紫条是精灵,优先级设于两场之间;其余绘于前景场(8 色屏)。阿米加硬件保证各层在 7 MHz 机也能平滑动画。

好奇读者可通过 Demozoo 下载或观看这个小阿米加 intro

全屏流转

现代机我偏好程序开独立堆叠窗口,因屏幕够大且程序如此设计。但有些如 VSCode 我喜最大化。窗口管理器虚拟桌面让我瞬切工作区,如阿米加般快。

但有些程序高分宽屏最大化很蠢。我喜 80 列终端读 man 页,正统文件管理器平方比例如 5:4 更合理。同屏多窗口好处全可见快切,坏处某些鼠标操作仅适用全屏应用。

如 Directory Opus,我知最佳正统文件管理器之一。阿米加全屏时,鼠标甩到屏边单击,就进当前列表目录的父目录。

点击 Directory Opus 文件列表的边框

此特性在窗口环境也能实现,但无意义:无屏幕边缘作指针边界,细长点击区难瞄准。

更简单却难在现代宽屏复现的乐事:80x24 字符全屏文本模式编代码或跑终端应用,比例就是舒服。

还有更多

屏幕与阿米加图形硬件的奥秘仅被触及表面。平面图形可只改部分位平面造有趣特效。还没提 blitter 硬件,它能极快拷贝显存,带组合或遮罩位平面模式,对街机动作极有用。

精灵仅略提,未讲如何为低位平面屏加色或复用增色。欲知详见 Codetapper's Amiga Site。其 Shadow of the Beast 文讲创造性地用硬件实现多层平滑视差滚动的惊艳游戏。

总结

阿米加屏幕有许多有趣特性:

  • 屏幕用平面图形,省内存且允许屏上颜色从 2 渐增至 32。
  • 屏幕可任意尺寸定位。
  • 多屏可不同分辨率、色深、调色板同时显示,任意重叠露后屏。
  • 切屏瞬时。
  • 屏幕可渐拖露后屏。
  • 双游戏场用“alpha 通道”结合两屏图形。

阿米加软件(含系统)善用这些,在有限硬件和低分辨率下实现高效多任务。

评论

社区围绕 Amiga 图形硬件与历史屏幕模式展开技术怀旧,少数人探究早期分辨率切换原理,无人提出反对。

认为早期屏幕模式差异源于分辨率和色深的不统一

  • 指出过去不同屏幕有不同分辨率和颜色深度,而现代主流系统已无此类差别(少数人) > 也许只是我这么想,但屏幕差异的主因是当年不同屏幕分辨率和色深不同,如今各大系统已不存在这些问题(@MiroslavPokorny)

对光栅线动态切换视频频率的可行性存疑

  • 理解内存相关参数可随光栅线切换,但怀疑每帧反复变更视频信号频率会让老显示器无法同步,即便多同步显示器也需时间锁相(少数人) > 理论上能中途改频率,但很难想象每帧反复切换不会让当时显示器疯掉,多同步也得几帧同步吧(@weinzierl)

怀念 Amiga 带来的新奇魔法感与未竟潜力

  • 认为 Amiga 在可用性与可编程性上令人兴奋,若当年投入少量 PC 架构妥协的精力便能改变计算史;另有觉得其图形风格类似 TempleOS 的独特气息(少数人) > 真希望找回用 Amiga 的那种魔法感觉,从易用到可可编程都充满无限可能(@agar)

有价值的补充

  • Amiga 的芯片内存仲裁机制:CPU 与显示音频共享芯片内存,Agnus 优先保障音视频,68000 只占偶数周期;位面增加或高分辨率会夺取偶数周期拖慢 CPU,故默认工作台用 4 色高分辨率兼顾专业感与满速(@amiga386)
  • 从文章识别出 Amiga 图形延续了 Atari 8 位机 ANTIC DLI 的血脉(@LastTrain)