Gnilda のページ


ブレッドクラムナビゲーション


グローバルナビゲーション


ローカルナビゲーション

ローカルナビゲーション


FINAL FANTASY IV 改造サウンドドライバ : 小技


  1. ホーム
  2. SPC
  3. FINAL FANTASY IV 改造サウンドドライバ
  4. 小技

小技

小技

エコー・ノイズ・ピッチモジュレーション を使用しない場合

音楽データ転送直後はすべての音楽トラックのエコー・ノイズ・ピッチモジュレーションの設定は全てオフになっていますので、オフにするコマンドは不要です。

ドラム系の波形を使用するトラックの設定

Software Release の設定が重要ではない場合は、無効にすることでキーオン予約時のティック数計算を省略可能です。

休符で始まる または 休符が連続する 場合の高速化

休符の代わりにタイを使用することで、DSP のキーオフフラグ や スラー・タイフラグ 処理を省略可能です。

休符で始まる場合
!T1									;音楽データ転送直後はすべての音楽トラックが 休符演奏状態
	_T 82							;演奏速度_O 04							;オクターブ設定

;	_R1								;休符で始まる
	_T1								;→ タイ
休符が連続する場合
_P 82							;パン設定
	_V B4							;音量設定
	_A#32							;キーオン
	_R16							;休符
;	_R32							;休符 (連続)
	_T32							;→ タイ

音量設定コマンドのみでトラック音量を変化させる場合の高速化

内部データ設定コマンドで音量変化テーブル (2 バイト) を追加し、追加したテーブルを選択することでコマンド処理時間を短縮し、変化回数が多い場合は音楽データのサイズを小さくすることが可能です。

DC コマンドの音量倍率で F2 コマンドを使用せずにトラックの音量を設定する
!T1
	_DATA							;内部データ設定
		00							;ピッチ微調整値 2・ADSR1・ADSR2 の上書きはしない
		02	96 00					;音量変化テーブル [0x20] : 音量倍率 0x96
		02	64 00					;音量変化テーブル [0x21] : 音量倍率 0x64
		01	78						;音量変化テーブル [0x22] : 音量倍率 0x78
		00							;内部データ と 音量変化テーブル [0x22] の末尾!T5_V FF							;音量設定 : 0xFF で固定する
	_[ 02							;ループ開始位置
;		_V 96						;トラック音量 : 音量倍率 0x96
		_SA 20						;→ 音量変化テーブル [0x20] : 音量倍率 0x96
		_A8							;キーオン
;		_V 64						;トラック音量 : 音量倍率 0x64
		_SA 21						;→ 音量変化テーブル [0x21] : 音量倍率 0x64
		_A16 _A16					;キーオン
	_]								;繰り返し・ループ終了
;	_V 78							;トラック音量 : 音量倍率 0x78
	_SA 22							;→ 音量変化テーブル [0x22] : 音量倍率 0x78
	_A16 _A16 _A16 _A16				;キーオン

休符が連続した後のキーオン予約前の処理 の分散

休符が連続した後のキーオン処理の前に複数のコマンドを実行予定の場合は、置き換えたタイの前に移動することでキーオン予約前の処理を分散することができます。

DC コマンドの音量倍率で F2 コマンドを使用せずにトラックの音量を設定する
_F#1							;キーオン
	_R1								;休符
	_T1								;_R1
	_T2.							;_R2.
	_V 96							;音量設定
	_T8								;_R8
;	_V 96							;音量設定 (タイの前に移動)
	_VF 1800 FF						;音量変化 (移動不可能)
	_[ 05							;ループ開始位置
		_C#48						;キーオン
	_]								;繰り返し・ループ終了

ジャンプ系コマンドを使用する場合の高速化

休符の後でジャンプする事で、キーオン予約時の Software Release のティック数計算処理を省略することができます。

条件ジャンプ コマンドはアドレス計算をせずに何もしないコマンド度として処理されます (オリジナルの仕様)。

キーオン以外のコマンドが多いと時間がかかるティック数計算処理を省略する
;	_Sub L_1_2						;復帰可能なジャンプ
	_G4								;キーオン
	_T16							;タイ
	_R16							;休符
	_Sub L_1_2_						;復帰可能なジャンプ : _G4 予約時のティック数計算処理で このコマンド (重い) を処理する時間を省略_Jmp L_1_LOOP					;無限ループ;!L_1_2
;	_G4								;キーオン
;	_T16							;タイ
;	_R16							;休符
!L_1_2_
	_G8								;キーオン


- Rental Orbit Space -