音源ドライバーの制御用変数です。
本音源ドライバーを用いたアプリケーションを開発する際に、
音源ドライバーの制御状態を知りたい時にご参照ください。
尚、音源ドライバーの制御用変数にアクセスするには、アセンブリ言語中にて以下の通り外部宣言することで可能です。
.include "nsd.inc"
パート毎のメンバー変数は、2Byte毎に配置しています。
xレジスタ等に、(トラック番号−1)×2の値を書くと、アクセスに便利です。
ヴァージョンアップにより制御変数の構造体の構成が変わる場合があるため、制御変数へのアクセスは以下表の変数名でアクセスの程、お願いいたします。
又、拡張音源用のメンバー変数は割愛します(拡張音源を使用しない場合は、拡張音源用のメンバー変数は構造体のメンバーに入りません)。
Zeropageに置かれる制御用変数(構造体)です。
頻度に(1tick中で何度も)使用するため、アクセス速度の速いZeropage領域に配置しています。
| 変数名 | 内容 |
|---|---|
| __ptr | 汎用変数(ポインター用) 尚、内容を保持する必要はありません。 ユーザーがこの領域を一時的な変数領域として使用して構いませんが、 本音源ドライバのライブラリ関数を呼んだ場合、内容は破壊される旨、ご留意ください。 |
| __tmp | 汎用変数(計算用) 尚、内容を保持する必要はありません。 ユーザーがこの領域を一時的な変数領域として使用して構いませんが、 本音源ドライバのライブラリ関数を呼んだ場合、内容は破壊される旨、ご留意ください。 |
| channel | 現在制御中のチャンネル 尚、内容を保持する必要はありません。 ユーザーがこの領域を一時的な変数領域として使用して構いませんが、 本音源ドライバのライブラリ関数を呼んだ場合、内容は破壊される旨、ご留意ください。 |
| __flag | D... .... : 再生制御無効...J .... : 早送り中.... PP.. : 効果音の優先度.... ..S. : SE再生中.... ...B : BGMが再生中 |
| __Tempo | テンポ(tコマンドの数値) |
| __Tempo_ctr | テンポカウンタ |
| __Sequence_ptr | 演奏ポインタ |
| __Length_ctr | 音長カウンタ |
| __Gate | 現在の音符のゲートタイム |
| __Envelop_V | エンベロープのホールドタイム用のカウンタiiii .... : 音色.... vvvv : 音量 |
| __Envelop_F | エンベロープのホールドタイム用のカウンタnnnn .... : ノート.... ffff : 音程 |
通常のRAM領域に置かれる制御用変数(構造体)です。
音源ドライバーだけでzeropageを占有できないので、通常のRAM領域に配置します。
| 変数名 | 内容 |
|---|---|
| __chflag | ..V. .... : VRC7:Sustain...V .... : VRC7:KeyOn/Off制御...S .... : SN5B:ハードウェアエンベロープ.... FF.. : FDS :マスター音量.... .V.. : VRC7:KeyOff時にハードウェアのKeyOffをするかどうか.... ..KK : エンベロープ処理のフェーズ |
| __gatemode | vvvv .... : リリース時の音色(R@コマンドの数値).... e... : 音色エンベロープのスイッチ.... .s.. : サブルーチンから復帰.... ..rr : ゲートモード(Rmコマンドの設定値) |
| __length | 音長省略時の音長(lコマンドの設定値) |
| __tai | スラー・タイ制御 |
| __gate_q | ゲートタイム(qコマンドの設定値) |
| __gate_u | ゲートタイム(uコマンドの設定値) |
| __note | 現在発音しているノートナンバー |
| __octave | 現在のオクターブ(oコマンドの数値×12) |
| __detune_cent | cent単位のディチューン(Dコマンドの数値) |
| __detune_fine | レジスタ単位のディチューン(D%コマンドの数値) |
| __por_target | ポルタメント制御用(目標値) |
| __por_depth | ポルタメント制御用(一回の変化量) |
| __por_ctr | ポルタメント制御用(カウンター) |
| __por_rate | ポルタメント制御用(何フレームで変化するか?) |
| __por_now | ポルタメント制御用(現在の変位) |
| __trans | 移調(_コマンドの数値) |
| __trans_one | 一回限りの移調(', "コマンド制御用) |
| __repeat_ctr | リピートAのカウンタ |
| __repeat_ctr2 | リピートBのカウンタ |
| __volume | rrrr .... : リリース時の音量(Rvコマンドの数値).... vvvv : 音量(vコマンドの数値) |
| __env_vol_now | 音量エンベロープの現在値 |
| __env_freq_now | 音程エンベロープの現在値 |
| __env_note_now | ノートエンベロープの現在値 |
| __env_vol_ptr | 音量エンベロープの推移制御用のポインタ |
| __env_voi_ptr | 音色エンベロープの推移制御用のポインタ |
| __env_freq_ptr | 音程エンベロープの推移制御用のポインタ |
| __env_note_ptr | ノートエンベロープの推移制御用のポインタ |
| __env_volume | 音量エンベロープ・テーブルのポインタ |
| __env_voice | 音色エンベロープ・テーブルのポインタ |
| __env_frequency | 周波数エンベロープ・テーブルのポインタ |
| __env_note | ノートエンベロープ・テーブルのポインタ |
| __frequency | 現在発音している音程(音程・ノートエンベロープ適用後) |
| __subroutine | サブルーチンの戻りアドレス |
| __repeat2 | リピートBでの次のジャンプ先アドレス |
| __dpcm_info | 儕CM制御構造体のポインタ |
| __apu_voice_set1 | APU ch1の音色(レジスタ書込みの為の論理演算用) |
| __apu_voice_set2 | APU ch2の音色(レジスタ書込みの為の論理演算用) |
| __apu_tri_time | APU ch3のリニアカウンター値 |
| __apu_voice_set4 | APU ch4の音色(レジスタ書込みの為の論理演算用) |
| __apu_voice_set1 | SE ch1の音色(レジスタ書込みの為の論理演算用) |
| __apu_voice_set2 | SE ch1の音色(レジスタ書込みの為の論理演算用) |
| __apu_frequency1 | APU ch1の音程上位8bitの保存用(音程レジスタ上位8bit更新によるプチノイズ発生防止)。 |
| __apu_frequency2 | APU ch2の音程上位8bitの保存用(音程レジスタ上位8bit更新によるプチノイズ発生防止)。 |
| __apu_frequency3 | APU ch3の音程上位8bitの保存用(音程レジスタ上位8bit更新によるプチノイズ発生防止)。 |
| __se_frequency | SE ch1の音程上位8bitの保存用(音程レジスタ上位8bit更新によるプチノイズ発生防止)。 |
| __sweep_ch1 | APU ch1のsweepレジスタの現在値 |
| __sweep_ch2 | APU ch2のsweepレジスタの現在値 |