XBOXコントローラーは優秀でけっこう使い勝手が良い。でもなんかゼロ点がずれている。
何が嫌って、そのせいでデッドゾーンが増えちゃうんですよね。「そのくらいソフトウェアキャリブレーションでなんとかしろよ」と思わなくもないのですが、そんな気は無いようで。(高価なエリコン2ですらろくに補正できないってどうなのよ。)
大体下図のようなイメージです。左スティックは右上に、右スティックは左下にオフセットしている。実際の位置精度は赤丸くらい。「精度は良いけど確度が悪い」の定型的な例ですね。


使い勝手がどうなるかというと、例えばゲーム内で左スティックでハンドルを切るときに「右に倒すとすぐ反応するけど、左に曲がるときにけっこう倒さないと曲がってくれない」みたいになるわけですね。要するに微妙なハンドル操作が非常にやりにくい。
解決案
で、とりあえず単純に可変抵抗を並列に追加してバイアス?をかけてみることにする。ジョイスティックはBカーブと仮定して、可変抵抗を付けて補正するとこのようなイメージになるはず。オフセット分をむりやり曲げてセンターに持ってくる感じ。直線性は少し悪くなるが、人が操作する体感的には ほぼ問題ないだろう。

実際にやってみる
という訳で、秋月電子で1MΩくらいの多回転可変抵抗を購入(あんまり抵抗値が低いと直線性が犠牲になるので高い方が良い)。エリコンは不明だが、通常のコントローラーはスカスカなので余裕で入る。
ジョイスティックのボリュームに可変抵抗をハンダ付け。スティックを外す必要すらないので、ハンダ付けの作業としてはとても簡単な部類。
とりあえずお試しでカバーが閉まるように位置を修正しつつ両面テープで貼っているだけ。超適当だけどなんとかなった。



ほぼ想定通りに改善。かなり良い感じ。
ホールセンサー方式ならドリフトは解決するの?
(あくまで個人的な想像ですが)「ホールセンサーならドリフトしない」と巷では言われていたりしますが、可変抵抗式の違いとドリフトとはあまり関係が無いように思います。違いはセンサ部(ブラシ)の耐久性,耐食性。
中立位置の確度は機構の組立精度に依存しやすいので、どのセンシング方式にせよそんなに変わらないのではないでしょうか。
本当は工場出荷時に全数でスティックのガタを含めた中立点のキャリブレーションを行うべきなのでしょうが、そのような工程または方法が無いのが本当の問題点であるように思えます。
また、物理的な中立位置を決めているのは機構部で、センサ部の耐久性が上がってくると今度は機構の耐久性(ガタ)がボトルネックになって精度が悪化してきます。本当はプロポのスティックのようにちゃんと軸を通したシーソー構造?が理想形なのでしょうが、複雑で高コスト&大型化してしまうでしょう。なかなか難しい問題です・・・
最近は3次元磁気センサーなんて物も作られているので、これを使ってセンターに戻るバネが付いただけのトラックボールみたいな感じで機構,センサ的に超シンプルな高耐久ジョイスティックとか出来ないかなぁ・・・
コメント
インナーデッドゾーンの設定で足切りする(0〜65535のうち5000以下は無視する等)のが現代のゲーム開発側で推奨される標準実装ですが、古いゲームだとその辺サポートされていなかったりしますね。