SSF

「SSF」の編集履歴(バックアップ)一覧に戻る

SSF - (2007/09/17 (月) 13:03:51) のソース

*SSF
SSFは2003年10月頃にNeill Corlettにより策定された、広義の[[PSF]](Playstation Sound FormatではなくPortable Sound Format)に属する、セガサターン -以下SSと表記- の内蔵音源でシーケンスされる音楽をエミュレートするためのファイル形式です。

**How to play
SSFを再生できるプレーヤーは[[Winamp]]プラグインのin_ssf.dllがありますが、現在のところ最初期のテスト版しか存在せず、いわゆる公開はされていませんが探せば見つかるので自分で探してください(安易に質問するくらいなら正式版が出るまで待ちましょう。どうせ現段階ではかなり高い確率で聞けたものではない鳴り方をします)。なおin_ssf.dllはkbwinampを用いて[[KbMedia Player]]でも使用できます。

**How to make (probably only for SEGA generic driver) - summary
SSFは策定とテストファイルの発表以来、そのデータ作成についてはほとんど語られてきませんでしたが、2007年9月にkingshriek'sによって汎用的な作成方法が提示されました。これはSS/ST-VエミュレータであるSSF -以下SSF(emu)と表記- の動作中に、SSF(emu)のメモリ領域をファイルにダンプし、その中からSSの音源部に使われているメモリ領域を抽出したものを加工してSSF形式に落とし込むPythonスクリプトです。

**How to make (probably only for SEGA generic driver) - detail
まずssfdump.pyのRequires:に書かれているURLから以下のものを揃える
|BGCOLOR(eeeeee):|BGCOLOR(eeeeee):CENTER:説明|BGCOLOR(eeeeee):CENTER:備考|
|BGCOLOR(eeeeee):Python|BGCOLOR(eeeeee):インストールすると.pyを関連付けで実行できるようになる|BGCOLOR(eeeeee):CygwinのPythonも使えるかもしれないが未確認。|
|BGCOLOR(eeeeee):SSF(emu)|BGCOLOR(eeeeee):SSのソフトを動かせる環境を構築する|BGCOLOR(eeeeee):この文書の範囲外の事柄なのでここでは触れない。マシンスペックはそれなりに要求される。|
|BGCOLOR(eeeeee):pmdump.exe|BGCOLOR(eeeeee):とりあえずssfdump.pyと同じ場所に置く|BGCOLOR(eeeeee):SSF(emu)にはステートセーブ機能(エミュレートしている仮想マシンの全メモリをファイルに書き出しておき、それを読み込むことで任意タイミングでのセーブ/ロードを可能にする機能)があるが、SSF(emu)が入出力するデータは圧縮されていて簡単には使えないため、動作中のSSF(emu)が持っている全メモリをまず書き出すことで対処している。そのために使われるツール。|
|BGCOLOR(eeeeee):bin2psf.exe|BGCOLOR(eeeeee):とりあえずssfdump.pyと同じ場所に置く|BGCOLOR(eeeeee):広義のPSFの展開状態から、通常プレーヤーが受け付ける圧縮状態にするツール。|

+SSF(emu)で目的のソフトを動かし、目的の曲を鳴らす
+ssfdump.pyを実行する → 200MB以上程度のダンプファイルと512KB程度のテンポラリファイルが出力され、ssfdata.ssfが出力される → もしCPU使用率が100%になって長時間(マシンスペックによるが10秒~数分程度か)進展がないように見える場合は、おそらくssfdump.pyでは対応できないドライバなので諦めてPythonを強制終了する
+プレーヤーで曲が鳴るかどうか確認する → 鳴った場合、上書きされないようにssfdata.ssfをリネームしておく
+鳴らない場合、あるいは効果音だけ鳴る場合はssfdump.pyのbank=やtrack=の値を変えて再実行する(このときpmdump=1を0にしておくと前回pmdumpにより出力されたダンプを使うので処理時間が短縮される)
+それでもだめな場合は適当なところで諦める

**Note
-SSのソフトの音楽は内蔵音楽のものもありますが、CDオーディオなどストリームのものも多いため、まずはその判断が必要になります。
-内蔵音源の曲でも、セガ標準ドライバを使用しているものでないとssfdump.pyでは対応できません(恐らく)。
-諦めが肝心です。
-鳴るものが作れたとしてもおかしなところがあるかもしれません。
-それはプレーヤーがまだ不完全だからかもしれないし、データ作成方法がまだ不完全だからかもしれません。
-つまり現段階でデータを作っても今後ふたたび作り直す必要が生じる可能性があります。
-しかし、不完全であっても魅力的なデータの存在は全体のモチベーション向上に繋がります。