【K-Shoot MANIA】REVIVE USBをスライダー/ダイヤル入力に対応してみた
先日REVIVE USBのロータリーエンコーダ&チャタリング対応版を制作したのですが、今回はそれをスライダー/ダイヤル入力へ対応させてみました。
K-Shoot MANIA向け使い方
通常の専用コントローラよりも優れた入力方式に設定できます。
GitHubのドキュメントに従ってファームウェアの書き換えを行ったら、設定ツールを起動します。下記の画像を参考にしてください。
設定を終えたらK-Shoot MANIA側も設定しましょう。
「OPTION」→「入力/判定の設定」から設定します。
Input type of laser object | 専用コントローラー(ゲームパッドスライダー循環) |
Timing adjust (Global offset) | -5ms |
Laser object timing adjust | +4ms |
Slider/Mouse signal sensitivity | 25 |
表は設定ツールで「サンプリング周期=2ms/一致検出回数=3回」「ロータリーエンコーダの一致検出回数=1回」に設定した場合の数値です。計算式も載せておきます。
- Timing adjust=-1 * (サンプリング周期 * 一致検出回数 - (サンプリング周期 / 2))
- Laser object timing adjust=(-1 * Timing adjust) - (サンプリング周期 * (ロータリーエンコーダの一致検出回数 - 1) + (サンプリング周期 / 2))
なお、ディスプレイの遅延などは考慮してません。
「Slider/Mouse signal sensitivity」はロータリーエンコーダによって異なるので、多少前後します。あとはキーコンフィグも設定すればプレイができます。
スライダー入力とダイヤル入力とは
ゲームパッドの入力の種別です。ゲームのコントローラにはボタンを始めアナログスティックやハットスイッチなどの様々な入力デバイスがあり、それぞれに合う入力種別が選択されます。
スライダー入力とダイヤル入力はとりわけマイナーです。スライダー入力ならDSの音量スライダーなどに例えられるでしょうか。ダイヤル入力は例が思いつきませんが、オーディオの音量コントロールに使われるようなボリュームなのでしょう。
しかしHIDクラスで定義された名称でしかないようで、送る値の中身は自由でゲームによって受け取り方も異なりますから実際はあまり使われないものと思われます。
K-Shoot MANIAにおけるSLIDER入力とは
K-Shoot MANIAには様々な専用コントローラがありますが、「VIRGOO TURBOCHARGER」(虹ボルテコン/虹コン)という専コンでは「SLIDER入力」という特殊な入力方式を採用しています。
他社従来機種では、古典的な「マウス座標モード(XY座標モード)」のみ対応しています。
VIRGOO JAPAN 公式ストア
マウス座標モードは実装が簡単というメリットがありますが、大きなデメリットとして、プレイ中にマウスやキーボードの操作に制約が生じる、という問題が有ります。
しかし、「SLIDER入力」ではそのような制約もなく、非常に快適なプレイが可能です。
実態は前述したスライダー入力とダイヤル入力で構成されています。2つのツマミから成る入力デバイスがあり、それぞれにスライダー入力とダイヤル入力を割り当てています。
本来の使い方ではありませんが、この2つがマイナーであることを利用したのでしょう。マイナーなものを使っておけばこの専コン以外は使えませんからね。
スライダー入力の強みとして、マウス座標モードだとゲームの起動中はマウスが使用できなくなるという副作用があります。ポインタが画面中央へ強制的に固定されてしまいます。その代替案としてSLIDER入力を使用しているというわけです。
また入力もマウス座標モードに比べて細かなものになるので、ツマミの入力精度がよくなりゲームもより快適なプレイを行えます。
まとめ
SLIDER入力のメリット
- マウスが使用できる
- ツマミの入力精度が上がる
- K-Shoot MANIA以外のソフトウェアに影響を及ぼさない
個人ではほぼ不可能だった、本来は「VIRGOO TURBOCHARGER」以外使用できないこのSLIDER入力に対応させたのが今回の制作物です。
基板にREVIVE USBを使えば作れてしまうので、ボルテコンを自作したい方はどうぞ。
過去のボルテコン自作記事→REVIVE USBを使ったインテリアな自作ボルテコン
補足追記 (2021年)
この記事は、学生時代に運営していたブログの記事を書き直したものです。
このファームウェア制作、USBのディスクリプタを変更する必要があって苦戦したのを覚えています。
ちょうど上記のファイル部分なんですが、きちんとUSBの規格に沿って記述する必要があり、値を少しでも変更するとUSBで接続した時に壊れたドライバがインストールされてしまいます。スライダー/ダイヤル入力はマニアックな入力方式と思われ、調べても参考資料がほとんどなかった(さすがにUSBの仕様書を舐めるのはキツい)ので、トライアンドエラーを繰り返してようやく実装にこぎつけた次第でした。
最も参考にした記事(http://yotta0xff.hatenablog.com/entry/2016/04/02/190339)が現在は閉鎖されているようで残念です。