動画
D_MOVIE.BINにオープニングとスタッフロールの動画が入っている。
- 0x00000000~ OP
- 0x02DA0000~ スタッフロール
D_MOVIE.BINの拡張子をPSSに変えてCube Media Player2でScan fileして見るか、OPとスタッフロールに分割したバイナリデータを各々PSS_demuxで映像と音に分離して、XMedia Recodeなどで結合しmpgやmp4に変換して動画プレイヤーで見る。
音楽・声・SE
D_AUDIO.BINには、BGMと映画・コンサートデート用のBGMが入っている。
MFAudioで聴くか、ADPCMconv用のプレイリストを作ってADPCMconvで聴く。作るのに手間は掛かるが好きなだけループさせられるからお勧め。以下はリストのサンプル。
;テニスの王子様学園祭の王子様
#GAMENAME Prince of Tennis Prince of School Festival
#DIALOG_MES ドライブを選択してください
#SRCNAME \D_AUDIO.BIN
#CHANNEL 2
#INTERLEAVE $10
#FREQUENCY 44100
#PARAMTYPE ofs,size,outname
$20,$5208A0,メインタイトル
$521020,$4D77E0,おはよう!
$9F8820,$6DEC00,おやすみ。。。
$10D7820,$5227E0,MAP~朝
$15FA020,$42CB80,MAP~昼
$1A27020,$5DF320,MAP~夕方
$2006820,$5073E0,出会い
$250E020,$487920,お友達
$2996020,$542220,好きかも…!?
$2ED8820,$42FD60,プレイヤーエントリー
(以下省略)
VOICE.BINはキャラボイス。だいたい演者毎にまとまっているので、誰がどのガヤ(『跡部様~!』とか『ウワァー!』)を当てているのか分かる。素っぽい感じがあったりして興味深い。
PSoundで聴くか、ADPCMconv用のプレイリストを作ってADPCMconvで聴く。BGMのようなループは必要ないからPsoundの方がお勧め。
サンプリングレートはだいたい37800Hzで、一番最後のボイスだけ44100Hzにする。37800Hzだとどちら様?って感じだけれど、44100Hzにすると赤也だとわかる。
D_SE.BINはSE。SQ(IECSuqeS識別子を含むヘッダ)、HD(IECSdaeHを含むヘッダ)、BD(ADPCM波形データ)が入っている。
試しにVGMToolboxのPSF2 Data Finder機能とmkpsf2 Front End機能を使ってみたが、ゴミみたいなpsf2ファイルしかできなかった。
要は波形データが聴ければよい。取り敢えずPsoundで聴ける。ものによってはゆっくり過ぎたり速過ぎたり違和感を感じるが、だいたい44100Hz~24000Hzで声は37800Hzにするとそれらしく聞こえる。
もうちょっとちゃんとした状態で聴きたい場合は、BINファイルの中からサンプリングレートを読み出す必要がある。そんな手間を惜しまないなら、ついでにADPCMconv用のプレイリストを作ってADPCMconvで聴いてもよいと思う。
フォント・スチル・スプライト画像
*.BINの中にQYとかqyといった識別子を見つけたら多分、画像データ。
- QY … 8bit画像 RGB8888
- Q_ … 8bit画像 RGB555(1555)
- qY … 4bit画像 RGB8888
- q_ … 4bit画像 RGB555(1555)
その先に幅・高さ情報、パレットとベタデータが圧縮されずに入っている。いつもなら圧縮されているのに一体どうしたんだ。
そんなわけで、自前で好みの画像タイプのヘッダを用意してパレットとベタデータをくっつけてやれば、画像ビューアで見られるようになる。
RGB8888タイプの三原色の並びは、Red、Green、Blue、Reserved(今回はアルファチャンネルとして機能していないようだ)。BMP形式にする場合はRedとBlueを入れ替える。ベタデータの上下反転も忘れない。
RGB555をRGB8888へ変換する
1色をint型(2バイト)で表現している例えば0x66D5(バイナリエディタで見るとD566)という色を、2進数にして考える。
0110 0110 1101 0101
Reserved、Blue、Green、Redを得るために1-5-5-5ビットに分割する。
0 11001 10110 10101
Blue、Green、Redに3ビット足して8ビットにする。
0 11001000 10110000 10101000 (0 0xC8 0xB0 0xA8)
このままでもいい気がするが、PCSX2で見た時と比べ本当に微妙~~~に画像が暗い。
0でなければ下位3ビットを111で埋める。すなわち7でORする。
0 11001111 10110111 10101111 (0 0xCF 0xB7 0xAF)
7で論理和をとった結果、7(00000111)になってしまったら0に書き換える。
各バイトを並び替える。
0xAF 0xB7 0xCF 0 (バイナリエディタで見るとAFB7CF00)
BMP用にするならCFB7AF00
台詞・キャプション
D_MESS.BINにあるが、独特の文字コードを持っているので簡単には読めない。
1バイトと2バイトの文字コードがある。1バイトコードは0x20~0x7EまでがASCIIコードと同じ。それ以外は一切オリジナル。Smash Hit!とか最強チームを結成せよ!の時のコードとも違う。今回は文字数が少ないので割と簡単だ。
例)『、』→0x81,『あ』→0x0101
フォント画像をヒントに辞書を作成し、それを元に文字展開していく。