SNSF Format - boldowa/SuperC-SPCdrv GitHub Wiki
SNSFファイルとは、Caitsith2氏により提唱されている、スーパーファミコンの内臓音源のためのフォーマットです。
従来からの主流であるSPCファイルが、純粋にSPC700チップ・DSPレジスタのエミュレーションのみを行うためのファイルであるのに対し、
SNSFファイルはそれに加えて65186やその他特殊チップのエミュレーションも行います。
その為、
「CPU(65816)から音源データを転送し続ける(例: テイルズオブファンタジア)」
「音の鳴動制御をSPC700ではなくCPUで制御している(例: マリオペイント)」
といったゲームタイトルの曲を鳴らすことが可能です。
(ただし、一部ゲームについては、拡張版SNESAPU.DLLのScript700による制御で既に実現済みのものもありますが)
PSF(Portable Sound Format)の一種として位置付けられています。
bytes | データ | 説明 |
---|---|---|
3 bytes | 'P' 'S' 'F' | PSFファイル識別子 |
1 byte | バージョン | PSFファイルのタイプ。SNSFは、0x23 |
4 bytes | バイト数 | SRAMセクションのバイト数 |
4 bytes | バイト数 | 圧縮データエリアのサイズ |
4 bytes | CRC32 | 圧縮データのCRC32 |
n bytes | SRAM/SaveStateデータ | SRAMデータ、またはSaveStateデータを格納します |
n bytes | 圧縮済みSNESファイルデータ | いわゆるスーファミのROMのようなものと思っていいと思います。 ただし、たいていの場合は音楽に関する部分のみ抽出している為、厳密にはROMデータそのものではありません。 |
n bytes | '[' 'T' 'A' 'G' ']' | PSFタグデータ識別子。なお、SPFタグデータはオプションデータの為、あってもなくてもよい。 |
n bytes | タグデータ | PSFタグデータ |
SuperCとは特に関わりのないデータなので、記述しません。 詳細を知りたい方は、snsfデータ仕様書をご覧ください。
圧縮済みデータ領域には、以下の形式のデータをzlib圧縮したものを格納します。
bytes | データ | 説明 |
---|---|---|
4 bytes | SNES オフセット | データの書き込み先のオフセット値。minisnsf+snsflib形式のデータを作成するときに役立ちます。 snsf単体のデータの場合、0を指定しておけば問題ありません。 |
4 bytes | データサイズ | ROMデータのサイズ |
n bytes | ROMデータ | ROMデータそのものを格納します |
Caitsith2氏のHPにて、SNES9Xを改造したSNSF Playerが配布されていますが、こちらは動作が不安定です。
再生には、snsf9xプラグインを使用するのがおすすめです。
foobar2000 wikiのアップローダーにて、snsf9xの名前でプラグインが配布されていますので、こちらを使うと良いでしょう。
配布場所こそfoobar2000関連の場所ですが、こちらのプラグインはfoobar2000の他、Winamp、KbMediaPlayerにも対応しています。
- PSF (Playstation Sound Format) specification v1.4 : http://src.gnu-darwin.org/ports/audio/xmms-sexypsf/work/sexypsf-0.4.8/Docs/psf_format.txt
- SNSF Specifications version 0.03 : http://snsf.caitsith2.net/snsf%20spec.txt