さて、久しぶりにAtari STを使用したのですが、そういえばマウス/コントローラー変換機を最後に製作したのはAVRマイコンでした。
入力コネクタがシリアル用のDsub9ピンむき出しだったので、Atariコネクタに変えるついでにSTM32でUSBマウス変換機を製作することにします。
Atari STのマウスはPC-9801と同じバスマウスで、仕様もほぼ同じでピンアサインが異なるだけです。
PC-9801のバスマウスを見れば分かるように、玉が中のX/Y軸のローラーを回転させることで方向を感知します。
光学マウスと違って相対座標を拾うのではなく、回転回数で移動量を測定します。
コントローラーで方向ボタンを常に連射しているイメージです。
STM32F401でサクッと作りました。
USBマウスとUSBゲームパッドを接続できるようにしたのですが、スイッチでマウスモードとジョイスティックモードを切り替えるようにしました。
[マウスモード]
・USBマウスを接続した場合、マウスとして動作します
・USBゲームパッドを接続した場合、疑似マウスとして動作します(スペースハリアー用)
・USBゲームパッドを接続した場合、X/ZがL/Rの秒間12.5連射、Yがカーソル1/2倍速移動、Bがカーソル2倍速移動になっています
[ジョイスティックモード]
・USBマウスを接続した場合、何も起きません
・USBゲームパッドを接続した場合、ジョイスティックとして動作します(通常のゲーム用)
・X/Y/Zボタンを秒間12.5連射/秒間6.25連射/秒間3.125連射に割り当てています
それでは動作確認です。
マウスモードでUSBマウスが使用できました。
それほど違和感はありません。
マウスモードでUSBゲームパッドを使用し、スペースハリアーをプレイしました。
連射機能付きなので、プレイも楽ちんです。
ジョイスティックモードでUSBゲームパッドを使用し、ストリートファイターをプレイしました。
秒間3.75連射ぐらいが丁度いい感じです。
ジョイスティックが2ポートあるのでもう一個作らないといけないのですが、結構工数がかかってしまうので当分はAVRマイコン版のスーファミコントローラー変換機と併用します。
[追記]
もう一つ作りました。
連射が微妙ですね。
秒間15連射だと速すぎるし、秒間7.5連射だと遅い感じがします。
[追記]
コードを見直して、マウスカーソルがヌルヌル動くようにしました。