makerom

makerom.TWL

説明

makerom は、NITRO のアプリケーション ROM イメージを作成するためのツールです。ROM スペックファイルと呼ばれるファイルの記述を元に ROM イメージを生成します。

makerom.TWL は、makerom に TWL の ROM イメージの作成機能を追加したツールです。 指定可能なパラメータが増えています。

このツールを用いて TWL 用に作成した ROM イメージは、TWL の開発機上でのみ動作します。TWL-SDK の環境を用いて TWL 量産機上で動作可能な ROM イメージを作成することはできません。(また、NITRO 用に作成された ROM イメージも TWL 量産機上では動作しません。)

使用方法

起動コマンド

1) 通常起動

% makerom [-d] [-DNAME=VALUE...] [-MDEFINES_FILE] [-F] [-A]
            [-VFMT_VER] [-WWARNING_TYPE] SPECFILE [ROMFILE] [LISTFILE]
% makerom.TWL [-DTARGET_PLATFORM=target] [-d] [-DNAME=VALUE...] [-MDEFINES_FILE] [-F] [-A]
            [-VFMT_VER] [-WWARNING_TYPE] SPECFILE [ROMFILE] [LISTFILE]

SPECFILE で指定された ROM スペックファイル(後述)の記述にしたがってファイルを結合し、 ROM イメージファイルを ROMFILE という名前で作成します。このとき、ROM の構成情報を LISTFILE で指定されたファイルに出力します。

ROMFILE, LISTFILE は省略可能です。省略時には SPECFILE で指定されたファイル名の拡張子部分をそれぞれ .rom あるいは .nlf としたファイル名が使用されます。また -D オプションにより変数とその値を定義することができます。この変数の値は ROM スペックファイルの記述時に参照することができます。

makerom.TWL.exe では、 -D オプションで TARGET_PLATFORMtarget パラメータを指定する必要があります。 target パラメータは、TWL 対応アプリをビルドする場合には 'TWL-HYB'TWL 専用アプリをビルドする場合には 'TWL-LTD' を指定します。通常は、ビルドシステムが適切な値を設定します。この指定がない場合は、デフォルトで 'TWL-LTD' が設定されます。

-M オプションは-Dオプションと同様に変数とその値を定義するものです。[NAME=VALUE] の列から成るテキストファイルを引数として受けます。このオプションによりコマンドラインの長さ制限に引っかかるような変数とその値の定義の記述を行なうことができます。オブジェクトファイル名を列挙するときなどのように空白を含む値を変数に定義する場合、コマンドライン引数の解釈の都合上、-D オプションにおいて値の部分を "' などの引用符で囲ったりする必要がありますが、-M オプションの場合は、定義ファイル内の記述において値を引用符で囲う必要はありません。引用符をつけてしまうと引用符込みの値として認識されます。

-F オプションが指定されている場合、ROM ファイルがサイズの制限値(Property セクションの RomSize 参考)を越えていても ROM イメージファイルを生成します。

-A オプションが指定されている場合、ROM ファイルに attachsign コマンドによるデジタル署名コードを追加したときに、ROM サイズの制限値(Property セクションの RomSize 参考)を超えるかどうかの判定を行ないます。超える場合はエラーとなりますが、前述の -F オプションが設定されている場合は処理を継続します。

-V オプションで出力 ROM イメージのフォーマット番号 FMT_VER を指定します。このオプションは過去のバージョンとの互換のために用意されています。デフォルトでは 2 が指定されています。詳しくは以降の ROM フォーマットバージョンについての説明をご覧ください。

-W オプションにより通常は抑制されている警告が出力されるようになります。-Wrom_speedtype_undefinedProperty セクションの RomSpeedType が SDK デフォルト設定のまま明示的に指定されていない場合に警告します。-Wall にて全ての警告が出力されます。

-d オプションは makerom のデバグ用メッセージ出力用のオプションで実行時にデバグ用メッセージを出力します。普段は必要ありません。

2) オプション -l

% makerom [-d] [-DNAME=VALUE...] [-MDEFINES_FILE] [-VFMT_VER] -l SPECFILE [LISTFILE]

% makerom.TWL [-d] [-DNAME=VALUE...] [-MDEFINES_FILE] [-VFMT_VER] -l SPECFILE [LISTFILE]

ROM イメージを出力しないという点を除いて、起動方法 1 と同じです。SPECFILE で指定されたファイルを読み込んで、ROM 構成情報を LISTFILE という名のファイルに出力します。

LISTFILE は省略可能です。省略時には SPECFILE で指定されたファイル名の拡張子部分をプラットフォーム毎のデフォルト拡張子としたものが、ファイル名として使用されます。NITRO の ROM イメージを作成する場合のデフォルト拡張子は .nlf、TWL の場合は .tlf です。-D オプションにより変数とその値を定義することができます。この変数の値は ROM スペックファイルの記述時に参照することができます。

-V オプションは 1)通常起動 の場合と同じ動作をします。

3) オプション -r

% makerom [-d] [-F] [-A] [-VFMT_VER] -r LISTFILE [ROMFILE]

% makerom.TWL [-d] [-F] [-A] [-VFMT_VER] -r LISTFILE [ROMFILE]

LISTFILE で指定された ROM 構成情報から、ROM イメージを構成し ROMFILE で指定された名前のファイルとして出力します。

ROMFILE は省略可能です。省略時には LISTFILE で指定されたファイル名の拡張子部分を .rom としたものが、ファイル名として使用されます。

-F オプション、-A オプションおよび -V オプションは 1)通常起動 の場合と同じ動作をします。

ROM スペックファイルフォーマット

NITRO および TWL の ROM イメージ内部は簡易的なファイルシステムによって管理されています。ROM スペックファイルはこのファイルシステムの構成を NITRO では 4 つ、TWL では 6 つのセクションに分けて記述したテキストファイルです。なお、ROM イメージセクションは全てのセクションの最後に記述されなければなりません。セクション定義の書式は、セクション定義開始の宣言部の後に引き続いて各セクションに関するパラメータが中括弧{ } で囲むという書式になっています。

セクションの定義対象 セクション定義の書式
ARM9 実行バイナリ
Arm9
{
  [ARM9 パラメータ記述部]
  ....
}
ARM7 実行バイナリ
Arm7
{
  [ARM7 パラメータ記述部]
  ....
}
ARM9 TWL専用 実行バイナリ
Arm9.Ltd
{
  [ARM9 TWL専用部 パラメータ記述部]
  ....
}
ARM7 TWL専用 実行バイナリ
Arm7.Ltd
{
  [ARM7 TWL専用部 パラメータ記述部]
  ....
}
付帯情報
(Property)
Property
{
  [付帯情報パラメータ記述部]
  ....
}
追加付帯情報
(AppendProperty)
AppendProperty
{
  [追加付帯情報パラメータ記述部]
  ....
}
レーティング情報
(Rating)
Rating
{
  [レーティング情報パラメータ記述部]
  ....
}
ROM イメージ
RomSpec
{
  [ROM イメージパラメータ記述部]
  ....
}

セクションパラメータ

Arm9 セクション (ARM9 実行バイナリ定義セクション)

ここでは ARM9 側の実行バイナリに関する設定を行ないます。

Static [ARM9 の常駐モジュールファイル名]
ARM9 の実行ファイルの常駐モジュールファイル名を指定します。
OverlayDefs [ARM9 の Overlayネームファイル名]
ARM9 の OverlayDefs ファイル名を指定します。
OverlayTable [ARM9 の OverlayTable ファイル名]
ARM9 の OverlayTable ファイル名を指定します。
オーバーレイを使用しない場合、このファイルは必要ありません。この場合、OverlayTable 定義文を省略することができます。
Nef [ARM9 の nef または tef ファイル(デバグ情報ファイル)名]
ARM9 のデバグ情報を保持するファイル(nefファイル) を指定します。
デバグを実行しない場合、この Nef 定義文は必要ありません。記述を省略することができます。
"Nef" キーワードの別名として "Elf" を使用することもできます。

Arm7 セクション (ARM7 実行ファイル定義セクション)

ここでは ARM7 側の実行バイナリに関する設定を行ないます。

Static [ARM7 の常駐モジュールファイル名]
OverlayDefs [ARM7 の Overlayネームファイル名]
OverlayTable [ARM7 の OverlayTable ファイル名]
Nef [ARM7 の nef または tef ファイル(デバグ情報ファイル)名]
ARM9 のパラメータと同様です。

Arm9.Ltd セクション (ARM9 TWL専用 実行バイナリ定義セクション)

ここでは TWL 上で実行される場合でのみ使用される ARM9 側の実行バイナリに関する設定を行ないます。

Static [ARM9 TWL専用部 の常駐モジュールファイル名]
OverlayDefs [ARM9 TWL専用部 の Overlayネームファイル名]
OverlayTable [ARM9 TWL専用部 の OverlayTable ファイル名]
ARM9 のパラメータと同様です。

Arm7.Ltd セクション (ARM7 TWL専用 実行ファイル定義セクション)

ここでは TWL 上で実行される場合でのみ使用される ARM7 側の実行ファイルに関する設定を行ないます。

Static [ARM7 TWL専用部 の常駐モジュールファイル名]
OverlayDefs [ARM7 TWL専用部 の Overlayネームファイル名]
OverlayTable [ARM7 TWL専用部 の OverlayTable ファイル名]
ARM9 のパラメータと同様です。

Property セクション (付帯情報定義セクション)

名称の後に ◎ が付いている項目は、マスターROM作成時に必ず設定しなければならない項目です。

Property セクション NITRO / TWL 共通項目

RomHeaderTemplate [Rom ヘッダのテンプレートファイル名]
ROM イメージのヘッダ部分のテンプレートファイルを指定します。指定なしの場合は makerom[.TWL].exe と同じディレクトリの"rom_header.template.sbin" がデフォルトとして使われます。マスターROM作成時に弊社より各ゲームアプリケーションに対応したマスターROM用のテンプレートファイルを配布いたしますので、そのファイル名をここに指定します。ROM ヘッダのテンプレートファイル自体の内容をバイナリ修正することは推奨されていません。以下に示している TitleName などのパラメータ記述を ROMスペックファイルへ行なうことで各マスターROMの付帯情報を設定してください。
TitleName [タイトル名]
タイトルの名称を指定します。ASCIIコード(英数字)で 12 文字までです。12文字未満の場合は未使用領域へ 0 が格納されます。指定なしの場合は RomHeaderTemplate 内に埋め込まれている値が使用されます。
MakerCode [メーカーコード]
弊社とのライセンス契約時に決定しているメーカーコードを指定します。ASCIIコード(英数字)2 文字です。
指定なしの場合は RomHeaderTemplate 内に埋め込まれている値が使用されます。
RemasterVersion [リマスターバージョン]
製品として生産される ROM のリマスターバージョン番号を指定します。16進数、10進数、8進数表記が使用できます。指定なしの場合は RomHeaderTemplate 内に埋め込まれている値が使用されます。これは以前のバージョンにおいて使用されていたROM バージョンと等価です。以前のバージョンの makerom ツールにおける ROM バージョンという語句の定義が弊社標準の定義と異なっていたため名称統一のため変更されました。以前の ROM スペックファイルとの互換性のため"RomVersion" キーワードも別名として使用できます。
RomSpeedType [1TROM|MROM|UNDEFINED]
ROM の種類を指定し、対応したアクセススピードへ変更します。"1TROM" は ワンタイムPROM、"MROM" はマスクROM を指定することになります。ワンタイムPROMの方が遅い設定になるため、ワンタイムPROMの設定であればマスクROMでも動作させることが可能ですが、逆はできません。
このパラメータを指定していない場合は "UNDEFINED" が指定されているとみなされます。"UNDEFINED" はアクセススピードとしてはとしては "1TROM" と同様の設定となります。ただし、"UNDEFINED" の場合は ROM バイナリ生成時に ROM 内登録データへ警告を意味するフラグがセットされ、最終マスターROMとしての提出ができません。これは、意図しないアクセススピードが設定されたままマスターROMとして出荷されるという人為的ミスを防止するためのものです。このため最終マスター ROM を作成するときは、必ず "1TROM""MROM" のどちらを使用するかを確認し、ROM スペックファイル内で明示的に指定してください。
RomSize [64M|128M|256M|512M|1G|2G|4G]
ROM 容量をビット単位で指定します。現状において 64M/128M/256M/512M/1G/2G/4G の文字列の中から選択して下さい。
ROM イメージが指定値を超えた場合はエラーまたは警告(-F オプション指定時)を出力します。
ただし 1G bit 以上を指定した場合は、指定値と使用可能サイズが異なりますのでご注意ください。 (詳細はROM フォーマットバージョンについてを参照)
指定なしの場合は RomHeaderTemplate 内に埋め込まれている値 ( 現在のものは "2G" ) が使用されます。
NAND アプリにおいては、この指定は無視され、最適な値が自動的に選択されます。
RomFootPadding [TRUE|FALSE]
ROM内のプログラム格納領域よりも上位側の未使用領域をデータで埋め、RomSize で指定されているROM容量と一致するバイナリを作成したい場合は TRUE を指定して下さい。未使用領域へ格納されるデータは RomSpec セクションの Padding パラメータで指定されている値になります。この機能を有効にするには RomSize を指定する必要があります。指定なしの場合は FALSE となります。
NAND アプリにおいては、必ず FALSE を指定してください。
RomHeader [Rom ヘッダのファイル名]
ROM イメージのヘッダ部分のイメージファイルの名前です。このファイルは、前項のテンプレートファイルをコピーしたものに ROM スペックファイルなどからの情報を埋め込むことによって生成されます。
通常は指定する必要はありません。指定なしの場合はARM9 の常駐モジュールのファイル名の拡張子を外したものに_header.sbin を付けたものがデフォルトのファイル名として使用されます。
FileName [FileNameTable ファイル名]
ROM ファイルシステムのファイルネームテーブル部分のイメージファイルの名前です。このファイルは、ROM スペックファイルの RomSpec の項目より生成されます。通常は指定する必要はありません。指定なしの場合はARM9 の常駐モジュールのファイル名の拡張子を外したものに_files.sbin を付けたものがデフォルトのファイル名として使用されます。
BannerFile [バナーファイル名]
NITRO 起動時のメニューで表示する、アプリケーションの識別画像情報をまとめたバナーファイルを指定します。
ForChina [TRUE|FALSE]
中国版本体へ対応したアプリケーションかどうかを指定します。このプロパティを TRUE にした場合のみ、中国版本体で動作するようになります。また、中国版本体の設定メニューで中国語が選択されていることを取得するためには本プロパティを TRUE にしておく必要があります。
指定なしの場合は FALSE となり、代わりに英語の言語コードが取得されます。RomHeaderTemplate 内に埋め込まれている値は使用されないという点に注意してください。
ForKorea [TRUE|FALSE]
韓国版本体へ対応したアプリケーションかどうかを指定します。このプロパティを TRUE にしても、動作する本体についての制限は特にありません。韓国版本体の設定メニューで韓国語が選択されていることを取得するためには本プロパティを TRUE にしておく必要があります。
指定なしの場合は FALSE となり、代わりに英語の言語コードが取得されます。RomHeaderTemplate 内に埋め込まれている値は使用されないという点に注意してください。
PermitLandingTmpJump [TRUE|FALSE]
指示があった場合にのみ TRUE を指定してください。デフォルトは FALSE です。

Property セクション TWL 専用項目

RomHeaderLtd [Rom ヘッダのテンプレートファイル名]
ROM イメージのTWL専用領域ヘッダ部分のテンプレートファイルを指定します。
通常は $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin を指定してください。
DigestParam 1024 32
FSライブラリのROMアーカイブの概要で説明されているハッシュチェックテーブルの算出単位を指定します。
引数は 1024 32 から変更しないでください。
WramMapping [MAP2_TS_HYB|MAP2_TS_LTD]
WRAM のメモリマッピングを指定します。HYBRID ROM では MAP2_TS_HYB を、LIMITED ROM では MAP2_TS_LTD を指定してください。
通常は、$(MAKEROM_WRAM_MAPPING) を指定する事でビルドシステムが適切に設定します。
CardRegion [Japan|America|Europe|Australia|EuropeAndAustralia|AmericaAndAustralia|AmericaEuropeAndAustralia|China|Korea]
ソフトのリージョンを指定します。
ソフトのリージョンと本体のリージョンが一致しない場合、 そのソフトは ランチャー上で認識されませんのでご注意ください。
またサンプルデモに設定されているALL はデモ専用のものであり、この設定でマスター ROMを提出することはできません。

China を設定する場合、同時に ForChina プロパティを TRUE に設定する必要があります。また、Korea を設定する場合、同時に ForKorea プロパティを TRUE に設定する必要があります。
CodecMode [NTR|TWL]
TWL 上で動作する際の CODEC の動作モードを指定します。CODEC の動作モードに関しては、TWL サウンド拡張機能の概要を参照してください。CODEC-DS モードで動作させる場合は NTR を、CODEC-TWL モードで動作させる場合は TWL を指定します。
通常は、$(MAKEROM_CODEC_MODE) を指定する事でビルドシステムが適切に指定します。
WiFiConnectionIcon [TRUE|FALSE]
ランチャー上で、ソフトのバナーと同時に Wi-Fi コネクションアイコンを表示するかどうかを指定します。 ランチャー上でアイコンを表示することで、ユーザの同意を改めて得ることなく、ソフトの起動と同時に Wi-Fi コネクションを開始することができるようになります。
また、起動時に Wi-Fi コネクションを開始する場合は、同時に AgreeEULA の指定も必要になります。
ただし、この指定を行っている場合、本体設定で無線オフモードになっている場合、ランチャーからアプリの起動ができなくなります。 無線通信が必須のアプリケーションのみ、この指定を行うようにしてください。
DSWirelessIcon と同時に TRUE を指定する事はできません。両方指定する必要がある場合は、WiFiConnectionIcon の指定を優先してください。
デフォルトは FALSE です。
DSWirelessIcon [TRUE|FALSE]
ランチャー上で、ソフトのバナーと同時に DS ワイヤレスアイコンを表示するかどうかを指定します。 ランチャー上でアイコンを表示することで、ユーザの同意を改めて得ることなく、ソフトの起動と同時に DS ワイヤレスプレイを開始することができるようになります。
ただし、この指定を行っている場合、本体設定で無線オフモードになっている場合、ランチャーからアプリの起動ができなくなります。 無線通信が必須のアプリケーションのみ、この指定を行うようにしてください。
WiFiConnectionIcon と同時に TRUE を指定する事はできません。両方指定する必要がある場合は、WiFiConnectionIcon の指定を優先してください。
デフォルトは FALSE です。
AgreeEULA [TRUE|FALSE]
利用規約に同意しないとランチャーからソフトを起動できないようにするかどうかを指定します。
ソフトを利用する上でインターネットへの接続が必須である場合にのみ、TRUEを指定してください。
この指定を行う場合、同時に WiFiConnectionIcon の指定も必要になります。
なお、インターネットへの接続が必須ではなく、機能の一部としてニンテンドーWi-Fiコネクション等のインターネットを利用するサービスに対応している場合には、FALSEを選択してください。代わりに、インターネットへの接続を試みる前に利用規約への同意がなされていることを確認する仕組みをゲームソフトに実装してください。(利用規約へ同意がなされていることはTWL-DWCライブラリでチェックされます。詳細については、TWL-DWC関数リファレンスマニュアルをご参照ください。)
デフォルトは FALSE です。
PhotoAccess [Read|ReadWrite]
photo領域の写真データにアクセスする場合の種類について指定します。
TCL ライブラリを使用してphoto領域にアクセスする場合のみ指定してください。
ソフトが写真データを読み込む機能のみを持つ場合は Read を指定し、書き込み及び読み書き機能を持つ場合は ReadWrite を指定してください。

AppendProperty セクション (追加付帯情報定義セクション)

NAND アプリを作成する場合にだけ指定する必要があるセクションです。

名称の後に ◎ が付いている項目は、NAND アプリのマスターROM作成時に必ず設定しなければならない項目です。

Media [GameCard|NAND]
ソフトがカードアプリなのかNANDアプリなのかを指定します。カードアプリの場合は AppendProperty セクション全体を省略することが可能です。
InitialCode [イニシャルコード]
イニシャルコードをアスキー文字4文字で指定します。指定しなかった場合は、ROMヘッダを参照して設定されます。
PublicSaveDataSize [publicセーブデータのサイズ]
publicセーブデータのサイズを数値で指定します。単位として、キロバイトを示す K を使用してください(例: 2048K)。指定しなかった場合は 0K と解釈されます。
指定可能な値に関しては、セーブデータサイズ一覧 を参照してください。
PrivateSaveDataSize [privateセーブデータのサイズ]
privateセーブデータのサイズを数値で指定します。単位として、キロバイトを示す K を使用してください。(例: 2048K)。指定しなかった場合は 0K と解釈されます。
指定可能な値に関しては、セーブデータサイズ一覧 を参照してください。
SubBannerFile [TRUE|FALSE]
サブバナーを利用するかどうかを指定します。

Rating セクション (レーティング情報定義セクション)

レーティング審査団体から取得したレーティング値を設定するセクションです。

以下の審査団体のレーティング値を個別に設定できます。 ただし、ソフトのリージョン(Propertyセクションの項目CardRegionで指定)に含まれる審査団体のみ設定可能です。

中国にはレーティング審査団体が存在しませんので、CardRegionChina が設定された場合、各審査団体のレーティング値の設定はできません。中国向けソフトにおいては、Ratingセクションの有無にかかわらず、特別な対応として、すべての審査団体のレーティング値が自動的に 0 に設定されます(SDK 5.3 以降)。

項目名対応する審査団体名含まれるリージョン設定可能な値とレーティングとの対応
CEROCERO日本(Japan)
0 : A(全年齢)
12 : B(12歳以上)
15 : C(15歳以上)
17 : D(17歳以上)
18 : Z(18歳以上)
PENDING : 審査中
ESRBESRB北米(America)
3 : EARLY CHILDHOOD (EC, 全年齢)
6 : EVELYONE (E, 6歳以上)
10 : EVERYONE10+ (E10+, 10歳以上)
13 : TEEN (T, 13歳以上)
17 : MATURE (M, 17歳以上)
PENDING : 審査中
USKUSK 欧州(Europe)
欧州と豪州(EuropeAndAustralia)
0 : 年齢制限なし
6 : 6歳以上
12 : 12歳以上
16 : 16歳以上
18 : 青少年には不適切
PENDING : 審査中
PEGI_GENPEGI(一般) 欧州(Europe)
欧州と豪州(EuropeAndAustralia)
3 : 3歳以上
7 : 7歳以上
12 : 12歳以上
16 : 16歳以上
18 : 18歳以上
PENDING : 審査中
PEGI_PRTPEGI(ポルトガル) 欧州(Europe)
欧州と豪州(EuropeAndAustralia)
4 : 4歳以上
6 : 6歳以上
12 : 12歳以上
16 : 16歳以上
18 : 18歳以上
PENDING : 審査中
PEGI_BBFCPEGI(一般)およびBBFC 欧州(Europe)
欧州と豪州(EuropeAndAustralia)
3 : 3歳以上
4 : U, Uc(4歳以上推奨)
7 : 7歳以上
8 : PG(8歳以上推奨)
12 : 12歳以上
15 : 16歳以上
16 : 16歳以上
18 : 18歳以上
PENDING : 審査中
AGCBAGCB 豪州(Australia)
欧州と豪州(EuropeAndAustralia)
0 : G(一般的、年齢が指定されていない)
7 : PG(親の指導推奨、年齢が指定されていない)
14 : M(成人向け推奨、年齢が指定されていない)
15 : MA15+(15歳未満は不適切、15歳未満は親または保護者の同伴が必要)
PENDING : 審査中
GRBGRB 韓国(Korea)
0 : 全体利用可
12 : 12歳利用可
15 : 15歳利用可
18 : 青少年利用不可
PENDING : 審査中

例外的にレーティングが不要であると判断された場合のみ、以下の項目を設定してください。

Unnecessary [TRUE|FALSE]
レーティング取得が不要なアプリであるかどうかを指定します。TRUEを設定した場合、各審査団体のレーティング値を設定することはできません。
デフォルトはFALSEです。

RomSpec セクション (ROM イメージ定義セクション)

他のセクションよりも後に記述する必要があります。

RomSpec セクション NITRO / TWL 共通項目

Offset [オフセット値]
ROM イメージにおけるファイル(またはデータ)の配置位置のオフセット値を指定します。
ROM イメージの領域が重なることを防止するため、設定可能なオフセット値は、その時点で全てのファイル(またはデータ)が設置されている最終位置よりも大きな値でなければなりません。そうでない場合はエラーとなります。
OffsetMin [オフセット値]
Offset と同じですが、指定されたオフセット値がファイルが設置されている最終位置よりも大きな値でない場合であってもエラーとならずに、指定が無視されます。
Segment All
全てのファイルシステム管理用データを設置します。他のファイルに先立ってこの管理データをROM の先頭に配置する必要があります。
Padding [キャラクタコード 0〜255]
ROM イメージのアラインメント処理などを行なったときに出来る隙間に代入する値を指定します。
0〜255 の値が指定でき、初期値は ROM フォーマット番号が 1 のときには 0、フォーマット番号が 2 以上のときは 255 となっています。
Align [アラインメント値]
次に格納されるファイルまたはデータの ROM イメージ上の先頭位置を指定したメモリ境界に一致させます。このときに空いた隙間は Padding で指定された値が埋められます。
アラインメント値は 2 の累乗である必要があります。
Align 文は、あくまで一時的にファイルのメモリ境界を操作するためのものですので、その影響範囲はこの記述の直後に置かれるファイルのみとなっています。永続的なメモリ境界の指定を行ないたい場合は AlignAll 文をご使用ください。
AlignAll [アラインメント値]
 この記述以降に格納される全てのファイルまたはデータの ROM イメージ上の先頭位置を指定したメモリ境界に一致させます。このときに空いた隙間は Padding で指定された値が埋められます。
 Align
AlignAll の両方が有効になっていたときは、Alignで指定された方の値が使用されます。AlignAll の初期値は 512 となっています。
 ファイル配置の境界を 512 未満に設定した場合には、NITRO のソフト媒体である NITRO CARD へのアクセスが 512 バイトブロック単位に限定されていることについて注意する必要があります。
HostRoot [PC 側のルートディレクトリ名]
ROM イメージ内に格納するファイルの PC 上の基準ディレクトリです。HostRoot は省略することができ、その場合は "." (カレントディレクトリ) がデフォルト値として使用されます。
Root [NITRO 側のルートディレクトリ名]
ROM イメージ内に格納するファイルの NITRO 上の基準ディレクトリです。これにより HostRoot で示したPC 上のディレクトリが Root で示した NITRO のディレクトリにマップされます。Root は省略することができ、その場合は "/" (ルートディレクトリ) がデフォルト値として使用されます。
File [ファイル名 ...]
ROM イメージ内に格納するファイルを指定します。指定したファイル名がディレクトリである場合は、そのディレクトリ以下の全てのサブディレクトリ内のファイルが格納されます。ただし Reject で指定したパターンに一致したファイル、サブディレクトリは除きます。ファイルの指定にはワイルドカードとして * あるいは ? を使用することができます。* は任意の複数の文字に、? は任意の文字(1バイト)を表わします。
Reject [ファイル名パターン ...]
ROM イメージ内に格納しないファイルの名前です。makerom において、File 文でディレクトリやワイルドカードをファイル名として指定したときには、その指定名からファイル名を展開して ROM 内に格納するファイル一覧を makerom 内部で求めます。このファイル一覧に含めて欲しくないファイル名を Reject 定義によって指定することができます。

Reject 文には空白で区切ることで、複数のファイル名パターンを書くことができ、ワイルドカード(* あるいは ? ) が使用可能です。Reject文による指定は、次のReject文か RomSpec セクション終了までの間に含まれる以降の File 文に対して有効となります。また Reject されるファイル名パターンの初期値として "CVS" "vssver.scc" および ".?*" (ピリオドで始まるファイル名)が設定されています。
Fixed [Default | True | False ]
nlf ファイルのパラメータを修正するためのもので、この後に設置されるデータの移動可能かどうかのフラグを操作します。通常は使用する必要はありません。初期値は Default(設置されるデータの種類に応じた自動設定) になっています。
TagType [Default | Name | Id | None ]
nlf ファイルのパラメータを修正するためのもので、この後に設置されるデータのアクセス方法 (自動設定 / ファイル名 / ファイルID / アクセス方法無し) を指定します。通常は使用する必要はありません。初期値は Default (設置されるデータの種類に応じた自動設定) になっています。

RomSpec セクション TWL 専用項目

DllFile [アプリが使用する動的モジュール名] [デバッグ情報を含む動的モジュール名] [ARM9/ARM7]
ROM イメージ内に格納した動的モジュールファイルの元となるデバッグ情報付きの動的モジュールファイルを指定します。指定した動的モジュールがARM9用かARM7用かを指定する必要があります。
Put [TwlRom|NitroRom]
以降の行で指定するファイルを ROM 上に配置する領域を、TWL 専用領域と NITRO 互換領域とで切り替えます。なお、デフォルトは NitroRom となっています。
TWL専用領域に配置したファイルはTWL専用ファイルとなり、NITROモード環境での動作時にはROMからの読み出しが不可能となります。

変数参照と修飾オプション

 ROM スペックファイルの記述において $([変数名])という記述により、ファイル外部で定義された変数の値を参照することができます。変数はコマンドラインオプションの -D[変数名]=[値]-M[変数リストファイル名]、あるいは環境変数で値を設定することができます。コマンドラインオプションと環境変数で同じ変数が定義された場合は、コマンドラインオプションの定義が優先され、コマンドラインオプションにおいて同一名の変数が定義されたときは、先に定義された値が優先されます。

以下は変数参照の記述例です。

RomSpec
{
    Offset     0x00000000
    Segment    All
    File       $(FILENAME)
}

 また変数の値がファイルパスの形式であった場合に、変数名の直後に:h,:t,:r,:e という修飾オプションをつけることによって、以下のような値を参照することができます。

$(FILE)=C:/home/Twl/readme.txt の場合:
:h パスの最後のパス区切り文字以前の部分 $(FILE:h)=C:/home/Twl/
:t パスの最後のパス区切り文字より後ろの部分 $(FILE:t)=readme.txt
:r パスのファイル拡張子を除いた部分 $(FILE:r)=C:/home/Twl/readme
:e パスのファイル拡張子の部分 $(FILE:e)=txt


その他の書式について

 セクション定義で使用される "RomSpec" などのキーワードは "ROMSPEC" のように全て大文字でも、あるいは "romspec" のように全て小文字でも同じものとして動作します。また '#' 以降の記述はコメントとして扱われます。

 FileReject 文において、複数の項目を指定する場合には空白で項目を区切ります。また "" (ダブルクォーテーション) で文字列を囲むことで、空白を含むファイル名を指定することができます。

#
# '#' で始まるとコメント
#
Arm9
{
   Static      "c:/Program Files/myApps/lib/main.sbin"
   OverlayDefs "c:/Program Files/myApps/lib/overlaydefs.sbin"
}

Property
{
   RomSpeedType    1TROM
   BannerFile      ./etc/default.bnr
}

ROMSPEC  # 大文字でも OK
{
   Segment  ALL
   File     boo.dat foo.dat woo.dat
}

ROM フォーマットバージョンについて

 新仕様の 1Gbit 以上のサイズの ROM のサポートのために ROM フォーマットが一部変更され、これらのサイズの ROM イメージにおいて最上位の一定サイズの領域がシステム予約領域となりました。SDK 3.2 以降の makerom から、この新しい ROM フォーマットがデフォルトの設定となりました。SDK 3.1 以前の旧フォーマットで ROM イメージを出力したい場合はオプションに -V1 を指定してください。

 新旧のフォーマット間の変更点は以下の通りです。

新 ROM フォーマット 旧 ROM フォーマット
バージョン番号 2 1
Padding の初期値 255 0
1G bit ROM の使用可能サイズ 125.5MBytes = 1004Mbit 128.0MBytes = 1024Mbit
2G bit ROM の使用可能サイズ 251.0MBytes = 2008Mbit 256.0MBytes = 2048Mbit
4G bit ROM の使用可能サイズ 501.625MBytes = 4013Mbit 512.0MBytes = 4096Mbit

 新ROMフォーマットにおけるシステム予約領域は 255 で埋められます。また、ROM イメージのサイズに関わらず Padding の初期値も 0 から 255 に変更されています。

量産機で動作する ROM の作成に関して

makerom.TWL を用いて作成できる ROM イメージは TWL 開発機上でのみ動作します。TWL 量産機上で動作する ROM の作成には任天堂でのマスタリング作業が必要になりますので、開発者の手元では量産機上での動作確認を行って頂く必要はありません。makerom.TWL によって作成された ROM イメージのままマスター ROM 提出を行ってください。詳細は「マスター ROM 提出手順書」をご参照ください。

また、TWL 量産機では NITRO の ROM に関してもマスタリング済みの物しか動作しないようになっているため、makerom を用いて作成された NITRO 用の ROM イメージを動作させることはできませんので注意してください。

その他の注意事項

マスターROM最後部未使用領域のデータについて

マスターROMの最後部の使用していない領域には、 TWL-SDKのmakeromツールによって自動的に0xFFが埋められます。

マスターROM使用禁止領域のデータについて

1Gbit以上のROMには、ROMのメモリマップ後尾にROMコードを格納することができない 使用禁止領域があります。使用禁止領域には、TWL-SDKのmakeromツールによって自動的に0xFFが埋められます。 1Gbit以上のROMでは、使用禁止領域を読み出すと常に0xFFが出力される仕様です。 使用禁止領域のサイズについては、『ゲームカードマニュアル』を参照して下さい。

アクセス禁止領域からの読み出しデータ使用について

ゲームカードのアクセス禁止領域を読み出した場合の出力データは不定です。 (TWL-SDKのFS関数を利用して、ゲームカードに配置されたファイルをアクセスする限り、 アクセス禁止領域を読み出すことはありません)。アクセス禁止領域については、 『ゲームカードマニュアル』を参照して下さい。

場所

$TwlSDK/tools/bin/makerom.exe
$TwlSDK/tools/bin/makerom.TWL.exe
$TwlSDK/tools/bin/rom_header.template.sbin $TwlSDK/tools/bin/rom_header.LTD.sbin

参照

makelcf, makebanner

履歴

2009/07/27 Ratingセクションの説明に中国向けアプリへの対応についての説明を追記。
2009/07/14 CardRegionの説明を追記、韓国のレーティング審査団体の説明を追記。
2009/06/08 TWL専用ファイルの説明へのリンクを追加。
2009/04/13 DigestParamの説明からFSライブラリ概要へのリンクを追加
2009/04/07 PhotoAccess プロパティの説明を追記
2009/03/24 AlignとAlignAllの優先順位に関して記述修正
2009/03/10 CardRegionの説明を追記、豪州のレーティング審査団体名変更に伴った修正
2009/02/06 CardRegionの説明を追記し、Rating の説明を新たに追加
2009/02/03 WiFiConnectionIcon および AgreeEULA に説明を追記
2009/01/08 TWL専用ファイルに関する説明を追記
2008/12/16 TARGET_PLATFORM のデフォルト値に関する説明修正
2008/12/08 JpegSign の説明を削除
2008/10/31 RomSize に関する説明の追記
2008/10/29 WramMapping および CodecMode の説明を修正
2008/10/22 JpegSign に説明を追記
2008/10/22 Property の説明を追記
2008/09/16 開発機/量産機での ROM 動作に関する記述を追加
2008/09/12 makerom.TWL.exe を見出しに加え、項目を大幅に追加
2008/06/04 FixSound、FixSoundDMAのデフォルトをTRUEに変更
2008/03/28 ARM7 の SCFG に関する記述の変更
2007/11/30 ARM7 の SCFG に関する設定を追加
2007/09/27 DllFile の追加
2007/06/06 -Mオプションについての記述の追加
2007/03/29 新 ROM フォーマットの 2Gbit ROM の仮仕様が、そのまま最終仕様となったことに対応する記載の修正
2006/10/06 Reject 文の有効範囲についての記述を追加
2006/08/18 ForKorea に関する説明文追加
2005/05/09 ROM フォーマットバージョンのサポート
2005/04/26 用語修正 「1タイムROM」→「ワンタイムPROM」
2005/04/11 ForChina に関する説明文追加
2005/04/05 RomSpeedType へ"UNDEFINED" に関する説明文追加
2005/03/28 RomSpeedType と -W オプションに関する説明文追加
2004/09/22 セクションの出現順に関する説明文追加
2004/07/23 Align/AlignAll に関する説明文追加
2004/06/08 初版作成