Articles

BIOS

BIOS (Basic Input/Output System の頭文字を取ったもので、BIOS ROM または Xbox ROM とも呼ばれます) は、CPU の物理アドレス空間の上位 16MiB (0xFF000000 – 0xFFFFFFFF) にマッピングされたファームウェアイメージです。 標準的なPCのBIOSと同様に、Xboxのハードウェアを初期化し、システムを起動させる役割を担っている。 ただし、PC BIOS とは異なり、Xbox BIOS イメージには、圧縮および暗号化された形でカーネルも含まれています。

標準の Xbox では、BIOS イメージはフラッシュ ROM に格納されています。 BIOS イメージは実際には 256 KB で、1MiB の ROM チップを埋めるために 4 回複製されています。

$ split -n 4 xbox.bin $ md5sum xa*542c62cb976a4993c8c5027dff9638ce xaa542c62cb976a4993c8c5027dff9638ce xab542c62cb976a4993c8c5027dff9638ce xac542c62cb976a4993c8c5027dff9638ce xad

を実行すると、同じファイルが4回繰り返されていることが確認できるはずです。 これでBIOSチップに1MiBと256kiBがあることが説明できます。 次に、BIOSは0xFF000000から残りのメモリを埋め尽くすまで繰り返されるということです。

Components

BIOSは異なるコンポーネントに分割されています。 これらはBIOSによってほぼ同じですが、若干の違いがあります。

のデータセグメント。

0x3D400

3944 4034 4134 4817 5101 5530 5713 5838
NV2A 初期化テーブル 0x00000 0x00000 0x00000 <576 0x00000 0x00000 0x00000
MCPX初期化テーブル 0x00070 0x00070 0x00070 0x00070 0x00070 0x00070
X-」。コード 0x00080 0x00080 0x00080 0x00080 0x00080 0x00080 <576><1877><576><1877><0> <1877><576><0><1877><576><576><1877 0x00080
Copyright String 0x00CFA 0x00CFA 0x00DB9 0x00E49 0x00E59 0x00E59 0x00DCC
Kernel 0x0619C
Kernel Data Segment 0x3944C
2BL
常に0x6000バイト
0x39E00 0x39E00 0x39E00 0x3900バイト。
FBL
常に0x2880バイト
0x3D400 0x3D400 0x3D400
Decoy Boot Loader 0x3FE00 0x3FE00 0x3FE00 0x3FE00 0x3FE00 0x3FE00 0x3FE00

これらのセクションの使用方法については、以下を参照してください。 ブートプロセスを参照してください。

NV2A 初期化テーブル

最初の DWORD は、NV2A ノースブリッジが自身を初期化するために使用する値のテーブルへのポインターですが、最も小さいビットが常に 1 に設定されています(おそらくある種のサニティ チェックです)。 2番目のDWORDは、変更されていないテーブルポインタです。 すべての Xbox BIOS では、NV2A 初期化テーブルは常にファイル オフセット 8、仮想アドレス 0xFF000008 にあります。

NV2A 初期化テーブルの最初の DWORD は、マジック ナンバー 0x2B16D065 (「ブート ヘッダー」と呼ばれます)です。 テーブル内の残りの値の目的は不明です。

MCPX Initialization Table

これは、MCPXサウスブリッジを初期化するために使用される値のテーブルです。 ROM イメージのオフセット 0x70 に配置する必要があります。

xcodes

これらは、MCPX インタープリターによって実行される xcode オペレーションです。 最初の数行は無意味に見えますが(何の機能も実行していません)、その後、私が見つけた最初の実際のコードは次のとおりです:

BIOS バージョン 3944, 4034, 4134 の xcodes はすべて、以下で始まります。04 10 08 00 80 01 80 00 00

The xcodes in the BIOS version 4817, 5101, 5530, 5713, 5838 all start with:04 84 08 00 80 01 80 00 00

This leads me that the first three BIOS versions that I have are compatible with the 1.The BIOS Version, and the BIOS Version 2.0, and the BIOS Version 3.0, and The BIOS Version 4.0, and the BIOS Version 5.0は、1.0と互換性があると信じています。0 MCPX と互換性があり、残りは 1.1 MCPX と互換性があります。

次に、xcodes と著作権文字列の間に別の不明なセクションがあると考える人がいました。 私が知る限り、そのセクションは、5838 BIOS が 3944 BIOS よりもかなり多くの xcodes を持っているので、xcode 命令セットを拡張できるようにするためのものでした。