シーケンス文法
スーパードンキーコング および、Donkey Kong Country で使用されているRareWare Sound Driver のシーケンスデータの形式と、全コマンドの仕様について説明します。
逆アセンブリおよび等価実装は RareSpc で公開しています。
ドンキー2・3 のドライバについては ドンキー2改造資料 - シーケンス文法 を参照してください。
このセクションの内容
シーケンスデータの構造
シーケンスデータの配置、イベントの種類、ノートの長さの指定方法、テンポなど、シーケンスデータ全体に共通する仕様について説明します。
イベント一覧
| コマンド | 構文 | 内容 |
|---|---|---|
| 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 | 0x11, sbyte left, sbyte right | DSPのマスター音量を設定します。 |
| 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, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音量・ADSRプリセット1を登録します。 |
| 0x1D | 0x1D, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音量・ADSRプリセット2を登録します。 |
| 0x1E | 0x1E, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音量・ADSRプリセット3を登録します。 |
| 0x1F | 0x1F, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音量・ADSRプリセット4を登録します。 |
| 0x20 | 0x20, sbyte left, sbyte right, byte adsr1, byte adsr2 | 音量・ADSRプリセット5を登録します。 |
| 0x21 | 0x21 | 音量・ADSRプリセット1をDSPに書き込みます。 |
| 0x22 | 0x22 | 音量・ADSRプリセット2をDSPに書き込みます。 |
| 0x23 | 0x23 | 音量・ADSRプリセット3をDSPに書き込みます。 |
| 0x24 | 0x24 | 音量・ADSRプリセット4をDSPに書き込みます。 |
| 0x25 | 0x25 | 音量・ADSRプリセット5をDSPに書き込みます。 |
| 0x26 | 0x26, byte delay, byte interval, byte count, sbyte delta | 同じ回数だけ往復するピッチベンドを設定します。変化量の符号を反転して使用します。 |
| 0x27 | 0x27, byte delay, byte interval, byte count, sbyte delta | 同じ回数だけ往復するピッチベンドを設定します。 |
| 0x28 | 0x28, byte instrument, sbyte left, sbyte right | チャネルの音色と左右の音量を設定します。 |
| 0x29 | 0x29, byte step | マスター音量・エコー音量のフェードアウトを開始します。 |
| 0x2A | 0x2A, byte divider | ドライバの動作周期(タイマー0の分周値)を設定します。 |
| 0x2B | 0x2B | ノートの長さを16ビットで指定するモードにします。 |
| 0x2C | 0x2C | ノートの長さを8ビットで指定するモードに戻します。 |
| 0x2D | 0x2D, ushort address0, ushort address1, ... | 条件ジャンプの添字に応じて、アドレス表から選んだアドレスへ移動します。 |
| 0x2E | 0x2E, byte index | 条件ジャンプの添字を設定します。 |
| 0x2F | 0x2F, byte length, byte rate, sbyte depth, byte delay | 音量を三角波状に変化させるトレモロを設定します。 |
| 0x30 | 0x30 | トレモロを無効にします。 |