Pong — カウンタと比較器だけ (CPU なし)
横 160 × 縦 120 画素の白黒の画面を、1 クロックで 1 画素ずつ出す回路 (Verilog) です。
いまの (h, v) が壁・ネット・ラケット・球・点の形に入ったかを比べ、入っていれば白にします。
1 画面は 19 200 クロックで、画面の最後に球とラケットを 1 回動かします。
このページに出ているもの
- 左のゲーム画面: 回路が出した画素を並べたもの。上の数字が点 (左 0〜9・右 0〜9)、中央の点線がネット。
- 下の Logic Analyzer: 回路の中の信号の波形。球の位置
bx・by、ラケット pl・pr、点 sl・sr、当たり hit_l・hit_r、端を越えた out_l・out_r、音 snd_kind・sound、走査 h・v・pixel。
音
- 1972 年の Pong と同じ手で、垂直カウンタの 1 ビットを、出来事の間だけスピーカーへ通します (発振器は足していません)。ヒットは
v[3] の 450 Hz、壁で返したときと点が入ったときは v[4] の 225 Hz (元の Pong は 491 Hz と 246 Hz)。
- 「音 ON」を押すと鳴ります (ブラウザは、操作のあとでないと音を出せません)。ヒットと壁は 1 画面 (約 16 ms)、点は 16 画面 (約 0.27 秒) です。
- iPhone では、消音スイッチが入っていても鳴るようにしてあります (音量は本体のボタンで)。着信などで止まったら、画面のどこかをタップすると戻ります。
操作
- 最初は左右とも AUTO が入っていて、回路どうしが打ち合います。AUTO を切ると手で打てます (左は W・S、右は ↑・↓。スマホでは ▲・▼ のボタンを押している間だけ動きます)。
- 記録のしかた (1 画面ごと / 1 クロックごと) は、LA の上の選択で切り替えます。
- Trigger のプリセット (ヒット・壁と点の音・点が入った・音の矩形波など) を選ぶと、条件が欄に入ります。Set を押すと、その瞬間に止まります。Run か Resume で再開します。条件は手でも書けます (例
sr == 3)。
くわしく