なるほどえたきちのブログじゃねーの

チラ裏雑記帳

ポケモン過去作の解析とか乱数調整とかそこら辺。不定期更新。

FireBirdコントローラーの取説みたいなやつ

概要

結構前に作ったコントローラー基板FireBirdについて機能説明を殆どしていなかったのでざっくりと纏めます。
この記事に記載している機能は現時点での最新基板(v2.0)・ファームウェア(v2.01)のものです。

実装している機能・特徴の一覧

FireBirdコントローラーに実装している機能です。

Ginfull製ホールセンサースティック搭載

理論上ドリフトが発生しない、磁気で入力値を読み取るホールセンサースティックという部品を使用しています。
ホールセンサースティックにも色々な種類があり、主にGulikit、K-Silver、Ginfullといったメーカーがプロコンスティックの形状に互換のあるものを販売しています。
Gulikit製のスティックボックスはK-Silver製のOEM品と見られ、ホールセンサー周りの設計のみ自社で行っているようです。
Gulikit製、K-Silver製のスティックは純正プロコンで使用されているアルプス製のスティックより若干背が高く、耐久性に関しても劣る部分が見られたため、FireBird v2からはスティック自体の耐久性も大幅に向上したGinfull製のスティックを採用しています。

跳ね戻りフィルター搭載

スティックを弾くような操作を行った際、反対側にも入力が入ってしまう「跳ね戻り」という現象を抑制する機能です。
スティックの加速度等を監視して弾き入力を検知し、反対側の入力に対してフィルタリングを行います。
純正コントローラーを改造する跳ね戻りフィルターとは異なり、跳ね戻りと関係のない入力はそのまま操作に反映されるため、弾き入力の出やすさといった操作感の差異はそれらと比べて小さくなります。

高精度スティックキャリブレーション

スティックのスケーリング処理をかなり細かく行い、スティックを回す操作を行った際に綺麗な真円が描けるようになっています。
内側・外側のデッドゾーンの広さも調節可能です。

純正プロコンと同じ精度のジャイロセンサーを搭載

純正プロコンでも使用されているものと同じジャイロセンサーを搭載しています。
制御方法も純正プロコンと同じ方式なので、有線であることを除けばほぼ変わらない操作感で遊べます。

HD振動対応

プロコン型の互換基板で恐らく初めてHD振動に対応しました。
Switchで使用可能なコントローラーとして見ても、純正プロコンと同じモーターを使用してHD振動を再現したものはこれが初だと思います。
GulikitのKK3など、HD振動に関連する通信内容を読んで振動強度の調整を行っているものはありますが、実際の感触は大きく異なります。
ジョイコン/プロコンで使用されているアルプス製のハプティックリアクタが使用可能です。
また、ジョイコン用のモーターであればハンダ付け要らずでコネクタ接続が可能です。

USBデバイスモードを選択可能

XInput/DirectInput/SwitchプロコンといったUSBデバイスとしてPCやSwitchに接続することができます。
PCとSwitchで別々のデバイスモードを割り当てることができるため、PC接続時はDirectInputでSwitch接続時はプロコンといった使い方も可能です。
XInput/DirectInputでPC接続した際はポーリングレート1000Hzで動作するため、Switchプロコンの形状に違和感がなければPC用ゲームパッドとしての性能も悪くないかと思います(参考程度に、Switchプロコンは125Hz、PS系の純正コントローラーは250Hzで動作しています)。

RETRO-Cケーブル対応・FC/SFC/N64/GCの自動識別が可能

RetroSix、HandHeldLegendによって開発されているRETRO-Cケーブルに完全対応しています。
また、ハードウェアの自動識別機能も実装しているため、文字通り挿すだけで動きます。
ハードウェア毎に最大5種類のキーコンフィグを設定可能です。

ボタン・スティックLED搭載

各ボタンをフルカラーLEDで光らせることができます。
他の互換基板に搭載されているLEDと比べて薄いものを使用しているため、ラバーにLEDが干渉して操作感が変わるといった問題の対応も行っています。
単色だけでなく、ゲーミングデバイスによくありそうな様々なエフェクトで光らせることが可能です。

十字ボタンの誤反応対策

ゲームボーイ等のレトロハードで使用されているボタン接点の形状を参考にしてパッドの形状を見直し、純正プロコン等でも発生していた「単純な上下左右の操作が意図していない斜め入力に化ける」といった症状が起きづらくなっています。
Switchでゲームを遊ぶ際はそこまで気にならないかもしれませんが、RETRO-Cケーブル等でスティックが存在しない時代のゲームを遊ぶと斜め入力の誤反応は大きなストレスに繋がります。
但し、誤反応の起きやすさはラバーやボタンによって変わる部分なので、全く起きないことを保証することはできません。
純正のボタンとラバーを使用する分にはまず問題ないと思います。

純正ボタン基板との互換

使用する方は殆どいないかと思いますが、純正プロコンのボタン基板をそのまま使用したりFireBirdのボタン基板を純正プロコンで使用したりすることも可能です。
LED周りは動かないのでその点はご了承ください。
その為、eXtremeRateのLEDキットや背面パドルをFireBirdで使用することも可能です。
背面パドルとFireBirdのボタンLED制御を同時に使用することは基本的にできませんが、ここに関しては将来的に対応を検討しています。

ABXYボタンのマウスクリック化対応

ボタン基板にマウスクリック用のパッドを配置しているため、GCコン改造でよくある(?)ABXYボタンマウスクリック化を行うことが可能です。
ボタンの加工は少し大変だと思います。

ハードワイヤリング対応

コネクタに負荷を掛けたり激しい動きを続けたりした際にコネクタの接点部分が劣化し、接続切れという症状が発生する場合があります。
こちらはアルコール洗浄で一時的に改善することが殆どですが、同じような使い方を続けていれば再度発生してしまうため、根本的な解決は困難です。
この場合、基板とUSBケーブルを直接接続する「ハードワイヤリング」という改造を施すことでこの問題を解決することができます。

トーナメントモード

+/-/ホーム/キャプチャ/十字キーの無効化を行う機能です。
ホームボタン長押しでトーナメントモードのON/OFFが切り替え可能です。

スティックキャリブレーション

初期状態ではスティックのキャリブレーションが一切行われていない為、使用できるようにするにはコンフィグツールでこの設定を行う必要があります。
ツール上の『スティックキャリブレーション』を選択してキャリブレーションを開始します。

後はツール上の手順に従ってスティックの操作を行います。
初期状態では青い丸が動きませんが仕様です。




入力角度の誤差補正

八角ゲートのシェルを使用している場合は『入力角度の誤差補正』も使用した方がいいかもしれません。
ゲートに合わせて入力していても入力値が↓の画像のようにズレてしまう際に補正を行う機能です。

こちらもツール上の手順に従ってスティックを操作すると補正が完了します。


跳ね戻りフィルター

スティックの跳ね戻りを抑制する機能です。
左右のスティックを弾くと弾いた瞬間の入力値がビューアに表示されます。
スライダーを右に動かすとフィルターの強度を上げることができます。
基本的には3くらいで十分だと思います。

USBデバイスモード

PCやSwitch等の機器に接続した際、どのようなUSBデバイスとして認識されるかを変更することができます。
また、特定のボタンを押下しながら接続すると任意のモードで接続することが可能です。
何もボタンが押されていない際はコンフィグツールで設定したモードで接続します。

以下は使用できるモードの一覧です。
・Switch Proコントローラー
・XInputコントローラー
DirectInputコントローラー
GCコントローラ接続タップ


Switch Proコントローラー

おすすめ
Aボタンを押しながら接続
ポーリングレート:125Hz

Switchのプロコンと同じ方式で接続します。
振動の制御やジャイロセンサー等、有線プロコンで利用できる機能は一通り使用可能です。
振動の感触は純正とは異なりますが、ジャイロセンサーは純正プロコンと同じセンサーを利用しているため、ケーブルさえ気にならなければほぼ同じ感覚で遊べると思います。
純正プロコンで起こる有線接続時の遅延は発生しない為、GCコンやホリコンに近い感覚で使用できます。

DirectInputコントローラー

おすすめ
Bボタンを押しながら接続
ポーリングレート:1000Hz

殆どのPCゲームで使用可能なモードです。
コンフィグツールも動くので一番安定している説はあります。

XInputコントローラー

Xボタンを押しながら接続
ポーリングレート:1000Hz

稀にXInputしか対応していないゲームがあるので、その際はこちらを使用すると良いと思います。
XInputしか対応していないソフトよりもDirectInputにしか対応していないソフトの方が遙かに多いので、基本的にはDirectInputを使用する方が良いかと思います。
バイスとしての仕様上このモードで繋がっているとコンフィグツールで認識しません。
とはいえコンフィグツール使うのは初期設定時くらいなのであんまり問題にはならないかも?

GCコントローラ接続タップ

Yボタンを押しながら接続
ポーリングレート:125Hz

GCコン接続タップに繋がったGCコンとして認識します。
これを使用するケースは殆どないと思います。
ドライバによってはコンフィグツールで認識しません。

ファームウェア書き込み

左スティックを押し込みながらPCに接続すると『RPI-RP2』というドライブが認識されます。
ここに『FireBird vX.XX.uf2』(X.XXの部分はバージョンによって異なります)という名前のファイルをドラッグ&ドロップ等で書き込むとコントローラーとして再接続されます。

ドライブ認識時は基本的に新しいウィンドウが立ち上がりますが、ウィンドウが出てこない場合はエクスプローラーのドライブ一覧から直接開いて書き込んでください。


よくある質問

スティックが動かない
勝手に入力が入る
スティック入力が反対方向に入る

スティックのキャリブレーションをしていないことが原因です。

接続が切れる

USBポートの劣化・汚れが原因です。
接点洗浄剤を吹き付けるか、それでも改善しない場合はハードワイヤリングを検討してください。
ハードワイヤリングを実装した個体において、ドック側のUSBポート以外が原因で接続切れが発生した報告はありません。
ポートの劣化は使用環境や操作方法等に強く依存するため、基板買い換えで解決を図るのは推奨しません。(恐らくすぐに再発してしまうかと思われます)

ファームウェアの書き込みができない

何もボタンを押さずにPCやSwitchに接続してコントローラーが認識されるのであれば、ファームウェアの書き込みは成功しています。
ブートローダーのストレージに書き込んだファイルが再接続時に見えないのは仕様です。

USB接続で発生する遅延が不安

純正有線プロコンに遅延が入ることから、USB接続=遅延があると考えている方が一定数いますが、これは厳密には異なります。
遅延の原因はコントローラー内部でキー入力情報を取得してから送信するまでの処理にあり、純正プロコンの場合はここで1Fの遅延が生じています。
純正プロコンはキー入力情報の取得を含むほぼ全ての処理を無線チップで行っており、有線接続時のみUSB通信処理を別のチップで行う仕様となっています。
そのため、無線チップからUSB通信用のチップにキー入力情報などを送信する必要があり、ここで1Fの遅延が生じているという訳です。
USB通信処理を含む全ての処理を1つのチップで行っているFireBirdでは上記問題は発生しません。

無線接続ができない

有線接続のみに対応したコントローラーとなるため、無線接続はできません。
また、今後無線接続に対応する予定もありません。
ProGCCの無線接続対応版が出ていることから気になっている方も多いかと思いますが、現状では充電が2-3時間ほどで切れてしまう、技適違反の無線チップが採用されているといった問題点があります。
後者に関しては工事設計認証を取ることで解決できますが、消費電力が純正プロコンの容量に見合わない問題は残るため、費用に見合う機能と言えるかは怪しい所です。
真面目に対応するなら純正プロコンの無線ICをベースに設計し直すのが一番良さそうですが、現実的ではなさそう...

おまけ

LRボタンのマウスクリック化に関しての質問が最近増えてきたので、私が製作する際に使用していたデータを置いておきます。
プリントしたプラグをLRボタン裏の穴に差し込んで使用します。
使用するプリンターやフィラメント等の相性によっては上手くいかない可能性もありますが、その辺は上手く調整して使ってください。
https://bzl-web.com/file/3d/firebird_d2ls_lr.stl

ABXYボタンのマウスクリック化に関してはボタンの高さをどうするか、遊びをなくすかどうかによって手順が結構変わってきます。
ボタン側の大幅な削り加工が必要になるケースもあるので、こちらに関しては気合でなんとかしましょう。