オレ仕様のゲーム機を作ろう(その19)
前回から,オレ仕様ゲーム機「鶏八」の制作に入りました。
オレ仕様のゲーム機を作ろう(その18)
ただ,ホスト PC とのインターフェースをする基板なので,スタンドアロンではプログラムを実行することはできませんでした。
今回は,Z80 CPU とメモリを搭載し,実際にプログラムを実行できる基板を作ります。
Z80 は,全体で複数個搭載する予定ですが,今回の基板に載せる Z80 がメインCPU となりますので,便宜上「メイン CPU 基板」と呼ぶことにします。
作成した基板
(クリックで拡大します)
ちょっと写真が斜めになってしまいましたが…,簡単に説明します。
右上にある 40 ピンの LSI が,Z80 CPU です。
このサイトでは,もうお馴染みですよね(笑)。
その横にある 32 ピンの SRAM 2 個がプログラム&データ格納用メモリです。
実行時は読み出し専用になるロムエミュレータです。
サイズは 8Mbit で,バイトにすると,1MB になります。
なんと!初代 X68000 の搭載メモリに匹敵します!(笑)。
ただ,Z80 は,アドレス空間が 16bit = 64KB なので,16KB のバンク切り替えでアクセスします。
全部で 64 バンク分ありますが,「こんなに使うことあるの?」って言うツッコミは,ナシでお願いします(笑)。
その下にある 28 ピンの SRAM が,ワーク RAM になります。
こちらも 8KB のバンク切り替えで 4 バンク分あります。
スタックエリアを配置したりするので,頻繁にはバンク切り替えすることはないと思いますが,大きなバッファが必要な時に切り替えて使えそうです。
左下にコネクタがありますが,コントローラ(ジョイスティック)を接続します。
今までは,MSX や X68000 用のジョイスティックを接続できるようにしていましたが,3 つ以上のボタンが使いたかったので,メガドライブ用のパッドを接続できるようにしてみました。
方向ボタン(レバー),A,B,C ボタン,START ボタンが使用可能で,I/O ポートに接続されています。
その横にある SRAM が,もう一つの Z80 CPU との 8KB 共有 RAM になります。
いつものパターンで,やはり一発では動かない
プログラムを転送すると,動いているっぽいですが,I/O ポートの読み書きができません。
テスターやロジックアナライザで不具合箇所を絞っていくと,アドレスデコーダーに入力する H レベルと L レベルが逆になっていました。(これでは,どのアドレスも選択されることはありませんよね)
左下にある IC の足を上げて,ジャンパ線で修正している箇所ですね。
基板を接続してみる
前回作った基板の上に接続してみました。
いつもの感じで,上にどんどん積まれていくような気がします…(笑)。
動作テストをしてみる
プログラムが動くようになりましたが,ジョイスティック(メガドライブパッド)ポートくらいしかありませんので,動作テストとして,ジョイスティックの読み取りプログラムを作ってみました。
最近は,ゲーム機の入力デバイスは,「コントローラ」という言葉が一般的で,レバーがついているものもアーケードコントローラ(アケコン)とか言ったりするので,「ジョイスティック」という言葉は,何か懐かしい響きがしますよね。
ただ,セイミツ工業さんや三和電子さんの製品情報を見ると,レバーのことをジョイスティックと書かれているので,「正式な名称なんだな〜」と改めて感じたのでした。
テストプログラムは,単純にメガドライブパッドからボタン情報を読み取って,発光ダイオードにそのまま出力しています。
なんとか,意図通りに動いているようです。
今回はここまでです。
次回は,ディスプレイモニターに画面表示する基板を作成したいと思います。
それでは,次回に続きます。