SPCP_FF4
概要
- SPCP_FF4 は、スーパーファミコンソフト Final Fantasy IV の音楽ファイル (SPC) の演奏データを演奏しながら確認するためのプログラムです。
- プレイヤー機能の出来は良くありません。演奏データをリアルタイムで確認するためのプログラムです。
- Script700 には対応していません。
- 演奏しながら APU RAM や DSP レジスタなどのメモリ状態を読み取り表示します。
- 一部コマンドで演奏データにエラーがある場合は自動的に (一時) 停止させることができます。
- ウィンドウ描画には Direct2D と DirectWrite を使用しています。
- 各ランタイムや .NET Framework は一切不要です。
- レジストリの書き込みを行いません。アンインストールはファイルを削除するだけで完了します。
- SSE4.2 と AVX に対応した Windows (7 SP1 以降) と CPU で実行してください。
インストール
SPCP_FF4.exe と デグレファクトリー様の SNES SPC700 Player ページの改良版 SNESAPU.DLL (パッケージ・他プレイヤー用どちらでも結構です) 、設定が必要である場合は SPCP_FF4.ini を同じフォルダに置いてください。
各種ランタイムや .NET Framework などの導入は一切不要です。
- SPCP_FF4_AVX.zip (SPCP_FF4.exe + SNESAPU.DLL v2.17.6)
- SHA-256 : be7679d48d617d512393feee080dbb9068d176d59a2d7d220c02bfeace2c3ce9
- VirusTotal での検査結果 (0 / 56)
- SPCP_FF4.ini (音量 100% のみ)
- SHA-256 : 126e630f52e6011a04fc5ed99c161bf2c897fd1f10faa627d3e7479946945961
- ブラウザで表示される場合は右クリックで保存してください。
メインウィンドウ
SPC ファイルを一つウィンドウ上にドロップすると、演奏可能であれば自動的に演奏を開始します。
SPC ファイルである場合はゲーム名、曲名、コメントが表示されます。拡張 ID666 情報が存在する場合は、そちらが優先されて表示されます。
ツールバー
- 演奏開始 ボタン
- 演奏可能である場合は演奏を開始します。
- 一時停止中である場合は演奏を再開します。
- 一時停止 ボタン
- 演奏を一時停止します。
- 演奏停止 ボタン
- 演奏を停止します。
- 演奏開始時間指定 ボタン
- オンの状態で演奏開始ボタンをクリックすると、ウィンドウ右に表示された時間から演奏を開始します。
- 演奏データエラーで一時停止 ボタン
- オンの状態で "制御コマンド実行時に" 演奏データエラーを検出すると、メインウィンドウ右下にトラック番号・アドレス・制御コマンドを表示し、演奏を一時停止します。
- 情報表示状態を維持するために一時停止しますが、演奏を再開できません。
- ファイルを開く ボタン
- ファイル読み込み、演奏可能である場合は演奏を開始します。
- ファイルを再読み込み ボタン
- 演奏可能なファイルを読み込みんでいた場合は同じファイルを再読み込みし、演奏可能である場合は演奏を開始します。
- メインウィンドウを常に手前に表示切り替え ボタン
- メインウィンドウが常に手前に表示されるようにするか設定することができます。
- インジケータウィンドウを常に手前に表示切り替え ボタン
- インジケータウィンドウが常に手前に表示されるようにするか設定することができます。

ウィンドウ右側の演奏開始時間指定アイコン 〜 秒周辺をポイントするとエディットボックスが表示されます。
数値を入力することで値を設定することができます。
入力可能な状態であれば、↑↓マウスのホイールで数値を 1 増減させることができます。Shiftまたはマウスのサイドボタンを押しながら操作することで、数値を 10 増減することができます。
ポインタをエディットボックスが自動表示されない範囲まで移動をすることで自動的に確定され、エディットボックスは非表示になります。
設定可能な秒数は 0 〜 600 です。
マルチメディアキー
- 再生
- Ctrl押下状態である場合は、ツールバーの ファイルを再読み込み ボタンクリックと同じ操作になります。
- 上記以外の場合は、ツールバーの 演奏開始 ボタンクリックと同じ操作になります。
- 再生 / 一時停止
- Shift押下状態である場合は、ツールバーの 演奏停止 ボタンクリックと同じ操作になります。
- Ctrl押下状態である場合は、ツールバーの ファイルを再読み込み ボタンクリックと同じ操作になります。
- 上記以外で演奏中の場合は、ツールバーの 一時停止、演奏中ではないまたは一時停止中の場合は、 演奏開始 ボタンクリックと同じ操作になります。
- Ctrl押下状態である場合は、ツールバーの ファイルを再読み込み ボタンクリックと同じ操作になります。
- 一時停止
- ツールバーの 一時停止 ボタンクリックと同じ操作になります。
- 停止
- ツールバーの 演奏停止 ボタンクリックと同じ操作になります。
動画
演奏中の動画です。
インジケータウィンドウ
演奏中の内部情報が表示されます。
使用方法
通常ドラッグでウィンドウを移動することができます。
- Vx の文字 〜 EX の値の範囲内でマウスボタン操作することで、チャネルミュートのオンオフを切り替えることができます。
- 右ボタンクリック
- ShiftとCtrl共に押下状態である場合は、全てのチャネルのミュート設定が反転します。
- Shift押下状態である場合は、全てのチャネルのミュート設定がオフになります。
- Ctrl押下状態である場合は、全てのチャネルのミュート設定がオンになります。
- 上記以外の場合は、一つのチャネルのミュート設定が反転します。
- Shift押下状態である場合は、全てのチャネルのミュート設定がオフになります。
- 中ボタンクリック (マウスホイール)
- 全てのチャネルのミュート設定が反転します。
- X1 ボタンクリック (戻る)
- 全てのチャネルのミュート設定がオンになります。
- X2 ボタンクリック (進む)
- 全てのチャネルのミュート設定がオフになります。
上部 (DSP, CPU の情報など)

- V0 〜 V7
- Voice0 〜 Voice7 の設定です。
- SN
- 設定されている波形番号です。
- Addr
- 波形の先頭アドレスです。
- Loop
- 波形のループ先頭アドレスです。
- Read
- 読み取り中の波形データアドレスです。
- F
- BRR 復元時のフィルタ番号です。
- R
- BRR 復元時のレンジ番号です。
- Flg
- エコーオンの状態であれば E が表示されます。
- ノイズオンの状態であれば N が表示されます。
- ピッチモジュレーションオンの状態であれば P が表示されます。
- ノイズオンの状態であれば N が表示されます。
- VL
- ボリューム (左) の値です。
- VR
- ボリューム (右) の値です。
- Pitch
- ピッチ (音程) の値です。
- A/G
- 1 文字目は DC コマンドのソフトウェアエンベロープで音量倍率変化中であれば A (ADSR モード)、音量倍率変化が終了した状態であれば G (GAIN モード) が表示されます。
- 2 桁の 16 進数値は DD コマンドで設定、または DE コマンドで指定した時間経過後に自動的に変化する Gain rate の値です。
- ADSR・Gain モードのその他の値は変化しませんので表示されません。
- 2 桁の 16 進数値は DD コマンドで設定、または DE コマンドで指定した時間経過後に自動的に変化する Gain rate の値です。
- EX
- エンベロープ (音の強さ) の値です。
- DSP Registers
- その他の DSP の設定です。
- MasterLv
- マスターボリューム (左、右) の値です。0x80 〜 0xff は逆位相になります。
- EchoLv
- エコーボリューム (左、右) の値です。0x80 〜 0xff は逆位相になります。
- Delay
- エコーフィードバック強度 (リバーブ) の値です。0x80 〜 0xff は逆位相になります (% が負の値で表示されます)。
- SrcAddr
- APU RAM 内の波形データ (先頭・ループ先頭) のアドレスが保存されているアドレス領域です。
- EchoAddr
- エコー計算時に APU RAM 内のメモリを書き換えるアドレス領域です。
- NoiseClk
- ノイズ発生器のクロック周波数です。
- FIR
- C0 〜 C7
- エコーフィードバックにかける FIR フィルタの係数の値です。0x80 〜 0xff は逆位相になります。
- SPC700 Registers
- SPC700 レジスタの値です。
- Output
- Final Fantasy IV コンフィグで設定された出力の状態です (ステレオ・モノラル)。
- Volume
- Final Fantasy IV の音楽のマスターボリュームの値です。ポーズ中は約 1/4 になります。
- Tempo
- D2 コマンド (演奏速度設定・変化) の値です。
- 変化中でない場合は白色、変化中でエラー (変化量が 0) の場合は薄い赤、正常の場合は薄い水色で表示されます。
- Time
- 演奏時間です。
下部 (トラックの情報)

- S1 〜 S8
- 音楽のトラックです。
- E1 〜 E3
- 効果音のトラックです。
- Sequence
- W
- 次のコマンド実行までの待ち時間 (ティック数) です。
- Addr
- 次のコマンドのアドレスです。
- SN
- DB コマンドで設定されている波形番号です。
- Flg
- エコーオンの状態であれば E が表示されます。
- ノイズオンの状態であれば N が表示されます。
- ピッチモジュレーションオンの状態であれば P が表示されます。
- ノイズオンの状態であれば N が表示されます。
- Volume
- Panpot
- Pitch
- Loop1 〜 Loop4
INI ファイルの設定
INI ファイル直接編集で設定可能です。自動保存は行っていません。
メインウィンドウ (Window セクション)
- 起動時のスクリーン座標指定
- Left と Top で左上の座標を指定します。いずれかの値が範囲外である場合は、システム既定の位置に表示されます。
- 範囲 : -32767 〜 32767
- 既定値 : システム既定の位置
- 範囲 : -32767 〜 32767
- 起動時に常に手前に表示される状態にする
- TopMost に 1 を設定します。0 で解除された状態になります。
- 範囲 : 0 〜 1
- 既定値 : 0
- 範囲 : 0 〜 1
インジケータウィンドウ (Indicator セクション)
- 起動時のスクリーン座標指定
- Left と Top で左上の座標を指定します。いずれかの値が範囲外である場合は、システム既定の位置に表示されます。
- 範囲 : -32767 〜 32767
- 既定値 : システム既定の位置 (0, 0)
- 範囲 : -32767 〜 32767
- 起動時に常に手前に表示される状態にする
- TopMost に 1 を設定します。0 で解除された状態になります。
- 範囲 : 0 〜 1
- 既定値 : 0
- 範囲 : 0 〜 1
プレイヤー (Setting セクション)
- 音量を設定
- DSPAmp に値を設定します。
- 65536 が 1 倍になります。
- 範囲 : 16384 〜 262144 (25% 〜 400%)
- 既定値 : 65536 (100%)
- 65536 が 1 倍になります。
- 起動時のチャネルミュートを設定
- VMute に値を設定します。
- 符号なし 8 桁の 2 進数で表したときに、一番下の位 (2 の 0 乗) が V0 一番上の位 (2 の 7 乗) が V7 の設定になります。
- 対応する位の値が 1 である場合ミュートがオンに、0 である場合はオフに設定されます。
- 範囲 : 0 〜 255
- 既定値 : 0
- 符号なし 8 桁の 2 進数で表したときに、一番下の位 (2 の 0 乗) が V0 一番上の位 (2 の 7 乗) が V7 の設定になります。
アンインストール
- SPCP_FF4.exe, SPCP_FF4.ini, SNESAPU.DLL (と不要であればフォルダ) を削除します。
仕様 (手抜きですね)
- SNESAPU の基本オプションは、内部ミキシング 32bit-float 、出力ステレオ 16bit 48kHz 、高精度ガウス分布補完、DSP エミュレーションのオプション未指定固定です。
- 出力に使用するサウンドデバイスは Microsoft Sound Mapper 固定です。waveOut のみ対応しています。
- メモリ使用量を減らすため(と現在設定不可能ですが設定変更時の応答速度を早くするため)にサウンドバッファ数は 8 で固定されています。
- インジケータのリフレッシュ速度を確保するためサウンドバッファの大きさが 1/120 秒 (8.3ms) と小さな値で固定されています。
- ID666 、拡張 ID666 による演奏時間、フェードアウトの設定には対応していません。
- Script700 には対応していません。
- 演奏中であるかのチェックを効果音のみ行っているので、音楽が演奏停止状態でなくても無音検出 2 秒で停止してしまいます。
- 起動時に INI ファイルで音量指定できますが、変更できません。
- 実行ファイル名を変更した場合、設定を反映させるためには INI ファイルのファイル名も変更する必要があります。
- 管理者モードで実行した場合、エクスプローラからのメッセージが届かなくなり応答不能になります。管理者モードで実行する必要はありませんので、管理者モードでは実行しないでください。
謝辞
本ソフトでは、デグレファクトリー様の 改良版 SNESAPU.DLL を利用させていただいています。ありがとうございます。
本ソフトのインジケータウィンドウのフォントは、遊佐泰紀様の合成フォント Ricty Diminished を利用させていただいています。ありがとうございます。
免責事項
- このソフトウェアによるいかなる損害にも作者 Gnilda は一切責任を負いかねます。
更新履歴
- 2016/05/29
- マルチメディアキーで一部操作可能になりました。
- 同梱の SNESAPU.DLL を v2.17.6 に更新しました。
- 2016/04/29
- 演奏データエラー検出処理を変更しました。"制御コマンド実行時" にエラーが発生する場合に停止するようになりました。
- Aero スナップ無効時にウィンドウを画面上に移動しようとすると、ウィンドウサイズが小さくなる問題を修正しました (Windows8.1 で確認)。
- インジケータウィンドウ表示フォントを Ricty Diminished Version 4.0.1 に更新しました。
- 同梱の SNESAPU.DLL を v2.17.5 に更新しました (演奏データエラー検出処理で SPC700 フェッチの割り込みを使用しているので v2.17.5 未満では起動しません)。
- Aero スナップ無効時にウィンドウを画面上に移動しようとすると、ウィンドウサイズが小さくなる問題を修正しました (Windows8.1 で確認)。
- 2015/04/30
- 演奏開始時にインジケータウィンドウのループ表示を初期化するように修正しました。
- 同梱の SNESAPU.DLL を v2.17.2 に更新しました。
- 2015/03/27
- 初期化の処理を変更しました。
- インジケータウィンドウの IME を無効化しました。
- 2015/03/06
- チャネルミュートを追加しました。
- インジケータウィンドウの表示処理を変更しました。
- 演奏データエラー検出処理を変更しました。
- ツールバーの処理を変更しました。
- インジケータウィンドウの表示処理を変更しました。
- 2015/02/26
- リソースを修正しました。
- 2015/02/25
- ツールバーの処理を変更しました。
- 2015/02/24
- ツールバーの処理を変更しました。
- 2015/02/23
- 例外が発生する可能性がある部分を修正しました (890 様、ありがとうございます) 。
- 2015/02/22
- 試作。