Poke-Controllerを使った「全自動学園最強大会」の方法

ポケットモンスター スカーレット・バイオレット」エンディング後の「学園最強大会(バトルスクールウォーズ)」で「手持ち6匹で自動周回する方法」について。

・課題
ストーリー中の「かちぬきモード」が廃止され「いれかえモード」固定なので、手持ちが2匹以上だと「入れ替えますか?」と聞かれるのでA連射コントローラーでは手持ち1匹での周回しかできません。
そこで画像認識を使い、入れ替えの拒否(ついでに戦闘不能での交代も)しながら自動周回するプログラムを作成しました。

・プログラムの内容

「学園最強大会」の吹き出しがあればA数回連打。
「たたかう」のコマンドがあればA数回連打。
「最後の1匹のアイコン(交代画面)」であれば「下、A、A」入力。
どれも無ければ「B」入力。
以上を繰り返す。

・判定用画像

判定用画像

※交代画面判定は「たたかえない」が良いかもしれない。

・参考動画
youtu.be

・機材とか

ほかにジャンパー線(オス-メス)、mini USB Type-Bケーブル、Micro USB Type-Bケーブルなど

Poke-Controllerを使った「3DS自動化」の方法

Poke-Controllerとは、(剣盾以降の)ポケモン向けの画像認識を使ったNintendoSwitchの操作を自動化するためのソフトです。
Switch用なので「HDMIキャプチャによる映像取り込み」と「Arduinoによる疑似プロコン操作」によってそれを可能にしています。
tangential-star.hatenablog.jp
これをVC版ポケモンで使うための課題は
3DSの画面をカメラ映像として取り込む方法」
「疑似プロコン向けの操作コマンドを3DSに送る方法」
の2つがあります。

前者は「Webカメラで直撮りという方法」もありますが画像認識(キャプ画像と照らし合わせる方式)と相性が悪いので「偽トロでPCに取り込む方法」をとることにしました。
ですが偽トロは専用ソフトで取り込む為、そのままではPoke-Controllerが取り込んでくれません。なのでゲーム配信に使われるOBS+VirtualCamを経由させてカメラ映像として取り込む方法を使い解決ました。
(偽トロについては公式サイトを参照。オプティマイズ(電子工作・ゲームハード解析)
(Poke-ControllerはOBSの仮想カメラ機能に対応していないのでVirtualCam導入が必要。参考:【BDSP ID調整】Player BlinkとPoke-Controllerを共存させる|こちゃてす|note])

後者はController Modを組み込んでCGコンに対応させる方法(+Arduinoの疑似GCコン化も必要)もあるようですが日本国内では気軽に入手できるものではないようなのでここでは無しとします。(再現困難な方法はあまり使いたくないので)
例によって「3DSからボタンの電極を抜き出し、フォトカプラ(≒リレー)を使用してボタンを押す方法」を使う事にしました。(この方法にはFC/SFC/N64どころかどのハードにも転用が利く利点があります)
そこで問題となるのはどうやってボタン信号を取り出すかです。
基本的にどこもシリアル通信(PC-シリアル変換アダプタ間、シリアル変換アダプタ-Arduino間、Arduino-Switch間)なのでパラレル通信(各ボタンへの信号)にどうにかして変える必要があります。
そこで目が付くのがArduino部分。Arduinoにはデジタル出力(2~13の12個)があるのでそこから各ボタンへ信号を送ることができます。
問題はArduinoでシリアル通信を解読するプログラムをどうするのかです。0から書くというのはなかなか難しいです。
そこでArduinoに書き込む疑似プロコンのプログラム("Poke-ControllerForLeonardo.inoと同_Func.ino")に追加で「本来のボタン入力に連動してデジタル出力を行うプログラム」を書き加えました。
これで得たデジタル出力をフォトカプラに入力して、出力を3DSのボタンの電極に接続。それをボタンの数だけ用意する。
これで操作コマンドを3DSに送る方法が解決しました。

・ブレッドボードでの試作機

・専用基板での実用機
シリアル変換アダプタの「5V」をLeonardoの「VIN」に繋いで電源供給しています。

あとは通常のPoke-Controller同様にプログラムを制作するだけです。
注意点:十字キーを使うのでHatのimportが必要です。~.pyの5行目「from Commands.Keys import KeyPress, Button, Direction, Stick, Hat

・書き加えたプラグラム

続きを読む

ポケモン初代の回収プレイについて

初代周回プレイの備忘録。

主なチェック項目は

・複数入手できない『わざマシン○○』の使用

・IDくじ用ポケモンの回収(NPC交換利用)

・トレーナーハウス用ミュウツーの回収

・サンダー(伝説)の回収

・『ポイントアップ』『ふしぎなアメ』の使用

です。以下詳細。

 

** 複数入手できない『わざマシン○○』の使用

…の前に不要な『わざマシン○○』は売りましょう。

まず対戦・攻略に使わない1、2、3、5、7、9、17、19、20、21、22、23、25、31、33、34、35、37、39、40、42、43、46、49はとりあえず売って大丈夫です。

※一応「12.みずでっぽう(PP25)」&「11.バブルこうせん(PP20)」はルージュラカビゴンフリーザーの努力値振りに使えなくもないです。他のPP20技である「20.いかり(ほぼ全て)」「39.スピードスター(イーブイフリーザー)」「19.ちきゅうなげ(Lv21以上、ケーシィ)」も同様。

次に移動用ポケモンに使う「28.あなをほる(初代周回用リザードン、金銀周回用ガーディ&ロコン)」「30.テレポート(初代周回用ヤドラン、金銀周回用ヒトデマン努力値振りサポート用ラッキー、金銀リーグ周回用ミュウツー )」も必要数あれば不要です。

低需要の「4.ふきとばし(サンダー)」「16.ねこにこばん(カビゴンミュウツー )」「18.カウンター(ルージュラ)」「41.タマゴうみ(ラッキー)」も不要なら売って良いです。

これで上手く行けば『わざマシン50(みがわり)』に必要な154,000円(7700コイン)を確保できます。

 

使っておきたい技マシンは、

「06.どくどく(多数)」「08.のしかかり(ケンタロス)」「10.すてみタックル(ケンタロスカビゴン)」「26.じしん(親ケンタロスカビゴン)」「27.じわれ(ニョロボンカビゴンハガネール)」「36.じばく(カビゴン、トレーナーハウス用ミュウツー)」「44.ねむる(ナッシー、ラプラス、親イーブイ)」「45.でんじは(フーディンマルマイン、サンダース、サンダー)」「47.だいばくはつ(ナッシー、ゲンガー、ハガネール)」「48.いわなだれ(カイリキー、親イワーク、「はらだいこ」同時遺伝ガラガラの親にするカビゴン)」と、

金銀でも入手出来るが節約になる「13.れいとうビーム(親パルシェン、スターミー)」「14.ふぶき(ルージュラ、親ケンタロス、親ラプラス、親スターミー)」「24.10まんボルト(親マルマイン、スターミー、サンダース、サンダー)」「25.かみなり(同じ)」「29.サイコキネシス(親ナッシー、親スターミー、ルージュラ)」「38.だいもんじ(ファイヤー)」になります。

 

** IDくじ用ポケモンの回収(NPC交換利用)

初代のNPC交換で手に入るポケモンのトレーナーIDはランダムなので金銀のIDくじの当選率アップに使えます。過去記事参照。

 

** トレーナーハウス用ミュウツーの回収

通称ミュウツー 道場を用意するのに。「38.じばく」をカビゴンに使う場合は「30.テレポート」を使って金銀リーグ周回用ミュウツー にするのも手です。

 

** サンダー(伝説)の回収

「めざめるパワー(氷)」を狙い続ける…。ファイヤーも可。

マスターボール』の使い道でもあります。ミュウツー には野生パラセクトの「キノコのほうし」からの『モンスターボール』で十分です。

 

** 『ポイントアップ』『ふしぎなアメ』の使用

ふしぎなアメ』は上記ミュウツー のレベル上げに使うも売っても良し。

 

(ポケモン赤緑、青、ピカチュウ)

「無限ワット」に使ったArduinoにIDEで書き込めなくなる問題

理由は何をやったかを忘れているからである…。
error-astray.hatenablog.com
本来、Arduino IDE(プログラミングソフト)を利用するにはATmega16U2のファームウェアを「Arduino-usbserial-atmega16u2-Uno-Rev3.hex」にしておく必要があるのですが、
「無限ワット」を行う際にそこを「Joystick.hex」に書き換えて使うのでそのままだと使えなくなっているという訳です。

元に戻す手順

まず、フォルダ「C:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\arduino-usbserial」にある、
Arduino-usbserial-atmega16u2-Uno-Rev3.hex」を見つけます。

上記の記事の「マイコンへの書き込み」を参考に、
「dfu-programmer.exe」「Arduino-usbserial-atmega16u2-Uno-Rev3.hex」を同一フォルダに用意します。

ここでArduinoを接続し、下画像の赤丸箇所を金属で一瞬ショートさせてリセットします。

Arduinoのリセット

そして、そのフォルダで「Shift+右クリック」をして「PowerSell ウィンドウをここで開く(S)」をクリック。
".\dfu-programmer.exe ATmega16U2 erase"と入力(右クリックで貼り付け)して「Enterキー」を押して初期化し、
".\dfu-programmer.exe ATmega16U2 flash Arduino-usbserial-atmega16u2-Uno-Rev3.hex"と入力して「Enterキー」を押して書き込めば完了です。

dfu-programmer atmega16u2 flash Arduino-usbserial-atmega16u2-Uno-Rev3.hex

以下確認。

Arduino Uno(COM 4)に変化した
Arduino IDEでCOM4が選択可能になった

参考:
burariweb.info

VC版ポケモンの無限IDくじ自動回収機

youtu.be

Arduinoでボタン&ソレノイドを操作し、時計変更からIDくじを引く手順を自動化しています。

時計変更の手順(タッチするポイント)について

まず操作する手順を調べます。

f:id:error_astray:20220506142359j:imagef:id:error_astray:20220506142402j:image
f:id:error_astray:20220506142408j:imagef:id:error_astray:20220506142405j:image

0.メニューから”本体設定”を起動する。
1."その他の設定"を押す。
2."日付と時刻"を押す。※1.と位置の兼用可
3."今日の日付"を押す。
4."年の△"を押す。※3.と位置の兼用可
5."決定"を押す。
6."はい"を押す。※5.と位置の兼用可
(数秒待つ)日付を変更~
7."もどる"を押す。
8."もどる"を押す。※7.と位置の兼用可
9.X("おわる")を押す。(10秒待つ)

この8回押す手順で押す部分を画像のようにフィルムにトレースし、共通範囲(画像の斜線部分)を調べ、そこを押すようにすることで必要となるソレノイドを4個に抑えています。

使用した部品について

f:id:error_astray:20220506173142j:image

外部端子(A、X、上、下、HOME)を増設した3DS(ひとつ前の記事参照)。

Arduino uno(ソフトはArduino IDE)。USBケーブル(Type-AB)。USB電源アダプター。

ブレッドボードジャンパーワイヤ(単線) ジャンパーワイヤ(フレシキブル)

フォトカプラ(TLP785 ボタン用)5個

フォトカプラ(TLP222A ソレノイド用)4個。

タッチ入力装置(下記)。電源供給用のACアダプタ(4.5V)。

タッチ入力装置について

f:id:error_astray:20220506142908j:imagef:id:error_astray:20220506142950j:image
f:id:error_astray:20220506142911j:image

使用したソレノイドは「【P-10761】ソレノイド 5V ZHO-0420S-05A4.5 プッシュ型」です(秋月で450円)。
定格は5Vですが電源は手持ちのACアダプタ4.5Vを使用しています。基板との接続は適当に切った抵抗です。コネクタ・基板・ピンソケットも適当なものを使用。

メインのプラバンは1.2㎜厚(深い意味は無いので1.0㎜でも代用可)。

ソレノイドのストロークが3.6㎜程なので3㎜角棒を貼りスペーサーにする(これも角帽である意味はないので1㎜プラバンの重ね張りで良い)。

ソレノイドの画面を打つ部分にはテープを貼って傷防止。固定には瞬間接着剤を使用。

工作精度で気を付けるのは上記「1.&2.」のポイントを正しく狙う事。

そんなに動きませんが動画のようにテープ止めしておくと安心。

※画像の寸法は旧3DSと2DS専用です。

応用について

・金稼ぎ

単純に手に入れた無数の「ポイントアップ」等を売って「タウリン」系やコインに変換する。

・ぼんぐり・きのみ集め

それらの場所の上のマスでセーブすればプログラムを流用してできる。
以下はプログラムを作れば理論上できること。

 

・全自動ミュウツー 道場

時計変更→戦ってセーブを繰り返す。回復が出来ないので先発をゴーストタイプにして受けて、「がくしゅうそうち」を使って攻略用ポケモンの経験値を稼ぎます。

賞金稼ぎも出来るので「おまもりこばん」を持たせておきましょう。

 

・全自動ふしぎなおくりもの

時計変更→贈り物をしてアイテムにかかわらず配達員に話しかけてからセーブを繰り返す。(相手側は回数制限で失敗するが問題無し)

入手が大変な「ピントレンズ」「きせきのみ」を回収できる。

 

・全自動アオイのあいことば

時計変更→ラジオを聞いて、クイズに正解(1/3)してポイントを貰うを繰り返す。

貯められる上限が30ポイント、クイズの答えを選べない、18:00~23:59制限と条件は悪いものの「ふしぎなアメ(3P)」を回収できる。

使用したスケッチ(参考用)

前準備として道具の空きを作って、IDくじのカウンターの前でセーブ。
3DSのメニューアイコンの並びを「金/銀/クリスタル」の下に「本体設定」に変更。
本体設定を開いた状態で以下のスケッチを使用します。

当然ながらID収集も必須ですが30種類くらい埋まっていれば時間をかければどうにかなります。マスボ狙いならもっと欲しい。

2DSで1周1分35秒、旧DSで1周1分41秒くらい。

続きを読む

3DSの自動操作についてまとめ

SwitchにはUSB端子(プロコン)があるのでワンボードマイコン(Arduino等)を疑似プロコンにして自動操作させることができます。
ですが3DSにはそのような端子が無いので通常は物理での操作に頼るしかありません。

例:VCポケモン用の自動育成マシン
(今ならこの方法でもカムをソレノイド+マイコン制御とすればもっと自由にできるはず。音の問題は残りますが…)
ならば端子を増設しようというのがいうのがこの記事の目的です。
一度端子を増設すれば以降はSwitch同様にマイコンで自動操作を自由に組めるようになります。

必要な道具

・半田ごて
何でも良いと思いますが自分が使用しているのは工業高校指定品のこれの旧モデル。それゆえにフリマアプリを「HOZAN 工具」で探すと2000~5000円近くで買えたりします。

こて台・ヤニ入りはんだは付いて無いので別途必要。

・Y字ドライバーについて
自分が使用しているのはGBやGBAにも使えるサイズ2.6も付いた左のですが3DS系やswitch、ゴプラ、モンボPlusのみの分解に使うならサイズは1.8のみの右ので十分です。

・+ドライバー
極小のものが必要ですが100円ショップによくある6本組セットのでOKです。

・ピンバイス・ニッパー・デザインナイフ・金属/ダイヤモンドやすり等
増設する端子の穴を開けるのに必要です。ピンバイスは100円ショップのレジンクラフト用1.5㎜ので十分です。

・導通テスター
無いと結線不良が調べられないので必要です。

・小皿
外したネジを無くさない為の置き場所になります。

スマホ(デジカメ)
分解しながら撮影して元に戻す時の手がかりを作れます。

必要な材料

3DSについて
3DSは安いですが内部スペースの余裕がなく、「SDスロットのはんだを剥がして立ち上げる」という難易度高め作業があるのでおすすめしません。
3DSLLは内部スペースに余裕があり作業しやすいものの、底面のラウンド形状のせいで…背中側に出すようにでもしないと綺麗に収まらないのがなんか…ワイアレススイッチの下あたりを大きく切り欠くかコネクタ付ケーブルを生やしてしまうのも手かもしれない。
2DSは基盤の端子を付ける面がすっきりしていて作業しやすい(誤接触しにくい)のでおすすめ。また本体性能が上2つより高く「時計変更からHOMEに戻る時間が若干短い」のも嬉しい。
New3DS/LLは…持ってない!

・配線について
基盤の位置決め穴の隙間を通して使える極細のポリウレタン銅線が推奨。
自分が使用しているのは千石電商で買った「UEW ポリウレタン銅線 0.2mm 20m(https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-04KM)」。秋月なら「ポリウレタン銅線(0.29mm 20m)(https://akizukidenshi.com/catalog/g/gP-09583/)」。
使い方は切り出してそのまま使えることになってはいますが、自分は通電不良が心配なので、
1.熱した半田ごてを台に置く。
2.小手先にはんだ線を当てて溶かし玉を作る。
3.玉にポリウレタン銅線の端を2~3秒付けて抜く。
の手順で被覆を確実に溶かしつつ半田メッキして使っています。

・増設する端子について
場所を食うのが難点ですがジャンパーワイヤーを直接刺せる「ピンソケット (メス) 2×20 (40P)(https://akizukidenshi.com/catalog/g/gC-00085/)」を刻んで使っています。
ラジオペンチで金具を引っこ抜いておき、配線の片端にそれを取り付け、もう一端を基盤にはんだ付けしてから金具を刺し直すことで作業がかなり楽になります。
はんだの食いつきが悪いので銅線を取り付ける前に少量のはんだを盛っておくのがポイントです。
ピンソケットを使うと「ピンヘッダ」「リボンケーブル」を使って専用の接続ケーブルを作りやすくなるのも利点です。

作業手順

・ゲーム基盤に配線を取り付けるポイントについて
以下の記事を参照。

3DSと3DDSLLの外部端子
https://error-astray.hatenablog.com/entry/20160723

2DS端子取り付けポイント
https://twitter.com/error_astray/status/931511954304245760?s=20&t=okn6q08XC911C6hyZHFlDw

参考:2DS分解手順の記事
2DSの人気が無いのか、ゲーム修理ドットコムが人気無いのか。 めったにない2DSの修理色々
https://xn--sckyeodv22m9y1b.com/2021/03/28/2ds-repair/

・取り付けに関して
こちらも銅線を取り付ける前に基盤の各ポイントに少量のはんだを盛っておくのがポイントです。
盛った所に銅線の端を載せて、端でない部分をテープで固定、盛った所にコテ先を少し当てればはんだが溶けて結線完了です。

自動操作

・電子回路での制御について
今ではマイコン制御で十分ですが…(VC出た頃もあったけどゲームでは2019年末の剣盾無限ワットで知れ渡ったので)。
とはいえ小型かつ本体給電で動くのでこちらもまだ利点はあります。

(動画設置予定)
VCポケモン金銀用自動孵化&アンノーン狩り回路
孵化と育成の両方をこなせる金銀の自動操作回路の完成形。


3DSサンムーン用A連射&自動孵化回路
ジョイスティック操作ゆえにあまりに資料が少ない全自動ケンタロスダッシュについての記事。

マイコンでの制御について

Arduino IDEのLED制御をフォトカプラ制御に応用して操作します。
Blinkから始まるArduino入門 その4 複数LED(https://www.denshi.club/cookbook/arduino/introduction/blinkarduino4led.html)

タッチ入力ついては「ソレノイドを使った物理入力」をフォトカプラ制御して行います。詳細は次の記事にて。

ポケモンレジェンズ アルセウスの自動経験値稼ぎ

時間当たりの経験値ならオヤブンハピナス周回が一番ですが「レベリングにプレイ時間を割いていられない!」
…という大人のための「就寝中・仕事中に自動でレベル上げする方法」のまとめです。

・概要
コトブキムラの訓練場のバトルは「ノボリに話しかけるとバトルができ、戦闘後にノボリの前に戻る」という仕様となっています。
なのでA連射すれば対戦リスト最上のタキと繰り返し戦い続け、経験値を得ることができます。

そのタキの手持ちは、

ガーメイル55(虫・飛行) むしのさざめきエアスラッシュ
トリトドン56(水・地面) だいちのちから、ハイドロポンプヘドロばくだん
サンダース55(電気) 10まんボルトすてみタックル

と割と3タテ(この場合1匹かつ技1種で攻略)するのが難しい仕様になっています。
育成した伝説のドラゴンポケモンの「りゅうのはどう」やガブリアスの「ドラゴンクロー」であれば余裕の3発3タテですが「最低ライン」を探す事こそ腕の見せ所!
弱点を突く場合、飛行タイプの技ではサンダースが突破できず、電気/炎タイプだとトリトドンが、草タイプだとガーメイルが…と上手くいきません。
ですが丁度良いことにこのゲームは戦闘前にフィールドで選択しているポケモンが先発となる仕様なので、
手持ち一番上以外に「一番手」にしたいポケモンを並べて、先発として選択しておき、
手持ち一番上を「二番手」にしたいポケモンを並べておけば、
倒れた際に「二番手」を繰り出せるようになり、2匹を使って攻略することができます!

こうして「一番手」でガーメイルを落としてしまえば、あとの「二番手」の地面や草タイプの技で2タテできます。

必要ステータスは
「一番手」はガーメイルを倒せればなんでも。ムクホークレントラーバクフーンがいると良し。時空の歪みのサイドンもありでしょう。タイプが相手の繰り出す順番に影響するので要試行錯誤。
「二番手」はトリトドンを1発で倒せて電気を軽減できる草タイプ(ジュナイパー等)が理想です。トリトドン/サンダースの2体を3発で倒せれば良し。攻撃/特効は220位欲しい、出来るだけがんばレベルも上げておきたいです。
パルキアが入手できていれば少しの強化で使える…のですが一番レベルを上げたいのはその手前なのが悩ましい所。
捕獲したてのアグノムLv70でも「じばく」でガーメイルを倒し、サンダースの攻撃を1発受けてくれるので有用です。育てれば2体倒しながらの退場でより早く育てられるようになります。

・注意点
倒される先発の経験値が増えない。
図鑑を増やさないといずれ命令無視する。(ムツボシ隊員でLv85まで、ナナツボシで無制限になります。)

・必要な道具

・連射コントローラー(有線・無線どちらでも)

A連射が出来れば何でもOKです。

ただどうせならマクロ機能がある物の方が(剣盾の自動タワー等)応用が利くのでおすすめ。ただしこちらは「押しっぱなし/ターボ/連射ホールド機能」がないので洗濯バサミ等でボタンを固定しなければならない点が玉にキズ。最近は中華製コントローラーにもマクロ機能付きがある模様。

公式デザインの物。このタイプはプロコン非対応のソフト(ピカブイ)でも使える利点があります。

・USB変換コネクタ(有線コントローラーの場合。USB Type-AをType-Cに刺せるようにする為)

SwitchLiteでは必須です。通常Switchなら付属のドックでも可能。
変換コネクターは安いものだと100円ショップで「変換アダプタ(USB→タイプC)」といった名称で売られています。
ただし変換コネクターだと電池が切れてしまう(厳密には自動スリープする)ので充電もできるタイプを推奨。テレビが要らないのが何より楽。


USBハブが2ポート。4ポートの上位版もある。約2700円/約3700円

ヨドバシ.com - アンサー Answer ANS-SW108 [Nintendo Switch / Nintendo Switch Lite 用 USBハブスタンド Pocket]
USBハブが1ポート。約1700円