CD-ROM alt kanalı aynı diski boşaltırken farklı mıdır?


14

Samsung SH-S223L sürücülü Windows 10 x64 bilgisayarımda CloneCD 5.3.3.0 ile eski video oyunlarının yedek kopyalarını yapıyorum.

Bunlardan biri PC için Hellfire (Diablo 1 genişletme):

  • Diskte bir COMPACT disc DATA STORAGElogo var
  • Seri numarası: S0011770
  • Fabrika SID Kodu: IFPI 1218
  • CD-Master SID Kodu: IFPI L032
  • ISO 9660 PVD oluşturulma tarihi: 1997-11-18 16:30:00.00

Kullandığım redump.org CloneCD profili tavsiye:

[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

Bildiğim kadarıyla oyunun koruması yok ama diski iki kez döktüğümde farklı alt kanal dosyaları ( .sub) ile sonuçlanıyorum . .ccdVe .imgdosyaları sadece özdeş .subfarklıdır, I kullanılan SHA1 sağlama ve bunu doğrulamak için bir hex editör.
İki yüklenen .subdosya döker burada .
Bu diskin iki kopyasına sahip olduğumu ve davranışın her iki diskle aynı olduğunu belirtmeliyim.

Ayrıca birkaç diğer CD-ROM medya dökümü, bazen bu davranış bazen alt kanal dökümleri arasında tutarlı olsun.

Bu davranışın açıklaması nedir?


Düzenle:

Aynı CD-ROM'u Lite-On iH124-14 sürücüsüyle tekrar döktüm ve aynı davranışı görüyorum (farklı .subdosyalar).
Ayrıca aracıyı KProbe 2 ile ilgili hatalar için kontrol ettim ve aşağıdaki sonucu alıyorum:

KProbe 2 BLER taraması


Düzenle:

Disk koşulunun ve / veya alt kanalın hata kontrol mekanizmasına (Q kanalı hariç) sahip olmadığına eklenen sürücünün hassasiyetinin olmadığı .sub, aynı ortamı birden çok kez boşaltırken neden farklı dosyalar aldığımı açıklıyor .

Ayrıca bir Plextor PX-712A sürücüsüne sahip olduğumu ve Disc Image Creator'ı.sub kullanarak dökümler arasında tutarlı dosyalar elde etmeyi başardım . Bu yazılım , diski okuma talimatları yerine talimatları kullanır ve daha doğru görüntüler sağlar. Sadece birkaç sürücü (çoğunlukla Plextor) bu talimatı desteklemektedir.0xD80xBE

Ayrıca ben aslında bu CD-ROM ben damping iki fiziksel kopyalarını kendi (aynı seri numarası, aynı IFPI kodları ve aynı lazer kazınmış bilgi). Aynı diski Disc Image Creator ile birden çok kez dökersem tutarlı .subdosyalar alırım, ancak ilk diski ve sonra ikinci diski dökersem olmaz.
Bunlardan birinin birkaç çizik ve daha fazla C1 / C2 hatası olduğu için medya koşullarıyla ilgili olduğunu düşünüyorum.


1
okuma hataları (kir, çizik, sürücüdeki gerçek hatalar olmayabilir) CDROM görüntülerinin farklı olmasına neden olabilir. farklılıklar birkaç bit kadar az olabilir; SHA * / MD5 sağlama toplamlarının farklı olması için 1 bit fark yeterlidir.
quixotic

Yanıtlar:


15

Çeşitli CD formatları biraz dahil edilmiştir ve resmi özellikler (ses CD'si için "kırmızı kitap", veri CD'si için "sarı kitap") serbestçe mevcut değildir. Ancak bazı detayları Ecma-130 gibi mevcut standartlarda bulabilirsiniz.

Orijinal ses CD'si (CD-DA olarak da adlandırılır) vinil kayıtta modellenmiştir, yani aynı zamanda sürekli ses verilerinin (DVD daha sonra kullanılan dairesel parçalar) spiral bir yoludur. Bu ses verisi içinde çok karmaşık bir şekilde araya eklenmiş olan Q alt kanalı zamanlama bilgisi (kelimenin tam anlamıyla dakika / saniye / saniye kesiri olarak) içeren 8 alt kanal (P - W) ve mevcut parça numarasıdır. Orijinal amaç için bu yeterliydi: Sürekli oynatmak için, lens izi takip etmek için biraz ayarlandı. Arama yapmak için, lens Q alt kanalının kodunu çözerken doğru iz bulunana kadar hareket ederdi. Bu konumlandırma biraz kaba, ancak müzik dinlemek için tamamen yeterli.

Günümüzde, birçok bilgisayar CD sürücüsü lensi tam olarak doğru bir şekilde konumlandıramaz ve kod çözme devresini senkronize edemez, böylece ses örneklerinin okunması kesin bir konumda başlar. Bu nedenle, birçok CD kopyalama programının bir "paranoya" modu vardır, burada örtüşen okumalar yapar ve sonuçları bu "titreşim" için ayarlamak için karşılaştırırlar. Ses akışının bir parçası olarak, alt kanal da titremeye maruz kalır ve bu nedenle doğru konumlandırılamayan bir CD sürücüsüne kopyaladığınızda farklı alt kanal dosyaları alırsınız.

CD-DA spesifikasyonunu genişletmek için veri CD'si (CD-ROM) spesifikasyonu geliştirildiğinde, verileri doğru bir şekilde ele almak ve okumak için önemi tanındı, böylece 2352 baytlık ses çerçevesi 12 senkronizasyon baytına ve 4 başlık baytına (için sektör adresi), kalan 2336 bayt veri ve ek bir hata düzeltme düzeyi bırakır. Bu şemayı kullanarak, sektörler yalnızca Q kanalı bilgisine güvenmek zorunda kalmadan tam olarak ele alınabilir. Bu nedenle titreşim efekti geçerli değildir, bir CD-ROM'u dökerken her zaman aynı verileri alırsınız ve dampingde ek zekiğe gerek yoktur.

Düzenleme daha ayrıntılı bilgi içeren:

Ecma-130'a göre , veriler aşamalı olarak karıştırılır: 24 bayt bir F1-Frame oluşturur , bu çerçevelerin 106 baytı, 8 ekstra bayt hata düzeltmesi alan 106 F2-Frame'e dağıtılır . Bu çerçevelerin her biri, F3-Frame'leri yapmak için ekstra bir bayt ("kontrol baytı") alır . Ek bayt alt kanal bilgilerini içerir (her bit konumu için bir alt kanal). 98 F3-Frame grubuna bölüm adı verilir ve 98 ilişkili kontrol baytı iki senkronizasyon baytı ve 96 bayt gerçek alt kanal verisi içerir. Ek olarak Q alt kanalı, bu 96 bitte 16 bit CRC hata düzeltmesine sahiptir.

Bunun arkasındaki fikir, diskin yüzeyindeki verileri çizik, kir vb. Çok sayıda sürekli biti etkilemeyecek şekilde dağıtmaktır, bu nedenle hata düzeltme, çizikler olmadığı sürece kayıp verileri kurtarabilir. çok büyük.

Sonuç olarak, CD sürücüsü donanımının veri akışında nerede olduğunu bulmak için lensi yeniden konumlandırdıktan sonra tam bir bölümü okuması gerekir. Çeşitli aşamaların deşifre edilmesi, kontrol bayt akışındaki 2 senkron bayt ile senkronize edilmesi gereken donanım tarafından yapılır. Tüm CD sürücü modellerinin, donanımın nasıl uygulandığına bağlı olarak, diğer modellere kıyasla senkronize edilmesi için farklı bir süreye ihtiyacı vardır (varsa, iki farklı sürücüden okuyarak test edebilirsiniz). Ayrıca, birçok model her zaman senkronize etmek için aynı zamanı almaz, bu nedenle biraz erken veya geç başlayabilir ve çözülmüş verileri her zaman aynı baytta değil.

Bu nedenle, kopyalama programı bir READ CD(0xBE) komutu verdiğinde, bir aktarım uzunluğu ve bir başlangıç ​​adresi (veya daha doğrusu Q-kanal zamanı) sağlar. Sürücü lensi konumlandırır, çerçeveleri çözer, Q kanalını çıkarır, zamanı karşılaştırır ve doğru zamanı bulduğunda aktarmaya başlar. Bu aktarım her zaman yukarıda açıklananla aynı baytta başlamaz, bu nedenle birden fazla READ CDkomutun sonucu birbirine kayabilir. Bu yüzden riperinizden farklı alt kanal dosyaları görürsünüz.

Donanıma ve merceğin ayarlandığı koşullara bağlı olarak, aktarım birkaç örneği erken veya birkaç örneği geç başlatırsa az çok rastgeledir. Sonuçlarda göreceğiniz tek desen, vardiyaların aktarım uzunluğunun bir katı olmasıdır.

Bazı sürücü modellerinde aslında her zaman aynı anda aktarımı başlatacak doğru donanım bulunur. Standart, durum sayfası olup olmadığını gösteren 0x2a mod sayfasında ("CD / DVD Yetenekleri ve Mekanik Durum Sayfası") bir bit tanımlar, ancak gerçek dünya deneyimi tam olarak iddia edilen bazı sürücülerin aslında olmadığını gösterir. (Linux altında , mod sayfalarını okumak sg_modesiçin sg3-utilespaketten kullanabilirsiniz, Windows altında hangi aracın kullanılacağını bilmiyorum).


Cevabınız için teşekkürler bana bazı ilginç bağlamlar veriyor. Diskten doğru verilere sahip olmak için alt kanala ihtiyacım olmadığını anlıyorum, sadece alt kanalın neden dökümlerde tutarlı olmadığını merak ediyorum.
Chris

1
Evet, alt kanalın neden tutarlı olmadığını açıklamaya çalıştım: Alt kanallar dahil "ham" verileri okumak için diske komutlar gönderiyorsunuz ve konumlandırma kesin değil, bu nedenle okuma farklı noktalarda başlıyor olabilir. Okuduğunuz verileri karşılaştırırsanız, parçaların yeni kaydırıldığını görürsünüz. OTOH, CD-ROM verilerinin kendisinde bu sorun yoktur. Ve konumlandırmanın neden kesin olmadığını anlamak için bağlama ihtiyacınız var (ancak kesin nedeni için daha fazla içeriğe ihtiyacınız olacaktı, ancak girmediğim).
dirkt

Mümkünse kesin nedeni bilmek istiyorum. Sorumdaki .subdosyalara bir indirme bağlantısı ekledim . Bir hex editörü ile karşılaştırdım ve haklısınız, veriler değişiyor, ancak belirgin bir desen bulamıyorum.
Chris

Çok ilginç, teşekkürler. Cygwin, sg3-utils yükledim ve koştum sg_modes. Ben 0x2a"MM yetenekleri ve mekanik durumu (eski)" bölümünde. Yarın yeni bir Liteon sürücüsü alacağım ve alt kanallar arasında çöplükler olup olmadığını görmek için tekrar test edeceğim.
Chris

1
Varlığı kod sayfası değil ortalama bir şey yapmıyor, doğru biraz bakmak zorunda ( "CD-DA akışı doğrudur" 6 bayt bit 1). İki sürücünüz varsa, bir ses CD'si alın, her iki sürücüye de kopyalayın ve verileri karşılaştırın. Gerçek sıfır olmayan verilerin başladığı farklı ofsetler görmelisiniz. Muhtemelen iki sürücü arasındaki alt kanal dosyaları için farklı ofsetler göreceksiniz.
dirkt

8

Göre bu Wikipedia makalesinde

Bir çerçeve 33 bayt içerir, bunlardan 24 bayt ses veya kullanıcı verisi, sekiz bayt hata düzeltme (CIRC tarafından üretilen) ve bir bayt alt kod içindir.

Bu, alt kanal için bir hata düzeltmesi olmadığını gösterir.

Başka bir yerde başka bir soru daha buldum . Bu ses CD'leri hakkında ama doğru sorunu gidermek düşünüyorum:

Söyleyebileceğim tek şey, aynı CD-DA / CD-TEXT'den okurken asla iki özdeş alt kanal okuması (* .SUB dosyası) almayı başaramadım. CD-DA / CD-TEXT formatı tüm alt kanallarda EDC / ECC taşımadığından veriler düzeltilmediğinden RAW modunda okurken bu normal mi?

Oradaki cevap:

Sadece ses verileri Reed-Solomon kodlamasına (C1 ve C2) tabi tutulur. Alt kod kanalı verileri (P ... W kanalları) serpiştirme veya hata korumasına tabi değildir.

İken dirkt içinde haklı olabilir sorunuzun başka cevap ihtiyacınız olmayabilir .subdosyaları, cevap açıkça sorusunu sormaz:

Bu davranışın açıklaması nedir?

Cevabım: .subAlt kanallarda hata düzeltmesi olmadığı için farklı dosyalar alıyorsunuz . Ses veya kullanıcı verilerini okurken okuma hataları düzeltilir (veya en azından algılanır), ancak alt kanal bitinde bir okuma hatası olduğu gibi geçebilir. Bir okuma oturumu sırasında çizikler veya toz nedeniyle oluşan özel hatalar, başka bir oturum sırasında görünmeyebilir, bu nedenle .subdosyalar farklılık gösterir.


Yanıt, yoruma yönelik olarak genişletildi:

Biri mükemmel durumda (görünür çizik yok) olan bu diskin iki kopyası var ve davranış hala aynı. Ayrıca, .subbirden çok dökümde tutarlı bir dosyaya sahip en kötü durumda diğer eski oyun CD-ROM'larım var .

Farklı CD'lerin farklı kalitede üretilmiş olabileceğinden şüpheleniyorum (ne yazık ki kesin bir kanıt olmadan). Alt kanalların önemli olmadığı durumlarda, düşük kaliteli disk yine de yalnızca veri tutarsızlığını algılamak için tasarlanmış kalite testlerini geçebilir. Ya da basitçe olasılıksal bir sorun olabilir: bir diskin, hata düzeltmenin düzeltebileceği zayıf noktaları vardır (tutarsız okumalar veren bir bit); bir diğeri de alt kanal bölgesinde olur.

Bu tür bir alt kanal biti size farklı sağlama toplamları vermek için yeterlidir, ancak kullanıcı veri alanındaki binlerce "kararsız" bit bile gerektiğinde sessizce düzeltilebilir, yalnızca yeterince dağıtılmışlarsa hata düzeltme algoritması çok fazla bir seferde çok.


Yanıt, KProbe 2 sonuçlarına tepki olarak genişledi.

Bildiğim kadarıyla C1 hatalarına izin verilir (bazı miktarlarda) sessizce düzeltildiklerinden ( daha fazla burada ). Bu düzeltme, hata düzeltme bitleri nedeniyle çalışır. Daha önce söylediğim gibi, alt kanalların genel olarak böyle bir fazlalığı yoktur ( dirkt Q-alt kanal CRC hata düzeltmesinden bahseder, ancak bu benim sonucumda çok fazla değişmez). Dahası, eğer hata orada ortaya çıkarsa, doğru alt kanal verilerinin ne olduğunu önceden bilmiyorsanız, bunu bilmenin bir yolu yoktur.

Yani bildiğiniz toplam 1855 hata aldınız. Testi tekrarlayın (ciddi olarak yapın!) Ve örneğin 1790 hatalarınız olabilir; veya 1892. Ancak düzeltilmiş çıktı her okuduğunuzda aynıdır.

Her 32 veri biti için bir alt kanal biti varsa, muhtemelen tespit edilmemiş bir hatayla okunan yaklaşık 1855/32 alt kanal bitiniz olduğunu söylüyoruz. Bu yaklaşık 58 bit. Neredeyse, Q-subchannel CRC sayesinde bu hataların bazıları en azından tespit edilebilir. Q, sekiz alt kanaldan biri olduğundan, diğer alt kanallarda yaklaşık 50 hatalı bit kaldığını tahmin ediyorum. Bir dahaki sefere okuduğunuzda, bu bitlerden birkaç tanesini hatasız ve birkaç yeni alt kanal hatası alabilirsiniz. Böylece farklı bir .subdosya elde edersiniz . Ve yine de bu bitlerden hangisinin ilk veya ikinci kez doğru okunduğundan emin olmayacaksınız.


Her şeyden önce cevabınız için teşekkürler, orta koşulun dikkate alınması gerektiğini anlıyorum, ancak bu diskin bir tanesi mükemmel durumda (görünür bir çizik yok) ve davranış hala aynı. Ayrıca, .subbirden çok dökümde tutarlı bir dosyaya sahip en kötü durumda diğer eski oyun CD-ROM'larım var . Oyunun korunmadığı göz önüne alındığında alt kanala ihtiyacım olmadığının farkındayım, bu soruyu teknik meraktan soruyorum :).
Chris

1
@ Kristophe Cevabımı genişlettim.
Kamil Maciorowski

Anlıyorum. Ortam için hata bilgilerinin olması ilginç olabilir, bir Liteon iHAS124 sürücü sipariş ettim ve bunu kontrol etmek için kprobe2 kullanacağım. Bu konuda yarın güncelleme yapmalıyım.
Chris

C1 hata tarama sonucunu soruma ekledim, iyi görünüyor, maksimum 25.
Chris

1
@ Kristophe Cevabımı tekrar genişlettim.
Kamil Maciorowski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.