主にMSX関係のコンテンツが置いてあります。

データの構造/直接指定

このデータ形式にするには、コマンドFEHで(+09H)[データフラグ]b1[直接指定タイプ]を1にします。

音長はコマンドE0H-E3Hのデータで指定したクロックを使用します。

同じくコマンドE0H-E3Hでノイズやトーン若しくはSCCのキーオンのフラグを設定します。

SEで使用されることが主なのでクロック値は1など細かい値が設定されていることが多いようです。

このデータ形式では、PSGのハードウェアエンベロープもコマンドE5Hにより鳴らすことができます。

その時の音量値指定は無効です。

直接指定形式のデータフォーマットは複数あります。

ノイズのみ有効の場合

データは1バイトで、下位4bitが音量値(0H-DH)となります。上位4bitは0です。

(+0EH)[音処理フラグ]b6[音量値無効]が1(音量値なし)の場合

データは1バイトで、分周比下位のデータとなります。この分周比は00H-CFHの範囲しか指定できません。(+10H)[データから取得した分周比値、下位]に入力されます。

音量値が有効で、(+0EH)[音処理フラグ]b5[分周比下位無効]が1(分周比下位無効)の場合

データは1バイトで、上位4bitが音量値(0H-CH)、下位4bitが分周比上位となります。

分周比上位は(+11H)[データから取得した分周比値、上位]に入力されます。

音量値、分周比下位両方有効の場合(デフォルト)

データは2バイトです。

1バイト目上位4bitが音量値(0H-CH)、下位4bitが分周比上位。2バイト目が分周比下位。分周比は(+11H)(+10H)に入力されます。

音名音長形式、直接指定形式、音長指定直接変化形式の3種の発音データとコマンドデータの区別は値の範囲で行われています。D0H-FFHがコマンドデータでそれ以外は3種のデータのどれかという区別です。

なので、分周比のみの1バイトデータの場合、D0H-FFHはコマンドデータとして処理されてしまうので使用できません。

使用を限定されるためかは分かりませんが、ゲーム中の曲やSEでこのフォーマットを使用している形跡はありませんでした。

上位4bitの音量データも同様で、DH-FHならコマンドデータとして解釈されてしまいます。

そのため0-CHまでしか指定できません。

ドライバではデータから読み取った値を+2して処理しています。それによりv2-v14(ノイズのみはv15)という範囲が実際に出力できる音量範囲ということになっていました。

ということで音量値は(ノイズのみの下位4bitも)データから+2された後に(+12H)[チャンネルボリューム]へ入力されます。

サンプル

データ使用法PSG演奏サンプル

データ 意味
FEH 02H (+09H)を02Hにセットする。直接指定のデータ形式
E2H 04H トーンon,ノイズoff, 音長4クロック設定
91H 40H v9+2=11,分周比140H,4クロック鳴らす
71H 60H v7+2=9, 分周比160H,4クロック鳴らす
51H 80H v5+2=7, 分周比180H,4クロック鳴らす
31H A0H v3+2=5, 分周比1A0H,4クロック鳴らす
11H C0H v1+2=3, 分周比1C0H,4クロック鳴らす
E0H 1EH トーンoff,ノイズoff,音長30クロック消音する
E1H 04H トーンoff,ノイズon, 音長4クロック設定
09H v=9+2=11,4クロック鳴らす
07H v=7+2=9, 4クロック鳴らす
05H v=5+2=7, 4クロック鳴らす
03H v=3+2=5, 4クロック鳴らす
01H v=1+2=3, 4クロック鳴らす
00H v=0+2=2, 4クロック鳴らす
E0H 1EH 消音30クロック
E3H 04H トーンon,ノイズon,音長4クロック設定
91H 40H v9+2=11,分周比140H,4クロック鳴らす
F4H データフォーマットを分周比下位のみにする
60H v=11,分周比160H,4クロック鳴らす
80H v=11,分周比180H,4クロック鳴らす
A0H v=11,分周比1A0H,4クロック鳴らす
C0H v=11,分周比1C0H,4クロック鳴らす
E0H 1EH 消音30クロック
F6H データフォーマットを2バイトに戻す
E2H 04H トーンon,ノイズoff,音長4クロック設定
91H 40H v9+2=11,分周比140H,4クロック鳴らす
F5H データフォーマットを音量と分周比上位4bitにする
71H v7+2=9, 分周比140H,4クロック鳴らす
91H v9+2=11,分周比140H,4クロック鳴らす
71H v7+2=9, 分周比140H,4クロック鳴らす
91H v9+2=11,分周比140H,4クロック鳴らす
71H v7+2=9, 分周比140H,4クロック鳴らす
91H v9+2=11,分周比140H,4クロック鳴らす
E0H 1EH 消音30クロック
F6H データフォーマットを2バイトに戻す
E2 1EH トーンon,ノイズoff,音長30クロック設定
E5H 00H 10H 00H ハードウェアエンベロープセット。パターン0,周期1000H
91 40H 分周比140Hでハードウエアエンベロープが30クロック鳴る。音量値はダミー
FFH 演奏終了