Wild Arms - How to rip out midi file
someone42さんがpsfセットのドキュメントの中で記しているとおり、ワイルドアームズ(Wild Arms)のシーケンスは、PlayStation標準のSEQを圧縮したものです。
SEQファイルを利用するには圧縮形式を調べてSEQデータを適切にデコードしなければなりません。また、圧縮前のデータを適切に抜き出すことも必要です。幸い、圧縮前のデータの形式はsomeone42さんのドキュメントに記されています*1。
unsigned long uncompressed_length char something=0xEF char seq_magic='pQES'
調べた結果によれば、このデータはLZS圧縮で圧縮されているようです。LZS圧縮については、ANSI94やRFC 2395(日本語版)でその詳細を知ることができるでしょう。
具体的な手順の一例
- stg*.psflib を展開します。
- 展開済みファイルの中から圧縮されたSEQを探します。ヘキサエディタなどで始点:pQESの文字列(SEQの識別子)や、終点:FF 2F 00(End of Track)を探してデータを抜き出します。
- このとき、pQES以前のEFや展開後のサイズなどのデータは消さずに残しておいてください。
- FF 2F 00の後ろに00などが続くようなら、それをカットしないと展開が成功しないかもしれません。
- FiceLZS を用いてデコードを行います(
lzs -d test.seq.lzs test.seq
)。必要以上にデータが付加されていると異常終了するので、その場合は適当に元ファイルを編集してみましょう。 - 展開したSEQファイルを、seq2midなどのツールでMIDIファイルに変換します。
なお、VABに関しても同様にデコードできるかと思います。それでは、お楽しみください。
*1:ここに書かれているunsigned longは4バイト、charは1バイトのデータです