PC Engine 的涡轮增压 8 位核心
PC Engine(在北美被称为 TurboGrafx-16)在游戏历史上占据着一个迷人的生态位。它于 1987 年发布,正处于第三代主机(如 NES)与第四代强力主机(如 Sega Genesis 和 Super Nintendo)之间尴尬的过渡时期。虽然由于其卓越的图形性能,它经常被归类为 16 位时代,但其内部架构却讲述了一个不同的故事。
PC Engine 的核心设计理念是优先考虑原始速度而非架构复杂度。通过利用高度优化的 8 位 CPU,Hudson Soft 创建了一个在特定任务中(特别是在快节奏动作游戏中)往往能超越其名义上“16 位”竞争对手的系统。
涡轮增压的 6502
尽管其北美品牌中带有“16”字样,但 PC Engine 并不具备 16 位 CPU。HuC6280 是一款 8 位处理器,具有 8 位寄存器、8 位 ALU 和 8 位数据总线。Hudson 没有转向 16 位架构,而是选择基于 WDC 65C02——传奇的 MOS 6502 的增强版——来构建 HuC6280。
为了补偿 8 位的限制,HuC6280 的时钟频率显著高于其前代产品。它可以运行在两种速度下:一种是“低”模式(约 1.79 MHz,类似于 NES)和一种是“高”模式(约 7.16 MHz)。大多数游戏会通过 CSH (Clock Speed High) 指令立即切换到高速模式。
这种时钟频率提供了一个明显的优势。在 7.16 MHz 下,PC Engine 的 CPU 比 SNES 的 CPU 快两倍。此外,它还避免了困扰 SNES 的内存延迟问题,因为大多数 ROM 和 RAM 区域都能在单个时钟周期内响应。正如一位社区成员所言:
"正在使用一个非常快速的 8 位 CPU 比 Nintendo 选择使用一个缓慢的 16 位 CPU 要合理得多,尤其是当屏幕宽度为 256 像素时,游戏的大部分计算无论如何都也只是 8 位的。"
虽然 Genesis 的 Motorola 68000 提供了更强大的指令集和 32 位寄存器,但 HuC6280 在简单 8 位操作中的效率使其成为那个时代射击游戏和平台跳跃游戏的强大对手。
内存管理与内置 MMU
为了克服 16 位寻址固有的 64 KB 限制,HuC6280 内置了内存管理单元 (MMU)。该 MMU 将物理地址空间扩展到了 21 位,从而允许 2 MB 的地址范围。
系统将 16 位逻辑地址空间划分为八个 8 KB 的页。每个页通过一个 8 位内存页寄存器 (MPR) 映射到物理页。这种架构允许主机在不需要像 NES 游戏那样在每个游戏卡带中内置昂贵的 mapper 硬件的情况下,就能处理内存分块 (memory banking)。
物理内存布局
| Pages | Description |
|---|---|
| $00-$7F | HuCard 游戏卡带或 CD-ROM 2 System Card |
| $80-$F7 | Expansion (CD-ROM 2 extra RAM) |
| $F8 | 8 KB working RAM |
| $F9-$FB | Expansion (SuperGrafx extra RAM) |
| $FF | Memory-mapped I/O registers and ports |
一个显著的特点是“零页” (zero page)。在 6502 中,零页位于 $0000-$01FF。在 HuC6280 上,它被重新定位到了 $2000-$21FF,以便将第一页专门用于内存映射 I/O。
特殊指令与“新招式”
除了标准的 6502 指令集之外,HuC6280 还引入了几种增强性能的特殊指令:
块传输指令
CPU 具有五种块传输指令 (TAI, TDD, TIA, TII, 和 TIN) 用于大批量内存拷贝。这些指令至关重要,因为 PC Engine 缺乏一个能够访问卡带 ROM 或工作 RAM 的专用 DMA 控制器。这些指令以每 6 个周期 1 字节的速度进行拷贝,这比基于软件的循环要快得多。
这些传输对于更新 VRAM 非常有效。正如爱好者们所指出的,“Arcade Card”扩展卡高度依赖这些指令,通过将图形数据快速传输到 VRAM 中,从而实现了高质量的 Neo Geo 移植版游戏。
T-Flag 与零页操作
SET (Set T) 指令允许紧随其后的操作 (ADC, AND, EOR, 或 ORA) 直接对零页值 (ZeroPage[X]) 进行操作,而不是对累加器进行操作。这减少了在进行简单逻辑运算时不断将数据移动到累加器中的需求。
其他增强功能
- BSR (Branch to Subroutine): 这是一个 PC 相对位移跳转,使得代码对于映射到哪个内存分块 (memory bank) 变得无关紧要。
- VDC Direct Writes:
ST0,ST1, 和ST2允许立即数操作数直接写入 Video Display Controller 端口,从而加快了寄存器更新速度。 - Register Utilities:
CLA,CLX, 和CLY提供了一种在不影响 CPU 标志位的情况下将寄存器清零的方法。
架构权衡
虽然 CPU 的性能对于其规模而言非常强大,但系统的整体性能是权衡的结果。PC Engine 在屏幕绘制期间访问视频内存的能力是相对于 SNES 的一个主要优势,相比之下,SNES 限制了对 VRAM 的访问仅在垂直空白期 (VBlank) 期间进行。然而,这种灵活性往往以视觉复杂度为代价;SNES 游戏经常利用更多的背景层,使其比 PC Engine 的扁平化美学呈现出更具“分层”的外观。
最终,HuC6280 证明了,只要软件针对硬件的优势进行优化,原始时钟频率和高效、熟悉的核心架构可以往往比更宽的数据总线在理论上的优势更胜一筹。