SNSF Format - boldowa/SuperC-SPCdrv GitHub Wiki

SNSFファイルフォーマット

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タグデータ

SRAMデータ詳細

SuperCとは特に関わりのないデータなので、記述しません。 詳細を知りたい方は、snsfデータ仕様書をご覧ください。

圧縮済みSNESファイルデータ詳細

圧縮済みデータ領域には、以下の形式のデータをzlib圧縮したものを格納します。

bytes データ 説明
4 bytes SNES オフセット データの書き込み先のオフセット値。minisnsf+snsflib形式のデータを作成するときに役立ちます。
snsf単体のデータの場合、0を指定しておけば問題ありません。
4 bytes データサイズ ROMデータのサイズ
n bytes ROMデータ ROMデータそのものを格納します

SNSFファイルの再生

Caitsith2氏のHPにて、SNES9Xを改造したSNSF Playerが配布されていますが、こちらは動作が不安定です。
再生には、snsf9xプラグインを使用するのがおすすめです。

foobar2000 wikiのアップローダーにて、snsf9xの名前でプラグインが配布されていますので、こちらを使うと良いでしょう。

配布場所こそfoobar2000関連の場所ですが、こちらのプラグインはfoobar2000の他、Winamp、KbMediaPlayerにも対応しています。

出典

⚠️ **GitHub.com Fallback** ⚠️