kpibgmABC.kpi フォローアップ

せっかく公開しても([id:autch:20050103#p1])肝心の xor テーブルの抽出法がノーヒントだと普及しないので。
拡張子が bgm/koe/mse のファイル(以下「bgm 形式」)は、PCM を「ある値」で xor したデータを、WaveAudio フォーマットのファイルに収めたものです*1。したがってデコードするときは、Wave ファイルの要領でデータを取ってきて、その「ある値」で xor をしてやればもとにもどせるわけです。
その「ある値」(以下「マスク」)とはタイトルやデータの用途(音声 or 音楽)によって異なり、タイトル中の全ファイルで共通の 0xaa だったり、あるいはマスクを複数用意しておいて順番に使うタイトルもあります。
kpibgmABC.kpi が必要とする「xor テーブル」とは、このマスクを並べたものです。これがあれば bgm ファイルを正しく聞くことができるようになります。テーブルのサイズは 256 バイト(ie. 256 個のマスクを順番に使う)のようですが、今後出るタイトルでは変わるかもしれません。
テーブルを入手するには、ゲームの exe ファイルから吸い出したり、bgm ファイルの無音部分を切り出したりといった方法が考えられます。PCM の無音部分のサンプル値は 0 ですから、ここに xor をかければマスクそのものが得られるわけです。
プラグインでデコードした音楽は、個人で楽しむためだけに使用し、デコードしたデータの再配布はもちろん、xor テーブルの再配布もご遠慮ください*2

*1:だから拡張子を bgm → wav に変えただけでは爆音と化す

*2:著作権で保護されたファイルから切り出したデータですから。