シーケンス文法
スーパードンキーコング2・3 および、Diddy’s Kong Quest, Dixie Kong’s Double Trouble で使用されているRareWare Sound Driver のシーケンスデータの形式と、全コマンドの仕様について説明します。
逆アセンブリおよび等価実装は RareSpc で公開しています。
ドンキー1 のドライバについては ドンキー1改造資料 - シーケンス文法 を参照してください。
このセクションの内容
シーケンスデータの構造
シーケンスデータの配置、イベントの種類、ノートの長さの指定方法、テンポなど、シーケンスデータ全体に共通する仕様について説明します。
イベント一覧
| コマンド | 構文 | 内容 |
|---|---|---|
| 0x80 | 0x80, duration | 休符 |
| 0x81~0xFF | note, duration | ノート |
| 0x00 | 0x00 | チャネルのシーケンスを終了します。 |
| 0x01 | 0x01, byte instrument | チャネルの音色(ソース・ナンバー)を設定します。 |
| 0x02 | 0x02, sbyte left, sbyte right | チャネルの左右の音量を設定します。 |
| 0x03 | 0x03, ushort address | 指定したアドレスへ読出位置を移動します。 |
| 0x04 | 0x04, byte count, ushort address | 指定したアドレスのシーケンスを、指定した回数だけ繰り返し再生します。 |
| 0x05 | 0x05 | サブルーチンの終端を示します。 |
| 0x06 | 0x06, byte duration // 通常 | 以降のノート・休符の長さを固定します(デフォルト・デュレーション・モード)。 |
| 0x07 | 0x07 | デフォルト・デュレーション・モードを解除します。 |
| 0x08 | 0x08, byte delay, byte interval, byte count, sbyte delta, byte reverse | ピッチベンドを設定します。変化量をそのまま使用します。 |
| 0x09 | 0x09, byte delay, byte interval, byte count, sbyte delta, byte reverse | ピッチベンドを設定します。変化量の符号を反転して使用します。 |
| 0x0A | 0x0A | ピッチベンドを無効にします。 |
| 0x0B | 0x0B, byte tempo | BGMのテンポを設定します。 |
| 0x0C | 0x0C, sbyte delta | BGMのテンポに値を加算します。 |
| 0x0D | 0x0D, byte length, byte rate, sbyte depth | ディレイなしでビブラートを設定します。 |
| 0x0E | 0x0E | ビブラートを無効にします。 |
| 0x0F | 0x0F, byte length, byte rate, sbyte depth, byte delay | ディレイ付きでビブラートを設定します。 |
| 0x10 | 0x10, byte adsr1, byte adsr2 | チャネルのエンベロープ(ADSR)を設定します。 |
| 0x11 | - | 未定義 |
| 0x12 | 0x12, sbyte tuning | チャネルのチューニング値を設定します。 |
| 0x13 | 0x13, sbyte transpose | チャネルのトランスポーズ値を設定します。 |
| 0x14 | 0x14, sbyte delta | チャネルのトランスポーズ値に値を加算します。 |
| 0x15 | 0x15, sbyte feedback, sbyte left, sbyte right | エコーのフィードバックと音量を設定し、エコーを有効にします。 |
| 0x16 | 0x16 | チャネルのエコーを有効にします。 |
| 0x17 | 0x17 | チャネルのエコーを無効にします。 |
| 0x18 | 0x18, sbyte c0, sbyte c1, sbyte c2, sbyte c3, sbyte c4, sbyte c5, sbyte c6, sbyte c7 | エコーのFIRフィルタ係数を設定します。 |
| 0x19 | 0x19, byte clock | DSPのノイズ周波数を設定します。 |
| 0x1A | 0x1A | チャネルの音源をノイズに切り替えます。 |
| 0x1B | 0x1B | チャネルの音源を波形サンプルに戻します。 |
| 0x1C | 0x1C, byte note | ノートイベント 0xE0, 0xE2~0xFF で使用するノート・ナンバーを設定します。 |
| 0x1D | 0x1D, byte note | ノートイベント 0xE1 で使用するノート・ナンバーを設定します。 |
| 0x1E | 0x1E, sbyte left1, sbyte right1, sbyte left2, sbyte right2 | 2組の音量プリセットを登録します。 |
| 0x1F | 0x1F, byte delay | エコー・ディレイを設定し、エコー・バッファを確保します。 |
| 0x20 | 0x20 | 音量プリセット1をチャネル音量に設定します。 |
| 0x21 | 0x21, ushort address | 指定したアドレスのシーケンスを1回だけ再生します。 |
| 0x22 | 0x22, byte instrument, sbyte transpose, sbyte tuning, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音色・トランスポーズ・チューニング・音量・ADSRを一括で設定します。 |
| 0x23 | 0x23, sbyte volume | チャネルの左右の音量を同じ値に設定します。 |
| 0x24 | 0x24, byte scale | BGMチャネルの音量倍率を設定します。 |
| 0x25 | - | 未定義 |
| 0x26 | 0x26, byte delay, byte interval, byte count, sbyte delta | 同じ回数だけ往復するピッチベンドを設定します。変化量の符号を反転して使用します。 |
| 0x27 | 0x27, byte delay, byte interval, byte count, sbyte delta | 同じ回数だけ往復するピッチベンドを設定します。 |
| 0x28 | - | 未定義 |
| 0x29 | - | 未定義 |
| 0x2A | - | 未定義 |
| 0x2B | 0x2B | ノートの長さを16ビットで指定するモードにします。 |
| 0x2C | 0x2C | ノートの長さを8ビットで指定するモードに戻します。 |
| 0x2D | - | 未定義 |
| 0x2E | - | 未定義 |
| 0x2F | - | 未定義 |
| 0x30 | 0x30 | チャネルのエコーを無効にします。コマンド 0x17 の別名です。 |
| 0x31 | 0x31 | 音量プリセット2をチャネル音量に設定します。 |
| 0x32 | 0x32 | チャネルのエコーを無効にします。コマンド 0x17 の別名です。 |