タツジン (東亜プラン 1988年)

全体

音源構成は、YM3812 1個である。
OPL IIはOPLと違って、ノーマルのサイン波以外に3種類の波形を使用できる。
だが、タツジンでは、そのOPL IIの拡張機能は使用されず、OPL互換として使用されている。 OPL IIのレジスタ$01には値$00が書き込まれ、互換モードが選択されている。

OPLシリーズのYAMAHA FM音源には「リズムモード」なるものが搭載されている。 リズムモードを選択すると、全9チャンネルのうちの第7~9チャンネルがリズム音として動作する。 3チャンネル分の計6個のオペレータを使って、5音のリズム音を出力する。
バスドラムには2個のオペレータが使用され、その他のリズム音には各1個のオペレータが使用される。

トピック

タツジンでは常にリズムモードが選択されている。
ゲームスタートのBGMでは、第3~6チャンネルでベース1音とメロディ3音を鳴らし、リズムは バスドラム、ハイハット、スネア、タムタムを使用している。

ゲーム中のBGMでは、第1~3チャンネルを効果音用に空けている。
1面BGMは、第4~6チャンネルでベース1音とメロディ2音を鳴らし、リズムはスタートのBGMと同じ4音を使用している。 パーカッション以外が3音というのは(OPLでは)意外に少ないという感想を持った。

2~5面のBGMでは、リズムモードを使いつつ、メロディに3音、ベースに1音のパートを鳴らしている。
そして驚いたことに、第4~6チャンネルをメロディ3音に使い、リズムのバスドラムのチャンネルを使ってベースパートを鳴らしているwww
最初は目を疑ったが、確かに、リズムのバスドラムは、音色パラメータも音程も第7チャンネルに設定したものが反映されるので、こうした使い方ができないこともない。

また、2~4面BGMでは、面白いことに、ハイハット用のチャンネルをスネアとして使用し、スネア用のチャンネルをハイハットに使っているwww

タツジン、スゲェ…。

追加トピック

(2011.11.03追記)
東亜シューティングの新録サントラで、タツジン4面BGMのスネアの音が旧録サントラの 音と異なる、という件が話題に上っていることを最近知った。
ソフトウェアのエミュレータ上で検証したところ、3面,4面BGMのスネアの音が、 サウンドプログラムかサウンドチップの状態によって、純粋なノイズの音になったり、 トーンの音になったりするという現象が見られた。

3面,4面BGMでは、(1)リズムモードのハイハットを用いてスネアの音を出していること、 (2)Ch9のピッチ(blk/f-num)に0を与えていることが、この現象の原理を解説するうえでのポイントとなる。

ざっくり説明すると、ハイハットはCh9の位相変化に応じて状態Aと状態Bが周期的に切り替わる動作となるのが通常であるが、 Ch9の位相が変化しなくなることによって、Aが持続する状態か、Bが持続する状態のどちらかに陥るのである。 Aになるか、Bになるかは、Ch9のピッチに0を書き込むタイミング、つまりCh9の位相変化が停止するタイミングに依存する。

通常のモードにおいては、オペレータの出力波形は、サイン関数に一定の量で増加する 位相値が入力されることによって、サイン波が出力される。
リズムモードのハイハットでは、サイン関数に入力される位相値は、 (i)Ch8の位相と(ii)Ch9の位相と(iii)ノイズ発生器の出力の、3つの要素によって決定される。 過程を省略すると、ハイハットの位相値は4つの固定値のいずれかの値となる。
これによってハイハットチャンネルの出力波形は、サイン波の中のある4つの値が 周期的もしくは非周期的に繰り返される波形となる。
なお、ハイハットの振幅とエンベロープには、Ch8の第1オペレータの状態が反映される。

ハイハットの位相値が決定されるプロセスを見ていく。
(1)Ch8の第1オペレータの位相値から3つの固定のビットを取り出し、3ビット分の状態によって、 2個の固定値のいずれかが選択され、それが位相値の候補となる。
(2)次に、Ch9の第2オペレータの位相値から2つの固定のビットを取り出し、2ビット分の状態によって、 先ほどのCh8から求めた位相値か、1個の固定値(これはCh8での2個の固定値の1つと同じ値)かを 選択して、これを位相値の候補とする。
(3)さらに、ノイズ発生器の出力値の最下位ビットの状態によって、(2)で求めた位相値候補を そのまま位相値として採用するか、次の(4)によって決められる値を位相値とするかを選択する。
(4)Ch8,Ch9から求めた位相値候補の特定の1個のビットの値によって、2個の固定値(これはCh8での 2個の固定値のいずれとも異なる値)のいずれかを位相値として選択する。
(MAMEプロジェクトによる解析結果を参考にしている。)

3面,4面BGMはCh9のピッチに0が設定されているので、Ch9の位相値は変動しないのである。 Ch9の位相値が変動していれば、プロセス(2)の結果は、Ch8の位相値から求めた位相値を使う状態(…A)と、 使わない状態(…B)とが周期的に切り替わる動作になる。 Ch9の位相値が変動しなければ、プロセス(2)の結果は、ずっとAのまま続くか、ずっとBのまま続くかのどちらかとなる。 Aのときはトーンのような音となり、Bのときはノイズのみの音となる。

Ch9の位相値がリセットされていないので、Ch9のピッチに0以外が設定されるBGMを鳴らしたときの 位相値の最後の状態がそのまま維持されている。 ピッチが0以外のときは位相値が刻々と変化するので、BGMを切り替えるタイミングに依存して、 AになるかBになるかが決まる。というわけである。
なお、観察した結果では、トーンのような音(「キッ」という音)になる確率が高いようである。

この現象の原理を究明する過程で、音色パラメータのレジスタが一部設定されていないという仮説を考えたが、 レジスタの値は再設定されていて、問題なかった。

おまけ

モードについて


キャプテンwwww

波形について


(OPLII YM3812アプリケーションマニュアルより)