コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

エレキジャック Vol.2 の発売日も近づき、目次紹介が エレキジャックBlog の方でされている。
今回の工作例は「無線」で、入門記事は「PICマイコン」という感じらしい。
その PIC マイコンの記事に「TVゲームの作成」というのが目立っている。
この PICマイコンとコードによるタイミング生成を行ったソフトウェアCRTCとによる、ブレークアウト(ブロック崩し)は応用例の極み的なものであり、なんと発表は丁度10年前の事である。10年経っても色あせない秀逸な作品だ。
まあ、その10周年に CQ出版で再掲載されるというのも何かの巡り合わせなのかもしれず。

関連はないけれども、オライリーの Make: 日本語訳版 Vol.2 の後ろの方にある雑情報のところに伝統的TVゲーム「PONG」の電子工作キットが紹介されている。
実はこのキット、マルツにて「古典的テレビゲーム」の名で購入することができる。
Make: の前に見かけて買ってあった次第。


部品数が少なそうなのでどういう回路で構成されているんだろうとワクワクしていたが、見てみたら PIC16C505 がちょんとあるだけだったのでがっかり。
結局 PIC マイコンとソフトウェアの頑張りで実装されているに過ぎなかったわけだ。
(原始のPONGやTVテニスはTTLロジックのかたまりで実装されていた)

実はうちでも以前、それら先人の活躍にあこがれて TV 出力にちょっとだけ挑戦している
その時の感触で、プログラミングのシビアさとか色々な難しさが見えたので、やるのならかなり本腰を入れる必要がありそうだと思った次第。

でもやっぱり TV 出力や CRTC(CRT Controller)は私にとってのあこがれであり、いつかはやってみたいということであきらめきれなかったのですよね。
やりたいゲージも溜まりまくったので、いっちょ動くかと腰を上げた次第。

取り敢えず、PSoC に抵抗を 2本繋いだだけのお気軽基板にてスタート。


これで PONG を作ってみよう、と。

実際にテストで画を出してみると、どうしてもエッジががたがたになる。


このジッターがなぜ生じるかというと、PSoC のアーキテクチャと割り込みによる。
PSoC は一般的な 8bit CISC アーキテクチャで、1命令に要するクロックが 4〜13 clock と命令によって異なっている。一方、割り込みはトリガが来たときに実行中の命令の終了を待って、割り込みがかかる。つまり最短の 4clock 命令で回していても、割り込みトリガのタイミングによって、実際の割り込み作業が開始されるまで 1〜4Clock の遅れを生じ、その数値が予測できない。
TV画面上のエッジがのこぎり状になっているのはこの 1〜4Clock のズレが見えているからである。つまり、24MHz という早そうなクロックであっても、TV 信号の上では十分に大きく目に見えるくらいの変化として現れてしまうのだ。
たぶん。

PSoC で TV 出力というと VSoC 等のアプリケーション例が既にあるので、ちゃんと作り込めばいくらかマシにできるのだろう。
今回は、修行ということで完成度は問わずに、このぎざぎざのまま一回 PONG をつくりあげてしまおうと思う。


まだ表示実験だけで、PONG のゲームとしての部分は作っていないけれども、動き始めたあたりで載せ。
試しにボールを動かしてみているところ。出来としては全然駄目だけれども、それでもボールが動き始めた(というか表示がちゃんとできた)時には軽い感動を覚えてしまうあたり。
やっぱり作ってみると色々な事がわかって知識と力になっていくもんだ。
雰囲気のために動いているところを撮影した Flashビデオがこちらに

ハードコーディングなんで見てもしょうがないけど、ソースコードはこちら。
psoc_ntsc_pong_00.zip

下の部分に数字 1桁のスコアを表示させようと、コーディング中。
—–

Leave a Reply