2021年8月21日土曜日

PS2版 テニスの王子様 学園祭の王子様の中身を見てみる

動画

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で聴く。作るのに手間は掛かるが好きなだけループさせられるからお勧め。以下はリストのサンプル。

tenipri_gakuensai_sound.lst

;テニスの王子様学園祭の王子様
#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. 1色をint型(2バイト)で表現している例えば0x66D5(バイナリエディタで見るとD566)という色を、2進数にして考える。

    0110 0110 1101 0101

  2. Reserved、Blue、Green、Redを得るために1-5-5-5ビットに分割する。

    0 11001 10110 10101

  3. Blue、Green、Redに3ビット足して8ビットにする。

    0 11001000 10110000 10101000 (0 0xC8 0xB0 0xA8)

    このままでもいい気がするが、PCSX2で見た時と比べ本当に微妙~~~に画像が暗い。

  4. 0でなければ下位3ビットを111で埋める。すなわち7でORする。

    0 11001111 10110111 10101111  (0 0xCF 0xB7 0xAF)

    7で論理和をとった結果、7(00000111)になってしまったら0に書き換える。

  5. 各バイトを並び替える。

    0xAF 0xB7 0xCF 0  (バイナリエディタで見るとAFB7CF00)

    BMP用にするならCFB7AF00

台詞・キャプション

D_MESS.BINにあるが、独特の文字コードを持っているので簡単には読めない。

1バイトと2バイトの文字コードがある。1バイトコードは0x20~0x7EまでがASCIIコードと同じ。それ以外は一切オリジナル。Smash Hit!とか最強チームを結成せよ!の時のコードとも違う。今回は文字数が少ないので割と簡単だ。

例)『、』→0x81,『あ』→0x0101

フォント画像をヒントに辞書を作成し、それを元に文字展開していく。

2021年8月10日火曜日

PS2版 テニスの王子様 学園祭の王子様(2005)のdiscの内容

※このページはスマホで見ると崩れます。色分けに意味があるので、PCかwebバージョンで見るのをお勧めします

*.PSS…動画 *.BIN…スチル・スプライト画像 *.BIN…音楽・SE・声 *.BIN…台詞

◆トラック01
│ D_AUDIO.BIN   217,116KB   ←BGM
│ D_BG.BIN   146,362KB   ←背景,小道具,他
│ D_CHAR.BIN   86,178KB   ←立ち絵,スチル
│ D_FONT.BIN   1,633KB   ←フォント
│ D_MESS.BIN   2,688KB   ←台詞,キャプション
│ D_MNGAME.BIN   44,338KB   ←ミニゲーム用キャラ,背景,パーツ
│ D_MOVIE.BIN   180,960KB   ←OP,スタッフロール
│ D_SCE.BIN   2,106KB
│ D_SE.BIN   45,781KB   ←SE,声
│ D_SYS.BIN   24,696KB   ←サムネ,アイコン,景品,マップ,画面周りのパーツ
│ D_VANIME.BIN   39,088KB   ←水泳,アトラクションのスチル,エフェクト
│ SLPM_662.19   1,611KB
│ SYSTEM.CNF   1KB
│ VOICE.BIN   2,063,036KB   ←声
└ IRX
  CDVDSTM.IRX   33KB
  IOPRP300.IMG   272KB
  LIBSD.IRX   30KB
  MCMAN.IRX   102KB
  MCSERV.IRX   8KB
  MODHSYN.IRX   62KB
  MODMIDI.IRX   22KB
  MODSEIN.IRX   10KB
  PADMAN.IRX   45KB
  SDRDRV.IRX   9KB
  SIO2MAN.IRX   6KB
  SNDCTLTX.IRX   18KB