← 返回信息流
AI 资讯Hacker News·7 小时前

The art and engineering of Sega CD Silpheed

AI 深度解读

背景

1990年代是电子游戏主机性能大幅提升的十年。然而,CD-ROM 驱动器的出现却是个异类:虽然 640 MiB 的存储容量是当时卡带的 320 倍,但访问时间(800ms)和带宽(单倍速 150 KiB/s)却分别比卡带慢 4,000,000 倍和 35 倍。Sega 为自家 Genesis 主机推出的 Mega-CD 扩展方案,最终产出了近 200 款游戏。其中虽有《Sonic CD》《Snatcher》《Final Fight CD》等佳作,但大量依赖全动态视频(FMV)的劣质作品(如《Night Trap》《Prize Fighter》《Slam City》《Corpse Killer》《Supreme Warrior》《WireHead》《A/X-101》)让这款扩展名声狼藉。

就在这样的背景下,Silpheed 横空出世。它凭借精妙的艺术审美和令人瞠目结舌的动画引擎,让媒体为之疯狂。玩家们争论哪些是实时 3D、哪些是预渲染。直至今日,它仍备受赞誉。要知道,这些近乎全屏的过场动画运行在 12.5MHz 的 m68k CPU 上,仅使用 16 色,带宽只有 150 KiB/s。在 16-bit 16kHz 音乐占用下,15fps 的视频流每帧仅剩 8 KiB 可用。

核心内容

Sega-CD 内部结构基础

Genesis 与 Mega-CD 共同构成一个并行双系统。Mega-CD 侧拥有 PCM 和 CD 播放功能,直接连接到混音器。它还包含一个支持旋转/缩放等图形加速的 ASIC,足以与《马里奥赛车》等游戏匹敌。两个系统通过共享内存(扩展端口)和模拟音频混音进行通信。这种架构对开发者极不友好,尤其是同步问题。

Silpheed 的架构

Mega-CD 系统仍以三个图层渲染到电视:两个由瓦片(tile)组成的背景层(A 和 B),以及一个包含精灵(sprite)的前景层。副 CPU(m68k)负责写入背景 B 的瓦片和瓦片地图;主 CPU 则负责“绘制”包含 HUD 的背景 A 和前景精灵层。副 CPU 使用双缓冲系统,在 Word RAM 的 L1 模式下渲染:主 CPU 将一帧送入 VDP 的同时,副 CPU 渲染下一帧到另一个缓冲区。

音频方面,非交互式过场仅依赖 Mega-CD 的 Ricoh 芯片生成 PCM 音质音乐;交互阶段,Ricoh 偶尔用于 PCM 音效,音乐则通过 YM2612 合成。原始 Genesis(Model 1)的音频路径极其复杂:Genesis 的正面插孔输出必须通过“混音线”物理连接到 Sega-CD 背面的 RCA 输入,Sega-CD 再将线路输入信号与自身 CD-DA + PCM 信号混合,最终通过另一根 RCA 线直接发送到电视。

优秀的设计决策

大多数 FMV 游戏之所以糟糕,是因为开发者采用自上而下的方法,试图用弱 CPU 将真实电影塞进小 CD-ROM。他们不得不使用极小窗口、压缩伪影和令人崩溃的抖动。而 Game Arts 为 Silpheed 采取了相反策略:从系统约束出发,自下而上进行工程优化。他们做出了卓越的权衡:使用平涂多边形、仅 16 色、无高洛德着色、极少抖动。如果没有 Game Arts 才华横溢的美术师,这些选择(尤其是颜色数量限制)根本无法成功。

PC-CDROM 游戏则是另一回事:得益于更强的 CPU(如 DX4-100),它们可以使用更好的编解码器。一些资金充裕的游戏如《Command & Conquer》《Crusader: No Remorse》或《Wing Commander III》(4 CD!)通过 FMV 大幅提升了叙事能力。

带宽问题

FMV 的核心是带宽问题:数据从 CD-ROM 读取,由处理器解压成图像,再送入视频屏幕。Mega-CD 在这三个阶段均显不足。

瓦片地图问题

由于没有帧缓冲,渲染必须遵循繁琐流程:将 768 个 8×8 像素的瓦片绘制出来,然后通过瓦片地图(Genesis 传统上称为“nametable”)在屏幕上排列成 32×28 的网格,最终形成 256×224 的图像。

三种降低带宽的简单方法

  1. 缩小视频尺寸:Silpheed 也使用了这一技巧,不过只是轻微地——将顶部和底部的瓦片行设为黑色(共 16 行),这看起来更像是艺术选择,因为形成了电影般的宽高比。
  2. 降低帧率:Silpheed 主要使用 15fps,复杂场景低至 7.5fps。
  3. 压缩:过场动画和背景视频采用不同处理方式。

视频压缩

Silpheed 不使用差分压缩。每一帧都自包含:包含所有需要的瓦片和用于放置瓦片的瓦片地图。乍看似乎没有压缩,但正是这种笨拙的瓦片地图系统成为了巨大优化源泉。以“游戏开始”过场中的第 44 帧为例:

  • 许多瓦片是纯色。Silpheed 的视频格式充分利用这一点:编码器只为每一帧中纯色瓦片(共 15 种)每种发出一块,然后在瓦片地图中反复引用它。该帧中,896 个瓦片中有 456 个引用这 15 个单色瓦片,带宽直接降低 50%。
  • 剩余 440 个多色瓦片,Silpheed 也有诀窍:利用 Mega-CD 的 ASIC 进行解压缩。具体细节原文未完全展开,但强调了 ASIC 的图形加速能力。

关键要点

  • 硬件限制极苛刻:Mega-CD 的 CPU(12.5MHz m68k)、内存(Word RAM 256KB、Program RAM 512KB)、带宽(150 KiB/s)和颜色(16 色)几乎是 1990 年代最严苛的平台之一。
  • 自下而上的工程哲学:Game Arts 没有试图用不切实际的高清视频,而是从硬件约束出发,以美术和工程技巧最大化每帧的质量。
  • 纯色瓦片引用优化:通过只发送一次纯色瓦片并在瓦片地图中反复引用,将带宽需求降低约 50%。
  • 帧率动态调整:主要使用 15fps,复杂场景降至 7.5fps,维持流畅感知。
  • 无差分压缩:每帧独立,利用瓦片地图的重复引用实现高效压缩,而非传统视频编码中的帧间差分。
  • ASIC 硬件加速:Mega-CD 的 ASIC 支持旋转/缩放等图形操作,Silpheed 利用它进行解压缩,减轻 CPU 负担。
  • 音频分离设计:过场动画用 Ricoh PCM,交互时用 YM2612 合成,混合路径复杂但有效。
  • 首次反向工程成果:作者花费两周业余时间反向工程了 Silpheed 的 FMV 格式,并制作了故事板工具,未来计划开源其 AI 框架。

意义与影响

Silpheed 是约束条件下创造力的典范。它证明了在硬件极度受限的环境中,通过工程与艺术的深度融合,可以诞生超越时代的作品。其视频压缩策略

查看原文 →fabiensanglard.net