NSF

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

NSF - (2019/02/21 (木) 11:09:36) のソース

#contents
NSF(Nintendo Entertainment System Sound Format)とはファミコンのサウンドフォーマットである。
拡張規格にNSFEというものもある・・・が、残念ながら支流にならず流行っていない模様。

*NSF作成
 NSFを作成するには、6502(ファミコンで使われているCPU)の仕様を理解する必要があります。アセンブラ言語は、命令表など見ていけばある程度は理解できます。

プログラムに触れたことが無ければ難しそうに思えるかもしれませんが
命令といってもやっていることは基本的に''足し算と引き算の繰り返し''です。
他には
-Aという入れ物から数字を出し入れ
-Aという入れ物に入っている数字をBという入れ物に入れる
-Aという入れ物に入っている数字を元にして別の入れ物の数字を見に行きそこから出し入れ
などが主です。
これはファミコンに限らず他のクラシックハードでもあまり変わりはありません。

下記の用意するものを揃えたあとは
''中学生程度の計算力''と目的の処理を探す''根気と時間''さえあれば誰でもripperの一人になれるでしょう。

**用意するもの
-ファミコンのエミュレータ(GNESなど)
--リアルタイムでメモリ内容が見ることができるもの、
--逆アセンブル・ブレークポイントを設定できる機能のあるものなら便利。(無いときつい)
-NSFプレーヤー(VirtuaNesなど)
--リアルタイムでメモリ内容が見れるものがあれば便利。
-上記二つの機能をどちらも兼ね備えている[[FCEUX>http://www.fceux.com/web/home.html]]か[[Mesen>https://www.mesen.ca/]]がおすすめ
-一括検索できるような逆アセンブラ
--http://mrchecker.web.fc2.com/dis/dis.htmlとか
-バイナリエディタ
--http://www.vector.co.jp/soft/win95/util/se161737.htmlなど
-16進数の計算ができる電卓

**作成方法
 初期化アドレスの開始位置と、再生アドレスの開始位置を調べ、ヘッダを編集し、必要な部分のROMデータをNSFファイルにコピーすれば作成できます。
特別な処理が必要になる場合は、空いている部分にその処理を書けば大丈夫です。

開始位置を探す方法として、下のような方法があります。
+プログラムを実行し、メモリ内容を眺め、曲に合わせて値が増えていくアドレスを探す。
+そのアドレスに値が書き込まれたときにブレークするように設定する。
+ブレークした位置から処理の流れをさかのぼっていき、処理の開始位置を探す。
ソフトによっては、*000Hに初期化アドレスと再生アドレスへのジャンプ先が書かれているものがあります。

**プログラムの種類
曲再生プログラムには、大きく分けて2種類あります。
-1. 特定のレジスタに曲番号を入れ、初期化アドレスにジャンプして再生するタイプ(Aレジスタの場合が多い)
-2. 特定のメモリアドレスに曲番号を入れると、自動的にその番号の曲を再生するタイプ&br()(その後は大体、再生アドレス先でメモリから曲番号をAレジスタに読み込み、種類1のような働きをするものが多い)

**追記
・矩形波の低音部分が鳴らない場合、4001Hと4005HにF8Hを書き込むと鳴ることがあります。
 プログラム例: 48 A9 F8 8D 01 40 8D 05 40 68 4C ** **

・PRG-ROM容量の限界などで、曲データがCHR-ROMに入っている強者があるので、一部の曲データが見つからない場合などはCHR-ROMを調べてみてください。

・I/Oレジスタ4017Hの7ビット目によって、矩形波・三角波・ノイズチャンネルの音の長さが微妙に変わるので、4017Hは出来るだけ忘れずに初期化してください。 たいていは、a9 ** 8d 17 40 で初期化をしているので、検索ですぐに引っかかります。 中には初期化を行わないソフトがありますが、その時はファミコンの電源を入れた直後の値(多分00H)で初期化しておくと良いでしょう。
  4017Hの7ビット目が0の時の周期: 60, 120, 240 Hz
  4017Hの7ビット目が1の時の周期: 48, 96, 192 Hz


**リンク
-Famicom開発室 (すずめ愛好会内)
--http://web.archive.org/web/*/http://vsync.org/ns/
-NesDev
--http://nesdev.com/
-NES Music Format Spec
--http://kevtris.org/nes/nsfspec.txt
--Kevin Horton氏による作成
-気まぐれトークステーション > ピコピコ音で遊ぼう
--https://web.archive.org/web/20170131003354/http://uraran.jp/psg/psg.htm
--上記NSF仕様の日本語訳あり
-NES Music Ripping Guide
--https://web.archive.org/web/20000816000045/https://nesmusic.zophar.net/txt/NESAudioRipping.TXT
--Kevin Horton氏によるリッピングガイド。当然英文
-NSFripperへの道
--[[Htmlファイルまとめzip>http://www16.atwiki.jp/soundfile?cmd=upload&act=open&pageid=15&file=nsfripper_he_no_michi.zip]]
--Izumi.氏による比較的分かりやすい日本語NSFリッピング解説。
--元サイトは[[ここ>http://nesmusic.zophar.net/ripper.html]]か[[ここ>http://www.geocities.co.jp/Playtown-Denei/9628/]]と思われるが、現時点で左は消滅(アーカイブもなし)・右はmckに関する情報しか掲載していない。
-Home Page of Gil Galad > NSF ripper Guide
--https://web.archive.org/web/20160405133017fw_/http://gilgalad.arc-nova.org/docs.html
--Gil-Galad氏による上記の英語翻訳+α版
-パソファミ NSF(Nes Sound Format/File)の自動作成機能
--http://pasofami.game.coocan.jp/nsf/nsftitle.htm
--&s(){シェアウェアだが}1,200本以上のゲームのNSFリッピングを自動で行ってくれるソフト。

----
なお自作NSF関係は[[MCK Wiki>http://wikiwiki.jp/mck/]]あたりに詳細あり