オレ仕様のゲーム機を作ろう(その22)
さて,前回は「固定 BG 基板」を作成して,画面に文字が表示できるようになりました。
オレ仕様のゲーム機を作ろう(その21)
今回は,この基板を拡張して,「スクロール BG 基板」を作る予定でした。
「固定 BG 基板」は,「メイン CPU 基板」のバスに接続されているので,メイン CPU からのみアクセスできるのですが,「スクロール BG 基板」は,メインCPU と サブ CPU どちらからもアクセスできるようにしたいと思っています。
…と言うことで,今回は,先に「サブ CPU 基板」を作ることにしました。
作成した基板
(クリックで拡大します)
さて,簡単に説明しますが,基本的には「メイン CPU 基板」と大きくは変わりません。
40 ピンの一番大きな LSI が,ご存知,Z80 CPU です。
刻印を見ると,20MHz 対応っぽいのですが,実際の中身はよくわかりません。
多分,違うと思います(笑)。
その右に4つ,プログラムとデータを格納する SRAM があります。
「メイン CPU 基板」は,容量が 8Mbit,バイトにすると 1MB でしたが,この「サブ CPU 基板」は,16Mbit = 2MB です。
なんと!X68000 EXPERT の搭載メモリに匹敵します!(笑)。
容量全部使うことはあるのかわかりませんが,「オレ仕様」なのでツッコミはナシでお願いします(笑)。
その下にある 28 ピンの SRAM が,ワーク RAM になります。
メイン CPU 側と同じく,バンク切り替えできます。
Z80 への割り込み要因として,
- メイン CPU からの割り込み
- V-BLANK 割り込み
- H-BLANK 割り込み
があり,上から順に優先順位が高い割り込みになります。
逆に,サブ CPU からメイン CPU にも割り込みをかけることができます。
やはり一発では動かない(またか…)
実は,今回,結構ミスがあって,基板の裏側にジャンパ線をたくさん飛ばしています。
ハードウェアの物理的なミスもありましたが,ソフトウェア側のミスもあって,事前に試作基板を作っていたにもかかわらず,調査に想定以上の時間がかかってしまいました。
まぁ,ミスっていうのも,見つかってしまえば,原因がつまらないことばかりなのですが,自分は,間違ったポイントを必ずメモに残すようにしています。
規模が大きい基板を作れるようになったのも,過去に作った時に,間違いをメモに残してきたことが大きいのかなぁ…と思っています。
基板を接続してみる
5階建てになりました。
そして,だんだん,重量が重くなってきました。
動作テストをしてみる
動作テストと言っても,CPU が増えただけですので,画面の見た目は,そんなに変わりません。
お互いの割り込み通知と,共有メモリのテストを行ってみます。
単純なタイマー表示プログラムですが,以下のように動いています。
- メイン CPU 側の V-BLANK 割り込みで時間を計測(1/60 秒単位)
- 0.1 秒(6/60 秒)経過したら,サブ CPU に割り込みをかける
- サブ CPU 側で割り込みを受け取ったら,共有メモリのカウンタ変数をインクリメントする
- メイン CPU 側で共有メモリのカウンタ変数をポーリングして,常時画面表示する
時間計測と画面表示は,メイン CPU 側,カウンタの更新は,サブ CPU 側で行っています。
なんとか,意図通り動いているので,割り込みや共有メモリアクセス含めて,多分問題なさそうです。
今回はここまでです。
次回は,「スクロール BG 基板」に着手したいと思います。
それでは,次回に続きます。