Write Parameters Page のデータフォーマットは次の通りです。
BYTE\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
0 | PS | 予約 | Page Code = 0x05 | |||||||||
1 | データ長さ = 0x32 | |||||||||||
2 | 予約 | BUFE | LS_V | Test Write | Write Type | |||||||
3 | Multi-session | FP | Copy | Track Mode | ||||||||
4 | 予約 | Data Block Type | ||||||||||
5 | Link Size | |||||||||||
6 | 予約 | |||||||||||
7 | 予約 | Initiator Application Code | ||||||||||
8 | Session Format | |||||||||||
9 | 予約 | |||||||||||
10 |
|
|||||||||||
11 | ||||||||||||
12 | ||||||||||||
13 | ||||||||||||
14 |
|
|||||||||||
16 | ||||||||||||
17 |
|
|||||||||||
… | ||||||||||||
31 | ||||||||||||
32 |
|
|||||||||||
… | ||||||||||||
47 | ||||||||||||
48 | Sub-header Byte 0 | |||||||||||
49 | Sub-header Byte 1 | |||||||||||
50 | Sub-header Byte 2 | |||||||||||
51 | Sub-header Byte 3 | |||||||||||
52 |
|
|||||||||||
… | ||||||||||||
55 |
BUFE を1に設定すると、バッファアンダーランを防止します。 (CD Manipulator のソースコードをみる限りではこの表現で正しいと思うのだが、 MMCの英文を眺めているとひょっとして間違っているのではないかと不安になってきた。)
Write Type は以下の通りです
Write Type | 方法 | 備考 |
0x00 | Packet/Incremental | 使ったことがない… |
0x01 | Track At Once トラックアットワンス |
DVDは不可。 使ったことがない… |
0x02 | Session At Once セッションアットワンス |
リードインからリードアウトまで通して記録する方法。 リードインは最初のデータエリアを書き込むよう指示したときに、 リードアウトは最後のデータエリアを書き込んだ後で直ぐに書き込まれる。 DVD では Disc at Once (ディスクアットワンス)ともいう。 |
0x03 | RAW | CDでリードインやリードアウト、 サブチャネルまでドライブ(ドライバーもしくはファームウェア)に任せず 自分で(プログラム側で)指定する場合に用いる。 DVDは不可 |
0x04 | Layer Jump Recording | 使ったことがない… |
Test Write を1に設定すると、書き込みテストを行います、が、 CD では Track at Once か Session at Once、 DVD では Incremental か Disc-at-once でしか動作しません。
ほかにも多くのパラメータがありますが、 その多くはデータをトラック毎、もしくは追記して書き込むための方法だと思われます。 CDの Session At Once の場合は書き込みを開始する前に別のコマンド(SEND CUE SHEET)で トラック毎に指定します。 また、CDの RAWモードで書き込む場合は、 各セクタを書き込むときに逐一指定する(と同じ)ことになります。 DVD は情報不足ですが、多分ほとんど制御できません。 デフォルトのまま送っておけば大丈夫でしょう。
気になるのは、LS_V (Link Size Valid) と Link Size あたりですが…。