2009年9月21日の日記の2番目の記事へのコメント
■銀河お嬢様をアレする 完結編
とまあ,先に述べたようにもやしていた部分が概ねすっきりしたので,集大成ということでユナのメディアを作り直してみました.手順はこんな感じ.以下の記述は usrdir/content/cdrom/hcd5078 以下のファイルが対象ですが,他でも多分同じなので適宜読み替えてください.
- at3ファイルをHiMDRenderer 1.00beta4を使ってwavファイルに変換する
- Overlap sizeは160に設定 (それ以外はデフォルトのまま)
- Sony ATRAC3 Audio Codec 0.98 か SonicStage CP (4.4) を入れておく
- wavファイルの先頭にノイズが入っていないかを確認し,入っている場合は波形エディタなどで除去
- ここの末尾に添付されている pcebin.zip を展開して,pcebin.c をコンパイルし,出来上がったバイナリでbinファイルを解凍
- hcdファイルではトラック毎の情報が列挙されており,4列目が開始セクタで5列目がセクタ数なので,ここから各トラックのプリギャップ時間を求める
- 多分こんな式 → (開始セクタ - (前のトラックの開始セクタ + 前のトラックのセクタ数)) / 75
- 直前がオーディオトラックのデータトラックには3秒入り,直前がデータトラックのオーディオトラックには2秒入るのが一般的らしい (少なくともPCエンジンでは)
- hcdファイルのセクタ数を元に,オーディオトラックのデータサイズを導出し,それにぴったり合うようにwavファイルを加工する (データトラックは最初からサイズが揃っているので調整不要)
- 期待されるオーディオトラックのデータサイズはhcdファイルに書かれているセクタ数×2352で導出 (ちなみにデータトラックは2352倍ではなく2048倍)
- at3ファイルから作ったwavファイルから一旦RIFFヘッダを除去 (以下これを生データと呼ぶ)
- 生データが期待されるオーディオトラックのサイズよりも小さい場合,生データの先頭か末尾に足りないサイズ分0を加え,期待されるサイズに揃える (どっちに足すかはお好みで / とにかくサイズを揃えることが重要)
- 生データが期待されるオーディオトラックのサイズよりも大きい場合,生データの先頭や末尾の無音と思しき部分を削り,期待されるサイズに揃える (どっちから削るかもお好みで)
- すべての生データのサイズが期待されるオーディオトラックのサイズと一致するようになったら,再度生データにRIFFヘッダをつけ直してwavファイルに戻す
- CUEシートを記述する
- すべてのトラックのサイズが期待されるサイズとぴったりあっているはずなので,CUEシートにはプリギャップの情報と各トラックのファイル名を書き記せばOK
- 以下ユナの例 (ファイル名は適宜自分の環境に合わせる)
FILE "yuna1_01.wav" WAVE TRACK 01 AUDIO INDEX 01 00:00:00 FILE "yuna1_02.iso" BINARY TRACK 02 MODE1/2048 PREGAP 00:03:00 INDEX 01 00:00:00 FILE "yuna1_03.wav" WAVE TRACK 03 AUDIO PREGAP 00:02:00 INDEX 01 00:00:00 FILE "yuna1_04.wav" WAVE TRACK 04 AUDIO INDEX 01 00:00:00 FILE "yuna1_05.wav" WAVE TRACK 05 AUDIO INDEX 01 00:00:00 FILE "yuna1_06.wav" WAVE TRACK 06 AUDIO INDEX 01 00:00:00 FILE "yuna1_07.wav" WAVE TRACK 07 AUDIO INDEX 01 00:00:00 FILE "yuna1_08.wav" WAVE TRACK 08 AUDIO INDEX 01 00:00:00 FILE "yuna1_09.wav" WAVE TRACK 09 AUDIO INDEX 01 00:00:00 FILE "yuna1_10.iso" BINARY TRACK 10 MODE1/2048 PREGAP 00:03:00 INDEX 01 00:00:00
- ImgBurnなどでCUEシートを読み込んで焼く
以上です.wavファイルと生データの相互変換 (というかヘッダ取ったり付けたりするだけだけど) にはsoxを使いました.生データの切り詰めは head と tail を使い,0の付加は /dev/zero から dd で必要な分だけ末尾に追加するとかやってます.どれも一般的な処理なんで,真似してみようと思う方は適宜手慣れたものをお使いになればよいかと・・・.バイナリエディタだけでもできるし.
で,上記手順で作ったユナのCDを実機にかけてみたところ,前回到達できなかったタイトル画面が見事に表示されました (ただしタイトル画面は無音 (´・ω・`)
もちろんゲームもプレイ可.
というわけで,PSPの銀河お嬢様伝説コレクションから吸い出したデータを実PCエンジンで動かす話は多分これでおしまい.あんまりコースター作らずに済んでよかったなー.
いやー,しかし今回はプリギャップとかATRAC3とか,普段触れないような話題満載で色々と知見が増えました.特にATRAC3は曲者ですね.ユナの1トラック目の長さにどんだけ悩んだことか・・・.AT3 Converter なるツールを使うとPSP上でat3をwavに変換できるようなので,こっちの方がちゃんとしたファイルを作れるのかも.PSP持ってないので試せませんが・・・いい加減買うべきか? 次また何か出たら考えよう.
それから,プリギャップやPCエンジンのCDの構造などに関してはこちらやこちらが非常に参考になりました.こうしてまとまった情報があるのは本当に有り難いことですね.読んでるうちにセーラームーンがすげー欲しくなってきたw
さて,サファイアで遊ぶかー.
2009年9月21日の日記の2番目の記事へのコメント
[コメントを書く]