Poke-Controller(MODIFIED版/Extention版)でGCを操作する
はじめに
本記事は、Poke-Controller (MODIFIED版/Extention版)を使用してGCを操作するまでの手順をまとめたものです。
開発背景
筆者はカイリューが好きなのでポケモンXDでカイリューの乱数調整をしたいと思い立ったのですが、手動で行うとミスしそうだったので自動化をしたいと考えました。Nintendo Switchでは自動化の汎用ツールとしてPoke-Controller MODIFIED(本記事では以降Pokeconと記載します。)公開されており、Pokecon上でSwitchと同じように操作できると便利だな、など変なことを考えていた次第です。
Poke-Controllerとは?
Pythonを使用したSwitch自動化支援ソフトウェアです。MODIFIED版はPoke-Controllerの機能を拡張したソフトウェア、Extention版は筆者がMODIFIED版をベースにさらに機能を拡張したソフトウェアです。導入方法は以下の記事を参照下さい。
実現方法について
Pokeconの仕組みはPoke-Controller Guideを一読いただければいいのですが、ざっくりというとPCから制御信号をマイコンに送り、マイコンがNintendo Switchを操作します。つまり、マイコンが疑似的なコントローラーの役割を果たします。また、Capture Deviceを使用することで、Nintendo Switchからの出力映像を基にマイコンを制御することができます。

今回、Nintendo SwitchをGame Cubeに置き換えることを検討します。Game CubeとCapture DeviceはGC plugなどの機材を使用すれば接続できそうです。一方、マイコンとGame Cubeの接続については、以下の2点を検討する必要がありそうです。
接続方法:Nintendo SwitchはUSBで接続可能だが、GCはコネクタ形状が異なりできない。
マイコンからGame Cubeへどのような信号を送ればよいか不明。

これらの2点の課題については、先駆者の方がすでにプログラムおよび構成を公開してくださっています。
また、上記を用いた画像認識なしの自動化プログラムもすでに公開されております。
(これらの記事が公開されていなかったらPokeconでGCを操作するなど考えなかったでしょう。)
記事を読む限り、正しい図ではないですが、以下のような構成にすればよさそうです。

構成が決まったので、Arduino Microのファームウェアの検討に入ります。先駆者様の作成されたファームウェアではPC(Pokecon側)から送信する制御コマンドと、Arduino Microが想定する制御コマンドのフォーマットが異なるため通信できません。そこで、「Arduino Microが想定する制御コマンドをPokeconのものに合わせた」ファームウェア、HITSUMABUSHIを開発しました。これを使用することで、Pokeconを用いてGame Cubeを操作できます。また、Arduino Micro側を変更することで、Pokecon側では、Nintendo SwitchおよびGame Cubeを区別することなく、同じPythonの操作用関数を使用することができます。
導入手順
以下の記事の3~4章を読んでGCとPCを接続するための機材を作成してください。PCとGC間の接続も全く同じです。なお、Arduino MicroにはHITSUMABUSHIを書き込んでください。(READMEは必ず読んでください。)
機材の置き換えのみでGame Cubeを操作できるようになります。なお、デフォルトのHITSUMABUSHIはPCとArduino Microのボーレートが4800になっているため、Pokeconの設定画面から変更してください。
その他
プログラム・記事作成者((at)dragonite303)はカイリューグッズを集めています。メルカリなどでなかなか見かけないような珍しいグッズなど見かけましたらDMなどでご連絡いただければ幸いです