今注目のニュース
仮想通貨で電子マネーをチャージ可能に 「au WALLET」「楽天Edy」「nanaco」が対象
おかずクラブ・ゆいP、15kgのリバウンド 「衣装を安全ピンでとめてる」
「ファミチキ無料」と偽告知 ソフトバンク「SUPER FRIDAY」かたる迷惑メールに注意喚起

NSF単語

エヌエスエフ

掲示板をみる(14)
  • twitter
  • facebook
  • はてな
  • LINE

概要

NSF (NES Sound Format) とは、ファミコン(NES)のカートリッジ又はディスクシステムディスクからサウンド関係の部分を切り出したもの。ファミコン音源エミュレーションや実機再生での標準規格である。

ファミコン音源による自作音楽(Chiptune)がしばしばNSFの形式で配布されるため、ニコニコではNSFを再生した音楽を使った動画等でこのタグが用いられる。

プレイヤー

NSFを再生するには、単体のNSFプレイヤーを使用するか、メディアプレーヤーにNSF再生プラグインを追加する必要がある。なお、NSFフォーマットは、演奏時間およびマルチトラックNSFの各曲ごとの情報を記録しないため、それを補う拡プレイリストフォーマットもしくはtaginfo.tagファイルに対応しているプレイヤーが望ましい。(なお、この欠点を解消するNSFEフォーマットが提唱されているが、普及していない。)

Windows

VirtuaNSFexit
単体で動作するシンプルかつ軽量なNSFプレイヤー。ただしプレイリスト非対応。
Winamp + NSF再生プラグイン
Winampは、Windowsプラグインメディアプレイヤー。拡プレイリストに対応している。Winamp用NSF再生プラグインは、Brezza作のNSFplugexitが定番であるが、現在開発が停滞している。現在、実機演奏に最も近いといえるのは、OffGao作のNEZplug++exitであろう。

Mac

Audio Overloadexit
Macでは事実上標準のChiptuneプレイヤー

Linux

残念ながら、各拡全に再生できるプレイヤー現在存在しない。よってWine上で前述のWindowsプレイヤーを使ったほうが良いだろう。以下、参考までに記す。

Gstreamer使用のプレイヤー
GStreamerは、フリー自由)なマルチメディアフレームワークである。GStreamerを使用している代表的なプレイヤーは、Amarok・Rhythmbox・Bansheeが挙げられる。GStreamer Bad PluginsをインストールすることによりNSFを再生できる。
Audaciousexit
GTK+2を用いたXMMS後継のメディアプレーヤー。NSF再生プラグインはプリインストールされている。

作成ソフトウェア

ppmck及びFamiTrackerが代表的である。

ppmckexit
ファミコン音源ドライバおよびMMLコンパイラである。ほとんどの拡が使用可CUIであるためプラットフォームを選ばない。
FamiTrackerexit
Windows用のトラカータイプのNSF作成ソフトである。こちらもほとんどの拡が使用可である。

ファイルのフォーマット構造

NSFの中身は、0x80バイトのヘッダーと、それ以降のプログラムデータによって構成されている。

ヘッダーの詳細は以下のとおり

アドレス データ 説明
0x00 5 ファイルがNSFであることを示す文字列。 "NESM"+0x1A
0x05 1 NSFバージョン。1で固定。
0x06 1 曲数。3曲なら3になる。
0x07 1 NSFを読み込んだときに最初に定する曲番号。2曲から再生させたいときは2になる。
0x08 2 ロード開始アドレスデータはこのアドレスからロードされる。
0x0A 2 初期化アドレス。再生前にここで定されたアドレスジャンプする。
0x0C 2 再生アドレス。再生時にここで定されたアドレスに何度もジャンプする。
0x0E 32 タイトル文字列の終わりはNULL(0)。
0x2E 32 アーティスト名。文字列の終わりはNULL(0)。
0x4E 32 著作権所持者。文字列の終わりはNULL(0)。
0x6E
2
再生アドレスが呼び出される周期(NTSCモード時)。
1/1000000単位で計算される。通常は「1A 4160Hz)」が入る。
0x70
8
初期バンク定。全部0ならバンクを使用しない。
ヘッダアドレスと対応するメモリアドレスは以下のとおり。
0x708000~8FFF
0x719000~9FFF
0x72:A000~AFFF
0x73:B000~BFFF
0x74:C000~CFFF
0x75:D000~DFFF
0x76:E000~EFFF (拡FDS有効の場合は6000~6FFFも含む)
0x77:F000~FFFF (拡FDS有効の場合は7000~7FFFも含む)
0x78
2
再生アドレスが呼び出される周期(PALモード時)。
1/1000000単位で計算される。通常は「20 4E(50Hz)」が入る。
0x7A
1
NTSC/PALモード定。0ならNTSC、1ならPAL、2,3なら両方使う。
0x7B
1
フラグ。ビットが立っていれば、その拡サポートする。
0bitVRC6
1bitVRC7
2bitFDS
3bit:MMC5
4bitNamco106/163
5bitSunsoft5B
0x7C
4
0固定
0x80
???
データファイルの終わりまで続く

 

メモリマップ

0000~07FF RAM
0800~1FFF 0000~07FFミラー
2000~3FFF 未使用
4000~4017 ファミコン内蔵音(2A03)レジスタ
4017~5FF7 未使用
5FF6~5FF7 (拡FDS有効の場合のみ)バンクレジスタ
5FF66000~6FFF
5FF77000~7FFF
5FF8~5FFF バンクレジスタ
5FF88000~8FFF
5FF99000~9FFF
5FFA:A000~AFFF
5FFB:B000~BFFF
5FFC:C000~CFFF
5FFD:D000~DFFF
5FFE:E000~EFFF
5FFF:F000~FFFF
6000~7FFF RAM
8000~FFFF ROM
(ただし、拡FDS有効の場合はRAM
4040~4092 (拡FDS有効の場合のみ)FDS音レジスタ
4800,F800 (拡Namco106/163有効の場合のみ)Namco106/163レジスタ
5000~5015 (拡:MMC5有効の場合のみ)MMC5音レジスタ
5205~5206 (拡:MMC5有効の場合のみ)MMC5計算レジスタ
5C00~5FF7 (拡:MMC5有効の場合のみ)MMC5拡RAM
9000~9002
A000~A002
B000~B002
(拡VRC6有効の場合のみ)VRC6レジスタ
9010,9030 (拡VRC7有効の場合のみ)VRC7レジスタ
C000,E000 (拡Sunsoft5B有効の場合のみ)Sunsoft5Bレジスタ

初期化時の動作

0000~07FF,6000~7FFF(MMC5有効なら5C00~5FF6も、FDS有効なら8000~FFFFも)を0クリアされた後、ロード開始アドレスからデータロードされていく。ロードの際、ヘッダに初期バンク定がある場合、ロード開始アドレスから0xFFFをANDしたアドレスから、バンク0から順にロードされる。

ファミコン内蔵音(2A03)レジスタは以下のように初期化される。

4000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4010: 10 00 00 00 ?? 0F

その後、アキュームレータ(Aレジスタ)に曲番号(1曲なら0、255なら0xFE)が代入される。
NTSC/PALモード定で両方使用する設定の場合には、XレジスタNTSC動作なら0、PAL動作なら1が代入される。
その後、初期化アドレスジャンプされる。

初期化が終わったあと、定された周期で再生アドレスに何度もジャンプされる。

NSFサンプル

このサンプルは、「に~っこにっこどうが」を演奏する。

このサンプルの場合、0x800xAEまでがプログラムで、0xAF~0xC2までが音楽データになっている。

0000: 4E 45 53 4D 1A 01 01 01 00 80 00 80 0C 80 4E 69 NESM..........Ni
0010: 63 6F 56 69 64 65 6F 20 2D 20 4F 66 66 69 63 61 coVideo - Offica
0020: 6C 20 54 69 6D 65 20 53 69 67 6E 61 6C 00 4E 69 l Time Signal.Ni
0030: 63 6F 20 4E 69 63 6F 20 44 6F 75 67 61 00 00 00 co Nico Douga...
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 32 30 ..............20
0050: 30 37 20 4E 69 77 61 6E 67 6F 00 00 00 00 00 00 07 Niwango......
0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1A 41 ...............A
0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0080: A9 00 85 00 85 01 A9 81 8D 08 40 60 A5 01 30 FB ..........@`..0.
0090: C6 00 10 F7 A5 01 AA BD 2F 80 30 10 85 00 E8 BD ......../.0.....
00A0: 2F 80 8D 0A 40 A9 00 8D 0B 40 E8 8A 85 01 60 34 /...@....@....`4
00B0: 38 0C 00 08 47 08 3F 08 00 08 38 18 3F 10 47 01 8...G.?...8.?.G.
00C0: 00 FF                             ..

関連動画

関連項目

関連リンク

掲示板

急上昇ワード

最終更新:2019/08/22(木) 09:00

ほめられた記事

最終更新:2019/08/22(木) 09:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

       

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

TOP