シーケンス文法

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

このセクションの内容

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

イベント一覧

コマンド構文内容
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)を設定します。
0x11-未定義
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, byte noteノートイベント 0xE0, 0xE2~0xFF で使用するノート・ナンバーを設定します。
0x1D0x1D, byte noteノートイベント 0xE1 で使用するノート・ナンバーを設定します。
0x1E0x1E, sbyte left1, sbyte right1, sbyte left2, sbyte right22組の音量プリセットを登録します。
0x1F0x1F, byte delayエコー・ディレイを設定し、エコー・バッファを確保します。
0x200x20音量プリセット1をチャネル音量に設定します。
0x210x21, ushort address指定したアドレスのシーケンスを1回だけ再生します。
0x220x22, byte instrument, sbyte transpose, sbyte tuning, sbyte left, sbyte right, byte adsr1, byte adsr2音色・トランスポーズ・チューニング・音量・ADSRを一括で設定します。
0x230x23, sbyte volumeチャネルの左右の音量を同じ値に設定します。
0x240x24, byte scaleBGMチャネルの音量倍率を設定します。
0x25-未定義
0x260x26, byte delay, byte interval, byte count, sbyte delta同じ回数だけ往復するピッチベンドを設定します。変化量の符号を反転して使用します。
0x270x27, byte delay, byte interval, byte count, sbyte delta同じ回数だけ往復するピッチベンドを設定します。
0x28-未定義
0x29-未定義
0x2A-未定義
0x2B0x2Bノートの長さを16ビットで指定するモードにします。
0x2C0x2Cノートの長さを8ビットで指定するモードに戻します。
0x2D-未定義
0x2E-未定義
0x2F-未定義
0x300x30チャネルのエコーを無効にします。コマンド 0x17 の別名です。
0x310x31音量プリセット2をチャネル音量に設定します。
0x320x32チャネルのエコーを無効にします。コマンド 0x17 の別名です。