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 為基礎開發 HuC6280——這是傳奇的 MOS 6502 的增強版本。

為了補償 8 位元的限制,HuC6280 的時鐘頻率顯著高於其前代產品。它可以運行在兩種速度:一種是「低」模式(約 1.79 MHz,與 NES 相似)和一種是「高」模式(約 7.16 MHz)。大多數遊戲會立即透過 CSH (Clock Speed High) 指令來切換到高速模式。

這種時鐘頻率提供了一個明顯的優勢。在 7.16 MHz 下,PC Engine 的 CPU 比 SNES 的 CPU 快兩倍。此外,它避免了困擾 SNES 的記憶體延遲問題,因為大多數 ROM 和 RAM 區域都能在單個時鐘週期內做出回應。正如一位社群成員所說:

"對於 Nintendo 的選擇——使用緩慢的 16 位元 CPU——來說,使用一個非常快速的 8 位元 CPU 更有意義,特別是當螢幕寬度為 256 像素時,遊戲中大部分的計算本來就只需要 8 位元。"

雖然 Genesis 中的 Motorola 68000 提供更強大的指令集和 32 位元暫存器,但 HuC6280 在簡單 8 位元操作中的效率使其成為該時代射擊遊戲和平台動作遊戲的強大對手。

記憶體管理與內建 MMU

為了克服 16 位元定址的固有 64 KB 地址限制,HuC6280 包含了一個內建的記憶體管理單元 (MMU)。此 MMU 將物理地址空間擴展到 21 位元,允許 2 MB 的地址範圍。

系統將 16 位元邏輯地址空間劃分為八個 8 KB 的頁面。每個頁面透過一個 8 位元記憶體頁面暫存器 (MPR) 映射到物理頁面。這種架構允許主機在不需要於每個遊戲卡匣中加入昂貴的 mapper 硬件的同時進行記憶體分塊 (memory banking),這對於 NES 遊戲來說是常見的要求。

物理記憶體佈局

Pages Description
$00-$7F HuCard game cartridge 或 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 還引入了幾種增強性能的特殊指令:

塊轉移指令 (Block Transfer Instructions)

CPU 具有五種塊轉移指令 (TAI, TDD, TIA, TII, 和 TIN) 用於批量記憶體複製。這些指令至關重要,因為 PC Engine 具有一個無法存取 Zugriff_cartridge_ROM 或 working RAM 的專用 DMA 控制器。這些指令以每 6 個週期 1 byte 的速率進行數據複製,這比基於軟體的循環 (loops) 顯著更快。

這些轉移對於更新 VRAM 非常有效。正如愛好者所說,「Arcade Card」擴充組件高度依賴這些指令,透過快速將圖形數據轉移到 VRAM 中,從而實現了高品質的 Neo Geo 移植作品。

T-Flag 與零頁操作

SET (Set T) 指令允許緊隨其後的操作(ADC, AND, EOR, 或 ORA)直接對零頁值 (ZeroPage[X]) 進行操作,而不是對累加器 (accumulator) 進行操作。這減少了為了簡單邏輯操作而需要不斷地將數據移動到累加器中的需求。

其他增強功能

  • BSR (Branch to Subroutine): 一種 PC-relative displacement jump,使得代碼與其映射到哪個記憶體分塊 (memory bank) 無關。
  • VDC Direct Writes: ST0, ST1, 和 ST2 允許立即數操作數 (immediate operands) 允許直接寫入 Video Display Controller 端口,從而加快暫存器更新速度。
  • Register Utilities: CLA, CLX, 和 CLY 提供了一種在不影響 CPU 旗標 (flags) 的情況下將暫存器清零的方法。

架構權衡 (Architectural Trade-offs)

雖然 CPU 是該尺寸級別中的強大動力,但系統的整體性能是權衡的結果。PC Engine 的能力是在螢幕繪製時存取 Zugriff_cartridge_ROM 或 working RAM,這與 SNES 相比是一個主要優勢,與 SNES 不同,SNES 限制了 VRAM 存取於垂直空白期 (VBlank) 間隔。 However, this flexibility often came at the cost of access to visual complexity; SNES 遊戲經常使用更多的背景層,使其與 PC Engine 較平坦的視覺美學相比,具有更「層次感」的較強視覺效果。

最終結論

最終,HuC6280 證明了原始時鐘頻率和高效、熟悉的架構可以經常在軟體針對硬體優勢進行優化時,勝過寬數據總線的理論優勢。

Sources