ニンテンドー ゲームキューブ ハードウェア技術解析

第 3 回:電源投入からゲーム起動までの低レイヤ・ブートシーケンス

ハードウェアの目覚めと IPL の役割

ゲームキューブの電源ボタンを押した瞬間から、ディスク内のゲームプログラムが実行されるまでの一連の流れは、本体内蔵のマスク ROM に書き込まれた IPL (Initial Program Loader) によって厳密に制御されています。このブートシーケンスは、ハードウェアの完全な初期化、暗号化されたセキュリティの解除、そして仲介プログラムを介したゲームデータのメモリ展開という重要な役割を段階的に実行します。

時系列ブートシーケンス

STAGE 1
リセット解除と BS1 の実行
関連 I/O:PI (Processor Interface) / EXI (Extension Interface)

電源投入後、システムリセットが解除されると、Gekko CPU はリセットベクトル (PowerPC 仕様に基づく 0xFFF00100) から実行を開始します。CPU は PI (プロセッサインターフェース) を介して、EXI (拡張インターフェース) チャンネル 0 に直結されている内蔵の複合マクロニクスチップ (IPL ROM / RTC / 内部 SRAM を統合したダイ) にアクセス。わずか数KBの暗号化された初期ブートコード「BS1」を読み込みます。この段階で、24MB のメインメモリ (1T-SRAM) を制御するメモリコントローラが最速でアクティベートされます。

STAGE 2
IPL メインコード (BS2) の展開と I/O スキャン
関連 I/O:EXI (Extension Interface) / SI (Serial Interface)

メインメモリが使用可能になると、IPL ROM からより大きなプログラム本体である「BS2」がメモリ上に展開・実行されます。ここで CPU は、EXI チャンネル 0 の内部 SRAM から本体設定 (言語や出力モード) を、RTC から現在時刻を読み出します。同時に、SI (シリアルインターフェース) を介して前面の 4 つのコントローラポートのスキャンが行われ、ハードウェア環境の確認が完了します。なお、EXI のチャネル 0 と 1 はこの段階ではメモリーカードスロットおよび底面拡張ポート側の制御へと割り振られます。

STAGE 3
起動アニメーションと同期出力
関連 I/O:VI (Video Interface) / AI (Audio Interface)

IPL によって、おなじみの「G」の文字を描くキューブの回転 3D アニメーションが描画され始めます。グラフィックデータは VI (ビデオインターフェース) を通じてテレビに送られ、同時に AI (オーディオインターフェース) から内蔵の A メモリ (A-RAM) を介して 16.5 秒間の起動サウンドが完全に同期して再生されます。

💡 低レイヤに仕込まれたイースターエッグ

この STAGE 3 の起動アニメーション中、SI (コントローラポート) の状態が常にチェックされています。1P のコントローラの「Z ボタン」を押しながら起動すると、効果音が子供の笑い声と木琴の音に変化します。さらに、4 つすべてのコントローラの「Z ボタン」を同時に押しながら起動すると、日本の伝統的な和楽器の音とリズミカルな掛け声の隠しテーマが再生される仕様が、IPL コード内に直接ハードコーディングされています。

STAGE 4
DI (DVD Interface) によるディスクの物理認証
関連 I/O:DI (DVD Interface)

起動アニメーションの裏で、DI (ディスクインターフェース) がパナソニック製の光ディスクドライブにコマンドを送り、ディスクの物理的な認証を開始します。ゲームキューブの 8cm ディスクには、一般的な光学ドライブでは複製不可能な「BCA (バーストカット領域)」と呼ばれる強固な物理セキュリティが刻まれています。DI のハードウェアデコーダがこの暗号化の解除とライセンス認証に成功して初めて、次のロード段階へと進むことが許可されます。

※ディスクの蓋が開いている、またはディスクが未挿入の場合は、この段階でシークを停止し、IPL の内蔵メニュー画面 (時計・メモリーカード管理画面) へと遷移します。

STAGE 5
Apploader の実行とメイン DOL ファイルの展開
関連 I/O:DI (DVD Interface) / PI (Processor Interface)

ディスク認証成功後、IPL は直接ゲームのプログラムを読み込むのではなく、まずディスク最先頭のシステム領域 (boot.bin) からポインタ情報を読み取り、任天堂公式の初期化・ブート中継プログラム「Apploader (apploader.img)」をメインメモリ (0x81200000 付近) へとロードし、制御を移行します。

制御を引き継いだ Apploader は、ゲームに最適化されたシステム環境の再初期化を行った後、ディスクヘッダ (オフセット 0x420) に記録された絶対アドレスを参照し、ゲームキューブ独自の実行バイナリフォーマットである「DOL ファイル」 (一般的には main.dol として配置されるが、技術的にはポインタ指定のためファイル名は任意) をシークします。Apploader は DOL ヘッダ内の指示に基づき、プログラムコード (Text) やデータ (Data) をメインメモリの指定された各絶対アドレスへ DMA 転送します。

すべてのメモリ展開が完了すると、Apploader は DOL ヘッダ内のエントリーポイント (開始アドレス) へ CPU のプログラムカウンタ (PC) をジャンプさせます。これにより Apploader は消え去り、ハードウェアの制御権がゲーム本編へと完全にハンドオーバーされます。