2025年7月26日の日記を表示中

2025年 7月26日 (土)

ドリキャス

ドリキャスのGD-ROMの高密度領域に複数トラックが記録されているタイプのダンプで、最後のデータトラックの直前の2秒の空白部分の最初の2セクタをうまく読み出せない問題に関して、開始セクタによって中身が変わることをツイートしたら、ランダムっぽいデータになっているのはスクランブルが解けていないからではないかとのご指摘を頂きました。

うおお、CD-ROMのデータトラックって、元々スクランブルがかかっているのか!調べてみたら、ECMA-130なんていうので定義されていたりするんですね。これは知らなかった。

早速ダンプ済みのスターグラディエイター2のデータに対して、教えていただいたツールを適用してみたところ、ランダムっぽかった中身が綺麗なデータに!

unscramble成功

中身が綺麗なデータになった

調べてみると、最初の 12Byte (00 FF FF FF FF FF FF FF FF FF FF 00) の部分が同期部分で、その後の3Byte (A3 01 40) がそのセクタのアドレスを時刻 (分、秒、フレーム) の模様。数字はBCD形式とのことですが、分の部分が 0xA3と、BCDじゃない数値になっちゃっています。これは多分、GD-ROMだとCD-ROMと違って99分を超えちゃうので仕方なく拡張したものと推測w。なので、0xA3は103分かな。計算してみると、103 * 60 * 75 + 1 * 75 + 40 = 463,615 となり、まさに最後のデータトラックの2秒手前の最初のセクタ番号と一致しますね。

次のセクタ 463,616も正しくスクランブル解除できているようだったので、これらをダンプ済みのデータと合成してみたところ、ついに最後のデータトラックのSHA1が redump.orgのデータベースと一致するようになりました。やった!ありがとうございます!いやしかし、ほんと解決するとは思いませんでしたw。SNS凄すぎるw

切り貼りして再構築した最後のデータトラックのSHA1

redump.orgのSHA1

その後、調べたら、スクランブルのアルゴリズムとかも見つかったので、Cで再実装してみました。これでLinux上で、httpd-ackを利用したダンプ結果のredump.org互換形式への変換を自動化できそうです。

2025年7月26日の日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2025年7月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ