オレ仕様のゲーム機を作ろう(その8)
前回は、BG 画面を表示する回路を作成し、8×8 ドット、8 色中 2 色のパターンが表示できるようになりました。
オレ仕様のゲーム機を作ろう(その7)
今回は、前回の予定通り、左側の空いているスペースに、音源チップを実装し、サウンド回路を作成したいと思います。
音源チップは、YMZ294 という PSG
搭載する音源チップは、以前も使用したことのある、PSG(プログラマブル・サウンド・ジェネレータ)です。
PSG の概要は、過去の記事をご覧ください。
Z80 マイコンシステムを作ろう(その6)
元祖は、AY-3-8910 というチップです。矩形波とノイズを 3 チャンネル出力でき、8bit の汎用入出力ポートが 2 つあります。
入出力ポートが 2 つ分あるので、全体で 40 ピンと少し大きめのチップです。
この AY-3-8910 から、入出力ポートを取っ払って、ピン数を少なく、サイズを小さくしたものが、AY-3-8913 です。
…で、今回使用するのは、AY-3-8913 とほぼ同等機能ですが、さらにピン数を少なく、サイズを小さくした、ヤマハの YMZ294 というチップです。
ヤマハ製なので、PSG と言うよりは、SSG と言った方がいいかもしれません。
大きさを比較するとこんな感じです。
PSG との主な違い
違いと言っても、聞いた感じはほとんど同じで区別できません。
AY-3-89XX は、音声を 3 チャンネル分出力できるのですが、3 チャンネル分の出力ピンが独立して 3 本出ています。
これに対して、YMZ294 は、チップ内部で 3 チャンネルをミキシングした音声が 1 本のピンから出力されています。
ですので、3 チャンネルの音をそれぞれ左右のスピーカーに振るといったことが簡単にはできなくなってしまいました。
入力クロックは、内部で 2 分周されるので、AY-3-89XX の倍のクロックを入力します。
取り敢えず、MSX と合わせておこうと思い、3.58MHz を入力しています。内部 1.79MHz ですね。
YMZ294 の説明書通り、4MHz を入力すると、内部 2MHz で動作します。(設定により 3 分周もできるようです)
また、アクセス方法も、チップセレクト端子と、書き込み端子のみになっているので、とてもシンプルにアクセスできるようになっていますが、内部レジスタの読み込みができなくなっています。
まぁ、入力ポートがないので、読み込む必要性もありませんね。
BG 基板に実装してみる
BG 基板の左側の空いているスペースに実装してみました。
今までの、I/O デバイスはメモリマップト I/O で、メモリアドレス空間にマッピングしていましたが、今回は、I/O ポートに接続しました。
出力は、アナログ回路なので、電源を分けた方がいいのですが、面倒なので、同じ電源ラインから取っています(笑)。
適当に鳴らしてみる
まずは、肝八のセルフテストのプログラムを流用して、一定の周波数をセットして矩形波を鳴らしてみます。
(音量注意!)
まぁ、いつもの音ですね…(笑)。
サンプル曲を再生してみる
せっかくなので、適当な音源ドライバとそのサンプル曲を再生してみます。
画面にスペクトラム・アナライザっぽいのを表示するとカッコイイと思ったのですが、それを作る時間ももったいないので、各チャンネルのボリューム値を画面に表示してみました。
(音量注意!)
矩形波の PSG 音源と言っても、鳴らし方次第で、だいぶカッコよくなりますよね。
次回は…
と言うことで、2 枚目の基板が完成しました。
BG 画面と、ユーザー入力と、サウンド機能ができましたので、この後は、スプライトの表示回路を作成しようと思います。
回路規模が大きいので、結構時間がかかると思いますが、いつものように気長に進めます。
それでは、次回へ続きます。