PSG 部分は、PC-Engine と同じらしい。
ADPCM のデータ転送は KING が行う。
100h | channel select |
---|---|
102h | Main volume |
104h | Frequency(low) |
106h | Frequency(high) |
108h | Channel volume |
10Ah | Pan |
10Ch | Wave data |
10Eh | Noise |
110h | LFO Freq. |
112h | LFO control |
120h | ADPCM control |
122h | ADPCM Vol0 left(0〜3Fh) |
124h | ADPCM Vol0 right(0〜3Fh) |
126h | ADPCM Vol1 right(0〜3Fh) |
128h | ADPCM Vol1 right(0〜3Fh) |
12Ah | |
12Ch |
104h〜10Eh はチャンネル毎に設定でき、そのチャンネルを選択するにはこのレジスタにチャンネル番号(0〜5)を出力します。
PSG 音源全体のボリュームを設定します。bit7-4 に左の音量(0〜15)、bit3-0 に右の音量(0〜15)を指定します。
音の周波数を指定します。ここに指定する値は n(12bit) = 3580000/32/freq で得られます。104h に求めた値の下位 8bit、106h に上位 4bit を指定します。
チャンネル毎の音量を指定します。音量は 0〜31 で指定し、bit4-0 に音量を指定します。bit7-6 は音声出力を制御する為に使用されます。
bit7(ch on) | bit6(dda) | 動作 |
---|---|---|
0 | 0 | 波形データを書き込む |
0 | 1 | 波形データのインデックスをリセットする |
1 | 0 | 波形データと周波数設定により音を出力する |
1 | 1 | 波形データに出力されたデータをリアルタイムに出力する |
左と右の音量を指定します。bit7-4 に左の音量(0〜15)、bit3-0 に右の音量(0〜15)を指定します。
出力する音の波形を設定します。108h の bit7-6 を 00 にして、10Ch に 32バイトの波形データを設定します。
波形は符号無し 5bit のデータで表されます。
ノイズの設定を指定します。bit4-0 にノイズ周波数を指定し、bit7 にノイズを有効(1)にするか無効(0)にするかを指定します。
ノイズを使用できるのは、チャンネル 5 とチャンネル 6 のみです。
ノイズ周波数は n(5bit) = 3580000/64/freq で計算できます。
LFO の周波数を指定します。
bit1-bit0 | サンプリングレート 00 = 32kHz 01 = 16kHz 10 = 8kHz 11 = 4kHz |
---|---|
bit2 | channel0 liner flag |
bit3 | channel1 liner flag |
bit4 | channel0 reset |
bit5 | channel1 reset |
ADPCM チャンネル 0 の左音量を 0 〜 63 で指定します。
ADPCM チャンネル 0 の右音量を 0 〜 63 で指定します。
ADPCM チャンネル 1 の左音量を 0 〜 63 で指定します。
ADPCM チャンネル 1 の右音量を 0 〜 63 で指定します。
ADPCM は DPCM を改良したもので、差分にスケールファクタをかけます。
スケールファクタは差分の傾向から動的に変化し、波形の変化が大きい場合はスケールファクタは増大し、変化が小さい場合はスケールファクタは減少します。このような動作により、4bit のデータでも元の波形に近いデータを出力することが可能です。
PC-FX の ADPCM は MSM6258 のデータをそのまま再生できるようです。8bitデータの下位4bit、上位4bit の順で再生され、4bit データは符号部と数値部が分離していますので、注意が必要です。
bit3 | 符号(0=+ / 1=-) |
---|---|
bit2-0 | 値の絶対値 |