単語記事: NSF

編集

概要

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

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

プレイヤー

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

Windows

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

Mac

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

Linux

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

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

作成ソフトウェア

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

ppmck
ファミコン音源ドライバおよびMMLコンパイラである。ほとんどの拡が使用可CUIであるためプラットフォームを選ばない。
FamiTracker
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                             ..

関連動画

関連項目

関連リンク


【スポンサーリンク】

携帯版URL:
http://dic.nicomoba.jp/k/a/nsf
ページ番号: 213485 リビジョン番号: 1076504
読み:エヌエスエフ
初版作成日: 08/06/07 22:16 ◆ 最終更新日: 11/02/15 06:03
編集内容についての説明/コメント: 関連動画追加
記事編集 / 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

NSFについて語るスレ

4 : ななしのよっしん :2011/02/18(金) 18:51:06 ID: yWGSk/KRcw
>>3
FDSの波形メモリを使った擬似ボーカルか。
たしかに五十音に聴こえないこともないな。
いなー。
FDS+内蔵音(DPCMあり)だけで頑ってるのもポイント高い。
5 : ななしのよっしん :2011/05/25(水) 17:13:26 ID: RT5Yzg1O4C
なぜプレイヤーリストにKB Media Playerが入ってない・・・。

デフォルトでNEZplugによるNSFの再生をサポートしているからwinampのように跡付けする必要はないし、
プレイリスト対応だし、
NESサウンドであるNSFのみならずSNESサウンドであるSPCにもデフォで対応してるし、
そもそも「taginfo.tagファイルに対応しているプレイヤーが望ましい」のTagファイル仕様の出所はKB Media Playerだし。

入ってないのが理解不レベルなので、ぜひ追加してください。
6 : ◆e/Q/OffGao :2011/05/26(木) 14:39:04 ID: GLHGt0i3wc
>>5
そんな終わったプレイヤー・・・3年以上更新されておらず、更新される気配もないのに。
7 : ななしのよっしん :2012/03/02(金) 02:32:07 ID: xpg0lJin78
そんなこといったらNSFなんてry

特にバグがないから更新されなくてもどこにも問題ないだろ
8 : ななしのよっしん :2012/09/10(月) 11:22:32 ID: LnLMD6VKX0
>>6
更新されたみたいだぞ
9 : ななしのよっしん :2013/02/19(火) 03:47:56 ID: ic0LtvtQ0l
かしこのきつい書き方するとこ見ると本気でKBplayer嫌っているんですかね・・
それでもサポートは続けてくれているけども。
個人的にはリクエスト番号をすぐに直接定して再生できないのがめんどくさすぎて
Winampでnezplug使うのはメモリの観覧やチャンネルマスクなどの拡使うときくらいだなー。
10 : ななしのよっしん :2013/03/22(金) 05:23:42 ID: CkmpRYzMX7
遠回しにの作ったやつを使えって言ってるんだろ
11 : ななしのよっしん :2013/04/07(日) 13:16:29 ID: +m+obE4ZG5
満足レベルで拡に対応しているプレイヤーなら、
NSFPlayも他とは微妙に違う味わいがあって良い感じ。
実機基準ならどちらが正しいのかはちょっと判断しかねる

といっても日本語対応でVirtuaNESセットVirtuaNSFの方が、
見つけやすく扱いやすいのでわざわざ探す必要はいかも。
公式サイトzipも接続しにくい(ファイル名で検索すればOK)

一曲ループより順番に流してくれる方が良いひとにもおすすめ
12 : ななしのよっしん :2014/01/22(水) 16:35:56 ID: GTa+oeXkNC
virtuansfmck wikiの「NSFプレイヤー」でDLするのが良いと思う
HP管理人と連絡が取れないとかで作者がそこに置いてる
13 : ななしのよっしん :2015/04/24(金) 20:53:15 ID: O59wWdGVKP
VirtuaNSF現在バージョン1062)だと、軽くローパスフィルタがかかるようになっているな。
1043あたりとべると結構違う。より実機の音に近づいたということかな。
  JASRAC許諾番号: 9011622001Y31015