CDイメージのCRC(試験運用)

概要

CD-ROM2 互換動作にて CD イメージの問題なのかという状況判断のために CD イメージの CRC の算出を行ないます. CRC の算出は試験運用のため仕様を頻繁に変更する可能性があります.

算出方法

  • CD イメージの DATA TRACK ごとに算出します. AUDIO TRACK は算出しません.
  • DATA TRACK の始点は TOC に書かれている MSF を利用します.
  • DATA TRACK の終点は SUB CHANNEL Q で判断します. (同P での判断はよくなかったのでなくしました)
  • 解析した DATA TRACK の始点から終点を zlib の crc32() で算出します. MAIN CHANNEL のみ算出対象とし、SUB CHANNEL は除外します.

DATA TRACK の終点の判断方法

対象の CD 1 sector を下記の条件で判断します. 優先順位は上から下の順番です.
  • TOC に書かれている次の TRACK に達した(n). 末尾の TRACK の場合 DISC の lead out に達した(e).
  • (廃止) SUB CHANNEL P が全ての bit が 1 で埋まっている(p).
  • SUB CHANNEL Q の CONTROL が DATA から AUDIO に変わった(d).
  • SUB CHANNEL Q の TRACK が変わった(t).
    • 注1)SUB CHANNEL P が全ての bit が 0 か 1 になっていない場合は無視
    • 注2)SUB CHANNEL Q の CRC16 が間違っている場合は無視
    • 注3)SUB CHANNEL Q の MODE が 1 でない場合は無視 (MODE 2 もよくある)

算出されたデータの見方

UperGrafx control panel で算出した情報です.
HE システム CD-ROM2 のディスクには最低1つの data track があり 2 番目と末尾に data track があることが多いです. メーカによっては 99 個 track がありうち 40 ぐらい data track ということもあります.
#21 ぷよぷよCD 
02 01:56:35 16b835d7   6600d
37 40:15:22 7cdff510   6303p
  • #21: メモリーカード内の disc 番号
  • ぷよぷよCD: 対象imageの名前
  • 02: TOC に記載された TRACK
  • 01:56:35: TOC に記載された開始 MSF (leadin を含めた絶対 MSF)
  • 16b835d7: 算出した CRC32
  • 6600: 開始MSFから有効と判断したセクタ長 (1 sector = 2352 bytes)
  • d: DATA TRACK 終点の判断理由

Compact Disc の仕様と HE システム CD-ROM2 の実装の問題

ファイルシステムがなくデータがそのまま入っている

パソコンに入れてファイルが見れないのはファイルシステムがないからです. 原因は HE システムCD-ROM2 規格制定時に CD-ROM 向けのファイルシステムが存在しなかったようです.

データの始点はわかるが終点が厳密にわからない

CD の仕様上 TRACK と TRACK の間には GAP 領域を設けることができます. しかし GAP 領域の開始 (=DATA 領域の終点)はファイルシステムがないため厳密にはわかりません.

GAP 領域のデータは正しくなくてもよい

当時の CD 生産設備では GAP 領域が正しくないことがあります.現行の光学ドライブでは何度も読み取りをしなおしたり、あきらめたりするのでこの領域がとれないことがよくあります.
PCE からのプログラムではこの領域を読みにいくことはないので PCE でゲームをする分には問題になりません.

SUB CHANNEL がときどき間違っている

GAP 領域の開始は SUB CHANNEL である程度判断できます.
当時の CD 生産設備では CD の仕様上許容される程度にデータが間違っているようです. このため GAP 領域との境界付近で SUB CHANNEL が間違っていると有効なデータ長がわかりません.

GAPや間違いの部分をどうするかは光学ドライブに依存するかもしれない

これは傾向を筆者が把握していないのでどう対処するかがよくわかりません.
同じディスクを複数のドライブからイメージを作成した場合、有効データ数がかわる可能性があるかもしれません. そしてそれのうちどれかが正解かはわからない可能性が高いです.
Comments