Z80 ゲーム機を作ろう(その11)
前回までで,スプライトと BG の表示,その重ね合わせ処理,アナログ RGB 信号の出力まで出来るようになり,ゲーム機としての機能は概ね実装しました。
今回は,作成する基板としては最後になる,スクロール機能付きの BG 画面を表示する基板を作ります。
このスクロール BG の機能が入れば,今回のゲーム機作成の元になった,アーケード基板の機能がほぼ全て入ります。…と言うことは,元のアーケード基板のプログラムが動くかもしれませんね。
最後の基板がこちらです。
以前作った,スクロールしない固定 BG 基板と部品構成は同じですが,配置レイアウトを変えてみました。
そして,こちらが,その元になったアーケード基板です。
ジャンク扱いで入手したものですが,SN76489 が一つしかなかったり,RGB DAC の抵抗がブチッとされていたり,IC の出力ピンが GND にジャンパされていたり,本当にジャンクでした(笑)
アーケード基板のプログラムを入れてみる
今までは,ユニバーサル基板にワイヤラッピングで手配線し,機能毎に分割して基板を作ってきましたが,その都度,正しく動作するか,Z80 のマシン語でテストプログラムを作成してチェックしました。
今回で,全機能が入るので,ここは元のアーケード基板のプログラムコードを転送して動作チェックをしてみます。
まずは,ROM ライタで,もとの ROM から,Z80 コードを吸い出します。このROM ライタ,TL866CS という型番ですが,対応チップも多く,IC のチェックもできて,おまけに手頃な価格です。とても便利で,一部界隈では人気アイテムです(笑)
もう,テストプログラムを書いて,PC から,RAM に転送して動作チェック…という事もしなくて良いので,一番最初に作成したインターフェース基板に載っている,シリアル EEPROM に,この吸い出したコードを書き込んでしまいます。
そして,電源投入直後は,AVR マイコンが,このシリアル EEPROM から,プログラムコードを読み出して,SRAM に転送し,SRAM をライトプロテクトします。
これで,Z80 から見れば ROM のように見える…云々は以前説明しましたよね。
意外と起動時の転送に時間がかからないので,SRAM のバッテリーバックアップはあまり意味のないものになってしまいました…。
んで,この後,Z80 のリセットを解除すれば,ゲームが立ち上がる…ハズです。
動かしてみました
…で,結論から言うと…うまく動きました!
ご存じの方も多いかと思いますが,このゲームは「Mr.DO!」と言うゲームです。
1982 年のゲームなので,36 年くらい前のゲームなんですね。当時,私は中学生でしたが,このゲームもかなりハマりました。
元のアーケード基板との違い
元のアーケード基板に載っている部品と同じものを揃えて,同じように配線すれば,同じものが作れます。当たり前ですね。
元のアーケード基板は,1982 年製で,ロジック IC は,TTL-IC (74LS〜なんちゃらというやつですね)が使われています。
この,TTL-IC,現在でも入手はできますが,在庫も少なく,あと値段も安くありません。
それならば,現在でも比較的入手しやすい CMOS のロジック IC (74HC〜なんちゃら)で作ろう!…と言うことで,一部アナログ回路を除いて,ほぼ CMOS のチップで作ってみました。
この CMOS ロジック IC,同じ型番の TTL と,動作はほぼ同じですが,入力をオープンにできなかったり,元が,シビアなタイミングで動いている回路は,動かなかったりしますので,多少対策が必要です。
基本的には,手持ちの IC で作りましたが,ワイヤラッピングで手配線しますので,なるべく配線しやすいピン配置の IC に置き換えたり,10 枚の基板に分割して作るので,ゲートなどもなるべく使い回しできるようなものをチョイスしてます。
最終的に10階建てになりました
かなり,重いです(重量が…)。CPU,メモリ,IC,オシレータなど,いわゆる DIP のゲジゲジは,全部で,161 個になりました。
また,天井にアクリル板をつけてみました。
後ろ姿はこんな感じです。フラットケーブルがすごいことになってます。
基板を分割して作ったので,フラットケーブルの長さも結構ありますし,基板表面で配線したので,ラッピングワイヤの長さもあります。
抵抗や静電容量,インダクタンスとかの寄生容量も結構影響してるかもしれませんね。(どこまで行けるか挑戦してみたい気もしますけど)
基本,使っている部品は,他の基板からの部品取りではなく,ほとんど購入したものなので,結構コストかかってます。アーケード基板を買い直したほうが絶対安いです(笑)。
実際の動作
回路は,元のアーケード基板と等価なので,再現度は限りなく 100% に近いです(当たり前です)。
せっかく作ったので,家族にプレイしてもらいました。
実はこのゲーム,クリア方法がいろいろあるんですが,初めてこのゲームをプレイする人は,やっぱりチェリーをすべて取ろうとするんですね。
高校生の息子にしばらくプレイしてもらいましたが,やっているうちに,EXTRAをすべてやっつけると 1UP することや,その EXTRA キャラが,5000点ごとに出現すること,真ん中に出現するお菓子?を取っても,EXTRA キャラが出現することなどを覚えたようです。
昔のアーケードゲームって,説明書が無くてもそれなりに遊べたし,隠しフィーチャーを見つけるのも楽しかったですよね。
これで完成
「Z80 ゲーム機を作ろう(その1)」が,11 月なので,トータルで,4 ヶ月くらいかかりましたが,一応これで完成とします。
最初は,絶対にトラブって途中で挫折するんだろうな…と思っていましたが,なんとか,完成まで持っていくことができました。
やっぱり,完成すると達成感ってありますよね。
次に作るのはまだ決めていませんが,気長にまたなんか作りたいと思います。
はじめまして。
私は蜂マークのオールド8bitゲーム機をマシン語で叩いて遊んでいるずぶの素人ですが、ビデオチップの細かい動作仕様について調べていたところこちらにたどり着き、わかりやすい説明でグラフィック周りを組み上げられていてとても勉強させていただきました。
しかも子供のころ駄菓子屋で見たりLSIゲームで遊んだ懐かしいゲームがそのまま動いているという衝撃のエンディングで感動しました。本当にありがとうございました。
八兵衛さん
コメントありがとうございます。
少しでもお役に立てられればとても嬉しいです。
引き続き,規模の大きいものを作っていますので,完成したときには,ご覧いただけると嬉しいです。