.REL ファイルとは何ですか?
拡張子が .rel のファイルは、さまざまな目的に使用できます。したがって、ゲームの分類に関しては、Brawl、Super Smash Bros、Mario Kart Wii などの一部の Nintendo Wii ゲームで使用される再配置可能なモジュール ファイルとして知られています。キャラクター モデルやステージなどのゲームプレイ データで構成されます。 REL ファイルは、Microsoft Windows で使用される .DLL ファイルと同様に機能します。
REL ファイル形式
REL ファイル形式では、ファイルはいくつかのセクションに分割され、同様のアクセスによってグループ化されます。たとえば、1 つのセクションでは読み取り専用データ、別のセクションではすべての実行可能コードが配置されます。ファイルはヘッダー セクションで始まり、その後に次のセクションが続きます。
- セクション情報を含むテーブル。
- セクション データ。
- 移転情報。
ファイルヘッダー
ファイルは、最大 0x4C バイトのヘッダーで始まります。 | |オフセット |サイズ |フィールド名 |説明 | ——————–|—————|——————-|———————————| | | 0x00 | 4 | ID |任意の識別番号。ゲームで使用されるすべての REL の中で一意である必要があります。 0 であってはなりません。 | | 0x04 | 4 |次へ |実行時に書き込まれる次のモジュールへのポインター。 | | | | 0x08 | 4 |前へ |実行時に入力される前のモジュールへのポインター。 | | | | 0x0c | 4 | numSections |ファイル内のセクション数。 | | | | 0x10 | 4 | sectionInfoOffset |セクション テーブルの先頭へのオフセット。 | | | | 0x14 | 4 | nameOffset |モジュールの名前を含む ASCII 文字列へのオフセット。 NULL の場合があります。 REL ファイルの先頭に相対的。 | | | | 0x18 | 4 |名前サイズ |モジュール名のサイズ (バイト単位)。 | | | | 0x1c | 4 |バージョン | REL ファイル形式のバージョン番号。 | | | | 0x20 | 4 | bssSize | 「.bss」セクションのサイズ。 | | | | 0x24 | 4 | relOffset |再配置テーブルへのオフセット。 | | | | 0x28 | 4 | impOffset | imp テーブルへのオフセット。 | | | | 0x2c | 4 |インプサイズ | imp テーブルのサイズ (バイト単位)。 | | | | 0x30 | 1 |プロローグセクション |プロローグが相対的なセクションテーブルへのインデックス。このフィールドが 0 の場合はスキップします。 | | 0x31 | 1 |エピローグセクション |エピローグが関連するセクション テーブルへのインデックス。このフィールドが 0 の場合はスキップします。 | | 0x32 | 1 |未解決のセクション |未解決が関連するセクション テーブルへのインデックス。このフィールドが 0 の場合はスキップします。 | | 0x33 | 1 | bssセクション | bss が相対的なセクション テーブルへのインデックス。実行時にいっぱい! | | | | 0x34 | 4 |プロローグ | _prolog 関数の指定されたセクションへのオフセット。 | | | | 0x38 | 4 |エピローグ | _epilog 関数の指定されたセクションへのオフセット。 | | | | 0x3c | 4 |未解決 | _unresolved 関数の指定されたセクションへのオフセット。 | | | | 0x40 | 4 |整列 |バージョン ≥ 2 のみ。 2 の累乗で表される、すべてのセクションの配置制約。 | | 0x44 | 4 | bssAlign|バージョン ≥ 2 のみ。すべての ‘.bss’ セクションの配置制約。2 の累乗で表されます。 | | 0x48 | 4 |修正サイズ |バージョン ≥ 3 のみ。 REL が (OSLink ではなく) OSLinkFixed とリンクされている場合、このアドレスの後のスペースは他の目的 (BSS など) に使用できます。 | |
セクション情報テーブル
セクション情報テーブルには、それぞれ 0x8 バイトの長さの numSections エントリが含まれています。 | |オフセット |サイズ |説明 | ——-|————|————-| | | 0x0 | 30 ビット | REL の先頭からセクションまでのオフセット。これがゼロの場合、セクションは初期化されていないセクション (.bss) です。 | | | | 0x3.6 | 1 ビット |わからない。 | | | | 0x3.7 | 1 ビット |実行可能フラグ。これが 1 の場合、セクションは実行可能です。 | | | | 0x4 | 4 |セクションの長さ (バイト単位)。これがゼロの場合、このエントリはスキップされます。 | | | | 0x8 |次のエントリ |次のエントリ |
移転データ
再配置データは、0x8 バイト構造の 1 つまたは複数のリストです。各リストの末尾は、特別なタイプ コード 203 でマークされます。 | |オフセット |名前 |サイズ |説明 | ——-|————|————|—–| | | 0x0 |オフセット | 2 |前回の再配置から今回の再配置までのバイト単位のオフセット。これがセクション内の最初の再配置である場合、これはセクションの開始に関連しています。 | | | | 0x2 |タイプ | 1 |引っ越しタイプ。以下で説明します。 | | | | 0x3 |セクション | 1 |再配置するシンボルのセクション。特別な再配置タイプ 202 の場合、これは代わりに、次の再配置エントリが適用されるこのファイル内のセクションの番号です。 | | | | 0x4 |補数 | 4 |再配置するシンボルのオフセット (バイト単位) で、そのセクションの開始を基準にします。これは、main.dol に対する再配置ではなく、絶対アドレスです。 | | | | 0x8 |次のエントリ |次のエントリ |次のエントリ |