オレ仕様のゲーム機を作ろう(その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 が増えただけですので,画面の見た目は,そんなに変わりません。

お互いの割り込み通知と,共有メモリのテストを行ってみます。

 

単純なタイマー表示プログラムですが,以下のように動いています。

  1. メイン CPU 側の V-BLANK 割り込みで時間を計測(1/60 秒単位)
  2. 0.1 秒(6/60 秒)経過したら,サブ CPU に割り込みをかける
  3. サブ CPU 側で割り込みを受け取ったら,共有メモリのカウンタ変数をインクリメントする
  4. メイン CPU 側で共有メモリのカウンタ変数をポーリングして,常時画面表示する

 

時間計測と画面表示は,メイン CPU 側,カウンタの更新は,サブ CPU 側で行っています。

なんとか,意図通り動いているので,割り込みや共有メモリアクセス含めて,多分問題なさそうです。

 

 

今回はここまでです。

次回は,「スクロール BG 基板」に着手したいと思います。

それでは,次回に続きます。

コメントを残す

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

CAPTCHA