Z80 マイコンシステムを作ろう(その4)

前回は,主に PS/2 インターフェースのキーボードを接続して,入力されたスキャンコードを取得するボードを作りました。

Z80 マイコンシステムを作ろう(その3)

今回は,画面出力を行うボードを作ります。

機能は一枚の基板にまとめます

Z80 ゲーム機を作ろう(その11) や ペンゴをワイヤラッピングで作ってみた  では,それらのアーケード基板を元に,ロジック IC で作ったので,画面出力回路は,相応の規模になりました。

今回は,サクッと 1 枚の基板に収めたいので,画面出力専用の LSI を載せてしまいます。

…んで,作った基板がこれです。

64 ピンの一番大きなチップが画面出力専用の LSI です。そうです。あの有名な VDP です(笑)。

ビデオ・ディスプレイ・プロセッサ

略して VDP です。今回使う VDP は,アスキーとヤマハが共同開発した V9958です。主に,MSX2+ 以降のパソコンに搭載されていたことで有名ですよね。

祖先は,テキサスインスツルメンツの TMS9918 という VDP で,V9958 は,それの上位互換に当たります。V9958 の前に,V9938 という VDP がありましたが,それは MSX2 パソコンに搭載されていました。

詳細な機能としては,今さら説明するまでもないと思いますので,ウィキペディアを参照ください(笑)。

今まで作ったアーケード基板アーキテクチャと比較して,一番違うポイントとしては,VRAM が,CPU バスから完全に切り離されていることです。

画面表示に必要なデータは,そのほとんどを VRAM に格納するのですが,このデータの読み書きは,Z80 が直接 VRAM に対して行うことはできず,必ず VDP を介して行う必要があります。

そのアクセスは,VDP に 4 つのポートがあり,そこに対して 8bit のデータを読み書きすることによって行います。

ポートが 4 つですので,アドレスバスは 2 本で済みますが,今回はメモリ空間ではなく,I/O 空間にマッピングします。Z80 からは,IN とか,OUT 命令などの入手力命令でアクセスするということですね。

V9938 や,V9958 の VRAM 容量というと,ほとんどが 128KB だったと思いますが,この基板は,192KB 搭載できるようにしています(開いている 2 つのパターンに増設)。

…と言っても,この増やした部分は,表示エリアとしては使えず,画像の転送元やバッファにしか使えないので,あまり得した気分にはならないかも…(笑)。

豊富な画面モードとハードウェアスクロール

上に書いたように,TMS9918 や V9938 という VDP の上位互換ですので,これらの機能はもちろん,新規に追加された画面モードと合わせていろいろな解像度の画面モードを持っています。(実質よく使うのは限られますが)

また,ハードウェアスプライトと,ハードウェアスクロール機能もあります。

どちらも,VDP が上位チップになった時に機能が強化されたのですが,やはり,低価格パソコン向けということもあって,中途半端な性能だったことは否めません。(私は,この中途半端さがすごく好きでしたけど…)

スプライト機能は,TMS9918 からありますが,単色表示,1 ラインに 4 枚まで表示可能というスペックでした。

これが,V9938 になってパワーアップされましたが,1 ラインごとに 1 色,または 2色,1 ラインに 8 枚まで表示可能という,ちょっと微妙なパワーアップでした。

2 枚以上重ねると色を増やすことができたりしたのですが,その分横並びの枚数が減ってしまうので,使いこなすにはかなりのセンスが必要だったように思います。

スクロール機能は,V9938 で縦スクロール機能が,V9958 で横スクロール機能が追加されましたが,縦スクロール機能は,スプライトの表示位置までスクロールされてしまうので,背景だけをスクロールさせたい場合には,煩わしかったり,横スクロール機能は,その指定方法が 8dot 単位でスクロールさせて,8dot 以下の端数を 1dot 単位で別に指定するとか,なんか独特でした。

出力する画像信号

V9958 からは,RGB 信号と,同期信号が出力されていますので,アナログ RGB付きのモニターに出力することができますが,今回は,この信号を RGB エンコーダに入れて,コンポジット信号も出力できるようにしました。

実は,Y/C 分離した S 映像信号も出力できるのですが,レイアウトの都合と,そもそも S 端子付きのテレビが自宅にない…などの理由で S 端子は付けませんでした。

アナログ RGB は,DSUB-15pin と,DIN-8pin のコネクタに出力するようにしています。

動作確認

では,他の基板に接続してみます。4 枚目の基板ですので,4 階建てになりました。

動作確認は,手っ取り早く,カラーバーをスクロール表示してみます。

mpeg4, 3000kbps, 4.8MB

ブラウン管モニターなので,撮影するとモアレが目立ちますが,実際はスムースにスクロールしながら,綺麗に表示されています。

見たところ,特に動作に問題はないようですね。(いろんな種類のモニターで確認していないですが…多分大丈夫だと思います)

…と言うことで,今回はここまでです。

さて,画面に出力できるようになりましたが,出力といえば…やっぱり音もほしいですよね。

まぁ,ここまで来ると,この先の展開は何となく想像がつくかと思いますが…(笑)

ですので,次回はサウンド基板か,もしくはメモリ基板のどちらかに着手しようかな…と思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA