サウンド

SO1、 SO2 の 2 つ出力端子にサウンドチャンネルが接続されます。
また、カートリッジの入力端子 Vin にも接続されます。
どちらの出力端子に接続することもできます。

ゲームボーイは 4 つの方法でサウンドを再生します。

  • スイープとエンベロープの付いた矩形波
  • エンベロープの付いた矩形波
  • 波形 RAM 上の波形パターン
  • エンベロープの付いたホワイトノイズ

4 つのサウンドはそれぞれ独立して制御でき、出力端子別にミックスできます。
サウンドレジスタに値をセットすることで、サウンドを再生します。
(スーパーゲームボーイでは 2.4% 高い周波数の音が鳴ります。)

サウンドチャンネル 1 - 矩形波とスイープ


FF10 - NR10 - チャンネル 1 スイープレジスタ (読み込み/書き込み可能)


 Bit 6-4 - スイープ時間
 Bit 3   - スイープ増加/減少
            0: 加算   (周波数増加)
            1: 減算   (周波数減少)
 Bit 2-0 - スイープシフトの値   (n: 0 - 7)

スイープ時間

 000: スイープオフ - 周波数変化なし
 001: 7.8 ms  (1 / 128 Hz)
 010: 15.6 ms (2 / 128 Hz)
 011: 23.4 ms (3 / 128 Hz)
 100: 31.3 ms (4 / 128 Hz)
 101: 39.1 ms (5 / 128 Hz)
 110: 46.9 ms (6 / 128 Hz)
 111: 54.7 ms (7 / 128 Hz)

FF11 - NR11 - チャンネル 1 サウンド長/波形パターンデューティ比 (読み込み/書き込み可能)


 Bit 7-6 - 波形パターンデューティ比 (読み込み/書き込み可能)
 Bit 5-0 - サウンド長の値 (書き込み専用) (t1: 0 - 63)

波形デューティ比

 00: 12.5% ( _-------_-------_------- )
 01: 25%   ( __------__------__------ )
 10: 50%   ( ____----____----____---- ) (通常)
 11: 75%   ( ______--______--______-- )

サウンド長 = (64 - t1) * (1 / 256) 秒
この値は NR14 のビット 6 がセットされた時にのみ使用されます。

FF12 - NR12 - チャンネル 1 音量エンベロープ (読み込み/書き込み可能)


 Bit 7-4 - エンベロープの初期音量 (0 - 0Fh) (0 = サウンドなし)
 Bit 3   - エンベロープの方向 (0 = 減少、 1 = 増加)
 Bit 2-0 - エンベロープスイープの数 (n: 0 - 7)
           (0 の場合、エンベロープ操作を停止)

1 ステップの長さ = n * (1 / 64) 秒

FF13 - NR13 - チャンネル 1 周波数下位データ (書き込み専用)


11 ビットで表される周波数の、下位 8 ビットのデータ (x)。
上位 3 ビットは NR14 (FF14) で指定する。

FF14 - NR14 - チャンネル 1 周波数上位データ (読み込み/書き込み可能)


 Bit 7   - 初期化 (1 = サウンドのリスタート)     (書き込み専用)
 Bit 6   - カウンタ/継続の切り替え              (読み込み/書き込み可能)
           (1 = NR11 で指定された長さが経過した後、出力が停止される)
 Bit 2-0 - 周波数の上位 3 ビット (x)             (書き込み専用)

周波数 = 131,072 / (2048 - x) Hz

サウンドチャンネル 2 - 矩形波


このチャンネルは チャンネル 1 と同じように動作しますが、スイープレジスタがありません。

FF16 - NR21 - チャンネル 2 サウンド長/波形パターンデューティ比 (読み込み/書き込み可能)


 Bit 7-6 - 波形パターンデューティ比 (読み込み/書き込み可能)
 Bit 5-0 - サウンド長の値 (書き込み専用) (t1: 0 - 63)

波形デューティ比

 00: 12.5% ( _-------_-------_------- )
 01: 25%   ( __------__------__------ )
 10: 50%   ( ____----____----____---- ) (通常)
 11: 75%   ( ______--______--______-- )

サウンド長 = (64 - t1) * (1 / 256) 秒
この値は NR24 のビット 6 がセットされた時にのみ使用されます。

FF17 - NR22 - チャンネル 2 音量エンベロープ (読み込み/書き込み可能)


 Bit 7-4 - エンベロープの初期音量 (0 - 0Fh) (0 = サウンドなし)
 Bit 3   - エンベロープの方向 (0 = 減少、 1 = 増加)
 Bit 2-0 - エンベロープスイープの数 (n: 0 - 7)
           (0 の場合、エンベロープ操作を停止)

1 ステップの長さ = n * (1 / 64) 秒

FF18 - NR23 - チャンネル 2 周波数下位データ (書き込み専用)


11 ビットで表される周波数の、下位 8 ビットのデータ (x)。
上位 3 ビットは NR24 (FF19) で指定する。

FF19 - NR24 - チャンネル 2 周波数上位データ (読み込み/書き込み可能)


 Bit 7   - 初期化 (1 = サウンドのリスタート)     (書き込み専用)
 Bit 6   - カウンタ/継続の切り替え              (読み込み/書き込み可能)
           (1 = NR21 で指定された長さが経過した後、出力が停止される)
 Bit 2-0 - 周波数の上位 3 ビット (x)             (書き込み専用)

周波数 = 131,072 / (2048 - x) Hz

サウンドチャンネル 3 - 波形出力


このチャンネルは、デジタルサウンドを出力するために使用されます。
サンプルバッファ (Wave RAM) は 32 個までの制限があります。

Wave RAM を矩形波で初期化すると、通常の音も出力することができます。
このチャンネルでは、音量エンベロープレジスタはありません。

FF1A - NR30 - チャンネル 3 サウンド on/off (読み込み/書き込み可能)


 Bit 7 - サウンドチャンネル 3 OFF  (0 = 停止、 1 = 再生)  (読み込み/書き込み可能)

FF1B - NR31 - チャンネル 3 サウンド長


 Bit 7-0 - サウンド長 (t1: 0 - 255)

サウンド長 = (256 - t1) * (1 / 256) 秒
この値は NR34 のビット 6 がセットされた時にのみ使用されます。

FF1C - NR32 - チャンネル 3 出力レベルの選択 (読み込み/書き込み可能)


 Bit 6-5 - 出力レベルの選択 (読み込み/書き込み可能)

出力レベルは次の値を取ります。

 0: ミュート  (サウンドなし)
 1: 音量 100% (波形パターン RAM 内の、そのままの波形を出力)
 2: 音量  50% (波形パターン RAM の値を、右に 1 回シフトした値を出力)
 3: 音量  25% (波形パターン RAM の値を、右に 2 回シフトした値を出力)

FF1D - NR33 - チャンネル 3 周波数下位データ (書き込み専用)


11 ビットで表される周波数の、下位 8 ビットのデータ (x)。

FF1E - NR34 - チャンネル 3 周波数上位データ (読み込み/書き込み可能)


 Bit 7   - 初期化 (1 = サウンドのリスタート)     (書き込み専用)
 Bit 6   - カウンタ/継続の切り替え              (読み込み/書き込み可能)
           (1 = NR31 で指定された長さが経過した後、出力が停止される)
 Bit 2-0 - 周波数の上位 3 ビット (x)             (書き込み専用)

周波数 = 4,194,304 / (64 * (2048 - x)) Hz = 65536 / (2048 - x) Hz

FF30-FF3F - 波形パターン RAM


任意のサウンドデータを書き込みます。

この保存領域のデータは、 32 個の 4 ビットサンプルとして使用されます。
上位 4 ビットが先に再生されます。

サウンドチャンネル 4 - ノイズ


このチャンネルは、ホワイトノイズを出力するために使用されます。

FF20 - NR41 - チャンネル 4 サウンド長 (読み込み/書き込み可能)


 Bit 5-0 - サウンド長データ (t1: 0 - 63)

サウンド長 = (64 - t1) * (1 / 256) 秒
長さの値 (t1) は、 NR44 のビット 6 がセットされた場合にのみ使用されます。

FF21 - NR42 - チャンネル 4 音量エンベロープ (読み込み/書き込み可能)


 Bit 7-4 - エンベロープの初期音量     (0 - 0Fh) (0 = サウンド無し)
 Bit 3   - エンベロープの方向         (0 = 減少、 1 = 増加)
 Bit 2-0 - エンベロープスイープの数   (n: 0 - 7)
           (0 の場合、エンベロープ操作を停止)

1 ステップの長さ = n * (1 / 64) 秒

FF22 - NR43 - チャンネル 4 多項式のカウンタ (読み込み/書き込み可能)


指定された周波数で、音量がランダムに高くなったり、低くなったりします。
高い周波数を指定すると、ノイズがソフトになります。

ビット 3 がセットされた時、出力されるサウンドはより正常っぽくなります。
周波数によってはノイズというより、矩形波っぽくなります。

 Bit 7-4 - クロック周波数のシフト値 (s)
 Bit 3   - カウンタステップ/幅 (0 = 15 ビット、 1 = 7 ビット)
 Bit 2-0 - 周波数を割る数 (r)

周波数 = 524,288 Hz / r / 2 ^ (s + 1)
(r = 0 の場合、 r = 0.5 が代わりに使われます)

FF23 - NR44 - チャンネル 4 カウンタ/連続; 初期化 (読み込み/書き込み可能)


 Bit 7   - 初期化 (1 = サウンドのリセット)     (書き込み専用)
 Bit 6   - カウンタ/継続のいずれか選択         (読み込み/書き込み可能)
           (1 = NR41 で指定された長さが経過した後、出力が停止される)

サウンドコントロールレジスタ


FF24 - NR50 - チャンネルコントロール / ON-OFF / 音量 (読み込み/書き込み可能)


音量の値は左・右のサウンドの、マスターボリュームを指定します。

 Bit 7   - SO2 端子への Vin 出力  (1 = 有効)
 Bit 6-4 - SO2 出力レベル (音量)  (0 - 7)
 Bit 3   - SO1 端子への Vin 出力  (1 = 有効)
 Bit 2-0 - SO1 出力レベル (音量)  (0 - 7)

Vin 信号は、カートリッジのバスから受け取ります。
Vin 信号を使用することで、ゲームボーイ内部の 4 つのチャンネルに追加で、
外部ハードウェアからの 5 個目のチャンネルを提供することができます。
この機能は、おそらくどのゲームにも使用されていません。

FF25 - NR51 - サウンド出力端子の選択 (読み込み/書き込み可能)


 Bit 7 - サウンド 4 を SO2 端子へ出力
 Bit 6 - サウンド 3 を SO2 端子へ出力
 Bit 5 - サウンド 2 を SO2 端子へ出力
 Bit 4 - サウンド 1 を SO2 端子へ出力
 Bit 3 - サウンド 4 を SO1 端子へ出力
 Bit 2 - サウンド 3 を SO1 端子へ出力
 Bit 1 - サウンド 2 を SO1 端子へ出力
 Bit 0 - サウンド 1 を SO1 端子へ出力

FF26 - NR52 - サウンド ON/OFF


サウンドを使用しない場合、このレジスタへ 00h を書き込むことで、消費電力を 16% 減らすことができます。
ビット 7 をクリアしてサウンドを無効にすると、サウンドレジスタの値を全て破棄します。
また、サウンドを無効にすると、 FF26 以外へのサウンドレジスタにアクセスすることができなくなります。

 Bit 7 - 全てのサウンドを ON/OFF  (0: サウンド用の回路を停止する) (読み込み/書き込み可能)
 Bit 3 - サウンド 4 ON フラグ (読み込み専用)
 Bit 2 - サウンド 3 ON フラグ (読み込み専用)
 Bit 1 - サウンド 2 ON フラグ (読み込み専用)
 Bit 0 - サウンド 1 ON フラグ (読み込み専用)

このレジスタのビット 0 - 3 は読み込み専用で、書き込みしても有効・無効を切り替えることができません。
これらのフラグは、 NR14 - NR44 のビット 7 にある、初期化フラグによってリスタートされた時に設定されます。
サウンド長分のサウンドが消失するまで、これらのフラグがセットされます (有効になっている場合)。
音量エンベロープが 0 になるまで減衰した時に、フラグが OFF になるわけではありません。
最終更新:2017年08月28日 19:25