きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

GP2040-CE v0.7.11 でMini Menuが実装されてかなり便利

※ 2025.05.01 不具合と思える挙動がありましたので、最後に追記しています

※ 2025.04.30 大きく誤解していた部分があったので修正しました(操作方法の設定回り)

2025年4月にリリースされたGP2040-CE v0.7.11にMini Menu機能が搭載されました。 オフィシャルドキュメントはこちら。 gp2040-ce.info

おおざっぱに言えば、名前から想像できる通りOLEDディスプレイにミニメニューを表示し(PCとの接続無しの)アケコン単体でいくつか機能についての設定変更が可能になる機能です。

何が設定できるようになるのか

現時点で設定できるのは以下のようでした:

  • Input Mode
    • Xinput / Nitendo Switch / PS4 ... 等の動作モードの切り替え
    • USB挿入時のホットキー気切り替えと同様 Current Input Mode の切り替えのみ可能で、PS4/5やXBOXの認証関連などの細かな設定は操作は変更できない模様
  • D-Pad Mode
    • D-PadのLeft Analog Stick D-Pad Right Analog Stickの切り替え
  • SOCD Mode
    • SOCDモードの切り替え
  • Focus Mode
    • Focus Modeの切り替え(ON/OFFの切り替えのみ?)
  • Turbo Mode
    • Turbo ModeのON/OFF切り替え

Input Mode など設定変更を有効にするためにリブートの必要があるものは、Menuを閉じる際に保存と再起動を確認されます。

Mini Menuを呼び出すために必要な設定

Mini Menuを利用するには以下が必要です。

  1. OLED ディスプレイの実装
  2. Mini Menuを呼び出す操作の設定
  3. Mini Menu機能の有効化

1. OLED ディスプレイの実装

なにはともあれOLEDディスプレイの実装が必要です。 SSD1306, SH1106, SH1107 などを実装した128x64のI2C接続のOLEDディスプレイモジュールを実装しましょう。 (国内の電子部品屋さんだと1個600円前後、Aliexpressなどで探せば1個あたり250円前後くらいから見つけられると思います)

実装したらWeb Configuratorの Configuration->Peripheral MappingI2C0`でSDAとSCLとして使用するGPIOのピン番号を設定します。

2. Mini Menuを呼び出す操作の決定と設定

Mini Menuを呼び出す操作を以下のいずれか*1決定し、設定します。

  • GPIO(に繋げたボタン)にアサイン
    • Configuration -> GPIO Pin Mapping でピンに Menu Toggle を割り当て
      • 例:GPIO 0 に割り当て →
  • ホットキーにアサイン
    • Settings -> Hotkey Settings で任意の組み合わせのHotkeyにアクション Menu Toggle を割り当て
      • 例:1 + A2 + に割り当て →

3. Mini Menuでの操作方法の決定と設定

Mini Menuでのカーソル操作と決定/キャンセル操作をどのように行うか決めて設定します。 3パターンの方法があります。

  • GPIOに割り当てる
    • GPIOにぞれぞれMenu Up,Menu Down,Menu Left,Menu Right,Menu Select,Menu Backを割り当てる
  • ホットキーに割り当てる
    • HotkeyにぞれぞれMenu Up,Menu Down,Menu Left,Menu Right,Menu Select,Menu Backを割り当てる
  • ゲームコントローラー操作に割り当てる
    • コントローラーのUp, Down, Left, Right, B1, B2でメニュー操作ができるようにします。
    • Web Configuratorの Settings -> Gamepad SettingsUse Gamepad Input for Display Mini Menu を ONにします。
      • SNES Extensionを有効にして接続したSNESパッドでも問題なく操作出来ました*2
    • Mini Menu表示中の操作もそのままPCやコンソールに反映される点に注意が必要

GPIOの消費(節約)と起動中のゲームへの影響を考えてか、 公式ドキュメントではGPIOにFunctionを割り当てFunction(fn) を絡めたHotkeyへのアサインが推奨 されているようです。

Mini Menuの表示(使用)方法

普段通りGP2040-CE実装のコントローラーをデバイス(PCやゲームコンソール)に接続したあと、前段で設定した Menu Toggle操作を行えばOLEDにMini Menuが表示されます。 USB挿入時の限定されたタイミングではなく、コントローラー使用中にいつでも呼び出せます

とても便利(for me)

自分としてはInput ModeとD-Pad Mode、Profileの切り替えだけでも超便利です。 特にInput Modeは色々な環境で利用しようと思うと割り振れるホットキーだけでは足りないので、Web Configuratorを介さず変更できるのは超絶便利と感じています。 そもそも今まではアサインした各種Hotkeyもどれに何を設定したか忘れたりごっちゃになったりすることが多々ありましたし。 D-Pad Modeも今までスライドスイッチなどで実装してきたのですが、そうしょっちゅう切り替えるものでもないので今度からは諸々Menu Toggleボタンだけでいいのではないかと思ってしまいます。

恐らく私は、今後はOLEDを実装する場合はMini Menuで操作できるものはもうそれ前提にしてHotkeyは極力使わない方向で考えるようになりそうだと思っています。

バグ?(2025.05.01 v0.7.11)

どうも少しバグがあるようです。 私の環境ではミニメニューの Input Mode -> Web Config でWeb Configurator モードにした場合、設定画面の Settings ( http://192.168.7.1/settings ) にアクセスするとweb画面がホワイトアウトして設定をいじることができなくなりました。 『B1を押しながら接続』などの方法でInput Modeを別のものに切り替えたうえで改めて『S2を押しながら接続』でWeb Configurator に入ると正常に動作しますが、Focus Modeの設定でInput ModeとWeb ConfigをOFFにしている場合は再度nukeして書き直すしか復帰方法が無いかもしれません。Focus Modeを使用されるかたは特に注意した方が良いかと思います。

*1:もちろん両方でも良い

*2:Web Configurator時のOLEDメニューではSNESパッド上のボタンでは操作できないのに(笑)