mixiユーザー(id:67686861)

2024年11月08日23:52

496 view

GP2040-CEアケコン乗っ取りまとめ(本文)

GP2040-CEでアケコン乗っ取りし、それなりに使い込んだのでまとめ。
製作のための参考情報を目的としている。2024年11月現在の情報。
UNIVERSAL FIGHTING BORADことUFBでの乗っ取っり経験もあり
一部比較もあり文中では'UFB'と記載している。

■概要
GP2040-CEはRaspberry Pi PICO向けのフリーウェアで
マルチアケコンを実現する制御ソフトウェア。
いわゆるアケコンのガワを用意し、Raspberry Pi PICOを適宜接続し、
Raspberry Pi PICOにGP2040-CEをインストールすることで実現する。
Raspberry Pi PICOは700円で買える。(2024年6月時点)
https://mixi.jp/view_voice.pl?owner_id=67686861&post_time=20240628170749
安くマルチアケコンを製作出来る。遅延などが考慮され最速と言われている。

■対応ゲーム機
GP2040-CEは確認済みと未確認で下記のようなゲーム機に対応している。
◎確認済み
メガドライブミニ1&2,NEOGEOミニ,PCエンジンミニ,Playstation Classic
Xinput,DirectInput,Switch
◎未確認
Playstation3&4&5,XBOXシリーズ
(8分認証問題が解決しているかは不明)
◎特記事項
特記事項としてキーボード対応がある。
通常ならJoyToKeyを利用しないと困難なキーボードでのみで
操作出来るゲームもJoyToKeyナシで出来る。
これはWindowsに限定されないメリットもある。

■基盤の選定
GP2040-CEが想定している基盤はRaspberry Pi PICOなのだが
亜種のRaspberry Pi PICOもサポートしている模様。亜種としては
Liatris,SparkFun Pro Micro,Waveshare RP2040-Zero等
がある模様だが俺はよく知らない。

ただし、亜流はピン数が少ないなど制約があったりするので、
特に理由がなければRaspberry Pi PICOがいい。
Raspberry Pi PICOもアキバではPIN付き、PIN無しが売っている。
PIN付きは基盤の下(ハンダ面)に付くので
採用の際には実装方法を検討しておく必要がある。
今回の場合、ぶら下げる形式だったので好都合だった。
底面に実装する場合にはPIN付きは使えない。
Raspberry Pi PICO2も発売されたのでいずれ対応されるかもしれない。


■ガワの選定
Raspberry Pi PICOのサイズは21mm×51.3mmしかない。
高さは実装によるがmicroUSBを挿すことを考慮する必要がある。
https://mixi.jp/view_diary.pl?id=1988378551&owner_id=67686861
サイズが小さいので小ぶりなアケコンにも乗っ取りが出来る。
ただし、リアルアーケードPRO等ガワは拘ったほうがいい。
アケコンを乗っ取るなんて、そもそも拘りなんだから、、
ガワも操作性や質など拘ったほうがよい。
レバーレスアケコンが台頭してきているが本件では気にしない。
原則として4方向レバー、8メインボタン、2サブボタン、4拡張ボタンがあるといい。
2サブボタンはいわゆるSELECT/START、
4拡張ボタンは、いわゆるHOME/CAPTURE/RESET/FUNCTION。
拡張ボタンを実装してあるアケコンは無いに等しいので
多くの場合、独自に工作する必要がある。
拡張ボタンとしてR3,L3もあるが経験上、実装しなくてもいいと思う。

■Raspberry Pi PICOのコネクタ
Raspberry Pi PICOのPINのピッチは2.54mmなのでコネクタはQIコネクタが使える。
https://mixi.jp/view_diary.pl?id=1988390825&owner_id=67686861

■実装
Raspberry Pi PICO上でのPINアサインは画像1のようになっている。
今回L3,R3は実装していないが画像2がその実例になっている。
https://mixi.jp/view_diary.pl?id=1988444161&owner_id=67686861

■Functionボタン実装のススメ
画像1にGP2040-CEの説明がないのだが
Functionボタンを実装するのをおススメする。
後述するHotkeyのトリガーにすると利便性が向上する。
PinMappingをHotkeyで切り替えるときなど、
PinMappingによってProfileが切り替わってボタン配置が変わるとHotKeyまで変わってしまう。
Hotkeyで利用するキーはプレイ中に操作しないキーであるべき。
そうでないと、いわゆる誤入力が起きる。
このようなためにも、GP2040-CE用の独立したキーがあるべきでそれがFunctionである。
公式Dialog PINマップではGP22が空いているのでここに割り当てるとよい。
基盤としては29番ピンである。
FunctionはデフォルトではアサインされていないのでPinMappingでアサインする必要がある。

実は、本件は後から知り、PIN21に配線したA2(TP/CAPUTURE)をFunctionに割り当てた。
使用頻度や利便性からもA2よりFunctionが優先である。
https://mixi.jp/view_diary.pl?id=1988622041&owner_id=67686861

このような経緯でFunctionはもモーメンタリスイッチとなったが、
オルタネイトスイッチを採用するのも悪くない。
というのもHotkeyでFunctionボタンを押すときには併用が常であり
Fn+↑やFn+↓+B1やFn+↓+B1+R2のように複数ボタンを同時押すからだ。
https://mixi.jp/view_diary.pl?id=1983867327&owner_id=67686861
オルタネイトスイッチでFunctionをロックして置き
他の複数のボタンを押すことでHotkeyにすることで利便性が増す。
Fn+↓のようなシンプルなHotkeyはやり易い一方、間違いによる発動もある。
Fn+↓+B1+R2であれば間違いによる発動はまずない。
指が足りず押しづらくなるのだがオルタネイトスイッチにすれば解決する。

■リセットボタン実装のススメ
画像1にはRUNという端子があり、これをGNDに繋ぐとRaspberry Pi PICOにリセットが掛かる。
GP2040-CEは起動時にボタンの押されている状態により
ゲーム機の選択が出来たり設定モードに入ったりできる。
USB端子への差し込み、電源ONでも起動でも出来るのだが、
リセットボタンであればゲーム機本体を触らずに
手元のコントローラで解決できるので利便性が劇的にあがる。

ただ、Hotkeyでも再起動は可能なようなので配置に制約があるのなら
上記Functionを優先実装してもいいと思う。

ただし、再起動時に押されているボタンによって動作モードが変わるのがGP2040-CE。
操作が被る危険があるのでやはりリセットボタンは独自実装をおススメしたい。
例えば、HotkeyでFn+S2(START)で再起動とかやりがちだが、
起動時にS2(START)が押されていると設定モードで立ち上がる。
ゲームモードで立ち上がらないケースがあるのだ。
起動する前にS2(START)を離せばよいが、恐らくタイミング依存する。
STARTに限らず類似の現象は起こるハズなのでリセットボタンは独立実装をおススメしたい。

■TURBO LED実装のススメ
GP2040-CEには連射用のLEDを実装できる。
Raspberry Pi PICOのGP15がTURBO LEDになっており、
これをLEDのアノード(プラス)につなぎカソード(マイナス)をGNDにつなぐ。
Raspberry Pi PICOの都合上、GNDを共有するので
LEDは複数色LEDを採用する場合アノードコモンを採用するといいだろう。
もっともLEDはTURBOのみなので気にすることはないが、
UFBのようにPLAYER LEDが将来的に実装されるとアノードコモンになるはず。
https://mixi.jp/view_diary.pl?id=1985971158&owner_id=67686861

ボタン1つでも連射設定にするとLEDが点灯する。
このためGP2040-CEの死活および通電チェックにも使えるので実装をおススメする。
何らかの理由で動作しないときのチェックに有用だ。
https://mixi.jp/view_diary.pl?id=1988423767&owner_id=67686861
連射速度にも連動して点滅するので必要性は高い。

■ボタン配置
メインであるB1,B2,B3,B4,R1,R2,L1,L2は画像2のような
素直な配置にすることをおススメする。GP2040-CEはマルチアケコンであり
1つゲームに特化すべく配置を変えると別のゲーム機を接続したときにおかしくなる。
特定のゲームのボタン配置を変更したい場合にはGP2040-CEの設定で
PinMapping機能があるのでこれを利用する。
ボタンの再配置はProfileとして4つまで保存でき、
保存したProfileはHotkeyで呼び出すことが出来る。(後述)

■GP2040-CEの入手とインストール
GP2040-CEはフリーウェアで下記にURLで入手できる。
https://gp2040-ce.info/downloads
Raspberry Pi PICO用としては
'GP2040-CE_x.x.x_Pico.uf2'
と言うファイルをダウンロード出来る。

これを基盤であるRaspberry Pi PICOにインストールするわけだが
初回は基盤をUSBケーブル(端子はUSBmicro)でPCに挿すとストレージとして認識される。
https://mixi.jp/view_diary.pl?id=1988403776&owner_id=67686861
ストレージとして認識されるのでエクスプローラでファイルをドラッグ&ドロップでコピーするだけ。

■Bootselの実装は不要
GP2040-CEは一度インストールすると以降にPCに挿すとゲームコントローラーとして認識される。
つまり一度インストールするとストレージとして認識しないのだ。
更新などもあり得る訳でその場合にはストレージで認識させる必要がある。
本来であれば対策として画像1の基盤上にあるBootselボタンを
押して起動させるとストレージで認識するのだが、
必ずしも押せるような実装する必要はない。

というのも設定モードで"Reboot"というボタンがあり押すと再起動する。
この時再起動のモードを下記のように選択することができる。
・USB(BOOTSEL)
・Web-config
・Controller
このうち"USB(BOOTSEL)"を選択すればストレージモードで起動する。
この他に
"S1(SELECT) + B3 + B4"を5秒間押し続ける
ことでもストレージモードに入ることが出来る。
俺はBootselボタンを押せるような実装をしたのだが
https://mixi.jp/view_diary.pl?id=1988378551&owner_id=67686861
結果として不要であった。
https://mixi.jp/view_diary.pl?id=1988749657&owner_id=67686861

■設定モードへの入り方
GP20440-CEは起動時にS2(START)を押していると設定モードになる。
設定モードになった場合にはWindows上で
Remote NIDIS based Internet Sharing Device
として認識される。"デバイスとプリンター"で確認できる。↓も参考。
https://mixi.jp/view_diary.pl?id=1988518133&owner_id=67686861
この状態でWebブラウザで
http://192.168.7.1/
にアクセスすると設定画面に入れる。
ゲーム機選択、ボタンの配置換え、マクロなどの設定が出来る。

■ゲーム機選択
設定画面でSettings→Boot Input Modesを選ぶと
対応ハード決定するための起動ボタンを設定できる。
https://mixi.jp/view_diary.pl?id=1988518133&owner_id=67686861
起動時に押している各ボタンに対してゲーム機を設定ですることができる。
起動時に設定したボタンを押していることで当該のゲーム機モードが選択される。
起動時に何も押していなければ、最後に選択したゲーム機として起動する。

■'起動'について
前述のように起動時に押しているボタンによって動作モードが変わる。
起動とは下記の3つのケースがある。
1.GP2040-CEアケコンのUSB端子を電源の入った本体に挿す
2.リセットボタンを押す
3.GP2040-CEアケコンが挿さった本体の電源を入れる

■ボタンの配置替え
設定画面でConfiguration → Pin Mappingを選ぶと
GP2040-CEのボタン配置を変えられるようになる。
Raspberry Pi PICOのPINにボタンの役割を再設定する。
Profileになっており4パターンを登録できる。
ただし変更内容は前述のゲーム機選択や設定モード、
さらに後述するHotkeyにも影響する。

配置換えで設定した値がゲーム機選択やHotkeyで使われる。
つまりボタンゲーム機選択やHotkeyは同じでも
ボタンの配置換えによって適応されるボタンが変わってしまう。
混乱する余地が多々あるので配慮が必要。
その1つとしてProfileの1番はデフォルトで原則変更しないことと
影響がある操作をする場合にはデフォルトの1番のProfileをロードすることがある。
ゲーム機選択やHotkeyは原則デフォルトの配置に戻し実行するとよい。
https://mixi.jp/view_diary.pl?id=1988544742&owner_id=67686861

■Hotkey設定
上記のボタン配置換えのProfileは実質的にHotkeyで呼び出す。
具体例としては"fn+↑"でProfile1を呼び出すことが出来る。
設定画面でSettings->Hotkey Settingsを選ぶと
GP2040-CEのHotkeyを設定できるようになる。
Functionボタンの実装でも述べたがHotkeyはFunctionボタンと併せて使うのが吉。
HotkeyではProfileのロードの他に、
・スティックをゲームパッド上での左右アナログスティックにする
・SOCD関連の設定
・Home/Captrueなどの拡張ボタン
・L3/R3/B1/B2などの一般ボタン
・GP2040-CEのリセット
等を割り当てられる。デフォルトでは
S1(SELECT)+S2(START)+何か
で設定されるHotkeyが多かったが、S1(SELECT)+S2(START)は
NEOGEOミニやPCエンジンでのメニューに入る方法と被るので使えない。
登録できるHotkeyの数は16個。
上記ボタンの配置替えの影響を受けるので要注意。
詳細に関しては下記の情報も参考になる。
https://mixi.jp/view_diary.pl?id=1988622041&owner_id=67686861

■マクロ
レイジングストームの"左斜め下→右斜め下↓左斜め下←右斜め下+BC"のような難しいコマンドを
ボタン一発押しで実行することが出来る。
入力だけでなくタイミングも設定出来るので出せないコマンドはない。
設定画面でConfiguration->Configurationを選ぶと
GP2040-CEのマクロを設定できるようになる。

登録したコマンドは上記のボタンの配置替えの設定で可能。
ボタンの配置替えの設定では単純にB1,B2のようなボタンの他に
登録したマクロも呼び出せるので、ここでマクロを呼び出すよう設定する。
登録できるマクロ数は6個。

GP2040-CEにもバグがあるようで発動しないときがある。
そのようなときには抜いて挿すとか、他のボタンを押してみるとかが有効。

マクロの登録や設定についての詳細は下記参照
https://mixi.jp/view_diary.pl?id=1988654675&owner_id=67686861
https://mixi.jp/view_diary.pl?id=1988708372&owner_id=67686861

■連射
連射設定できるボタンはB1,B2,B3,B4,R1,L1,R2,L2,R3,L3の10。
S1(SELECT)やS2(START)はもちろんレバーやHomeも連射設定は出来ない。
上記のいずれのボタン1つでも連射設定するとLEDが点灯する。
また連射設定されたボタンを押せばLEDが速度に応じた点滅をする。
TURBOボタンを押しながら当該のボタンを押す、もしくは
当該のボタンを押しながらTURBOボタンを押すことで連射設定になる。
また、連射速度はTURBOボタンを押しながら↑で早くなり、
TURBOボタンを押しながら↓で遅くなる。
https://mixi.jp/view_diary.pl?id=1988535418&owner_id=67686861

■インポート/エクスポート
設定出来るボタン配置はProfileに保存できるが4つまで
登録できるマクロ数は6個まで
登録できるHotkeyの数は6個まで
と設定はRaspberry Pi PICO内に保存される。
保存できる数には制限があるのだが、その設定をインポート/エクスポート出来る。
エクスポートしておけばインポートするという面倒はあるが半無限に設定を保存できる。
https://mixi.jp/view_diary.pl?id=1988720932&owner_id=67686861
内容はjson形式のテキストファイルであり、フォーマットの仕様変更に耐えやすい。
GP2040-CEがVerUPしても後方互換性が保たれる可能性が高い。
実際、0.7.9->0.7.10では保たれた。

■コントローラ非対応でもコントローラ化
GP2040-CEはキーボードの振る舞いをし、
スティックやボタンをキーに割り当てることが出来る。
こうするとゲームコントローラ非対応のゲームもGP2040-CEアケコンで操作できる。
一般的にこのようなケースではJoyToKeyを使うがGP2040-CEでは不要
HIDキーボードデバイスとして認識されUSBキーボードと同等の扱いを受ける。
https://mixi.jp/view_diary.pl?id=1988689573&owner_id=67686861
Googleのパックマンもプレイ可能だった。
https://mixi.jp/view_diary.pl?id=1990979602&owner_id=67686861

■バグ
GP2040-CEの0.7.9、0.7.10では、マクロが利かなくなるというバグが存在する。
ソフトウェアなのでバグがないというのはないだろう。今後のアップデートに期待。

■アップデート
GP2040-CEはソフトウェアであり不具合修正や機能追加が行われる。
今回作成したアケコンも最初のバージョンは0.7.9であったが、後に0.7.10に更新した。
https://mixi.jp/view_diary.pl?id=1988749657&owner_id=67686861
この更新では、ボタン配置設定やマクロ設定は保持されたが、
今後の更新や、更新前後のバージョン差が大きい場合などは保持されない可能性もあるだろう。

■5V
Raspberry Pi PICOのの40pin、つまりVBUSは5Vが来ているらしい。
画像1の40PINがソレである。
別途電源が必要な光学センサーレバー化なども可能と思われる。
https://mixi.jp/view_diary.pl?id=1986462300&owner_id=67686861
確認はしていない。


■総評
ここ5年でメガドラミニ純正パッド、BGSP1601、UFB、そして今回のGP2040-CEと
4つのアケコン乗っ取りをやってきた。
2023/09/23 完成! UFBアケコン
https://mixi.jp/view_diary.pl?id=1986005913&owner_id=67686861
2022/12/28 アケコン乗っ取り ~完成~(BSGP1601による乗っ取り)
https://mixi.jp/view_diary.pl?id=1984022436&owner_id=67686861
2019/11/03 アケコン乗っ取り(メガドラミニ純正パッドによる乗っ取り)
https://mixi.jp/view_diary.pl?id=1973540438&owner_id=163359
中でもUFBとGP2040-CEは乗っ取り専用だ。
UFBも良かったがGP2040-CEはUFBを上回る良さ。
安いし、小さいし、対応ハードは多いし、機能も多い。
欠点はその機能の多さから扱いが複雑で難しいということ。
正直、最初からGP2040-CEで実装出来ればよかったと思う。
複雑な機能が故にバグもあるけど許容範囲。
製作者の方々にはホントに感謝である。
マクロでゲームが楽しくなったり、PCエンジンminiがアケコンで出来たりとゲーム生活の質が向上する。
機能がてんこ盛りなので日記によるレビューや備忘録もかなり多くなってしまった。
ただ、アケコン日記はもうしばらく続く。

なんとここでmixi日記の文字数上限である10000文字を越えてしまった。
リンクは下記の日記に記載する。
https://mixi.jp/view_diary.pl?id=1988762364&owner_id=67686861
1 2

コメント

mixiユーザー

ログインしてコメントを確認・投稿する