Raspberry Pi Picoとゲームキューブで”マリ&ダイ”自動化①

プログラムや電子関連ノービスレベルがゲームキューブとラズパイPicoで自動化にチャレンジした顛末記です。今回は画像認識無しです(②から画像認識導入顛末記事になりますので画像認識まで興味ある方はハード編以降は②へ、ハードは共通です)

きっかけは、ますたーさんの

【アースリボン】ゲームキューブ「ポケモンコロシアム」100人抜き自動化【バトル山】 - ますたーの忘備録

を拝見し興味をもち、必須条件の「カイオーガ」「ホエルオー」をレベル100に育てる為にGBAサファイアのレベル上げ定番「マリ&ダイ」の111番道路固定後の自動化をしてみました。

当初AruduinoUnoとNanoEveryにて自動化にチャレンジしましたが動作を安定させる事が出来ず現状原因が分からないので後の宿題とし問題の切り分け(ハード・ソフト・私の頭)もかねてハード構成がシンプルなRaspberry Pi Picoにて再チャレンジ

ハード構成です

ゲームキューブ本体

画像処理まで進む予定ならデジタルポート付きを用意した方が良いみたい(しっかり取り込めるキャプチャボードを接続する為)今回はアナログポート→HDMI変換アダプタでテレビに映してます。私はホビーオフでGet

 

 

ゲームボーイプレイヤー DOL-017

ゲームキューブでアドバンスソフトを再生する為の下駄

ゲームボーイプレイヤー起動ディスクとGBAソフト「サファイア」

Raspberry Pi Pico

2.54mmピッチヘッダー

Picoをブレッドボードに挿す為の足(端子)半田付けします半田まではという方はヘッダー付きのPicoを探して

ブレッドボード

作りのよさが評判。裏面がシースルーになっていて回路構造が見えるので初めて使う人にはおすすめ。今回の構成なら半分の長さで足りますがAruduino等で双方向ロジック等を使う場合はこれ位が良いかと

ジャンプワイヤ

スターターキットなどに付属のケーブルでも良いですが不安定なので連続稼働させる為に

ゲームキューブ用 RJ-45変換ケーブル

ゲームキューブのコントローラポートから信号取り出し出来るケーブル 

LANコネクタDIP化キット

上記のケーブルとブレッドボードを繋いでブレッドボードに挿せるようにするコネクタ 半田付けが必要 ブレッドボードに取り込めるLANコネクタならなんでもOK コントローラーばらしてケーブル自作直挿しなら上記ケーブル共々不要

USB A-microBケーブル

パソコンとPicoを繋ぐケーブル。データ通信出来ればなんでも

実装配線

使用するピンはGP5デジタルポートとGNDアースの2ピンのみGCのデータ線電圧は3.43V。ラズパイは3.3V出力なので5V出力のAlduinoのように電圧変換してデータやり取りする変換モジュールが不要になりシンプルな構成に出来ます

 

GP5とLAN基盤の7番GNDとLAN基盤の1番を接続 LAN基盤の1番はGCコネクタの3番(アース)7番はGCコネクタの2番(3.43Vデータ)と接続されます

図はこちらからお借りしましたデータ通信の解析も詳しくされています

Nintendo Gamecube Controller Pinout

実装写真

電子工作初めての注意点。Picoはブレッドボードセンターの溝を跨いで装着する事。LANコネクタ基盤は溝にそって横向きに装着。なんでかはブレッドボードの裏見てください。もしくは

「 ブレッドボード」ってどう使うの? – サンハヤト オンラインショップ — サンハヤト 公式オンラインショップ

ソフトウェアです

後日、同じハードで画像処理に対応出来るぼんじりさんNX_Macro_Controller(NXMC)が稼働するか試して見ましたベース構成がファームウェアとNXMCの2ファイルとシンプルなのでこれから初めて見たい方はこちらでもよいかと

ではソフトの導入です

Aruduino IDE 1.8.19

IDEは2#ではなくレガシーバージョンを使用 

ライブラリ

各ライブラリをインストールする

NINTENDO

NicoHoodさんの 64とGCをAruduinoをつかってコントロール出来る様にするライブラリ

Bluewhale

みずようかんさんの AruduinoIDEのGCコントロールライブラリをRP2040チップ(Pico)でも使えるようにする物?でよいかな?サーボに対応していますが取り付け無しでも問題なし

aruduino-pico

earlephilhowerさんの RP2040チップ用のボードライブラリ

コントローラー

Orca-GC-Controller

夜綱さんの コントローラーの代わりにキーボードで操作したりコマンド書いて自動化するコンソール(操作パネルみたいなもの) 

バグ対応の新バージョンを使います。旧バージョンだと「プラグインフォルダがありません」とエラーになります。私はこれに気づかずはまりました。

設定
ツール→インストールしたPico用ボードライブラリからPicoを選択

IDE→スケッチ例→カスタムライブラリのスケッチ例→Bluewhale→WHALEを読み込む

スケッチの出力ピン設定を確認 5になっていればOK

パソコンとの通信速度

PCのコントロールパネル→ハードウェアとサウンド→デバイスマネージャー→接続されているポートの設定を開き通信速度を合わせておく。デフォルトの4800bit/Sで稼働しています。お使いの環境によって変わるかも

PCとPico、GCとLANコネクタ変換ケーブルを繋ぎスケッチの書き込みを行う
エラーが出ず「ボードへの書き込みが終了しました」になったら(Servoライブラリが重複してるのでこっち使うよとか出たりもします)Orca_GC_Controller.EXEコンソールを立ち上げます

コンソールのポート設定を開きPicoが接続されているポートを選択しコネクトボタンをで接続します

下の様になっていればOK KeyboardControllerモードのスタートボタンを押してPCのキーボードで操作出来るか確認

キーボード操作は

・Z→AコントローラーのAボタン

・X→B

・C→Z

・V→X

・Space→Start

・Enter→Y

・+字→方向ボタン(基本右端の三角マークのボタン)

バックスペース押すとキーボード操作終了、Mキーでマクロ(GCコントローラで組んだ実行プログラム)開始 こちらはGCコントローラの各ボタンと同じ。動作OKであればマクロ繰り返し行う操作や複雑な手順を記録・自動実行する機能)を記述して自動化です

マクロ記述

プログラムノービス人が説明するのもなんですがお付き合いください

Orca_GC_Controllerのマクロコマンドの詳細はフォルダ内の文法1~6に詳しく記述されています。

頭にを入れると実行するプログラムとして読み込まれないので「マリ&ダイが...」とかメモとして書き込めます。またプログラム組む際もコマンドの頭につければその行は実行されないので一行ず試すのにも使います。但しコマンド記述の後には書き込めないのでコマンド前後に記述

Press

コントローラのボタンを押すをエミュレートするコマンド上記の対応する文字で記述

引数と言われるオプション?があります。コマンドと因数の間は半角スペース一個でなければなりません

-d   ボタンを押している時間を設定 省略すると200ミリ

-i     同じコマンドを続けて行う時のインターバル時間

 

・Aボタンを50ミリ秒押しにて1000ミリ秒(1秒)おきに3回同じ動作を行う場合

Press A,A,A -i=1000 -d=50 となります

歩く時や方向転換の時にボタン押下時間長くするとその時間歩いてしまうので-dの設定が以外と難しい。

上を向く 十字ボタン上を50ミリ秒押す

Press dU -d=50

Wait

前のコマンド後指定の時間待機させる

Wait 2000 2秒間待機します プログラムはゲームの進行を見て進んでいるわけではないのでバトルエフェクトが長い時とかシーンの切り替え時の時間合わせをしないとプログラムだけ先に進んでしまいます

コマンドプログラム

では今回の目的マリ&ダイをつかったレベル上げプログラムを記述です

マリダイとはルビーサファイアエメラルドに出てくる2人組のインタビュワートレーナーで、レベル上げ、お金稼ぎの方法として有名です。相手のポケモンはレベル39のバクオングとレアコイルで常に同じ。獲得レベルと賞金も高く最初は111番道路でバトル後→118番道路→120番道路の同じ場所へと移動しますが256回目からは111番道路に固定される為さらにレベル上げに適した相手となります。111番道路でバトル後は一度他の道路や町に移動後でないと再バトルできない為、バトル後→112番道路まで移動→また戻ってきてコンソールのループを使い技がきれるまでは再バトルと言う流れです。またパーティーの1体に学習装置をもたせ同時に3体のレベル上げを行います。

カイオーガ・ホエルオーのレベル上げ目的なのでカイオーガの雨ふらし効果と技ポイント15の”なみのり”で先制一撃で倒せるレベル50↑位で始めます(マリとダイ255回位行うとそれ位になってます)

取り敢えず組んでみました。長くなるのでメモ的な#コメントは載せていません。もっと時間詰めたり省いたり出来る所あると思いますがこれでもなんとか動きました。ただし、問題があってポケモンのレベルが上がった時と過去のインタビューの話された時はコメント回数がずれてしまい破城します。またレベルアップ時に技覚えるタイミングと重なると一番上の技と置き換えてしまうので技覚えのタイミングにも注意が必要などなど実用レベルではありません

この位置でコンパイルしてRUNボタンでスタート

学習装置持ちのポケモンのほうが獲得ポイントが高いのでソーナンスがあっという間に抜き去ってしまった。

お金もう増えない もういらないか

本体の改造は行なっていませんが場合によってはゲームキューブ本体を壊す恐れもあるのでチャレンジしてみようと言う人はそこを理解した上でおこなってください。また記述に間違い等あるかもしれませんのでご自分で再検証願います。

PS(余談です。今の時代、昭和の常識で物事を行うと通じなかったりします。追伸です。”PS”ってラテン語からきてるらしい、ビジネスでPSとか使ってるのかな?)2026年2月時点 NX_Macro_Controllerに乗り換えなんとか画像認識を使える様になりました。現時点の動画をあげますがこれから始めてみようという方は①~⑥(近日公開予定)まで順に見ていただけるとこんな感じか!自分でもできるかな?と伝わると思います。

255固定バージョンの後、調子に乗って255固定前も組んで検証中