オッサンのゲームに纏わる奮闘記です。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ご無沙汰してしまっていました。
ゴニョゴニョやっていますが、それはもうちょっとまとまってからにして、今更の所謂ディスクイメージ化です。

HxCを利用するようになり、直接HxCで使用できるようにイメージ化することは、3.5インチ2DD、2HDや5.25インチの2DD、2HD2Dと言う具合にできますが、イメージがHFE形式であり、多くのエミュレータで対応されているような形式へは、なかなかWindows機のみでは面倒だったりします。

DOSを起動してDITTを利用する、実機と繋いでTranDiskなどを利用するでしょうか?
でも、これって面倒ですよね。
#実際DITTは微妙にバグがありますし。
折角HxC Emulator Softwareで出来るのだから何とかならないかな?と思ったのが、実は去年だったりして。

実はHxCでのイメージ化にも利用されている、「fdrawcmd.sys」の作者Simon Owen氏が公開されている「SAMdisk」というのがあります。
 
これはfdrawcmd.sysを利用して、Windows上でディスクのイメージ化および書き戻しが出来るものですが、いろいろとやりとりさせてもらいD88イメージへの対応状況を改善してもらいました。
2012年4月8日が最新版の3.2が公開されていますが、その前の3.1から対応いただき、非常に使いやすく、簡単なので紹介させてください。
Simon Owen氏には非常に感謝しています。
64bit環境なWindows機でも問題なくイメージ化、書き戻しができますよ。

まずはイメージ化から。
fdrawcmd.sys」のインストールは済んでいることが前提です。
残念ながらUSBのドライブは使用できません。
BIOSで1ドライブでもいいのでドライブが認識されている状態が必要です。

こんな感じ。
SAMdisk」は適当にダウンロードして、どこかのフォルダーに解凍してください。
#私の場合は面倒なので、HDDのルートに「SAMdisk32」というフォルダーを作成して、そこに解凍しました。

ドライブはAだとして、後はコマンドプロンプトから、
「samdisk a: hogehoe.d88」
と入力するだけで、D88イメージが作成されます。

逆にD88イメージを書き戻す場合は新しい(もしくは消去されても大丈夫な)ディスクを挿入し、
「samdisk hogehoge.d88 a:」
とするだけです。

ミックスレングスなんかも問題ないし、インターリーブフォーマットをきちんと認識して、正しい順番でイメージ化してくれます。
#単倍はリードはイメージ化はOKですが、書き戻しはダメなようです。(未確認)

って、それだけだと不親切なのでちょっとおまけ。

まず、3.5インチのイメージ化の場合、所謂1.25MByteなどの国内の2HDイメージはドライブの回転数が360回転でないとダメですよね。
所謂スリーモードで、回転数の切り換えは以前のブログ記事参照です。
で、
「samdisk a: hogehoe.d88」
としただけでも、殆どの場合は問題なくイメージ化できますが、全くオプションを指定しないと、0から76シリンダ両面をイメージ化します。
もしオーバートラックなどをイメージ化したい場合は、
「samdisk a: hogehoge.d88 -c84」
などとしないとだめです。
ちなみに「-c」でのシリンダ指定ですが、どういうわけかリードしたい数のシリンダを入力する必要があります。つまり0から83シリンダまでリードしたい場合は「-c83」ではなく、「-c84」と指定する必要があります。
ただし範囲の指定の場合は「-c0-83」と指定します。
#つまり、0~83シリンダを扱う方法は「-c84」もしくは「-c0-83」とする2つの方法があります。
実際はこんな感じ。

2HDの場合は一般的に0~76シリンダ両面ですが、2DDは0~79シリンダが基本ですので、-c84などのオプションは必須です。
また、5.25インチ2HDドライブで2Dのディスクをイメージ化する場合は
「-c42 --double-step」というオプションを付けることで、0~41シリンダまでイメージ化できます。

#ちなみにシリンダ4ヘッド0がアンフォーマットです。

また、各トラックのちょっと詳細な情報を出力してもらいたい場合は「-v」オプションをつけましょう。
詳細はSAMdiskの「Scan」のコマンドに記載がありますが、
各トラックごとに
500Kbps MFM, 18 sectors, 512 bytes/sector:
などと表示されます。
2HDの場合は500Kbps、2DDの場合は300Kbps、2Dは2HD、2DD対応のドライブの場合は300Kbps、本来の2D専用ドライブは250Kbpsとなり、その後はそのトラックのセクター数と基本となるセクターサイズが表示されます。
その次に表示される。
0.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
ですが、
最初の「0.0」はシリンダ0ヘッド0を意味しています。
「0.1」「1.0」「1.1」....という具合に続きます。
その先の数字はセクターの並び順です。
インターリーブフォーマットの場合などもきちんと出力されます。

ミックスレングスの場合は、セクター長が異なるセクターの後ろに、
「3[n1]」などと、n?という形でセクター長が表示されます。
また、データCRCがあるセクターは
「3[dc]」というにdcと続きます。
エラーのあるディスクはこんな感じ。

#その場合はdiff; ?????と続きますが、詳細はscanの説明に譲ります。複数回の(標準では5回の)リードによって、どこがどれだけのバイトデータが異なっているか、合致しているかを表示してくれるので、所謂不安定プロテクトなどを見つけることが出来ます。
#イメージとしては再現できません。

ちなみに「scan」のコマンドで「--offsets」を指定すると、各セクターの詳細なオフセットが表示されます。
これを利用することで、ウェーブフォーマットを調べることが出来ます。
#後でディスク探して追記するかも。
が、これもイメージとして再現できません。
イメージ化のログに残したい場合は
「--log=file.log」とすることで、file.logというファイルにログが保存されます。

次に書き戻しですが、
殆どの場合、
「samdisk hogehoge.d88 a:」
とすることで、問題なく書き戻すことができますが、5.25インチのDiskBASICなどの場合はシリンダ0ヘッド0の最初のトラックが単密のため、うまく書き戻せないことがあります。
#私のPCはそうでした。
そのような状態で書き戻そうとした場合、
「The drive cannot find the sector requested」
というエラーがでて終了してしまいます。
その場合はシリンダ0ヘッド0のみを
「--fm-overlap」というオプションを付けて書きこむことで問題なく書き戻せます。
具体的には
samdisk hogehoge.d88 a: --fm-overlap
とするだけです。


結構便利なツールですので、使ってみてください。
では~
スポンサーサイト

管理者にだけ表示を許可する
http://kitahei88.blog.fc2.com/tb.php/91-24d8f219
この記事にトラックバックする(FC2ブログユーザー)
// ホーム //
Powered By FC2ブログ. copyright © 2017 レトロゲーム漫遊記 : episode2 all rights reserved.
最新記事
最新コメント
最新トラックバック

プロフィール

kitahei88

Author:kitahei88
dtiblogが閉鎖されたため、こちらでお世話になります。
ただのオッサンです。

オッサンのつぶやき

カテゴリ
月別アーカイブ
検索フォーム

リンク
RSSリンクの表示
ブロとも申請フォーム
QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。