Menu

My Works
- TTL Pong
- Simple AVR DDS
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- 電子メトロノーム
- 簡易 SD ロガー
- etc.

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

Parts Collection
- Logic ICs
- Calculator LSIs
- etc.

Blog

Recent Updates

17/08/03
- Logic IC Collection

17/06/17
- Logic IC Collection

17/04/05
- Logic IC Collection
- MSM100
- MSL1200

17/03/23
- Logic IC Collection
- 英国郵便局規格TTL

16/09/23
- Logic IC Collection
- 沖電気 MSM500 シリーズ

16/08/21
- Logic IC Collection

16/08/03
- Calculator LSIs

16/04/03
- Logic IC Collection
- Calculator LSIs

16/03/16
- Logic IC Collection
- USSR IC Logo

16/03/13
- MAX232のチャージポンプ

16/01/22
- Simple AVR DDS

16/01/19
- 中国規格ロジック IC


TTL IC で自作する Atari Pong

公開:2015/xx/xx
最終更新: 2016/01/18

去年から ロジック 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) ot 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 枚にほとんど全て乗り切りましたが、基板間の配線をするためのマザーボードが必要です。

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

動作

マザーボードに 4 つの基板を接続して電源 ON するも、当然すんなりは動作しません。映像は出るのですが、カオスな動作です…!

…配線チェックして、完成です!(ここまで3日)

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

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

改造


その他


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

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