◆レベル3用のPSG6&9声カードの情報はこのページの下部にあります。
レベル3用 6声&9声PSGを作る
以前、FPGAを使って6声PSGと9声PSGを作成しました。 これらはFPGA内部にPSG相当の回路を組み込んで音を鳴らすというものでした。 今回は、FPGAを使わず実際にそれぞれのICを入手して6声PSG&9声PSGの回路を作っていきたいと思います。
仕様を考える
PSGは1個につき3声まで出力することができます。なので6声なら2個、9声なら3個必要になります。それぞれ用意すると合計5個必要になります。 が、当時6声と9声を同時に使用するソフトは発表されていなかったので、今回は6声と9声の回路を切り替えて使用できるようなものを作ることにします。
レベル3とPSGはパラレルI/Oポートを介して接続します。6声PSGはPIA、9声PSGはVIAというICを使用します。これらをソフトに応じて切り替えするためのI/Oレジスタを1つ用意します。
上記をもとにざっくりとブロック図にしたのが以下になります。
回路設計
ブロック図から使用するICを決めていきます。
-
PIAとVIA
PIAは日立のパソコンを拡張するのでやはり日立のHD6821にします。アドレスは$FF30~$FF33を使用します。
VIAはMOSテクノロジーのMCS6522にします。アドレスは$FF70~$FF7Fを使用します。 なお、アドレスは漢字ROMカードと重複するのでVIAを使用する場合は漢字ROMカードを外しておく必要があります。
PIAとVIAのBポートはPSG制御に使用します。こちらにはプルダウン抵抗を付けておきます。これはPSGを使用しないときに制御信号を"L"レベルにしてPSGが勝手に音を出し始めることがないようにします。
-
PIA/VIAとPSGをつなぐセレクタの部分
データバスBにはTIのSN74CBT3257というICを使用します。このSN74CBTシリーズはいわゆるアナログスイッチと呼ばれるICになります。SN74CBT3257は2つの信号線から選択できるアナログマルチプレクサになります。これは汎用ロジックICの74257とよく似ていますが入出力の方向を気にしなくていいのが便利ですね。
そのほかの制御線は3ステートバッファ74HC244を使用します。
-
PSG
PSGはGIのAY-3-8910とAY-3-8913で確認します。また互換ICとしてヤマハのYM2149があるのでこちらも入手して確認します。PSGで使用するクロックは本体からの2MHzクロックをVIA(9声)モードではそのままで、PIA(6声)モードでは半分の1MHzに落として使用します。
-
PIA/VIA選択レジスタ
フリップフロップ74HC74を使います。アドレスは$FF34($FF35も可)にします。電源ON時のみ初期化してPIA(6声)モードにします。RESET信号ではモードが切り替わらないようにします。また、押しボタンで切り替えできるようにもします。
-
音声出力
音声はSOUND INに接続して本体のスピーカで音を鳴らすようにします。 レベル3のSOUND INはバイアス電圧がかかっているようなのでコンデンサを挟みます。 また、SOUND IN信号は本体のボリュームでは調整できないので、こちら側にもボリュームを用意します。
上記から回路図をおこすと以下のようになりました。
※この回路図は実際にテストを行い修正した後のものになります。
ガチャをまわす
さて、今回使用するICはかなり以前に設計されたものになります。そもそも参考にしている資料が1981~1983年ですので、40年近く前のICをかき集めなければなりません。 これらのICは1990年代までは製造されていたようですが、今新品で手に入れるのはかなり難しそう。中古品でも日本では売っていないICもありますし、売っていても高額でちょっと手を出しにくい…。
もう少し安く手に入れられないかとネットを漁ると、中国の通販サイトであるAliExpressに辿り着きました。 IC1個の値段が$1前後なのでかなり安い。ただ、ここはいろいろトラブルも多いとのこと。はてさてどうしようか…。
結局、安さには代えられずここで購入することにしました。 はたして無事届くのか、はたまた正常に動くのか、まさにガチャをまわす感じで期待と不安が交錯しますね(?) 今回は6店舗で注文したので送料が若干高くなってしまいましたが、ソシャゲで課金して100連ガチャまわすより安いんじゃない?知らんけど。
結果は?
注文した品は約3週間~1か月で無事届きました。商品不足などのトラブルもよくあるらしいので録画しながら開封します。で、1店舗から商品不足というそのままのトラブルが発生(^^; まあ少し余分に購入しているので作業に支障はありませんが。
開封したら次はICのチェックをしていきます。まず、AY-3-8910は明らかにリマーク品ですね。刻印がマイクロチップ社になっていますがフォントが違います。さらにIC表面を削ったような跡も見られます。そもそもマイクロチップ社になってから型番がAY-3-8910Aになったのでは?なお購入した6個中2個が正常に動きませんでした。まあ残りは動作するので、元はJFC95101やKC89C72あたりの互換ICではないかと思います。
YM2149Fは足にハンダ跡があるので廃棄基板などから引っこ抜いたリサイクル品だと思われます。こちらは購入した3個すべて動作したのでよしとします。
AY-3-8913は逆に足にハンダ跡が見当たりませんでした。購入した3個すべて動作するので長期在庫か何かでしょうか。
次にPIAとVIAを。HD6821P(PIA)は足にハンダ跡があります。刻印やパッケージは本物っぽいのでリサイクル品でしょうか。購入した4個中1個が商品不足でした。それにしてもIC表面に結構キズがあるし1本だけ足が少し短いのですが(--;
MCS6522(VIA)はどうもリマーク品っぽいです。こちらにもIC表面を削ったような微妙な跡があります。購入した4個中1個が動作しませんでした。残りは動作するのでこちらも互換ICの可能性があります。ところでVIAの型番ってMOS6522なの?データシートではMCS6522なんですけど。
ちなみについでに購入したMB8877A(FDC)は偽物でした。刻印に84の数字がありますがこのころの富士通のICには溝があるはず。では中身はというとIC表面などパッケージ形状からモトローラのMC6821(PIA)と予想しました。で、テストしたところなんとビンゴ。PIAが無駄に増える結果になりました。
今回は30個ほどICを購入し、不良品3個、商品不足1個、偽物2個という結果でした。これらは店と交渉するも理不尽な提案ばかりで交渉は決裂。紛争して返金となりました。今回購入した印象ですが、半導体を扱う店に限ると店の評価は全くあてになりません。商品のフィードバックレビューをよく見て決めるしかないかと思います。レビューがない場合は…もう賭けですね(^^; 店と交渉するために開封動画と検品できる環境は用意しておきましょう。
実機で確認
と、話が大きく逸れてしまいましたので元に戻ります。
毎度おなじみのブレッドボードに実装していきます。古いICはDIP 40ピンで幅も600milとデカいもんばかり。ブレッドボードは大型3枚では足りず、小さいブレッドボードも追加しました。その中にICと配線がぎっしり。まさにスパゲティ状態ですな(^^;ロジアナもつないで実機に接続します。
では、最初はAY-3-8910(互換IC)を使ってメロディチャイムを演奏させてみます。初めはいつも通り動きません。チェックするとやはり配線ミスがありました。チェック後再度確認。今度はPIA(6声)モードとVIA(9声)モードともになりました。
VIA(9声)モードではPIAモードより音の途切れ具合が速くなっています。これはVIAモードでは倍の2MHzクロックで動かしているため、エンベロープ周期も倍の速さになるためです。
次は、ゲームを起動して効果音を確認します。まずは「デストロイエイリアン」。こちらはPIA(6声)モードで(実際は3声しか使っていませんが)。そしてVIA(9声)モードで動作する「スキッパー」。どちらも問題なく演奏されているようです。
最後は、音楽演奏システムを起動して9声フルで演奏させてみました。音が若干歪んだ感じになりますが演奏自体に問題はありませんでした。
ICを交換する
今度は、音源ICを交換しても演奏できるかを確認します。初めはヤマハのYM2149Fに交換します。このICはピンアサインがAY-3-8910と同じになっているためそのまま交換できます。ちなみに、AY-3-8910のPSGに対してYM2149FはSSGと呼ばれています。交換が完了したら先ほどと同じように確認します。
演奏させてみるとPSGより少し音声出力が弱いようです。これはボリュームを大きくして調整します。演奏自体は問題ないようです。「スキッパー」起動時の爆発音はPSGのときよりもスムーズに音量が減っているように聞こえました。また音量の減り方がPSGより大きく感じます。
次はGIのAY-3-8913に交換します。ピン配置が異なるので配線も変更します。このICはMB-S1にも採用されているものですが、音声出力に少し癖があります。
メロディを演奏させると、PIA(6声)モードではもたつくような感じがありますが、VIA(9声)モードではもたつきを感じることはありませんでした。
ゲームですが「デストロイエイリアン」はきれいに演奏されないですね。謎のノイズが常に出ています。「スキッパー」や演奏システムには問題ありませんでした。以上から1MHz駆動時にPSGへデータを設定する時間が不足しているのではないかと考えられます。
と、文章で説明されても実際どういう音が鳴っているかわからん、という方は動画を用意しましたので興味があればご覧いただければと思います。
まとめ
YM2149Fでは「スキッパー」起動時の爆発音はスムーズでした。これはデータシートにも書かれていますが、AY-3-8910のエンベロープ音量は16段階に対してYM2149Fは32段階あるためです。また音量の減衰量はYM2149Fのほうが大きいようです。
AY-3-8913は1MHz動作だとかなり癖がでますね。データシートによるとデータ書き込みに必要なセットアップ時間は少なくとも1850nsになります。となると1MHz駆動だと4000~5000nsぐらいは確保しなければならないのかもしれません。AY-3-8910のセットアップ時間は550nsですから、同じPSGでありながらAY-3-8910とAY-3-8913ではかなりの仕様の違いがあることが分かりました。(おわり)
参考文献
- I/O別冊ベーシックマスター活用研究 - 工学社
- 月刊I/O 1983年8月号 - 工学社
- AY-3-8910/12/13 DataSheet - General Instrument
- YM2149 DataSheet - YAMAHA
- HD6821 PIA DataSheet - HITACHI
- MCS6522 VIA DataSheet - MOS Technology
- SN74CBT3257C DataSheet - Texas Instruments
レベル3用のPSG6&9声カードを作成しました
ダウンロード
Rev.0.2
- 基板設計 CADデータ (Board Design CAD Data) (KiCad 5) - l3psg6n9_020.zip (2.2MB)
[MD5:d4d049e340db7467042774f5180eb53a] - 説明書・部品表 (.pdfファイル)
- 上記ファイルはGitHub(https://github.com/bml3mk5/L3PSG6n9Voices)にもあります。