NEC PC-6001 カーソルキーをBluetooth LEゲームパッドで操作する


PC-6001にはATARIジョイスティックを模した9ピンコネクタがあり、それはその後MSXに採用されました。
ただ、電気的には2ボタンに対応しているにもかかわらず、殆どのゲームでは1ボタンにしか対応していません。
(例えば、タイニーゼビウス、ザ・アストロディアンなど。)

なんでやろ~?と思ったら、純正ジョイスティック PC-6052 が1ボタンしかないんですね。
純正ハードが1ボタンしかないのに、ゲームが2ボタンでは無意味なので1ボタン対応だったのだと思います。
そのため、「ジョイスティックヲツカイマスカy/n」と聞かれても、みんな"n"を選んだのではないでしょうか。

しかし、「やっぱカーソルキーのほうが操作し易いよね~」といったところでただの負け惜しみなので、カーソルキーとSPACEキー、そしてシフトキーをゲームパッドで操作できるようにしてみようと思います。
配線を引き回ししたくないので、Bluetooth LE無線ゲームパッドを使います。
以前、ESP32でMSX仕様にしたものに対してソースコードを修正しますが、今回は連射が欲しいのでタイマを追加しました。
ただ、ESP32のタイマって難しいんですよね。

次にハードですが、こんなことをするような人はあまりいないので、ピンアサインやキーマップがさっぱり分かりません。
仕方がないので総当たりで調べましたが、えらく大変な作業でした。
ESP32の出力とアドレスピンで 74HC32 のORを取り、データピンに出力します。
ただし、データピンはプルアップされているので、ショート防止に出力ダンピング抵抗を付けました。
キーボードコネクタにはLED用のVccは出ているのですが、GNDはないので電源基板から引きました。
おかげで膨大な配線となり、またいつもの人喰い怪人イソギンチャックです。

それでは動作確認です。
ちなみに、SELECTボタンは[RETURN]キー、STARTボタンは[y]キーを割り当てました。

...あれ?キーが入らない。
いや、入るんだけど一気に全アドレスのキーが入るぞ?
オシロでアドレスピンを見てみたら...

オープンかよーーーーーーーーーーーーーーーーーーーーーーー!

データピンはプルアップされているのですが、アドレスピンはオープン、つまりオープンコレクタになっていました。
PC-8801/FP-1100/MSX2ではアドレスピンもプルアップされていたのですが...
いや、Hi同士をショートすること自体おかしいので、PC-6001のほうが正しい実装なんですけどね。

さてどうする?
74LS32ならオープンはHiと等価なので問題ないのですが、今更TTLを使いたくないし。
仕方がないので、22kΩの抵抗でアドレスピンをプルアップしました。
CMOSの場合は電圧が印加されていればいいので、これぐらい大きくてもいいでしょう。
アドレスピンに電流が流れ込んでしまいますが、元々オープンなのでま大丈夫でしょう。

これでどうかな...?
ようやく動きました。
が、なんか挙動がおかしい。
やはりデータピンに出力電流が流れ込むとまずいようです。

今度は出力ダンピング抵抗を取り払い、代わりに高速SWダイオードを入れて"なんちゃってオープンドレイン"にしてみました。
メガドライブのコントローラーでは遅延が大き過ぎて失敗しましたが、PC-6001は遅いのでこれぐらいの遅延は大丈夫のようです。

これでようやく、コントローラーでカーソル、SPACE、シフトが入りました。
それでは、実際のゲームで動かせるか確認してみましょう。


[AX-6 パワードナイト]
買った当初はシフトキーでガンダムの向きを変えられることを知らず、ずっとズゴックとドムが出るまで待っていました。
もちろん今回はコントローラーで攻撃でき、向きも変えることができます。

[AX-7 ザ・アストロディアン]
連射(Lボタンで秒間7.5回、Rボタンで秒間15回)が使えるので、もうスペースキーをガンガン押す必要はありません。
全滅ボタンも、いちいち本体のシフトキーまで手を伸ばさなくても使えます。

[タイニーゼビウス]
ザッパー、ブラスターをそれぞれ別のタイミングで出せます。
このゲームは元々連射するので、押しっぱなしで大丈夫です。

[CANAL]
スクロールがなめらかなゼビウス風のゲームです。
ザッパー、ブラスターをそれぞれ別のタイミングで出せます。

以上。
何とか成功したのですが、なんだろう...。
このコントローラーの操作性が悪いのか、今一つ爽快感がありません。
しかも、しばらく使っていたらSPACEキーボタンの挙動が怪しくなってきました。
作り直しかも。





















戻る