Menu

My Works
- LEDチェッカ
- 太陽電池式回路テスタ
- TTL Pong
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- etc.

Report
- MIDI のハードウェア
- aitendo DSPラジオ一覧表
- etc.

Parts Collection
- Logic IC
- Calculator LSI
- CMOS Melody IC
- etc.

Blog

Recent Updates

主な更新のみ

24/09/11
- MCU-based Melody ICs

24/08/12
- MCU-based Melody ICs

24/03/10
- Logic IC Collection


TTL IC で自作する Atari Pong

公開:2016/xx/xx
最終更新: 2023/05/26


去年から ロジック IC をたくさん収集していましたが、そろそろ消費するフェーズかなと思います。冬休みということもあり、Atari のアーケードゲーム Pong を作ろうと考えました。

本稿の題名は「TTL IC で自作する Atari Pong」としましたが、オリジナルの Pong は 74 シリーズの汎用ロジックで組まれているので、サービスマニュアルの回路図を元に製作することにします。サービスマニュアルや回路図は archive.org 等で手に入りますが、このページ(Dan B's Video Game Tech Page)に清書済みの PDF があるので、参考にさせてもらいます。

製作にあたって設けたルールは以下の通りです。

  • 使用する IC は 74N、74LS (+555) に限る
  • 配線には UEW を使わない
  • チップ部品を使わない

製作にはおおむね 60 個程度の TTL IC を使用しますが、ほとんど手持ちストックの中から揃えることができました。ただし、ストックの都合で、以下の IC は別の IC で代用することにします。

  • 7425 -> 7432 (+7404) or 74LS54
  • 7450 -> 74LS51
  • 74107 -> 7473, 74LS113
  • 9316 -> 74LS161
  • 7483 -> 74LS283


今回使用する IC

製作にあたって、以下のようなユニバーサル基板を調達しました。「新印 8.5CM*20CM」と書かれているノーブランド品なのですが、あらかじめパターンが用意されているので、ロジック IC の実装に便利そうです。これ 1枚に 16 個以上の IC が乗せられるので、複数枚を用いてモジュール構成とします。


IC 向けユニバーサル基板

基板 1 枚目

やはり 1 日がかりの作業となってしまいました。1 枚目の基板にはクロック(14.31818 MHz の 2 分周)を含む、映像タイミング生成回路を中心に乗せています。

ケーブルによる配線は基板の表面を這わせています。見栄えが良くないのは承知の上です。裏面を Point-Point で配線した方が表面からの見栄えが良く、配線スピードも速くなるのですが、配線ミスが見つけにくくなります。難しいところです。今回は表面での配線で統一しようと思います。

基板間の配線は L 型ピンヘッダを使用して、マザーボード経由の配線もしくはフラットケーブルによる配線を考えています。一昔前ならカードエッジコネクタでしょうが、今はそのほうがコスト大です。

このユニバーサル基板では、パターンの制約から、DIP IC を乗せて使うとあまりスペース効率が良くなりません。パターンカットすればこの 2-3 倍の IC を乗せることができるのですが、配線が窮屈になりすぎて不都合です。この点、サンハヤトの IC ユニバーサル基板は良くできているのですが、少し高価です…

基板 2 枚目

この基板には、主に表示関係の回路とパドルタイミング生成回路が乗っています。

Pong にはスコアの数字を画面表示する機能があるのですが、これは 7448 (7 セグ LED デコーダ) によって行われています。考えてみれば CPU やメモリを持たない回路なのでこういう構成がシンプルなのですが、LED ドライバをフォント ROM 代わりに使う応用は少し驚きました。ちなみに 7448 の 6,  9 の書体が気に入らない場合、74LS248 に乗せかえれば解決します。

タイミング回路 (H, V の 4-256 分周) 全てがこの 2 枚目基板で必要となるため、ピンヘッダからの配線量が多くなってしまいました。これは失敗です。もう少し基板構成を考えれば良かったかもしれません。

基板 3 枚目

3 枚目はボール位置のカウンタ、ボール速度の計算回路を載せています。

Pong の回路の面白いところは、上下左右に動くボールの「位置」を 74161 (同期式カウンタ…オリジナルでは Fairchild 9316 ですが) によって演算させていることです。どういう仕組みなのかというと、例えば次のフレームでのボールの縦位置は現在位置の ± N とするためには、ディスプレイの縦幅が 252 ラインなので、74161 のプリセットを 4+N (>0) とした modulo 256-(4+N) のカウンタ回路を構成します。このカウンタを水平同期信号でフリーランすると、カウンタがプリセットされるタイミングの V 位置 y(t) として y(t) = y(t-1)+N となるわけです。(説明を理解するより回路を見た方が早いでしょう)

ボールの垂直速度、水平速度は動的に変わってゆきます。垂直速度はボールがパドルに当たった位置によって変化するので、ボールの移動角度が変わることになります。水平速度もゲームが進むにつれて高速になります。これらの工夫により、Pong というゲームは素朴ながらゲーム性が高くなっているわけですね。

基板 4 枚目

4 枚目はゲームコントロール回路、サウンド出力回路です。参考にした回路図には少し誤りがあるので、原本を参照したほうがよいかもしれません。右下の SW はゲーム開始ボタンです。

オリジナルの回路にはアンテナ入力があるのですが、役割がよくわかりません。この信号と /SRST 信号は Tr で組まれたラッチ回路の入力となっており、客が近づいたら ATTRACT モードになるという動作でいいのでしょうか?今回はこの部分も TTL IC に変更しています。また、オリジナルのオーディオ出力には DC 成分が残りますので、10uF でカップリングしています。

IC のデカップリングキャパシタですが、IC 1 列ごとに 3.3uF のタンタル C、フリップフロップに別途 0.1 uF のセラミック C を乗せています。少し足りないかとも思いましたが、この程度で十分のようです。ただし、使用した IC は半分以上 74LS なので、スタンダード 74N を使用するなら、もう少し多く載せたほうが良いかもしれません。

マザーボード

 

回路的にはこれまでの 4 枚にほとんど全て乗り切りましたが、基板間の配線をするためのマザーボードが必要です。やっつけで作ったのが上の写真で、オーディオとビデオ出力の RCA 端子をつけています。

これまで作った4枚の基板を取り付けると、このようになります。

Pong のビデオ出力は 白黒 NTSC 信号ですが、TTL 出力から weighted-R DAC で生成しているので、通常の TV 入力のような 75 オーム系には直結できません。オリジナルの定数で 2Vp-p の信号となるので、Tr 1石 (2SC536) による簡単なビデオバッファを追加しています。

動作

 

マザーボードに 4 つの基板を接続して電源 ON して、適当な NTSC 入力のモニタに接続してみます。上の写真はパチンコ液晶を使った自作モニタです。

とりあえず映像は出るのですが、カオスな動作です…!ボールであるべき部分が帯になってしまっていて、これがひたすら画面を往復しています。

回路は正しいはずなので、配線が間違っているのでしょう。…配線チェックして、修正を行うと、無事に動作しました。(ここまで3日)

 

ボールが画像で "/" となっているのは露光時間の影響であり、実際はちゃんと 60 fps で四角いボールが動いています。点数表示にひげが出てしまうのは非同期カウンタを使用しているためで、この回路の仕様のようです。 

マザーボード+子基板による構成は、動作中にオシロスコープを当てられないという欠点がありますね…。配線チェックにあたり、いくつかの LED を追加しています。もちろん「使用する IC は 74N、74LS に限る」という制約があるので、74LS04 によるバッファ駆動です。


動作電流は 5V で約 0.7A (3.5W) でした。IC を 60 個以上使用しているわけですから、消費電流は 1 つあたり 10mA 程度、思っていたより少ない値です。今回は 74LS シリーズを多く使っているのでこの程度の消費電力に収まりましたが、全て 74N シリーズで揃えたなら、この値の 2 倍は見る必要がありそうです。

改造


その他


74113 は プリセット付き JK-FF ですが、7473/74107 と同様のクリア付き JK-FF として使用することもできます。この場合のピンアサインは上図のようになります。

この製作で 7493 と 74161 を使い切ってしまったので、新たに 1 レールずつ補充してしまいました。本末転倒な気がします…(笑)。