シーケンス文法

スーパードンキーコング および、Donkey Kong Country で使用されているRareWare Sound Driver のシーケンスデータの形式と、全コマンドの仕様について説明します。
逆アセンブリおよび等価実装は RareSpc で公開しています。
ドンキー2・3 のドライバについては ドンキー2改造資料 - シーケンス文法 を参照してください。

このセクションの内容

シーケンスデータの構造
シーケンスデータの配置、イベントの種類、ノートの長さの指定方法、テンポなど、シーケンスデータ全体に共通する仕様について説明します。

イベント一覧

コマンド構文内容
0x800x80, duration休符
0x81~0xFFnote, durationノート
0x000x00チャネルのシーケンスを終了します。
0x010x01, byte instrumentチャネルの音色(ソース・ナンバー)を設定します。
0x020x02, sbyte left, sbyte rightチャネルの左右の音量を設定します。
0x030x03, ushort address指定したアドレスへ読出位置を移動します。
0x040x04, byte count, ushort address指定したアドレスのシーケンスを、指定した回数だけ繰り返し再生します。
0x050x05サブルーチンの終端を示します。
0x060x06, byte duration // 通常以降のノート・休符の長さを固定します(デフォルト・デュレーション・モード)。
0x070x07デフォルト・デュレーション・モードを解除します。
0x080x08, byte delay, byte interval, byte count, sbyte delta, byte reverseピッチベンドを設定します。変化量をそのまま使用します。
0x090x09, byte delay, byte interval, byte count, sbyte delta, byte reverseピッチベンドを設定します。変化量の符号を反転して使用します。
0x0A0x0Aピッチベンドを無効にします。
0x0B0x0B, byte tempoBGMのテンポを設定します。
0x0C0x0C, sbyte deltaBGMのテンポに値を加算します。
0x0D0x0D, byte length, byte rate, sbyte depthディレイなしでビブラートを設定します。
0x0E0x0Eビブラートを無効にします。
0x0F0x0F, byte length, byte rate, sbyte depth, byte delayディレイ付きでビブラートを設定します。
0x100x10, byte adsr1, byte adsr2チャネルのエンベロープ(ADSR)を設定します。
0x110x11, sbyte left, sbyte rightDSPのマスター音量を設定します。
0x120x12, sbyte tuningチャネルのチューニング値を設定します。
0x130x13, sbyte transposeチャネルのトランスポーズ値を設定します。
0x140x14, sbyte deltaチャネルのトランスポーズ値に値を加算します。
0x150x15, sbyte feedback, sbyte left, sbyte rightエコーのフィードバックと音量を設定し、エコーを有効にします。
0x160x16チャネルのエコーを有効にします。
0x170x17チャネルのエコーを無効にします。
0x180x18, sbyte c0, sbyte c1, sbyte c2, sbyte c3, sbyte c4, sbyte c5, sbyte c6, sbyte c7エコーのFIRフィルタ係数を設定します。
0x190x19, byte clockDSPのノイズ周波数を設定します。
0x1A0x1Aチャネルの音源をノイズに切り替えます。
0x1B0x1Bチャネルの音源を波形サンプルに戻します。
0x1C0x1C, sbyte left, sbyte right, byte adsr1, byte adsr2音量・ADSRプリセット1を登録します。
0x1D0x1D, sbyte left, sbyte right, byte adsr1, byte adsr2音量・ADSRプリセット2を登録します。
0x1E0x1E, sbyte left, sbyte right, byte adsr1, byte adsr2音量・ADSRプリセット3を登録します。
0x1F0x1F, sbyte left, sbyte right, byte adsr1, byte adsr2音量・ADSRプリセット4を登録します。
0x200x20, sbyte left, sbyte right, byte adsr1, byte adsr2音量・ADSRプリセット5を登録します。
0x210x21音量・ADSRプリセット1をDSPに書き込みます。
0x220x22音量・ADSRプリセット2をDSPに書き込みます。
0x230x23音量・ADSRプリセット3をDSPに書き込みます。
0x240x24音量・ADSRプリセット4をDSPに書き込みます。
0x250x25音量・ADSRプリセット5をDSPに書き込みます。
0x260x26, byte delay, byte interval, byte count, sbyte delta同じ回数だけ往復するピッチベンドを設定します。変化量の符号を反転して使用します。
0x270x27, byte delay, byte interval, byte count, sbyte delta同じ回数だけ往復するピッチベンドを設定します。
0x280x28, byte instrument, sbyte left, sbyte rightチャネルの音色と左右の音量を設定します。
0x290x29, byte stepマスター音量・エコー音量のフェードアウトを開始します。
0x2A0x2A, byte dividerドライバの動作周期(タイマー0の分周値)を設定します。
0x2B0x2Bノートの長さを16ビットで指定するモードにします。
0x2C0x2Cノートの長さを8ビットで指定するモードに戻します。
0x2D0x2D, ushort address0, ushort address1, ...条件ジャンプの添字に応じて、アドレス表から選んだアドレスへ移動します。
0x2E0x2E, byte index条件ジャンプの添字を設定します。
0x2F0x2F, byte length, byte rate, sbyte depth, byte delay音量を三角波状に変化させるトレモロを設定します。
0x300x30トレモロを無効にします。