ペンゴをワイヤラッピングで作ってみた

更新が随分と滞っていますが(汗),先々月くらいに,ワイヤラッピングで,アーケード基板の Mr.DO! を作りました。

Z80 ゲーム機を作ろう(その11)

実は,この Mr.DO! を作る前に,似たような手法で,アーケード基板の「ペンゴ」を作っていたので,今回はこれを紹介したいと思います。

全体像

ユニバーサル基板で,7 階建てです。Mr.DO! の 10 階建てと比較すると,BGやスプライトの表示枚数が少ないので,回路規模はコンパクトになっています。
今回も,各機能ごとにユニバーサル基板で回路を組みました。順番に見ていきたいと思います。

ホストインターフェース基板

私はいつもこの基板から作り始めますが,この基板は,ホスト PC とシリアル通信でデータのやり取りを行います。最終的に,この基板でホスト PC からプログラムコードの転送を行いますが,製作途中のデバッグで,メモリ内容を確認したり,プログラムを途中で止めて,その時の CPU のレジスタを確認したりもします。結構便利ですし,ないと困ります(笑)。

AVR マイコンが載っていて,Z80 とバスを排他します。ブレークポイントでZ80 を HALT させて,NMI で HALT解除したりとか,よくある手法です。

MrDO! の時と同様,1 バイト入力用のディップスイッチと,1 バイト出力用の発光ダイオードをつけています。

CPU と ROM 基板

お馴染みの Z80 です。プログラムコードは,SRAM に転送され,書き込み不可となります。オリジナルの基板では,複数の EPROM にプログラムコードが分割して入っていますが,これらを 1 つの SRAM にまとめてあります。また,基板の面積に余裕があるので,設定用のディップスイッチや,コントローラ接続用のコネクタ,各種ボタンなどの入力系も付けました。

同期信号発生基板

アナログ RGB 出力用の同期信号や,CPU へのクロック信号を作る基板です。18.432MHz のオシレータ出力を 3 分周した 6MHz が画面の基準クロック信号になり,さらにこれを 2 分周した 3MHz が CPU クロックになります。(オリジナルの基板は,水晶振動子から作ります)

6MHz クロックをカウンタで数えて,水平同期信号や,水平ブランク信号を作ります。また,水平同期信号をカウンタで数えて,垂直同期信号や,垂直ブランク信号を作ります。

あと,メモリへの CPU アクセスと画面表示アクセスのタイミングを排他制御する回路も入っています。

VRAM と WRAM 基板

一般的に,画面の表示に必要なメモリを「VRAM」,CPU の計算や処理に必要なメモリを「ワーク RAM」と言ったりしますが,これらが,同じ SRAM に割り当てられています。

以前も,お話したことがありますが,画面を表示するときには,モニターの走査に合わせて,VRAM を読み取る必要があります。この時は,バスの競合が起こるので,CPU から VRAM にはアクセスすることができません。ところが,普段,CPU がワークエリアとして使う RAM 領域もこの SRAM に割り当てられているので,実は,画面表示タイミングとワーク RAM アクセスがぶつかると,CPU にウェイトが入るんです。このウェイトによって,処理速度は若干落ちますが,部品点数は削減できるので,こうしんたんでしょうね…多分。

キャラジェネ ROM 基板

このゲーム,背景となる BG 画面が一面,16×16 ドットのスプライトを 6 枚表示することができます。普通は,BG 画面のキャラクターデータと,スプライトのキャラクターデータは,別々のアドレス領域の ROM に入っていることが多いのですが,これらは同じアドレス領域に割り当てられています。これもオリジナルは,複数の EPROM に分割して入っていますが,一つの EPROM にまとめてしまいました。

Mr.DO! の時とちょっと違い,スプライトの処理は,水平ブランク期間内で行い,BG の処理は,水平表示期間で行うので,キャラジェネ ROM の読み出しタイミングがぶつからないんですね。表示できるスプライト枚数も 6 枚なので,短い水平ブランク期間でも,スプライト RAM からの座標やパターン読み出しと,ラインバッファへの書き込みを完了できるんです。

一応,フリップ機能があるのですが,ラスター処理するときにハードウェアでフリップしているのではなく,キャラジェネ ROM のアドレスを変更しているだけなので,その分,キャラクターデータの容量は多く必要です。

ラインバッファとビデオ出力基板

水平ブランク期間は,スプライトのドットパターンをラインバッファに書き込み,水平表示期間は,BG のドットパターンと,ラインバッファに書き込まれたドットパターンを重ねて,モニターに出力します。

Mr.DO! に比べて,かなり,回路がシンプルですが,やっていることは,基本的に同じです。

サウンド基板

波形 ROM データと,設定周波数から,矩形波を発生する,波形メモリ音源です。PSG や DCSG とはまた違った独特な音色を鳴らすことが出来ます。コナミのSCC 音源も似たような原理ですが,この基板は,波形データが ROM なので,SCC 音源のように波形データを動的に設定することはできません。

オリジナル基板

このペンゴも,元の基板は,壊れたジャンク基板です。

パレットと,波形の PROM だけ,オリジナル基板から流用しました。その他は,秋葉原で入手できる部品を寄せ集めて組んでいます。

ただ,複数の基板に分けて作っているのと,基板の表側(部品面)で配線しているので,できるだけ配線のしやすい IC に置き換えたりしています。また,入手しやすく価格の安い IC をできるだけ使うようにもしました。

手配線のゲーム機作成は,結構,手間と時間と材料費がかかります。でも,作るたびにいろいろと勉強になり,知識も得られるので,今後も,時間があれば挑戦していきたいな〜と思います。

ペンゴをワイヤラッピングで作ってみた” に対して2件のコメントがあります。

    1. きもあん より:

      ありがとうございます!

コメントを残す

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

CAPTCHA