
Samsung SH-S223L ドライブを搭載した Windows 10 x64 コンピューターで CloneCD 5.3.3.0 を使用して、古いビデオ ゲームのバックアップ コピーを作成しています。
その 1 つは、PC 版の Hellfire (Diablo 1 拡張版) です。
- ディスクには
COMPACT disc DATA STORAGE
ロゴがある - シリアルナンバー:
S0011770
- 工場SIDコード:
IFPI 1218
- CDマスターSIDコード:
IFPI L032
- ISO 9660 PVD作成日:
1997-11-18 16:30:00.00
私は出典:CloneCD プロファイルの推奨事項:
[CloneCD ReadPrefs]
ReadSubData=1
RegenerateData=0
ReadSubAudio=1
AbortOnReadError=0
FastErrorSkip=0
ReadSpeedData=8
ReadSpeedAudio=8
IntelligentBadSectorScan=1
SectorSkip=1
NoErrorReport=0
FirstSessionOnly=0
AudioQuality=3
私の知る限り、このゲームにはプロテクトはありませんが、ディスクを2回ダンプすると、異なるサブチャネルファイル(.sub
)が作成されます。.ccd
と.img
ファイルは同一で、 のみが.sub
異なります。これを検証するために、SHA1チェックサムと16進エディターを使用しました。2つのファイルダンプ
をアップロードしました。.sub
ここ私
はこのディスクを 2 枚所有していますが、どちらのディスクも動作は同じです。
他の CD-ROM メディアもいくつかダンプしましたが、サブチャネルがダンプ間で一貫している場合でも、この動作が発生することがあります。
この行動の説明は何でしょうか?
編集:
同じ CD-ROM を Lite-On iH124-14 ドライブで再度ダンプしましたが、同じ動作 (異なる.sub
ファイル) が見られました。
また、KProbe 2 を使用してメディアのエラーをチェックしたところ、次の結果が得られました。
編集:
ディスクの状態やドライブの精度不足、さらにサブチャネルにエラー制御メカニズムがない (Q チャネルを除く) という事実が、.sub
同じメディアを複数回ダンプしたときに異なるファイルが生成される理由であると思われます。
私はPlextor PX-712Aドライブも入手しており、これ.sub
を使用してダンプ間で一貫したファイルを取得することができました。ディスクイメージクリエーターこのソフトウェアは、ディスクを読み取るために0xD8
命令ではなく0xBE
指示を活用するため、より正確な画像が得られます。この命令をサポートするドライブはごくわずかです (主に Plextor)。
また、私は実際にダンプする CD-ROM の物理コピーを 2 つ所有しています (同じシリアル番号、同じ IFPI コード、同じレーザー刻印情報)。Disc Image Creator を使用して同じディスクを複数回ダンプすると、一貫性のある.sub
ファイルが得られますが、最初のディスクをダンプしてから 2 番目のディスクをダンプすると一貫性がなくなります。1
つのディスクにいくつかの傷があり、C1/C2 エラーが多いため、これはメディアの状態に関連していると思われます。
答え1
さまざまな CD フォーマットは少々複雑で、公式仕様 (オーディオ CD の場合は「レッド ブック」、データ CD の場合は「イエロー ブック」) は無料では入手できません。ただし、Ecma-130 などの利用可能な標準で詳細を確認できます。
オリジナルのオーディオ CD (CD-DA とも呼ばれる) はビニール レコードをモデルにしており、連続オーディオ データのスパイラル トラックも使用しています (DVD は後に円形トラックを使用)。このオーディオ データ内には 8 つのサブチャネル (P から W) が非常に複雑にインターリーブされており、そのうち Q サブチャネルにはタイミング情報 (文字通り分/秒/秒の何分の 1 か) と現在のトラック番号が含まれています。元の目的にはこれで十分でした。連続再生の場合、レンズをわずかに調整してトラックをたどるだけで済みました。シークするには、Q サブチャネルをデコードしながら、正しいトラックが見つかるまでレンズを移動します。この位置合わせは少し粗いですが、音楽を聴くには十分です。
現在でも、多くのコンピュータ CD ドライブは、レンズの位置を完全に正確に設定できず、オーディオ サンプルの読み取りが正確な位置から開始されるようにデコード回路を同期させることができません。このため、多くの CD リッピング プログラムには「パラノイア」モードがあり、このモードでは、読み取りを重複させて結果を比較し、この「ジッター」を調整します。オーディオ ストリームの一部として、サブチャネルもジッターの影響を受けます。そのため、正確に位置設定できない CD ドライブでリッピングすると、異なるサブチャネル ファイルが生成されます。
CD-DA 仕様を拡張するためにデータ CD (CD-ROM) 仕様が開発されたとき、データの正確なアドレス指定と読み取りの重要性が認識され、2352 バイトのオーディオ フレームが 12 の同期バイトと 4 つのヘッダー バイト (セクター アドレス用) に分割され、残りの 2336 バイトがデータと追加のエラー訂正レベルに使用されました。この方式を使用すると、Q チャネル情報のみに頼ることなくセクターを正確にアドレス指定できます。したがって、ジッター効果は適用されず、CD-ROM をダンプするときに常に同じデータが得られ、ダンプ時に追加の工夫は必要ありません。
編集詳細は以下をご覧ください:
によるとエクマ130データは段階的にスクランブルされます。24バイトが1つのデータを構成し、F1フレーム、これらのフレームの106バイトは106に分配されますF2フレーム8バイトのエラー訂正が追加されます。これらのフレームはそれぞれ1バイト(「制御バイト」)追加され、F3フレーム追加のバイトにはサブチャネル情報(各ビット位置に1つのサブチャネル)が含まれます。98個のF3フレームのグループは、セクション関連する 98 個の制御バイトには、2 つの同期バイトと 96 バイトの実際のサブチャネル データが含まれます。Q サブチャネルには、さらに、その 96 ビットに 16 ビットの CRC エラー訂正が含まれています。
この背後にある考え方は、傷や汚れなどが連続したビットの多くに影響を与えないようにディスクの表面にデータを分散させることです。そのため、傷が大きすぎない限り、エラー訂正によって失われたデータを回復できます。
その結果、CD ドライブ ハードウェアは、レンズの位置を変更した後、データ ストリーム内の位置を特定するためにセクション全体を読み取る必要があります。さまざまな段階の暗号解除はハードウェアによって行われ、制御バイト ストリーム内の 2 つの同期バイトに同期する必要があります。すべての CD ドライブ モデルは、ハードウェアの実装方法に応じて、他のモデルと比較して同期に異なる時間を必要とします (2 つの異なるドライブがある場合は、それらから読み取ることでテストできます)。また、多くのモデルでは同期に常に同じ時間がかかるわけではないため、開始が少し早かったり遅れたりして、暗号解除されたデータが常に同じバイトで出力されるとは限りません。
したがって、リッピング プログラムがREAD CD
(0xBE) コマンドを発行すると、転送長と開始アドレス (または Q チャネル時間) が提供されます。ドライブはレンズの位置を決め、フレームをデスクランブルし、Q チャネルを抽出し、時間を比較し、正しい時間が見つかると転送を開始します。この転送は、上で説明したように常に同じバイトから開始されるわけではないため、複数のREAD CD
コマンドの結果が互いにずれる場合があります。そのため、リッパーから異なるサブチャネル ファイルが表示されます。
ハードウェアとレンズ調整時の状況に応じて、転送が数サンプル早く開始されるか、数サンプル遅く開始されるかは、多かれ少なかれランダムです。したがって、結果に表示される唯一のパターンは、シフトが転送長の倍数であることです。
一部のドライブ モデルには、常に同時に転送を開始する正確なハードウェアが搭載されています。標準では、モード ページ 0x2a (「CD/DVD 機能および機械ステータス ページ」) に、その場合を示すビットが定義されていますが、実際の経験では、正確であると主張しているドライブの中には、実際には正確ではないものもあります。(Linux では、パッケージsg_modes
からを使用しsg3-utiles
てモード ページを読み取ることができますが、Windows ではどのツールを使用すればよいかわかりません)。
答え2
によるとこのウィキペディアの記事
フレームは 33 バイトで構成され、そのうち 24 バイトはオーディオまたはユーザー データ、8 バイトはエラー訂正 (CIRC 生成)、1 バイトはサブコード用です。
これは、サブチャネルにエラー訂正がないことを示しています。
私も見つけた別の質問これはオーディオ CD に関するものですが、適切な問題を扱っていると思います。
私が言えるのは、同じ CD-DA/CD-TEXT から読み取ったときに、2 つの同一のサブチャネル読み取り値 (*.SUB ファイル) を取得できたことは一度もないということです。CD-DA/CD-TEXT 形式はすべてのサブチャネルで EDC/ECC を伝送しないため、データが修正されず、RAW モードで読み取るときにこれが正常であるということですか?
答えはこうです:
オーディオ データのみにリード ソロモン コーディング (C1 および C2) が適用されます。サブコード チャネル データ (チャネル P...W) にはインターリーブやエラー保護は適用されません。
その間ダーク正しいかもしれないあなたの質問に対する別の答えファイルが必要ないかもしれないが.sub
、答えはあなたの質問に明確に答えていない:
この行動の説明は何でしょうか?
私の答えは、.sub
サブチャネルにエラー訂正機能がないため、異なるファイルが生成されます。読み取りエラーは、オーディオまたはユーザー データの読み取り中に訂正されます (または少なくとも検出されます)。ただし、読み取りエラーはサブチャネル ビットで発生した場合はそのまま通過します。傷やほこりによる特定のエラーは、1 つの読み取りセッション中に表示され、別の読み取りセッション中には表示されないなど、.sub
異なるファイルが生成されます。
コメントに対応するために回答を拡張しました:
私はこのディスクのコピーを 2 つ持っていますが、1 つは非常に良い状態 (目に見える傷なし) で、動作は依然として同じです。また、
.sub
複数のダンプ間で一貫したファイルを持つ、最も悪い状態の古いゲーム CD-ROM も持っています。
私は、(残念ながら確固たる証拠はありませんが) 異なる CD が異なる品質で製造されたのではないかと疑っています。サブチャネルが問題にならない場合、低品質のディスクでも、データの不一致のみを検出するように設計された品質テストに合格する可能性があります。または、単に確率的な問題である可能性もあります。つまり、1 つのディスクには弱点 (不一致な読み取り値を示すビット) があり、エラー訂正によって修正できますが、別のディスクにはサブチャネル領域に弱点がある可能性があります。
このようなサブチャネル ビット 1 つで、異なるチェックサムを生成するのに十分ですが、ユーザー データ領域内の「未決定」ビットが数千あっても、それらが十分に分散されていれば、必要に応じて自動的に修正される可能性があります。そのため、エラー修正アルゴリズムは、一度に大量の未決定ビットを処理することはありません。
KProbe 2 の結果に応じて回答が拡張されました。
私の知る限り、C1エラーは(ある程度は)黙って修正されるので許容されます(詳細はこちらこの訂正は誤り訂正ビットのおかげで機能します。前に述べたように、サブチャネルには一般にこのような冗長性はありません(ダークQ サブチャネル CRC エラー訂正について言及していますが、私の結論にはあまり変わりはありません。さらに、そこでエラーが発生した場合、正しいサブチャネル データが何であるかを事前に知っていない限り、それを知る方法はありません。
つまり、あなたが知っているエラーは合計 1855 個ありました。テストを繰り返すと (本当に、やってみてください!)、たとえば 1790 個、または 1892 個のエラーが発生する可能性があります。それでも、修正された出力は読み取るたびに同じです。
32 データ ビットごとに 1 つのサブチャネル ビットがある場合、エラーが検出されずに読み取られたサブチャネル ビットは 1855/32 程度あると考えられます。これは約 58 ビットです。ほぼ、Q サブチャネル CRC のおかげで、これらのエラーの一部は少なくとも検出される可能性があるためです。Q は 8 つのサブチャネルの 1 つであるため、他のサブチャネルには約 50 ビットのエラー ビットが残っていると推定されます。次に読み取るときには、これらのビットのいくつかはエラーなしで取得され、他の場所ではいくつかの新しいサブチャネル エラーが発生する可能性があります。したがって、異なる.sub
ファイルが生成されます。それでも、1 回目または 2 回目にどのビットが正しく読み取られたかは確実にはわかりません。