リスト項目の場合、書き込む値は「初項+行数*公差」で固定のため、書き換えを行わない行を作ったり、書き込む値をバラバラに配置することができません。それに対しダブルリスト項目(d_list)は、書き込む値を処理用のリストに記述するため、それら複雑な処理も可能になります。書式は
[subject]項目名: d_list, アドレス, リストファイル1,
最小値, 最大値, リストファイル2, オフセットか
|
です。表記上2行で書いてますが、実際は1行で書いて下さいね。
アドレス | 読み書きする対象のアドレスです。詳しいアドレスの書き方は、《A-アドレス》を参照。 |
リストファイル1 | 選択できる一覧として表示するリストファイルを指定します。ファイル指定の詳細は、《C-ファイル指定》を参照。 |
最小値 | 読み書きする値が取りうる最小値を記述します。 |
最大値 | 読み書きする値が取りうる最大値を記述します。 |
リストファイル2 | リストファイル1で特定行を選択したとき、処理する内容を記述したリストファイルを指定します。ファイル指定の詳細は、《C-ファイル指定》を参照。 |
オフセットか | リストファイル2に記述したアドレスに、この項目のアドレスを加算するかを指定します。 offset を指定すると、読み書きするアドレスは、「リストファイル2に書いたアドレス+項目のアドレス」になります。 real を指定すると、リストファイル2に書いたアドレスがそのまま読み書きするアドレスとなります。ただし、後述する「書き込む値」の場合のアドレスは、「項目のアドレス」ですので、オプションに real を指定したからといって、必ずしも項目のアドレスが不要というわけではありません。省略すると、 offset が選択されます。ファイル中のアドレスとオフセット値の扱いについては、《2.3-bundle-一括電卓項目》を参照。 |
項目名は、"/"区切りで表示先を分けることができます。詳細はリスト項目に準じます。
リストファイル2には、
書き込む値
(空行)
,アドレス=バイト列
,アドレス=バイト列,アドレス=バイト列
,開始アドレス=終了アドレス-バイト列
@チェインファイル名
|
のように、幾つかの方法で処理を指定できます。(バイト列の詳細は、《B-バイト列》を参照。)
書き込む値 | 400や0xFFなど、そのまま数値を指定します。 |
(空行) | 何も書かれていない行ならば、処理を行いません。 |
,アドレス=バイト列 | 行頭に','があると、以降を','区切りで複数指定可能なバイト列として処理します。「アドレス」に指定したアドレスから、「バイト列」を処理します。 |
,アドレス=バイト列,アドレス=バイト列 | 複数指定する場合の例です。 |
,開始アドレス=終了アドレス-バイト列 | 繰り返し処理も可能です。 |
@チェインファイル名 | 「アドレス, バイト列」という書式で羅列した、チェインファイルの指定も可能です。 |
まとめとして、いくつかのパターンでダブルリスト項目を書いておきますね。
[subject]装備中の武器:d_list,0x400000,リスト1,0,999,リスト2,offset
[subject]装備中の防具:d_list,0x500000,リスト3,0,999,リスト4,real
リスト1.LST
ひのきの棒
日本刀
銀の斧
ブーメラン
和太鼓
リスト2.LST
0x1B
200
72
,0x20=C03A
,0x40=0x60-FFFF
リスト3.LST
人民服
薄手のローブ
皮の鎧
シルバークロス
紋付き
リスト4.LST
0x1B
200
72
,0x500020=C03A
,0x500040=0x500060-FFFF
@処理リスト2
|
ダブルリスト項目での現在値(選択行)は、一致する「書き込む値」がある行か、全てのバイト列が一致する行になります。
|