前回PICをプログラムして連射回路を作成するテストを行ったが、これはファミコンに手持ちのジョイスティック「XE-1 ST2」を接続するためのものであった。当初はファミコン本体にアタリ仕様のジョイスティックコネクタを増設するつもりだったが、ハードオフでファミコン用のジョイスティックが手に入ったため、これを利用して外付けのコンバータを作成する方針に変更した。
捕獲したのはアスキースティックL5。ハードオフでジャンク扱い315円だった。これはRPGを攻略本を見ながら片手で遊ぶために開発されたものらしいが、それ以外の用途に使う分には操作性は微妙らしく、ファミコン末期にはゴミみたいな値段で投げ売られていたという話もある。コントローラのレビューサイトを見ると、操作性については賛否両論のようだ。今回捕獲した個体のガワはセロテープの糊でベトベトになっていたが、欲しいのは内部のICとコネクタだけなので気にしない。
中を開けてみると、ボタン入力のパラレル信号をシリアル信号に変換するIC「4021」と集合抵抗が入っていた。集合抵抗で4021の各入力ピンがプルアップされており、せっかくなので基板を切り取って活用することにした。
変換アダプタのケースは以前に観賞魚用サーモスタットを製作したときにバラして使ったACアダプタのケースを流用することにした。この中にピッタリ納まるサイズで基板を切り出し、その際切断されたパターンはスズメッキ線で補修しておいた。
PICは前回12F509を使ったが、今回は12F629を使うことにした。12F629は値段が安いだけでなく高機能化されており、プログラムにより入力ピンをプルアップすることもできるため、外付け部品を減らせるメリットもある。12F509同様に内部発振できるので外付けのオシレータも不要。
今回のアセンブラソースはこちら(HEXファイルはこちら)。基本は12F509で作ったソースの流用だが、12F629は機能アップした分の設定が必要となる。具体的にはコンパレータの無効化やプルアップ抵抗の設定等の初期設定ルーチンの変更をした。このあたりはPICの方言みたいなものなので、その都度調べて書き直す必要がある。
今回入出力ピンの設定は、4021のトリガ入力ピンの配列に合わせてアサインを変更している。4021の裏側にPICを貼り付けて配線を極力減らすためだ。変更後の回路図はこのようになった。トリガBに割り当てたGP3だけは内部プルアップができない仕様なので、GP5のトリガAと共に外付け抵抗でプルアップしている。
尚、スタート、セレクトボタンは必要に応じて本体の1コンのボタンを使う仕様。どうしても必要であれば、4021の13p,14pをGNDに落とすプッシュスイッチを付ければよい。
組み込んだ様子はこちら。Dサブコネクタ、中点OFFの6pスイッチ、4021基板を詰め込んだらギチギチになった。Dサブコネクタはケースにルーターで溝を掘ってはめ込んでいる。PICの1,3,7pを直接4021の裏側に半田付けするようになっている。ちなみにこの画像ではPICの5p,6pが抵抗でプルアップされているがこれは内部プルアップをしていない旧バージョンのプログラムで作ったため。
完成。画像では分かりにくいが、例によって6pの中点OFFスイッチを利用することで、連射OFF、秒間10連射、20連射の切り替えができる。
アタリ仕様のジョイスティック「XE-1 ST2」を繋げてみた。これは15年くらい前にハムフェアの電波新聞社ブースで入手したものだ(たぶん不良在庫処分品)。使ってみたところ、ゼビウスで20連射はオーバースペックのようでうまくシンクロしなかったが、スターフォースの20連射は問題なし。連射が必要な局面でのボーナスが楽勝で取れるようになった。
ちなみにXE-1 ST2はメガドライブで使える「SEGA SERIESモード」を持っており、このモードだとスタートボタンが使えるようになる。なぜかメガドラにないはずのセレクトボタンもあるので(どういう仕様なのかよく分からないが)、これらを活用してファミコンに繋げられればさらに便利になりそうな気がする。気が向いたらPICを張り替えてバージョンアップするかも。