Wii ハードウェア技術解析

第 6 回:魔法の「互換性」— ハードウェア変身の仕組み (最終回)

1. エミュレーションではない――Wii 自身が「GC へ戻る」

Wii は、ニンテンドー ゲームキューブの 8 cm ディスク、コントローラ、メモリーカードを、そのまま受け入れる驚異的な互換性を備えています。しかし、これは別の CPU が Gekko の命令を一つずつ翻訳する、一般的なソフトウェアエミュレーションではありません。Wii の Broadway と Hollywood に受け継がれたゲームキューブ由来の回路を、旧世代と同じ速度、メモリ構成、レジスタ環境へ切り替えて動かす。新しいハードウェアの上で古い本体を真似るのではなく、Wii 自身がゲームキューブに近い姿へ「変身」する方式なのです。

ゲーム機のソフトウェアは、CPU の命令セットだけを相手にしているわけではありません。キャッシュ制御、Paired Singles、GX のレジスタ、DSP、割り込み、DMA のタイミングに至るまで、ハードウェアの癖を極限まで直接利用します。こうした「ベアメタル」のプログラムを正確に動かすには、命令の意味が分かるだけでは到底足りない。Gekko から Broadway へ、Flipper から Hollywood へと設計の血統を絶やさなかったこと自体が、この大胆なネイティブ互換を成立させる最大の土台でした。

要素 ゲームキューブ Wii 通常モード Wii の GC 互換モード
CPU Gekko
約 486 MHz
Broadway
729 MHz
Broadway
約 486 MHz 相当
システム LSI Flipper
162 MHz
Hollywood
243 MHz
Hollywood
162 MHz 相当
主記憶 24 MB MEM1 24 MB
+ MEM2 64 MB
MEM1 24 MB
A メモリ 専用 SDRAM 16 MB 廃止し MEM2 へ統合 MEM2 の先頭 16 MB を
A メモリとして提示
システム側 IPL が起動を担当 Starlet 上の IOS BC と MIOS が移行を担当

Wii の CPU とシステム LSI は、通常時にはゲームキューブの約 1.5 倍のクロックで動作します。ところが互換モードでは、その性能向上をあえて封印し、倍率を元へ戻すことが重要になります。旧作を単純に高速で走らせれば、フレーム進行、音声、コントローラのポーリング、ディスク待ちといった時間依存のコードが崩れかねないからです。互換性の世界では、速さは必ずしも正義ではありません。旧ハードと同じ「時間の流れ」まで再現して初めて、ゲームキューブのソフトは本来の姿で動けるのです。

2. ディスクドライブチャンネルから MIOS へ――「変身」の全手順

もちろん Wii は、電源を入れた瞬間からゲームキューブとして起動するわけではありません。まず通常の Wii モードで立ち上がり、Wii メニューが挿入されたディスクを認識し、ユーザーがディスクドライブチャンネルの「はじめる」を選んだところで、初めて互換モードへの再起動が始まります。その劇的な移行を舞台裏で仲介するのが、NAND に保存された二つのシステムタイトル「BC」と「MIOS」です。

STEP 1
Wii メニューが GC ディスクを認識
ディスクドライブチャンネル / 通常の Wii モード

ユーザーが「はじめる」を選ぶまでは、Broadway、Hollywood、IOS は通常の Wii として動き続けています。

STEP 2
BC が互換モードを要求
System Title 00000001-00000100

BC がハードウェアの動作モードとクロックを切り替え、GC 向けの条件を整えてリセットをかけます。

STEP 3
boot2 が MIOS を起動
System Title 00000001-00000101

GC 用の低いクロック設定で再起動されたことを boot2 が認識し、通常の IOS に代えて互換用の MIOS を読み込みます。

STEP 4
MIOS が GC の起動環境を整える
メモリ・ドライブ・互換 I/O の初期化

MIOS はディスク上の Apploader を読み出し、ゲーム本体の DOL を所定のアドレスへ配置します。互換環境を整え終えると、制御をゲームへ引き渡します。

STEP 5
GC ソフトがベアメタルで実行
Gekko / Flipper と同じ動作環境

以後のゲームコードは、Wii 用に再コンパイルされることも、命令ごとに翻訳されることもなく、そのまま Broadway 上で動きます。

MIOS は「ゲームキューブのエミュレータ」ではありません。 それ自体が旧作を代わりに実行するのではなく、起動時の環境を整え、Wii のハードウェアを GC ソフトが期待する姿へ揃えたところで主役の座を譲る、小さくも決定的な互換ファームウェアなのです。

3. 消えた A メモリを、64 MB の MEM2 から蘇らせる

しかし、クロックを元へ戻すだけではゲームキューブになりきれません。ゲームキューブには、CPU が通常のロード/ストアでは触れず、専用 DMA を通じて利用する 16 MB の「A メモリ」が存在しました。一方の Wii 通常モードでは、この専用メモリは廃止され、音声や大容量データの置き場は 64 MB の MEM2 へ統合されています。物理的には消えたはずの A メモリを、GC ソフトにだけは再び見せなければならないのです。

そこで GC 互換モードでは、Hollywood がMEM2 の先頭 16 MB を A メモリとして見せます。ゲームが旧来の AR / ARQ 系の転送を行えば、互換ロジックがその領域へデータを運び、残りの MEM2 はゲームキューブのアドレス空間から完全に隠されます。GC ソフトから見れば、そこにあるのは巨大な 64 MB の GDDR3 ではなく、使い慣れた 16 MB の A メモリだけ。新しいメモリの一部へ、古いハードウェアと同じ「見え方」を与える巧妙な変装です。

MEM1:そのまま残す

24 MB の低遅延メモリと主要なアドレス配置を維持し、GC の実行コードとデータを本来の場所へ置きます。

MEM2:一部だけ変装する

先頭 16 MB だけを A メモリとして見せ、残りは GC ソフトのアドレス空間から隠します。

GX / DSP / I/O:互換経路を開く

描画、音声、ディスク、コントローラ、メモリーカードを、旧来のレジスタと DMA の流儀で扱えるようにします。

これは、物理的に存在しない A メモリをソフトウェアで逐一、遅く模倣する仕組みではありません。メモリコントローラと DMA に互換経路を残し、GDDR3 の一部を GC からは A メモリとして扱えるようにする、極めてハードウェア寄りの解決策です。新しい資源を惜しみなく開放する Wii 通常モードと、その資源を意図的に隠して過去を再現する GC モード。その正反対の世界を、たった一つの Hollywood が鮮やかに切り替えているのです。

「ゲームキューブが丸ごと入っている」は半分だけ正しい

Wii の内部に、独立した Gekko、Flipper、専用 A メモリをもう一組、そのまま積んでいるわけではありません。Broadway と Hollywood に GC 互換機能を受け継がせ、MEM2 の一部を A メモリへ見立て、BC と MIOS が全体を切り替えます。したがって「ゲームキューブが入っている」という表現は、回路の血統という意味では正しく、旧基板を丸ごと内蔵した二台一体型という意味では誤りです。同じ回路資源が自らの動作モードを変えるからこそ、これは真のネイティブ互換なのです。

4. 過去になるため、Wii 自身の機能を封印する

Wii の全機能をゲームキューブソフトへ開放すれば、互換モードは豊かになるどころか、かえって不安定になります。そのため通常の IOS が提供する Bluetooth、Wi-Fi、USB、SD カード、NAND ファイルシステムといったサービスは、GC ゲームから利用できません。Wii リモコンすら標準入力にはならず、ゲームは本体上面の GC コントローラ端子とメモリーカードスロットだけを使います。ゲームキューブへ戻るためには、Wii として得た新機能を自ら封印しなければならないのです。

これは単なる機能不足ではなく、互換環境をサンドボックスとして閉じ込める、明確な安全設計です。署名されていない GC 形式のコードが動いたとしても、Wii の暗号鍵、NAND、ネットワーク機能へ自由に到達させない。ゲームの高速実行は Broadway と互換 I/O に任せながら、Wii 固有の資源は Hollywood が遮断します。第 3 回で見た「Starlet が上位の管理者として君臨する」という二重構造は、GC モードにおいても鉄壁の安全装置として機能しているのです。

その一方で、Wii はゲームキューブの底面拡張ポートまで再現していません。したがって、ブロードバンドアダプタやゲームボーイプレーヤーのように底面ポートを前提とする周辺機器は接続できず、互換性の対象はディスク、映像・音声、標準コントローラ、メモリーカードを中心とした市販ゲームの実行へ絞られています。過去の本体を隅々まで複製するのではなく、膨大な既存ソフトを動かすために必要な機能だけを残す。ここにも、理想論より実効性を優先する任天堂の徹底した割り切りが現れています。

互換性は「無料の副産物」ではない

ゲームキューブ互換を備えた Wii 「RVL-001」には、専用コントローラ端子、メモリーカードスロット、8 cm ディスク対応ドライブを搭載し、膨大な検証を続けるためのコストが伴いました。欧米市場では後に、これらの端子と GC ディスク・周辺機器への互換性を省いた Wii Family Edition (RVL-101) と Wii mini (RVL-201) が発売されました。いずれも日本では発売されていません。後期モデルで互換機能が削られたという事実は、それが設計上の偶然から生まれた無料の副産物ではなく、明確なコストを引き受けて初めて成立する、意図的な製品投資だったことを物語っています。

5. ネイティブ互換とバーチャルコンソール――過去への二つの答え

Wii は、NINTENDO64、スーパーファミコン、メガドライブなどの旧作にはバーチャルコンソールのソフトウェアエミュレータを使う一方、ゲームキューブには、ハードウェアそのものを旧仕様へ戻すネイティブ互換を選びました。一見すると正反対の方針ですが、これは思想の不統一ではありません。現在の Wii から、それぞれの旧ハードまでの設計上の距離に応じて、最も合理的な答えを選び分けた結果です。

Gekko から Broadway、Flipper から Hollywood へと設計が直結しているゲームキューブの場合、互換回路を残すコストよりも、レジスタやタイミングまで完全に模倣するソフトウェアを新たに作るコストの方が大きくなります。しかも GC の 3D ゲームはハードウェアを限界まで直接利用するため、エミュレーションのわずかな差さえ不具合へつながりかねません。すでに同じ血統の回路が目の前にあるなら、それを「元の姿」へ戻す方が、安く、速く、そして圧倒的に確実だったのです。

全 6 回を振り返れば、Wii の「革命」が、過去を乱暴に捨て去ることではなかったと分かります。ゲームキューブの高効率な核を約 1.5 倍で動かし、その周囲へ Starlet、IOS、MEM2、無線センシング、Wii メニューという新しい仕組みを幾重にも積み重ねる。そしてユーザーが旧作の起動を選んだときには、その追加部分を潔く閉じ、再びゲームキューブと同じ動作環境へ立ち戻る。受け継ぐものと変えるものを、冷徹なまでに選び抜くこと。その見事な取捨選択こそが、「Revolution」と呼ばれた Wii ハードウェア最大の革命だったのです。