続・続 XLATE65
やっぱり、ちょっとした罠があったが、とりあえず、BGMが再生されるようになった。ただし、音が若干高いが、それは想定内の現象。
もともと、オリジナル基板上の AY-3-8910 には 1.50MHz のマスタークロックが供給されており、このクロックをベースに発声周波数が決まる仕組みになっているため、実装依存であるこのマスタークロックが、基板とまーきゅりーゆにっとでは異なるので当たり前といえる。
実際に、まーきゅりーで音を出してみると、オリジナル基板よりも高い音がする。耳で聞く分には、AY-3-8910 に 1.5MHz より若干高めのクロックを供給した時くらいの音な感じがするのだが・・・・
そこで、まーきゅりーの取り扱い説明書を読んでみると、以下の項目が目に留まる。
(3) トーン周波数設定の変更 : Tp=(Coarse Tune)×256+(Fine Tune)とすると、
TPの値により、以下のようにトーン周波数を求める式が変わります。・0≦Tp≦7 : ftone = 0 [Hz]
この時レベル設定値に対応する直流分が出力されます。
ただし、アドレス07Hの/Tone,/Noise ビットをともに
ディセーブルした状態でレベル設定すると、イネーブルした状態と比べ
出力レベルは、2倍となります。・8≦Tp≦4095 : ftone = fmaster ÷ (64×Tp)
ftone : 発音周波数
fmaster : マスタークロック周波数(推薦値は7.9872MHz)(6) 内部クロック分周比の変更 : プリスケーラ機能の廃止に伴い、アドレス
$2D,2E,2Fのレジスタは削除され、SSG 音源部、FM 音源部、およびリズム音
源部の分周比はそれぞれ1/8,1/6,1/12に設定されています。
おそらく、データシートからのコピペと思われるが、正直、なにをいっているのかさっぱりわからない。
もともと、AY-3-8910(や、例のYMZ294)の発声周波数(音階)を決定するためにチップに与える値 TP は
という式から算出する。つまり、供給クロックを内部でさらに16分周して発声周波数を決定している。
ftone = fmaster / (16*TP)ftone = 発声周波数(Hz)
fmaster = 供給クロック(Hz)
(3) の説明からすると、YMF288はマスタークロック(まーきゅりーは8.00MHz)を 64分周すると書いてあるので、これを AY-3-8910 で換算すると、2MHz のマスタークロックを 16分周するということになる。そうなると、大体、実測(実際に耳で聞いて)からしてそんな感じかな・・・と思うのだが、ここで(6)の説明が気にかかる。ここでいう「内部クロックの分周比は1/8」とは一体なんなのだろう??
まあ、とりあえず、まーきゅりーの YMF288 に設定する TP 値を 4/3(=2.0MHz/1.5MHz) してみればいいのかな??