![見出し画像](https://assets.st-note.com/production/uploads/images/83608118/rectangle_large_type_2_a00d54a9789aff147d3dc023be600f56.jpeg?width=1200)
ゲームI/O - パドルとジョイスティック
apple][には標準でパドルと呼ばれたボリュームとスイッチがひとつついたデバイスが2つ付いてきました。主にゲームで使うのですが、ひとつで1種類のデジタル値とアナログ値を得ることができるだけなので、2次元を扱うゲームであれば、縦向きと横向きの90度で並べて使う必要がありました。2次元を扱うゲームは多かったので、自分でジョイスティックを買う人が多かったです。
多くのテーブルゲームが上下左右のレバーやスイッチで移動していることを示すインターフェースであったのに比べると、かなり使い勝手が違いました。appleには一定周期でデバイスの状態を知る機能が無いので、可能な時にアナログ値を読み取るほうが、辻褄が合うのは確かでした(値が歯抜けしない)。
パドルの中身は本当にボリュームとスイッチだけが入っているもので、ゲームで遊びまくるので、丈夫ではありましたが壊れることもありました。そういう場合は自分で直したり作ったりしました。さらにマザーボートの接続が普通のTTL用ICソケットなので、これをあまり抜き差しするとピンを折る事故を起こします。これはIIeまで変わらずでした(GSではモダンなコネクタに変わりました)。
![](https://assets.st-note.com/img/1659080976307-yOrdcx7wIw.jpg?width=1200)
![](https://assets.st-note.com/img/1659081004189-OdFRtOZCBo.jpg?width=1200)
ちなみにBASICから使うときは、パドルの値を読み取るPDL関数こそありましたが、スイッチに関しては PEEK関数で直接、値を読み出します。最上位ビットが立っていれば、スイッチが押されていることになります。
ちょうど当時を偲ばせる6K BASICのコードがあったので、興味のある人は読んでみてください。
※押されているキーボードの値をリアルタイムにスキャンする PEEK や、スピーカを叩く CALL が懐かしいです。
10KBASICの例と、売られているジョイスティックの使用例は以下がいい感じです。
ゲームI/Oにつなぐいろいろなデバイスの例と回路は以下にまとまっています。
拡張スロットに比べると、TTLレベルのデジタルとアナログ値を扱うだけなので、ハードウェアに詳しくなくても、お手軽に使うことができます。自分で簡単なハードを作ったときなどにも便利に使えました。
そういえば、ここにつなぐライトペンなんていうものもありました。どうしていたのかというと、ハードウェアとしては単なるフォトダイオードのみで、ライトペン待ちをするときに、そのためのサブルーチンを起動し、ペンのスイッチが押されると画面上に真っ白い豆腐文字(反転したスペース)を左上から右下まで順に一瞬だけ表示して、そのタイミングで明るくなった場所にライトペンがある筈だという判断をするものでした。なんとゲームパドルと等価な回路とソフトウェアで実装してしまっていたんですね。動作に数秒かかるのはご愛嬌ですが、これでもライトペンらしく使えたのは凄いです。
ゲームI/Oなどのハードウェア的なアドレスは、メモリマップの説明あたりであらためて書きます。
ヘッダ写真は、ボロボロになった(多分、ハンダゴテを置いてしまった)パドルとその中身(ケーブルを交換しようとして、そのまま)。
いいなと思ったら応援しよう!
![kzn](https://assets.st-note.com/production/uploads/images/111925158/profile_dffba6e25229ee04f46397fb91bbfc20.jpg?width=600&crop=1:1,smart)