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によってほぼ同じですが、若干の違いがあります。
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 命令セットを拡張できるようにするためのものでした。