chdmanでcue+bin形式のイメージファイルをchd変換するバッチ

今更感漂うネタですが実はこれまでやった事が無かったんですよね。で、調べてみてわかったのがこのご時世にまさかのコマンドラインでやらなきゃいけないっていう…せめてフロントエンド的なものが無いかと探してはみましたが、とりあえず海外のフォーラムにバッチファイルの作成方法があったのでそれを利用させてもらう事にしました。

尚、当エントリーの方法でchd変換したイメージファイルは動作確認と呼べるほどのチェックはしてませんので、その点は承知の上という事でひとつお願いしますね?

chd化に必要なもの

イメージファイルのchd化にはchdman.exeが必要です。chdmanはマルチエミュレータのMAMEに同梱されているので、MAMEDEV.orgからBinary Packagesの最新版をダウンロードします。

自己解凍形式のexeファイルなので実行すると中身が展開されます。MAMEそのものが不要ならchdman.exeのみ残してあとは削除しちゃいましょう。

バッチファイルの作成

chdman.exeにはGUIがありません。そうなるとコマンドラインかバッチファイルで起動するかの二択になりますが、毎回コマンドラインから実行するのも非効率的なので、バッチファイルを作成するのが手っ取り早いです。

そんなわけで、バッチはフォーラムに掲載されていたものに少しだけ手を加えて、あとはほぼそのまま利用させてもらう事にしました。

@echo off
rem chdman用バッチ フォルダ内のcueファイルからchdを作成
set isodir=入力元のフォルダ
set chddir=出力先のフォルダ

for /r %isodir% %%f in (*.cue) do (
	echo *** %%~nf を chd に変換中 ***
	chdman createcd -i "%%f" -o "%chddir%%%~nf.chd" -f
	echo.
)
pause

これをまるっとテキストファイルにコピペして「適当な名前.bat」というファイル名で保存します。

バッチファイルの説明

それではバッチの実行前に設定する部分と内容をさらっと書いてみます。

このバッチではisodirに指定したフォルダ内のファイルを順番に見ていき、拡張子がcueの場合に処理対象としてchdへの変換を行っています。拡張子がcue以外のファイルは特に何もされません。

正確にはcueの中に記述されているファイルからchdが作成されるわけですが、cue+binだけで無くcue+isoでも変換されますし、確認はしてませんがcue+imgでも大丈夫ではないかと思います。ccdは変換出来ないとかどこかで見たような気がしますが…こちらも未確認です。もしやってみてうまくいかないようならcue+bin形式で吸い出し直した方が無難でしょう、たぶん。

chdmanの行の最後についている -f は強制上書きモードという事で、出力先に同名ファイルが存在した場合は上書きされます。ぶっちゃけ無くてもいいような気もしますが、エラーで中断するよりはいいかなと思ってつけてあるだけなので不要だったら削っちゃって下さい。

公式なものかどうかはちとわかりませんが、chdmanのリファレンス的なページを見つけたので一応リンクを貼っておきます。

gdiからも変換出来ます

for /r %isodir% %%f in (*.cue) do (

この (*.cue) の部分を (*.cue, *.gdi) とする事で、gdi形式のファイルもchdの変換対象に出来ます。

バッチファイルの実行と注意点

バッチファイルとchdman.exeはどのフォルダから実行しても構いませんが、必ずセットで同じフォルダに配置して下さい。あと、出力先に指定するフォルダは必ず存在するフォルダを指定するように、じゃないと実行した途端にコケます。

入力元に指定したフォルダ内の全ファイルが処理対象になるので、その中の一部だけchdに変換したいという場合は、作業用フォルダを作成して変換したいファイルだけコピーか移動しておき、そのフォルダを入力元に指定する方がいいでしょう。何れにしてもサブフォルダにあるファイルまではさすがに対応出来ないのでその点はご了承を。

では先ほど作成したバッチファイルを開いて以下のパスを指定します。

isodir:変換前のイメージファイルが入っている入力元のフォルダを指定
chddir:変換後のchdを保存する出力先のフォルダを指定

出力先を入力元と同じフォルダにしたい場合は同じパスを指定すればOKです。

バッチの実行例

作成したバッチファイルをダブルクリックで処理が開始されます。ここでは例としてisodirとchddirを以下のようにして実行したとしましょう。

isodir:C:\emu\ps\iso\
chddir:C:\emu\ps\chd\

入力元のC:\emu\ps\iso\の内容がこんな感じだとすると

aaaaaaaa.zip
bbbbbbbb.iso
cccccccc.zip
dddddddd.bin
dddddddd.cue	<- 処理対象
eeeeeeee.zip
ffffffff.iso
ffffffff.cue	<- 処理対象
gggggggg.zip

出力先のC:\emu\ps\chd\はこうなります。

dddddddd.chd
ffffffff.chd

ちなみに実行画面はこんな感じです、サイズが約半分になりました。

chdman chd化バッチ 実行結果

RetroArchでchdが利用可能なコア

これは余談になりますが、実は私が今回イメージファイルのchd化をしようと思ったのは、RetroArchで使える事がわかったからだったりします。ダウンロード済みのコア以外については確認していませんが、とりあえず以下のコアでchdが利用可能ですのでご参考までに。

  • Beetle PCE FAST(PCE)
  • Beetle PC-FX(PC-FX)
  • Redream(DC)
  • Reicast(DC)
  • Genesis Plus GX(MCD)
  • Beetle Saturn(SS)
  • Beetle PSX HW(PS)
  • Beetle PSX(PS)
  • 4DO(3DO)

chd化するメリットとデメリット

イメージファイルをchd化する事で次のようなメリットとデメリットがあります。

ファイル容量の削減

圧縮されてファイルサイズが小さくなるので、私のように常にハードディスクがカツカツな人には嬉しいですね。特にgdiからだとそんなに削って大丈夫なのかと思うくらい減る場合があります。連邦vs.ジオンDXなんて1.1GBから164MBになりましたからね…圧縮可能なコンテンツをどれだけ含んでいるかによるのでソフトによってかなり差は出ると思いますけど。あとはファイル数が少なくなるのも地味にメリットと言えるかもしれません。

不具合が出る可能性

ファイルを圧縮した事で何かしら不具合が出る可能性があるので、chd化したからと言って元のファイルはすぐ消さない方がいいです。起動しなくなった、特定の場面でフリーズ、音声が出なくなったなど、何か挙動がおかしいと思ったら元のファイル形式でも起動して比較するといいでしょう。

バッチは好きなようにイジってみて下さい

自分で一から作成したわけでもないのにこう言うのも何ですが、バッチは使いやすいようにカスタマイズして利用してもらえればと思います。詳しい人から見たら色々とツッコミどころはあるかもしれませんが、結果的にはちゃんと機能しているのでとりあえずこれはこれでいい事にして下さい。