ホーム > タグ > Breakout

Breakout

リレーと論理回路

これは、うちにあるピンボールに入っているリレー回路です。

TTLのビデオゲームについて少し前に書きましたが、それ以前に作られていた電子回路を使わないゲーム、いわゆるエレメカでは、こうした機械式のリレーが論理回路として働いていました。TTLによるゲームも論理回路で構成されていますし、そもそもコンピューター(CPU)の中身も論理回路です。
つまり現在のゲームやPCが動作する原理の原始的な形がコレと言えなくもありません。
リレーは、電流が流れると電磁石の力でスイッチを引き寄せます。そして、電流が止まるとバネの力でスイッチが戻ってしまいます。簡単に言うと、別な回路のスイッチをON/OFFするのがリレーの役割なわけで、ゼルダの伝説で言うと床のスイッチを踏むと、遠くにある扉も一緒に開いたり閉じたりするのと似ています。
真空管やトランジスタ、ICチップであっても仕組みは同じことで、考え方の基本にあるのはデジタルの1と0を電流が流れているか、いないかで分けるということです。これだけの仕組みで計算ができてしまうのが驚きです。詳しくは触れませんが、興味のある人は以下のページなど参考にしてみてください。
http://www.infonet.co.jp/ueyama/ip/logic/adder_r.html

こういった論理回路によって、0か1かの情報、さらにそれを集めた2進数の情報を保持でき、複雑な動作が可能になりました。
たとえばピンボールゲームだと、ゲームのスタートボタンを押すとスコアなど各種設定がリセットされてボールが出てきます。そして、「A」「B」「C」のターゲット全部にボールが当たると1000点入るなどのギミックが動くようになります。
こういった最初にこれをやって、次にこうなって、その次はこれ…といったシーケンス動作は、コンピューターのプログラムが得意とする部分です。特に手続き型言語(BASICとかHSPとか)は、まさに動作の順番を書いていくだけです。
手続き型で考えるとだいたい、こんな感じになります。

    1. スタートボタンが押されるまで待つ

    2. スコアや各種設定をリセット

    3.「A」のターゲットにボールが当たったら変数Aを1に

    4.「B」のターゲットにボールが当たったら変数Bを1に

    5.「C」のターゲットにボールが当たったら変数Cを1に

    6. 変数A~Cがすべて1ならば1000点加算

    7. 3.からの動作を繰り返し

これと同じことをリレーが行なうと、

    1. スタートボタンが押されたら設定を保持している回路を切断(0)する
    また、ゲーム中であることを示す回路を接続(1)する
    2. 「A」のターゲットにボールが当たったらAの回路を接続(1)する
    3. 「B」のターゲットにボールが当たったらBの回路を接続(1)する
    4. 「C」のターゲットにボールが当たったらCの回路を接続(1)する
    5. 回路A~Cがすべて接続されると1000点加算

のような感じになります。
それぞれのスイッチごとに、どのような動作を行なうか、他の回路とどのような関係を持つかなどを考慮して設計する必要があります。特に「ゲーム中であることを示す回路(リレー)」は、エレメカ時代のゲームには必ずついていて、お金を入れるまではプレイヤーの操作などゲームに関わる回路に電源が繋がらない仕組みになっていました。これがタイマーにより一定時間で切れたり、カウンターが進むと切れるようにすることでゲームオーバーを作っていたわけです。
こうした考え方は、今注目されているマルチスレッドプログラミングや関数型言語に近いものがあるように思います。何か一周してきたようで不思議なものです。
ところで、機械式のピンボールにはまだ一部アナログ的な動作も残っています。たとえば5000点加算するような場合、論理回路で5回カウントさせるのは規模もコストもかかります。そこで、オルゴールのように回転する円盤が物理的に5回スイッチを入れるようになっています。これはスコアモーターと呼ばれているもので、必要に応じて1回、3回、5回などのパルス(スイッチのON/OFF)を発生させます。ある意味で、これがエレメカゲームの心臓部と言えるかもしれません。

その後、ビデオゲームが登場しTTL制御の時代になっても、プログラムという手続き型の動作ではなく、エレメカの論理回路が行なっていた仕組みを継承し、より複雑なものになっていきました。
そう考えると、ブロック崩し(Breakout)などはどんな動作になっているのか興味深くなってきませんか?

    このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをはてなブックマークに追加

  • Comments: 0
  • Trackbacks: 0

TTLのビデオゲーム

今年になって調べたいと思っているテーマの1つがTTL時代のアーケードゲームです。
TTL時代っていうのは、アーケード(ゲームセンター)にテレビを使ったゲームが登場した70年代初頭から、CPUによるゲームが普及してくる70年代後半までの短い期間を指します。というか、私がそう呼んでいるだけです(^^;

TTLとは何かと言うと、コンピューターの基本的な動作を行なう論理回路(またはICチップ)の総称で、コンピューター(CPU)が普及する前のデジタル回路では、欠かすことのできない仕組みです。
今では、ビデオゲームと言えば当たり前のようにCPUが入っていて、ゲームのソフト(プログラム)が動いていますが、70年代初頭のTTL時代ではCPUを使わずにデジタル回路だけでゲームを作っていました。プログラムを作らないでゲームが作れるの? って思っちゃいますが、実際に色々なゲームが作られています。
たとえば、アーケードのビデオゲーム初のヒット作として有名なPong(Atari 1972)


あと、今でも知られているブロック崩し「Breakout(Atari 1976)」もプログラムは一切使われていません。


現在はハードウェアとソフトウェアの分担がはっきりしていて、パソコンで言えばビデオカードのハードウェアが絵を出す機能を持っていて、コントローラー等の入力をもとにどのような絵を出すかを決めるのがソフトウェア(プログラム)の役割です。
昔は、そのソフトウェア部分も含めてハードウェアで作ってしまっていました。ゲームごとに専用の回路を作っていたわけです。そのための一時的なデータ記憶や、条件判断を行なうためにTTL(Transistor-transistor logic)が使われていました。

今さらなぜTTL時代をテーマにしているかと言うと、その後のビデオゲームに比べて資料が少ないことと、TTLの持つシンプルさを今だから見直すといい…気がしたからです。

TTL時代のゲームを現在遊べる環境は極端に少ないです。また、80年代以降のゲームはエミュレーターにより今も遊べたりしますが、CPUを使用していない場合、厳密に同じ動作をパソコン上で再現するためには回路図をソフトウェアに起こす必要があり、とても難しくなります。
そのため、ビデオゲームの元祖的な存在でありながら取り上げられる機会も少なく、知らない人がほとんどではないかと思われます。ファミコンとか80年代のゲームについてはもう多くの人が語っていると思うので、今後ネタが続けばですが、TTL時代に作られたゲームと魅力について紹介をしていきたいなと思っています。
ちなみに、海外ではDiscrete Logicとも呼ばれていて、こちらのページはかなりオススメです。

Discrete Logistics
http://discrete.mameworld.info/

あと、パソコンでは再現が難しいと言いましたが、シミュレーターを作っている人もいるので雰囲気はわかるのではないかと思います。
http://adamulation.blogspot.com/
http://www.ascotti.org/programming/tickle/tickle.htm

    このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをはてなブックマークに追加

  • Comments: 1
  • Trackbacks: 0

Home > Tags > Breakout

Search
Feeds
Meta

Return to page top