User:Rz/Track Listing For LE-Code (Japanese)

From Custom Mario Kart
Jump to navigation Jump to search
To the Wiiki Administrator
This is an article that LE-CODE Distribution Tutorial translation for some Japanese who can not read English.
If this violates the Wiiki rules, please delete it.
編集中
この記事はまだ未完成です。文法やスペリングのミスがあれば修正してください。またこの記事に不足している情報(この場合はまだ翻訳できていない情報)があれば追加していただければ幸いです。
新しい定義フォーマット
SZS Toolsv2.28a.betaから、新しいファイルフォーマット(LE-DEF)が新たな定義方法としてサポートされます。より簡易的な構文となり、今後のLE-CODEの拡張とともに追加されます。 この記事では従来の定義方法、CT-DEFを説明しています。

「Leseratte Code(通称、LE-CODE)」とは、従来のCT-CODEの32つ以上のコースを追加する機能に加えて、それ以外の便利な拡張機能がチートコードなしで格納された新しいフレームワークです。詳細は、LE-CODEをご参照ください。(英語です)

ここではLE-CODEを使用したCTパックの作成方法をRz拙い日本語で記載しています。追加として、英語ですがDistribution FAQにここでは書き足りない詳しい情報が記載されています。

導入

スロットとファイル名

LE-CODEでは、4028スロット(68~4095、16進数で0x044~0xfff)がカスタムトラックに使われます。具体的には、32つの任天堂コース、10つの任天堂バトルステージに加えて、その他残りの特別なスロットが使用可能です。詳細は英語になりますが、LE-CODE Slot Usageを参照下さい。 各ストットでは、以下の3バイトが使われます:

合計で12KBを4096スロットを定義するのに使われます。それに対し、従来のCT-CODEでは256バイトが必要でした。使用するメモリ量を削減するために、CT-CODEではわざわざ文字列を利用してコースファイル名を定義していますが、LE-CODEでは代わりに任天堂コースを含めたすべてのスロットのIDを使用しています:

std_file = sprintf(“%03x.szs”,slot);
d_file   = sprintf("%03x_d.szs",slot);

マルチプレイに必要な、~_d.szsが存在しない場合は、シングルプレイ用ファイルが代わりに読み込まれます。

特別なランダムスロット

いくつかのスロットは既におまかせ機能を定義されています。特定のスロットIDをカップ内に配置されることで作動させます。テキストは0x703e~0x7041に定義されています。

0x03e: 全てのコース
コースをランダムに選択します。
0x03f: 任天堂コース
任天堂コースの中からランダムに選択します。
0x40: カスタムトラック
スロット68から配置されているコースからランダムに選択します。
0x41: 新コース
新しいコースとして配置されたコースのみからランダムに選択します。存在しない場合は上記と同じ動作をします。

共通ファイル

コースファイルは./files/Race/Course/*.szsに配置されています。いくつかのコースファイルはサブディレクトリ./Common/に異なるファイルの非公開のバージョンと一緒に配置されています。これらのファイルは%Nにスロット番号として./files/Race/Common/%Nに展開する必要があります。詳細はDistribution FAQ: Common Filesを参照下さい。

コースフラグ

LE-CODEはコースIDとミュージックIDの横に存在する、フラグと呼ばれる三つ目のプロパティに対応しています。3つのプロパティはそれぞれ4096つの配列に保持されます。 フラグは以下の特徴を持つビットフィールドです:

New (ビット0 = 0x01、符号: LE$F_NEW)
指定されたスロットは新コースとして配置されます。上記のランダムセレクトに使用します。
Random header (ビット1 = 0x02、符号: LE$F_HEAD)
おまかせ用グループの先頭です。以下のフラグが設定されていない、もしくは次のグループの先頭が設定された場合、グループの終点が配置されます。 これが指定されているコースを選択した場合、これ以下にそのメンバーとして配置されているコースの中からランダムで選択されます。これ自体もメンバーとして配置されている場合、ランダムセレクトに含まれますが、おおよそ除外されます。
Random group (ビット2=0x04、符号: LF$F_GROUP)
上記のフラグが指定されたスロット以下のスロットに指定することでメンバーとして配置されます。

カップ

現在、LE-CODEは5つのステージを持つ2カップと4コースを持つ1024カップに対応しています。バトル用カップとステージには、通常の定義方法が使われます。コースIDとミュージックIDを除いて、SZSファイルとステージ名を交換することが可能です。これは将来的に変更されます。 レース用カップには、スロットとコースを割り当て、定義するためにCT-CODEの構成ファイルを使用します。任意で上記のフラグを使うことができます。詳細は以下の章を参照下さい。 カップには名前を設定できません。カップセレクトでカップをスクロールした際にカップ名がそれに倣って変更されないためです。

BMG

LE-CODEでは、テキストIDの7000~7FFFをスロット0x000~0xfffとして使用します。テキストID6800~6c01と8000~8fffはカップ名とカップの参照に使われます。前記のカップの参照はmkw-anaでコース選択に関する情報を描画するために使われます。

BMGテキストID
テキストID 使用される媒体 概要
6800-6bff mkw-ana 1024カップそれぞれの名前
6c00-6c01 mkw-ana 2カップそれぞれの名前
7000-7fff mkw-ana & LE-CODE スロット0x000-0xfffそれぞれのコース名。詳細は次のテーブルを参照下さい。
8000-8fff mkw-ana スロット0x000-0xfffそれぞれのコースとカップの結びつき

7000-7fffの範囲はコース名が定義され、ゲーム上でもっとも大切なものです。テキストIDはスロット番号に関連付けされます:

コースとステージに使われるテキストID
テキストID 概要
7000-701f 32つの任天堂コースの名前
7020-7029 10つ任天堂ステージ、もしくはカスタムステージの名前
702a-703d 使われません
703e-7041 4つのランダムセレクトの名前
7042-7043 使われません
7044-7fff 4028つのカスタムトラックの名前

BMGコースリストの作成

wctctを使うことで定義ファイルからBMGリストを作成することができます:

wctct bmg --le-code --long CTFILE.txt > tracks.bmg.txt

bmgコマンドはBMGを作成、通常の出力を行います。--le-codeオプションはLE-CODEに対応するために必須です。--longオプションはmkw-anaに必要な記述を出力させます。CTFILE.txtは定義ファイルのファイル名の一例です。>tracks.bmg.txttracks.bmg.txtとして出力する部分になります。

Wiimms SZS Toolsと--le-codeオプション

Wiimms SZS Toolsはv2.00aから、全てのツールに--le-codeオプションが追加されています。このオプションはLE-CODEへの対応を有効化します。ただしこのオプションは以下のツールとコマンドにのみ関連付けされます:

  • wlect - LE-CODE関連用ツール
  • wszstwctctwbmgtは--le-codeを使用することでその動作が変化します。
  • その他ツールはこのオプションを無視します。

スロットとカップの定義

コースとスロットの割り当ては、CT-CODEの定義ファイルと拡張子によって定義されます。以下のツールと数多のコマンドによって定義ファイルを使用できます。

wlect COMMAND OPTIONS ARGUMENTS
wctct --lecode COMMAND OPTIONS ARGUMENTS

定義ファイルの例

定義ファイルの内容は以下の通りです:

#CT-CODE

[RACING-TRACK-LIST]

# LE-CODE用定義ファイルに設定します
%LE-FLAGS  = 1

# Wiimmカップと自動的に挿入します
%WIIMM-CUP = 1

# 通常のセットアップ
N N$SWAP | N$F_WII
 
C "Mushroom" # 1
T 153; T81; 0x00; "T_000"; "SNES Mario Circuit 1"; "14b2b4b4514f5a593418e14b001518cbce1b12b1"
....

標準的な構文の規則は、

  • 文字列外のスペースとタブは無視されますが、いくつかは区切りとして使用されます。
  • コメントは»#«を先頭に置きます。
  • 空行は無視され、純粋なコメント行も無視されます。
  • ファイルは構文によってスキャンされます。なので、数字の17は代わりに16進数で0x11、数式で(7+10)、事前に定義された変数名としてVARNAME、関数を呼び出しとしてget17()と書くことができます。

参考

節の見出し

ファイルタイプは識別するために、一番最初の行は必ず»#CT-CODE«で始まります。次に、角括弧で囲まれた名前は、先頭の節を区別するために使われます。カップとコースの定義には»[RACING-TRACK-LIST]«を使います。

初めにいくつかの全体設定を定義します。»%LE-FLAGS = 1«はLE-CODEを有効化します。»%WIIMM-CUP = 1«は自動的に4つの異なるおまかせ機能を含んだカップを追加します:

  • おまかせ: すべてのコース
  • おまかせ: 任天堂コース
  • おまかせ: カスタムトラック
  • おまかせ: 新しいコース

従って、スロット0x03e..0x041は使われます。テキストの定義には703e..7041を使います。

設定»N N$SWAP | N$F_WII«は任天堂コースの有効化と通常のカップ表示に合わせるための順番替えです。

上記を使うことでカップとコースの区分形態を定義します。コマンドはLE-CODEでは、»C«、»T«、»H«と»A«だけが使われます。

カップ定義

'C' カップの名前
例: C "Mushroom" #任意のコメント

このコマンドは次のカップが開かれたら、既定のコースで埋められ、現在のカップを閉じます。名前は参照と書き出されたリストのために使われます。もし一つのカップがいっぱいになった場合、名前がない次のカップが自動的に展開されます。

コースの定義の前に'S'コマンドを使うことで、カップに収録するコースの順番を指定できます。これは任意です。

'C' カップの名前
'S' t1! t2! t3! t4!

これはwlectにそのカップ内での順番に配置されるべきスロットを通知します。これは最初の32コースの音楽とコーススロットを編集するときに使えるオプションです。

例:
C "Koopa" #任意のコメント
S 0x08! 0x01! 0x02! 0x04!

コースの定義

%LE-FLAGS = 1であるとき:
  'T' music_id ';' property_id ';' le_flags ';' file_name ';' info ';' id
  例: T 153; T81; 0x00; "T_000"; "SNES Mario Circuit 1"; "SHA1"
%LE-FLAGS = 0であるとき:
  'T' music_id ';' property_id ';' file_name ';' info ';' id
  例: T 153; T81; "T_000"; "SNES Mario Circuit 1"; "SHA1"

コースの定義は6つのパーツから成り立ちます:

music_id
そのスロット上での音楽IDを定義します。基本的に0x75 (=117)と0xb3 (=179)の間の奇妙な番号で構成されます。この表と比較しましょう。0から0x29 (=41)の番号が規定された場合、コースIDと解釈されます。なので番号の代わりに事前に定義された名前»T53«、もしくは»sGV2«を使うことができます。
property_id
そのスロット上のコースにあったコースIDを定義します。0から31(もしくはT11..T84LC..nBC)のみ許可されます。
le_flags
そのスロット上のフラグを定義します。
file_name
実際に存在するSZSファイルに関連する(拡張子.szsを除いた)ファイル名を定義します。これはコースのSZSファイルを元のディレクトリから目的のディレクトリにコピー/移動/リンクさせるために使われます。これを行っている間、ファイルは自動的に正しいスロットの指数とともにスロットID.szsに改名されます。詳細は»Copy, move and/or link track files«をお読みください。
info
BMGや関連するリストを作成するために使用される任意の名前です。使用しない場合は空欄にしてください。("";)。
id
最適化のために使用する任意の識別子です。参照を作成する際に同じ識別子を持つコースと同じ物であると判断します。空欄や"-"のような1文字は、識別子がないことを示します。スペースを確保するために同じファイル同士をリンクすることが出来ます。

カスタムトラックのために4028個のレース用スロット (0x44=68から0xfff=4095)が使用できます。この中に予約枠はありません。そのため、wlectwctctはそれらを順番に使用することになります。LE-CODEは一部例外を除いてスロットの順番には気にしません。ランダムに選択されるコースはともにグループ化される必要があります。そのため、同じコーススロットの空欄や同時使用は技術的に認められます。

隠されたコースの定義

上記の方法だとコースを追加することは出来ますが、カップから隠すことが出来ません。コースの定義を»T«から»H«に置き換える必要があります。

H 153; T81; 0x00; "FILENAME"; "SNES Mario Circuit 1"; "SHA1"

隠されたコースは通常ランダム選択の追加に使用されます。

T 153; T81; 0x02; "FILENAME1"; "Menu Name"; "SHA1_1"
H 153; T81; 0x04; "FILENAME1"; "Track Name 1"; "SHA1_1"
H 155; T72; 0x04; "FILENAME2"; "Track Name Two"; "SHA1_2"

上記の場合だと、»Menu Name«はコースの選択時に表示され、その他のコースが非表示になります。プレイヤーもしくはコース投票で選ばれた時には、»Track Name 1«か»Track Name Two«がランダムに選択されます。この時点から実際のコース名が表示され、読み込まれます。

コースの追加を繰り返すことで、ランダムに選択されるコースの確立を変更することが出来ます。:

T 153; T81; 0x02; "FILENAME1"; "Menu Name"; "SHA1_1"
H 153; T81; 0x04; "FILENAME1"; "Track Name 1"; "SHA1_1"
H 155; T72; 0x04; "FILENAME2"; "Track Name Two"; "SHA1_2"
H 155; T72; 0x04; "FILENAME2"; "Track Name Two"; "SHA1_2"
H 155; T72; 0x04; "FILENAME2"; "Track Name Two"; "SHA1_2"

この場合、»Track Name 1«が選ばれる確率は25%になり、»Track Name Two«は75%になります。