【ポケモンEm】絵画BVSeed保存自動化

 

1.はじめに

この記事は Pokémon Past Generation Advent Calendar 2023 の197日目の記事です。

ポケモンEmは「絵画Seed+BV保存法」を利用することで、簡単に理想個体を捕獲することができます。過去には「ものひろい乱数」、「バトルチューブ乱数」、「孵化乱数」に利用するためのプログラムを作成しておりましたが、固定・野生乱数で使用するような汎用的なプログラムを公開していませんでしたので、今回の記事で紹介したいと思います。(絵画Seedってなんぞやって方はコチラの記事を参考にしましょう。)

 

 

2.BVSeed保存自動化プログラム

ミナモシティのコンテスト会場で絵画選択してから、バトルファクトリーで戦闘に入る自動化プログラムです。

※ Nx Macro Controller用のプログラムです。GC(GBA)自動化の導入はこちらの記事を参考にしましょう。

 

このプログラムの拘りポイントとしては、絵画選択からレンタルポケモンを借りて、SeedがズレていないかMFMで確認し、Seedがズレていた場合、プログラムを「停止 → 実行」することで、リセットからコンテスト会場に戻り、再度絵画待機からやり直してくれます。要は、コントローラー操作が不要ということです。

もう1つの拘りポイントは絵画待機時間を決定するのに使用する変数に「フレーム」を渡すのではなく、16進数の「絵画Seed」を渡すようにしています。3gensearchの「個体逆算」や「MFM」では、フレームではなくSeedを入力するので、こちらの方が使い勝手が良いです。一応、絵画待機フレームはログに出力するようにしています。

 

 

ゲームでの準備

マクロの実行にあたっては、ゲーム側においては以下の準備をして下さい。

・ 手持ちに1匹目の秘伝技の一番上を「そらをとぶ」にする。
・ ゲームボーイプレイヤーの画面設定を「フル」にする。
・ 設定で「はなしの はやさ」を「はやい」にする。
・ マッハ自転車を便利ボタンに登録しておく。

準備ができたら、ミナモのコンテスト会場の絵画の目の前でレポートを書いてきます。

 

Nx Macro Controllerでの設定

・「Var PaintSeed」に目的の絵画Seed(16進数)を入力する。
・「Var Frame2」で絵画選択から、BVSeedを保存するまでのフレームを調整する。

目標のSeedに合わせて、双方の値を調整して下さい。絵画選択フレームが830Fよりも短い場合、+65535Fされる仕様になっています。固定・野生乱数利用の場合Frame2は目標から1000〜2000ほど前のSeedにすれば良いと思います。

 

マクロの実行

準備が完了したら、マクロを実行します。NXのオプションから、LINE Notifyトークンを設定してれば、レンタルポケモンを借りた際に通知してくれます。Seedが合っていれば、そのまま待機し、ズレていればフレーム調整後にマクロを再度実行しましょう。手動でミナモまで戻る必要はありません。

 

 

3.おわりに

欲を言えばレンタルポケモンを画像認識して、フレームがズレている場合は自動で調整できるようにしたいところですが、画像を持ってくるのもC#スクリプトを書くのも大変でしたので、ひとまずは諦めました。次回も汎用的なスクリプトを紹介したいと思います。

【ポケモン3世代】自動化プログラムを大量にアプデした

 

1.はじめに

この記事は Pokémon Past Generation Advent Calendar 2023 の190日目の記事です。今回は既存の自動化プログラムのアップデート内容をまとめた記事となります。87日目の「RSものひろい乱数自動化」から作り始めたNx Macro Controller用のプログラムとなりますが、初期の段階では使いこなせていない機能が多々あり、約100日経過した今では強引で美しくないプログラムが多々あるなぁという印象です。

直す時間が中々ありませんでしたが、多少は身辺が落ち着いてきたということもあり、一気に既存プログラムを修正を行いました。

主な変更内容としては以下の通りですが、個別で解説していきます。

・各フレームや、アイテムの回収個数を変数に値を渡すだけで済ませ、以降のコマンドを各自で修正する必要を無くした。(Var Frame = 1900、Var Candy = 9999 など。)
・OBS-Cameraから読み込んでいる方を想定して、ラグで正常に動作しないという現象を多少起こりにくくした。
・単純な機能アップ。
・ログへの出力。

なお、同時に自動化プログラム紹介記事の内容も修正しています。かなり大変でした...。

 

 

2.個別の修正内容について

RSものひろい乱数自動化

通称、生き恥マクロ。 従来はLoop数を必要なアイテム個数を合わせるために、強引な処理をしているだけではなく、画像認識範囲設定をサボっており、無駄な処理をしておりました。初めて作ったNxのプログラムということもあり、修正箇所があまりにも多いです。画像認識や、変数を大量に使うことで美しくなったと思います。

 

【修正点】

・ 変数「Candy」「PPup」「Frame1」「Frame2」に引数を渡すだけで、目標のアイテム数、フレーム調整を可能にした。
・ 各コマンドの入力に無駄をなくして、回転率を上げた。
・ レポートを書いた瞬間にリセットされるようにして、無駄な待機時間を削減した。
・ アイテム回収時の無駄な処理を無くした。
・ バッグが上限に達した場合、道具Boxに手持ちのアイテムを預けるようにした。
・ ログにリセット回数&アイテムの入手数を出力するようにした。
・ 想定外のアイテムを拾った場合の処理を追加した。
・ フレームを微調整して、拾いやすいようにした。
・ 経験値上昇ズレで何も拾えない場合の処理を追加した。

 

 

ふしぎなアメ自動使用

ものひろい乱数自動化とセットのプログラムです。各自で修正しなければならない、Loopコマンドが多かったですが、全て最初に引数を渡してやるだけで、解決できるようになりました。

 

【修正点】

・ 変数「TargetLevel」「CurrentLevel」「Change」「Cancel」「Change2」に引数を渡すだけで、目標レベルや、進化時の技の入れ替えをできるようにした。
・ ログにアメの使用回数を出力するようにした。

 

 

Emものひろい乱数自動化

やっていることはRSと同じです。こちらも考慮することが多く、修正にかなり苦戦しました。

 

【修正点】

・ 変数「Candy」「PPup」「PPMax」「Frame1」「Frame2」に引数を渡すだけで、目標のアイテム数、フレーム調整を可能にした。
・ 各コマンドの入力に無駄をなくして、回転率を上げた。
・ レポートを書いた瞬間にリセットされるようにして、無駄な待機時間を削減した。
・ アイテム回収時の無駄な処理を無くした。
・ BVなしのプログラムもバッグが上限に達した場合、道具Boxに手持ちのアイテムを預けるようにした。
・ ログにリセット回数&アイテムの入手数を出力するようにした。
・ 想定外のアイテムを拾った場合の処理を追加した。
・ フレームを微調整して、拾いやすいようにした。
・ 経験値上昇ズレで何も拾えない場合の処理を追加した。

 

 

BVSeed保存自動化

バトルチューブ、ものひろい、孵化乱数3種の5つ分のプログラムを用意しています。かなりフレーム調整が簡単になったと思います。

 

【修正点】

・変数「Frame1」「Frame2」「Frame3」に引数を渡すだけで、絵画選択、レンタルポケモン決定、BVSeed保存のフレームを調整可能にした。
・バトルチューブ用のBVは絵画選択が短いSeedに変更した。
・ログにループ回数を出力するようにした。

 

 

バトルチューブ完全自動化

個人的には最高傑作です。大きく変更点はありませんが、4箇所ある調整が必要な待機時間を一括で調整できるようにしています。

 

【修正点】

・変数「Pike」「Frame」に引数を渡すだけで、周回数、フレーム調整を可能にした。
・元々は手持ちポケモンのNNでシンボルを判別していたが、「Symbol」を"銀"または"金"の引数を与えることで、NNをつけても動くようにした。
・ログに突破数を出力するようにした。

 

 

BP自動引き換え

かなり単純なプログラムですが、その割には便利と思っています。こちらも大きな変更点はありません。

 

【修正点】

・変数「Item」「Vitamin」に引数を渡すだけで、交換数、えいようドリンクの種類を設定できるようにした。
・ログに交換数を出力するようにした。

 

 

コンテスト周回自動化

修正が少ないように見えて、実は直すところが結構ありました。色々と融通が利くようになったと思いますが、精査しきれていない部分もあるので、不具合があれば教えていただければと思います。

 

【修正点】

・ 変数「LuxuryBal」「Painting」「PPMax」「Contest 」「ContestRank」に引数を渡すだけで、ゴージャスボールの目標数、絵画上書きの有無、コンテスト部門、コンテストランクの変更を可能にした。
・ ログに参加回数&ゴージャスボールの入手数を出力するようにした。
・ Emの場合は初期のコンテストランクを設定することで、ランク解放まで自動で行うようにした。
・ なぜか女主人公に対応していなかったので、両対応できるようにした。

 

 

ポケルス感染乱数自動化

ものひろい乱数の修正内容に近いです。ものひろい乱数は奇数ズレで、ポケルス感染するSeedを永遠に引けない場合があるので、その場合の調整方法をプログラム内のコメントで明示するようにしました。「ものひろい要員」を1匹減らして、1消費調整するのが基本ですが、RSは道具消費があるので、少し調整が特殊です。

 

【修正点】

・ 変数「Frame1」「Frame2」に引数を渡すだけで、目標のアイテム数、フレーム調整を可能にした。
・ ログに試行回数を出力するようにした。
・ フレームを微調整して、感染しやすいようにした。
・ 奇数ズレで感染しない場合の調整をコメントをコマンド内に明示した。

 

 

タマゴ受け取り&孵化自動化

生き恥マクロその2。 無駄な処理が多く、見るに堪えない非効率なプログラムでしたが、変数&画像認識範囲を取り入れることで、いい感じになったと思います。ものひろい乱数ほどではありませんが、こちらも修正が大変でした。

 

【修正点】

・ 変数「Eggs」に引数を渡すだけで、孵化させるタマゴの数を指定できるようにした。
・ 無駄な処理による遅延をなくした。
・ 認識する画像を減らして、差し替えが必要になった時の手間を減らした。
・ 孵化させる数以上にタマゴを受け取らないようにした。(孵化数=受け取り数になるようにした。)
・ ログに孵化回数を出力するようにした。

 

 

孵化用メタモン捕獲自動化

各自での調整が面倒だった部分を全て変数を使って解消しました。使いやすくなったと思いますので、別の個体用に調整して共有いただけると泣いて喜びます。

 

【修正点】

・ 変数「Frame1」「Frame2」「Threshold」に引数を渡すだけで、絵画選択フレーム、メタモン出現フレーム、画像認識の閾値を設定できるようにした。
・ ログに試行回数を出力するようにした。

 

 

Em孵化乱数自動化(性格値)

消費する差分や待機時間を算出するために、Excelシートを使用する必要がありましたが、C#スクリプトを使用して、変数を与えるだけで全て調整できるようになりました。ものひろい乱数の次に修正が大変でした。

 

【修正点】

・ 変数CurrentDifferenceTargetDifferenceFrameに引数を渡すだけで、自動で残り差分の計算&待機時間の調整ができるようになった。
差分ちょうど消費できない場合や、 設定フレームが少なすぎて差分を消費しきれない場合に、ログでエラーが出力してプログラムが停止されるようにした。

 

 

Em孵化乱数自動化(個体値)

元々はBV利用にしか対応してませんでしたが、変数を使って有り無し両方を選択できるようにしています。もちろんフレーム調整も簡単にできるようにしています。

 

【修正点】

・ BVの使用有無を選択できるようになった。
・変数FrameBVに引数を渡すだけで、タマゴ受け取りフレーム、BV利用の有無を設定できるようにした。

 

 

火山灰集め自動化

ネタ要素が強く修正するか迷いましたが、やんわりと需要はあるかなと思い、一応微修正しました。

 

【修正点】

・ 変数「VolcanicAsh」に引数を渡すだけで、目標の火山灰の数を設定できるようにした。
・ ログに集めた火山灰の数を出力するようにした。(エントリーコールされた場合は、計算が狂いますが、下回ることはありません。)
・事故って野生ポケモンと遭遇した際にもプログラムを継続できるようにした。

 

 

野生努力値振り完全自動化

「ぼうぎょ」や「とくぼう」を振る場合、振りたい努力値を入力する箇所が多く、設定ミスの原因になり兼ねませんでしたが、変数一発で解決できるようにしました。また、ポケルス関連の処理を整理しました。

 

【修正点】

・変数「EVs」「Pokerus」「Chansel」に引数を渡すだけで、振りたい努力値、ポケルスの有無、進化キャンセルの有無を設定できるようにした。
・ポケルスを使用する場合にログと、実際の努力値が異なっていたため、合わせるようにした。

 

 

Em ID調整自動化

直近に作ったプログラムですが、画像認識関係を修正しました。力業で「TID」、「画像認識の閾値」を指定できるようにしていますが、逆に認識が難しくなる場合もあるかもしれません。もしご意見があれば連絡願います。

 

【修正点】

・ 変数「TID」に引数を渡すだけで、目的のTIDを設定できるようにした。
・「Threshold」に引数を渡して、まとめて画像認識の閾値を変更できるようにした。

・C#スクリプトの無駄処理「#r "./Tesseract.dll"」を削除した。(OCRを諦めた際に消し忘れた。)
・ログに引いたTIDを出力するようにした。また、引いたTIDを目立たせるため、Frame1開始~等のログが出ないようにした。

 

 

※ 修正がなかった自動化プログラム

フレーム制御等の変数が不要な自動化プログラムの中には、修正が必要ないものもありました。以下のプログラムは従来のまま更新していません。

・Em、FRLG孵化自動化
・Em野生色厳選自動化
・RSEヒンバス釣り自動化
・Em御三家乱数自動化

 

 

3.おわりに

100日間に渡り作り続けていた自動化プログラムとなりますが、ようやく修正することができました。十分に試行できていない部分がありますので、不具合等があれば筆者のX(@Natu5307051)まで連絡いただければ幸いです。

ちなみに「3世代自動化鯖」では、これまでに作成された自動化プログラムが集約されていますので、良ければ参加してみて下さい。記事で公開されていないプログラムもあります。

 

アドカレ200日目からは重めのプログラムにも取り掛かりたいと思っています。一応、3世代でこれから作られるであろうプログラムは以下のようなイメージです。早く終われば、ORCA / DOL用プログラムの移植も考えています。

 

今後作りたいプログラム

・RSE固定・野生乱数自動化
・RS絵画あり固定自動化(method4対応)
・FRLG 初期Seed集め自動化
・FRLG アキホゴジャボ回収自動化
・Em バトルピラミッド自動化
・FRLG 孵化乱数自動化
※ その他、細々としたプログラムが複数あります。

 

私以外の方が着手しているプログラム

・FRLG ストーリー自動化
・FRLG 固定&野生乱数自動化

 

破綻しているプログラム

・Co/XD リライブ完全自動化

私にダークポケモン大量に捕獲したデータを用意する時間があるわけないだろ!いい加減にしろ!

 

こんなところです。また、新しく作ったら記事にしたいと思います。

独断で決めるゲーム音楽ベスト10(綺麗な楽曲編)

この記事は Pokémon Past Generation Advent Calendar 2023 の180日目の記事です。

176日目の引き続きの記事です。少し前にアドカレで謎のBGMランキングブームが到来し、便乗して私も「カッコいい系の楽曲」を紹介しました。

 

私は「カッコいい系の楽曲」に加えて、「綺麗系の楽曲」のプレイリストも作っていたので、タイミングを逃す前にBGM紹介記事にしておきたいと思います。

なお、本ランキングは同ゲームから1曲ずつ選定という個人ルールを設けておりますが、補足で他の同ゲーム内のBGMも一緒に紹介しています。

自然体で作ったらR18ゲームばっかりになったけど、どれも素晴らしい曲だしヨシ!

 

 

圏外「しぜんこうえん」

いや、一応、"ポケモン"アドベントカレンダーだし...。文句ありますか??

 

 

10位「karma」

「ever17」のタイトル画面、バットエンドで流れる曲です。悲壮感が漂いながらも美しさが感じられる名曲だと思います。果たして何人の心を抉ったのか...。

 

 

9位「Twinkle of Alcor」

「Summer Pockets」のALKAルートで流れる曲です。本作の重要な立ち位置である「加藤うみ」のテーマ曲で、静かで切ない曲調が印象的です。「Summer Pockets」は全体的に良い曲が多いですが、他には「Childish White」、「Sea,You & Me」、「Golden Hours」が印象に残っています。本作はノベルゲーの中でもかなりのい完成度を誇るので、興味があるという方はこの作品から始めてみてはいかがでしょうか。

 

 

8位「欠けた想いを胸に抱いたまま」

「11eyes」で「赤き夜」を抜けた後などに使用される曲です。本作は「カッコいい楽曲」が多いですが、綺麗系統の楽曲でも優良なものがあります。坂本昌一郎さん恐るべし...。「夢幻抱擁」もオススメです。

 

 

7位「月姫」

「月姫」のタイトル画面などで使われる曲です。幻想的かつ綺麗な曲で、本作のメインヒロインである「アルクェイド」の"人ならざる神秘性"が表現されています。

 

 

6位「今日は誰ともしゃべらなかった」


「いりす症候群!」で「いりすのまぶたの裏のひとり遊び」で流れる曲の内一つです。カタテマ作品のBGMは魅力があるものばかりですが、本作の曲は「いりす」の狂気的な心情を感じられるBGMが多いです。10時間くらい天井を見ている」、「着信ゼロ」なども完成度が高い曲です。

 

 

5位「殻ノ少女」


「殻ノ少女」のタイトルで流れる曲です。静かで退廃的な美しさがあり、このゲームの世界観をよく表現したBGMです。「ルリノトリ」もオススメ。

 

 

4位「慟哭」


「カルタグラ 〜ツキ狂イノ病〜」のタイトルで流れる曲で、「殻ノ少女」に引続きMANYO氏が作曲した曲です。狂気的な美しさがあり、初めて聴いたときは鳥肌立ちました。メロディが天才すぎます。「月の涙」もかなり綺麗な曲です。

 

 

3位「樹里のテェマ」


「腐り姫~euthanasia~」で樹里との回想シーンで流れる曲です。あまりにも美しい。2002年に発売したゲームでありながら、揺るがぬ名曲です。他にも「腐り姫伝説」、「翠の森」、「夢のきざはし」など綺麗な曲がたくさんあります。

 

 

2位「夜の向日葵」


「素晴らしき日々 ~不連続存在~」で使用される曲です。綺麗で安らかな音色で、どこかノスタルジーな雰囲気を感じる曲です。「向日葵の坂道」でこの曲が流れたときは初めてゲームで泣きそうになりました。このゲームのBGMの完成度がとても高く、「夏の大三角」、「窓と光」、「小さな旋律」などもかなりいい曲です。3大電波ゲーの1つである「終ノ空」の設定が基になっているということもあり、「電波リレーの勝者」のような狂気的な曲も存在しますが...。

ノベルゲームとしても完成度が高く、万人向けするかは分かりませんが、魅力の詰まった作品だと思いますので、興味がある方はぜひプレイしてみて下さい。ノベルゲーの中ではサマポケと並ぶくらい好きな作品です。

 

 

1位「瑠璃子」


「雫」のメインヒロインである瑠璃子のテーマ曲です。結局、瑠璃子さんが一番綺麗です。瑠璃子さんが一番優しいです。瑠璃子さんが一番愛しいです。そんな電波系(本来の意味)ヒロインの瑠璃子を表現した素晴らしい曲です。

「カッコいい楽曲」でもそうですが、1位が圧倒的すぎて今後更新される気がしません。余談ですが、「雫」は電波ゲーの元祖であり、加えて今では当たり前に使われているトゥルーエンドの概念はこのゲームが発祥だったりします。トゥルーエンドで流れる「True End」も名曲です。

 

 

毒電波にご注意を

 

 

【ポケモンEm】進化したID調整自動化

 

1.はじめに

この記事は Pokémon Past Generation Advent Calendar 2023 の178日目の記事です。

ポケモンエメラルドにおけるID調整は自動化がほぼ必須です。TIDとSIDを両方調整するとなると、「さいしょからはじめる選択から、名前入力開始まで」、「名前入力開始から終了まで」、「名前入力終了からオダマキ博士との会話し終了まで」を全て1F単位でフレームを合わせることが前提で、更にOPでAを押すタイミングや、キー入力によって出現するIDがブレるという鬼畜っぷりです。私の知る限り、手動で任意TID&SIDの調整に成功した方はおりません。

そのため、GC自動化を使ってID調整するのが主流です。今回はNx macro ControllerでC#スクリプトを使用したマクロを作成したので、紹介します。

 

なお、EmのID調整への知識をある程度持っている方に向けた記事となりますので、「全然分からん!」という方は先行して、ぼんじり様の記事を読むことを奨めます。

 

 

2.従来のマクロとの違い

EmでID調整されている方はDOL macro ControllerまたはORCA GC Controllerを利用されている方がほとんどだと思います。DOLは「IDの画像認識」と「乱数値確認」により、ID調整に特化したツールとなり、ORCAは「タイマー機能」により、フレームの調整がものすごく楽です。加えて、どちらのツールもマクロ文法が簡単で誰でも使いやすいツールとなっています。

今回作成したNx macro Controller用のマクロはC#スクリプト使用のため、視覚的な分かりやすさや、修正しやすさは劣るかもしれませんが、「画像認識」、「乱数値確認」、「タイマー機能」に加えて、以下の機能を追加しております。

名前入力スクリプト
LINEトークンによる通知
高精度タイマーによる±1Fの確保(環境によるかも)

特に名前入力スクリプトは便利で、任意のトレーナーネームを設定するだけで、勝手に目的の名前を入力をしてくれます。要はキー入力のコマンドを書き換える作業が不要となったということです。

※ 名前入力スクリプトはフウ様が作成し、ジュナリ様がデバックしたものを、C#用に調整して使わせていただいています。ありがとうございました。

 

 

3.ID調整自動化プログラム

リセットから「さいしょからはじめる」を選択し、目的のTIDを引くまで、ループする自動化プログラムとなります。

※ Nx Macro Controller用の自動化プログラムです。GC(GBA)自動化の導入はこちらの記事を参考にしましょう。また、フレーム設定には「TIDFinder」というツールを使いますので、ダウンロードしていない方はぼんじり様のGoogleドライブより入手して下さい。

 

ゲームでの設定

・「はなしの はやさ」を「はやい」にする。
・ ゲームボーイプレイヤーの画面設定を「フル」にする。

 

Nx Macro Controllerでの設定

・「Var TrainerName」で任意のトレーナーネームを入力する。
・「Var Gender」で任意の性別を入力する。
・「Var Frame1」、「Var Frame2」、「Var Frame3」をそれぞれ目的のIDが出現するフレームを入力する。(少数単位まで指定可能。)
・「Var TID」で目的のTIDを入力するする
。(初期設定ではTID 00000用)

※ マクロ実行前にテストをしてみて、画像認識がうまくいかない場合は、画像の差し替えや、Var Threshold」の引数を変更して、閾値を増減するなどしてみて下さい。減らすと「認識しやすさ↑ 精度↓」となり、増やすと「認識しやすさ↓ 精度↑」となります。私は差し替え&閾値

 

初期設定ではFrame1=1676F、Frame2=2064F、Frame3=6609Fの固定臆病5VA7用のIDの設定にしています。この設定はSelectズレが5回で発生となり、名前入力時間も余裕がありますので、ID0狙いであれば使いまわせると思います。(Hopeさんに見つけてもらった設定に変えたら、めっちゃ安定しました。)

 

 

OP待機時間を変更するC#スクリプト

EmのIDはOPを押下するタイミングで出現するTIDが若干ズレます。目的のTIDに合わせるために、OPでの待機時間を変える作業が生じますが、手作業で設定を変えるのは大変ですので、待機時間をランダムにするC♯スクリプトを用意しています。

40行目の 「Press(A, 0.10, 7.684)」を「CallCsx(R"Aボタンをランダムな時間で押下する.csx")にして、ログを確認すれば実際に生成された待機時間を確認できます。

例えば、目的のIDが出現した際の待機時間が「9.27秒」だった場合は、40行目を「CallCsx(R"Aボタンをランダムな時間で押下する.csx")」の代わりにPress(A, 0.10, 9.27)」に変更すればOKです。

Nxのヘルプを確認すれば分かりますが、上記コマンドの0.10はボタン押下時間、9.27は押下した後の待機時間(sec単位)となります。

 

DOL Macro Controllerの「乱数値確認」機能のような使い方ができますので、ぜひ役立てて下さい。なお、Var Frame3」は初期設定だとTID確認まで時間がかかりすぎるので、750程度にしておくと回転率が良くなります。

TIDFinderで目的のIDが出現する条件を調べ、待機時間を微調整して目的付近のTIDを引き、最後にC♯スクリプトでOP待機時間を調べる...というのが、一連の流れとなります。OP待機時間変更でも弾ける気配がないという方は、「TIDFinderで別のフレームを設定する」、「Frame1、Frame2のタイマー開始 or 終了時にキー入力を追加する」、「別のOP押下箇所(43、44行目)の待機時間を変更する」など色々試してみましょう。

 

 

マクロの実行

以上の準備ができたら、マクロの実行をして下さい。Frame1とFrame2がズレることが多い場合などはTIDFinderを使用し、各自で設定を見直したり、ツールを再起動するなど色々試してみて下さい。(長時間C#スクリプトを稼働するとメモリ使用量が増加するかも?)

NXのオプションから、LINE Notifyトークンを設定してれば、目的のIDを引いた際に通知してくれます。

 

なお、C#スクリプト内の性別変更時のキー入力は何故か上下キーが反転してしまったので、うまく動作しないという方はご連絡下さい。FWの問題なのか、スクリプトにおかしな部分があるのか分かりませんが...。

 

 

画像認識について(余談)

今回作成したマクロは実機からキャプチャした画像を使用して、TIDがズレていないか画像認識しています。元々はOCRを使う予定でしたが、下処理や、閾値の設定をしても精度が中々確保できませんでした。うまく設定できれば正常に動作するかもしれませんが、GCのキャプチャ環境が人によって違う場合が多いということもあり、泣く泣く画像認識利用に切り替えました。

認識がうまくいかなかった場合、C#スクリプトのOCR処理を修正させるよりは、実機の画像を差し替えたり、閾値を変更する方が簡単かなぁと思っています。と、いいつつも、精度は完璧ではなく、「3」、「8」、「9」の違いには弱いので、コマンドを書き換えて、認識したい数字の処理を先に持ってくると安心できるかもしれません。

 

 

4.御三家乱数自動化

基本的には目的のSIDが引けているか調べるには、実際にそのIDで色違いになるポケモンが光るか実際に乱数調整する必要があります。そのため、御三家を乱数用のマクロも用意しています。

 

Nx Macro Controllerでの設定

・「Var Frame」で目標の待機フレームを入力する。
・「Var Gosanke」で任意の御三家を入力する。

 

こちらのマクロはC#スクリプトを使っていませんが、変数(Frame)に待機フレームを渡して、御三家受け取り前にコマンド開始前までの経過フレームを引いたり、待機時間をSecからGBA用のフレームレートに直すなどして、強引にタイマーコマンドチックなことをしています。書き方としてはこんな感じです。

Wait((Frame - 1098)/59.7275)

※ 1098はWaitコマンドが開始するまでの経過フレーム

 

設定ができたら、オダマキ博士の前でレポートを書いてマクロを実行します。目標の個体が色違いになるか確認し、光らない場合は前後のSIDを引いた場合の個体が光っているかを調べます。このような流れで、SIDを特定&待機時間の調整をしましょう。

 

無事に目標の個体が色違いになれば、SIDの調整も成功です。おめでとうございます

 

なお、初期設定では固定臆病5VA7用のIDで光る個体が出現する設定となっています。3gensearchを使って、各自で待機時間を調整して下さい。



5.おわりに

Nxマクロはタイマーの汎用コマンドがありませんが、C♯スクリプトを使えば解決できます。プログラミング言語は自分には難しいかなぁと思いましたが、組み始めてみたら意外と何とかなりました。

といいつつも、名前入力スクリプト(通称フウさんジュナリさんありがとうスクリプト)など、自分ではどう組めばいいか分からない部分もありましたので、少しずつ手札を増やしていきたいなと思います。

また、任意TID、TN、性別でのOP待機時間を調べるのが大変という方は、筆者のXアカウント(@Natu5307051)まで連絡いただければ、こちらで調べることも可能ですが、必ず互いの環境で成功する保証はないです。

 

今後のマクロについて

RS、FRLG、Co/XDのID調整マクロも順次作成しますが、その前に過去のマクロも修正したい気持ちが強めです。Nxコマンドの最初に変数で待機フレーム、ループ数や目標アイテム数などを選択し、それ以外のコマンドは変更する必要がないという構成にすれば、かなり他のマクロも扱いやすくなります。

また、初期のマクロは画像認識の範囲指定を使っておらず、強引な処理をしている不細工なものが多いので、公開した状態なのが恥ずかしいレベルです。特にものひろい乱数と、タマゴ受け取り自動化はひどい有様です。そんな中なので、次の記事がマクロの修正まとめになるかもしれません。

独断で決めるゲーム音楽ベスト10(カッコいい楽曲編)

この記事は Pokémon Past Generation Advent Calendar 2023 の176日目の記事です。

私はゲーム音楽が大好きで、「カッコいい系の楽曲」と「綺麗系の楽曲」それぞれ100曲ずつのプレイリストを作り、日々更新していたりします。

正直、ゲームBGMの知識とセンスでいえばそれなりに自信があるので、その中でも選りすぐりBGMを、紹介させていただきます。

ちなみに「Pokémon Past Generation Advent Calendar 2023」の「Pokémon」はポケモン勢を指しており、実際に記事がポケモンに関係するとは限りません。(適当)

なお、本ランキングは同ゲームから1曲ずつ選定という個人ルールを設けておりますが、補足で他のBGMも一緒に紹介していたりします。

 

 

10位「ツギハギプリンセス」

「ムラサキ」で、6面ボス戦で流れる曲です。凛姉ちゃん強すぎ...。ゲームの雰囲気に合いガチガチの和ロックです。1:00辺りから流れるサビ部分のギターが狂おしいほど好きです。私はこのゲームの中だと「にじいろ」も好きですが、万人向けなのはこちらかなぁと思っています。

「ムラサキ」とその続編である「ムラサキ剣」はフリーゲームで、良い曲が盛りだくさんこの機会にぜひやってみて下さい。「にじいろ」はゲームの演出とセットで聴いてほしい気持ちが強いです。

 

 

9位「戦闘!伝承者ヒガナ」

申し訳程度のポケモン要素。「ポケモンORAS」でヒガナとの空の柱での戦闘で流れる曲です。主旋律のヴァイオリンと、力強く激しい曲調が印象的な曲です。ポケモンの戦闘曲はカッコいいものが多いですが、何だかんだこの曲が一番と思っています。地味に「戦闘!スター団」も好きです。

 

 

8位「ハンターチャンス」

「FF9」で狩猟祭(とハーデス戦)で流れる曲です。緊張感と勢いがあり、テンションがぶち上がる曲です。FFの曲なら「閃光」や「The Man with the Machine Gun」も好きです。

 

 

7位「I'll Face Myself」

 

「ペルソナ4」の「I'll Face Myself」をスマブラアレンジした曲です。原曲の落ち着いた曲調とは異なり、疾走感溢れる曲になっています。他のスマブラアレンジでいえば「Aloneless」もオススメします。

 

 

6位「First star」

「魔法使いの夜」で第十二章の最終決戦で流れる曲です。躍動感溢れ、型月作品のクールな戦闘演出も相まってテンションが上がります。同ゲームではFive」も人気曲です。

 

 

5位「Esperanto」

「ロックマンゼロ4」で「エリア・ゼロ」にて流れる曲です。華やかで透明感を感じさせる音使いと、疾走感・哀愁がロックマンゼロの世界観と良くマッチしています。

 

 

4位「Hopes and Dreams」

 「Undertale」で「Pルート」のラスボス戦で流れる曲です。静かで勇壮なイントロから始まり、"本当の"最後の戦いの始まりの演出に合わせてギターフレーズと共に一気に曲が盛り上がります。「ケツイ」と「希望」が感じられる素晴らしい曲で、ラスボスBGMでは一番好きかもしれません。「Battle Against a True Hero」もカッコいい。

 

 

3位「Sunshine Coastline」

「イース8」で「名知らず海岸」で流れる曲です。疾走感のある力強いギターに透明感のあるピアノが加わり、何というかキラキラしていてポジティブな曲です。ゲームとしてもイースシリーズの中ではかなりオススメです。BGMだけではなく、戦闘や操作性も気持ちいい。

 

 

2位「天と地の境界」

「ファイアーエムブレム風花雪月」の最大の見せ場とも言える「グロンダーズの会戦」でのBGMです。級友たちの悲壮感、決意を力強く表現した素晴らしい曲です。

FE歴は長いですが、風花雪月はFEシリーズの中でも特にオススメの作品なので、ぜひプレイしてみて下さい。BGMも素晴らしいですが、ストーリー、キャラクターの掘り下げなども他の作品を軽く凌駕しています。BGMでいえば「この世界の頂で」もかなりオススメです。FEはシリーズのみでランキング作ってもいいくらい良い曲が多いです。

 

 

1位「劫の眼」

 

いや、カッコ良すぎでしょ...。「11eyes」のバトルシーンにおいて「劫の眼(アイオンのめ)」が発動した時に流れる、いわゆる「処刑用BGM」です。メロディの打ち込みが非常に強烈な疾走感のある曲です。アレンジ版もめちゃくちゃいい。今後この曲を越える曲を見つけれる自信がありません。

「11eyes」は他にも「玄月落魄」、「千刃乱舞」や「見よ、我が剣(こころ)は未だ折れぬ!」など、カッコ良い曲が大量にあり、個人ルールがなければ、「11eyes」の曲でランキングの大半を占めていた可能性があります。その中でも「玄月落魄」は2位にしていたレベルでカッコいいです。

 

 

以上となります。正直、まだまだ良い曲がありますが、特にオススメの曲を紹介させていただきました。自分のセンスに自信にある「我こそは」という方がいれば、曲を紹介していただければと思います。マイプレイリストの糧にします。

今回は「カッコいい楽曲」を紹介させていただきましたが、ノベルゲームに使われるような「綺麗な楽曲」でもランキングを作りたいなぁと考えています。

 

【ポケモンRSE】ヒンバス釣り自動化

 

1.はじめに

この記事は Pokémon Past Generation Advent Calendar 2023 の163日目の記事です。

ポケモン3世代において、入手難易度高く、野生で出現するポケモンといえばヒンバスが最初に思い浮かぶ方も多いと思います。ヒンバスが釣れるのは119番道路の水上6マスのみとなり、加えてヒンバスの出現率は50%となるため、ヒンバススポットで釣りをしても、コイキングやメノクラゲが釣れることもあるという、不親切っぷりです。

基本的には「ボロのつりざお」で虱潰し釣っていくしかありませんが、スマートさが足りないと怒られてしまうので、自動化プログラムを作成しました。

 

 

2.ヒンバススポットについて

ヒンバススポットについて、あまり知られていないと思われる知識を共有しておきます。ヒンバスを釣りたいだけなら、読み飛ばしていただいて結構です。

まず、119番道路のでヒンバスが出現する可能性のある水上マスは「440マス」の内6マスと、知られていますが、実際には「437マス」が正しいです。勝手に四捨五入しないでくれ。

また、厳密には必ずしも水上6マスで釣れるポイントがあるという訳ではありません。ヒンバススポットは、4から447までの数値を持った釣りポイントの中から6つ割り当てられています。「乱数値 % 447」が「0なら447」、「1~3なら再計算」され、6つ取得されるというような処理です。

ならば、水上マスは「444マス」ではないかと思われるかもしれませんが、実際には444マスの中で、釣りができないマスが7マス存在しています。

 

まず、「105」、「119」、「132」、「144」のポイントは岩の中に組み込まれるため、釣ることができません。

 

また、「296」、「297」、「298」のポイントはメールバグでも使わない限り、侵入できない場所となります。

 

これらのマスにヒンバススポットが割り当てられた場合、実際にヒンバスを釣れることのできるマスは「6マス未満」になる可能性もあります。たば様が作成の「ヒンバスの出現位置を推測できるかもしれないツール」に上記のポイントを入力して、検索すると分かりやすいと思います。

 

そのため、私が作成したマクロは「ヒンバスが出現しない橋の真下」を除いた437マスで、釣りを行うような構成となっています。また、ヒンバススポットは日を跨ぐと場所が移動しますが、電池切れであれば場所が変わりません。レコードを混ぜると、2P側(プラグが灰色の方)のヒンバススポットを相手に共有できますので、電池切れでヒンバススポットが判明しているROMをストックしておくと良いかもしれません。

※ 私の場合は数回試しても、2P側のヒンバススポットが共有されましたが、他の方でも同じ結果になるかは保証はできません。3P以上の場合どうなるかも未調査です...。

 

 

3.ヒンバス釣り自動化プログラム

ヒンバススポットを見つけるまで、「ボロのつりざお」で釣りし続けるマクロです。RS版とEm版の両方を用意しています。

※ 119番道路の天候に左右される可能性があるので、ご注意願います。一応、マクロ側で天候に左右されにくいように組んではいますが、場合によっては画像の差し替えや、閾値の設定が必要となるかもしれません。

 

※ Nx Macro Controller用のマクロです。GC(GBA)自動化の導入はこちらの記事を参考にしましょう。

 

マクロの実行にあたっては、ゲーム側においては以下の準備をして下さい。

・ ゲームボーイプレイヤーの画面設定を「フル」にする。
・ 設定で「はなしの はやさ」を「はやい」にする。
・ 設定で「せんとう エフェクト」を「みない」にする。
・ 手持ちに2匹目の一番上の技のわざを「そらをとぶ」にする。
・ 「ボロのつりざお」を便利ボタンに登録する。
・「なみのり」と「たきのぼり」を覚えたポケモンを手持ちに入れる。
・ 「ゴールドスプレー」をいくつか買っておく。(5個もあれば十分。)
・ 釣り成功率を上げたい場合は特性「きゅうばん」または「ねんちゃく」持ちにする。(釣り成功率が92.5%まで上がります。)
・ 手持ちに1匹目をLv30以上で、野生ポケモンから逃げれる素早さ(46以上)を確保する。

 

準備ができたら、ヒマワキシティのポケモンセンター入口から、マクロを実行します。

 

ヒンバスを釣り上げるとマクロを終了します。ヒンバススポットを控えておきましょう。

 

NXのオプションから、LINE Notifyトークンを設定してれば、ヒンバスと遭遇した際に通知してくれます。

 

 

4.おわりに

軽い気持ちで作り始めましたが、2400行にも及ぶマクロになり、かなりカロリーが高かったです。途中でマスの数が合わず、数え直していた時は発狂しそうでした。

需要は一応あると思いますので、ぜひ役立てて下さい...。釣り乱数する場合、釣り判定と天候で消費が不安定なので、電池切れEmでシンクロ&BVを使用するのを推奨します。

「偽トロ+3DS自動化基板(Qingpi)」の導入

 

1.はじめに

この記事は Pokémon Past Generation Advent Calendar 2023 の160日目の記事です。

「洗濯バサミ」で十字キーを固定する時代から始まり、マクロコンやマイコンの流行により強化されてきた「ポケモン自動化環境」となりますが、昨年度末にはついに3DS用の自動化基板が登場&販売、4~7世代における自動化環境も整備されました。

今回の記事では3DS LLに「偽トロ (LL-SPA3)」と「3DS自動化基板(Qingpi)」を両方を自力で取り付けし、ツールで自動化プログラムを動かすまでの一連の流れを解説いたします。

それぞれの具体な解説については、双方の基板の開発者様が解説しておりますので、両方を導入する際の手順の流れや、具体的に何を用意すればいいか、自動化ツールで動かすにはどうすればいいか…などを知るための参考程度に思っていただければと思います。

 

2.基板導入に必要なもの

以下に必要なものを記します。一応、私が実際に使用したものを購入先のリンクを貼っておきますが、拘束するものではありません

大半をAmazonで揃えれるようにしました。

 

 

必須のもの

3DS LL
自動化を導入する本体です。New 3DSには導入できません。ゲーム機本体のロットによっては、「USB 一体タイプ」が使用できない型があるので、注意して下さい。

 

偽トロ(LL-SPA3) 
3DSの映像をPCに出力する基板です。「USB 一体タイプ」とUSB 別体タイプ」の2種類があります。違いとしては「一体タイプ」は取り付けが簡単ですが、赤外線モジュールを取り外すので、拡張スライドパットや、amiibo等が使用できなくなります。

「別体タイプ」は赤外線モジュールを外さなくて済みますが、ケース加工の作業が増え、加えて、USBコネクタが電源ランプ付近に取り付けるため、操作性が落ちますどちらが良いというのはないので、各々のニーズに合わせて、購入しましょう。(購入先:オプティマイズ・パーツショップ

 

Qingpi
3DSに外部操作機能を追加する基板です。詳しい説明はコチラの開発者様の記事に記載されています。(購入先:BOOTH

※ 2024年6月10日現在、在庫切れになっていますが、開発者が製造方法メモを公開しておりますので、自分でJLCPCBに発注する方法もあります。

 

Type C to USBケーブル
QingpiとPCを接続するケーブルです。手持ちのもので構いません。(購入先:Amazon

 

Type B to USBケーブル
偽トロとPCを接続するケーブルです。こちらも手持ちのもので構いません。(購入先: Amazon

 

精密ドライバー +0
3DSを分解するためのドライバーです。(購入先:Amazon

 

はんだごて
偽トロ&Qingpiのフレキを半田付けする際に使います。GC自動化の時に使用したものです。値段が手ごろです。(購入先:Amazon

 

有鉛はんだ (0.6mm)
偽トロに付属する極細半田だけでは足りないので、別途半田の購入が必要です。半田する箇所によって、極細とコチラを使い分けます。(購入先:Amazon

 

精密ピンセット
フレキを引き抜く際など、要所要所で使います。(購入先:Amazon

 

ニッパー
ケースの加工に使います。(購入先:Amazon

 

ヤスリ
USBケーブル挿入口の造成など、ケースの加工に使います。私はセットで購入したものを使いましたが、幅0.8~0.9cm程度の平タイプのヤスリが1本あれば十分です。(購入先:Amazon

 

カプトンテープ
フレキシブルケーブルの固定や、仮止めに使います。(購入先:Amazon

 

はさみ
カプトンテープを切る用です。手持ちのものを使いましょう。(購入先:Amazon

 

デザインナイフ
ヤスリで削った後のUSBケーブル挿入口の仕上げに使います。百均で売ってるものや、カッターナイフでも構いません。(購入先:Amazon

 

UVレジン(ハード)
Qingpiを3DS基板に固定するのに使います。詳しくは後で解説しますが、別の方法で固定しても構いません。(購入先:Amazon

 

UVレジン 硬化用ライト 
UVレジンを固めるライトです。(購入先:Amazon

 

必須ではないがあった方が良いもの

交換用アナログスティック
3DS LLのアナログスティックはショートフレキと、旧型のロングフレキのものがあります。ショートフレキだと、偽トロ導入の難易度が跳ね上がりますので、手持ちにない方は必須級です。出品時の写真はロングフレキでも、届いたらショートフレキのパターンが見受けられますが、リンク先はロングフレキでした。後はヤフオクでもちょこちょこ見かけます。(購入先:Amazon

 

電子工作用マット
作業に使うマットです
。私が使っているマットは窪みがあり、3DSの部品を入れることが出来て使いやすかったです。(購入先:Amazon

 

フラックス
個人的には必須です。半田する前に塗っておくと、綺麗に仕上がります。Hozanでもgootでもお好きなメーカーのをどうぞ。
(購入先: Amazon

 

フラックスクリーナー
フラックス残渣の除去に使用します。フラックスを塗布する場合はこちらも買った方が良いようです。
(購入先: Amazon

 

有鉛はんだ (0.3mm)
0.6mmより使いやすいですが、高価なものしか見つかりませんでした。(購入先:Amazon

 

水性マーカー
ケースをを削る箇所の印をつける用です。(購入先:Amazon

 

はんだこて台
はんだごてセット付属のものより、しっかりしてます。
(購入先:Amazon

 

エアダスター
ケースをヤスリで削った後の粉塵を吹き飛ばして、気持ちよくなれます。(購入先:Amazon

 

交換用バッテリー
2つの基板を導入すると充電の減りも早くなるので、ついでにバッテリー容量を増やしたい方向けです。(購入先:Amazon

 

あとはPCへ音声出力したい方は3.5mmのAUXケーブル、ノイズフィルター、USB-3.5mm変換ケーブル等を買えば良いかと思います。

 

3.基板取り付け手順

冒頭にも記載しましたが、それぞれの具体な解説については、開発者様が以下のリンク先で解説しておりますので、大まかな流れや、注意が必要な点を把握するための参考程度に考えていただければと思います。

※ 導入による損害については責任を負うことはできませんので、ご了承の程よろしくお願いいたします。

 

なお、今回の手順は偽トロ(LL-SPA3)がUSB 一体タイプ」の場合となりますので、別体タイプを取り付ける際はオプティマイズ様のHPから手順を確認願います。

 

Qingpi取り付け手順

 

 

偽トロ(LL-SPA3)取り付け手順


①バッテリーカバーを外す

電源を落とし、SDカードやタッチペンを外して、精密ドライバー+0で本体底面部のネジを緩めます。ネジを緩めたら、矢印の箇所にツメを引っかけて、バッテリーカバーを手前に起こすようにして取り外します。


②バッテリーを外す

カバーが外れましたら、ツメなどを引っ掛けて、バッテリーを起こすようにして外します。

 

③ボトムケースを外す

ボトムケースのネジを外します。青丸の箇所はゴムカバーの奥に隠れているネジですので、ツメやヘラを使って、ゴムカバーを起こすようにして外します。

 

緑丸所はネジの大きさが違うため、分けておくとよいです。

 

ネジが外れたら、奥からボトムケースを起こし、奥側が持ち上がった所で手前から奥にひっくり返すように起こします。ひっくり返す際にはLRボタンのフレキシブケーブルが断線しないように、慎重に起こして下さい。

 

ボトムケースからマザーボードに繋がっているLボタンとRボタンのフレキシブケーブルを外します。赤丸部分をツメやヘラなどを引っ掛け、マザーボードから垂直に押し上げれば簡単に外すことができます。これで、ボトムケースの取り外しは完了です。

 

④マザーボードを外す

次にケースから、マザーボードを外します。まずは赤丸のアナログスティックのネジを外します。

 

ネジを外し、アナログスティックを側面側から押し上げると、マザーボードとアナログスティックを接続するフレキシブルケーブルが確認できます。コネクタの矢印側から、ツメなどを引っ掛けて垂直に押し上げるようにするとラッチが開きます。ラッチが開いたら、アナログスティックを矢印方向に持ち上げて取り外します。取り外した後はラッチを閉めておきましょう。

注意点ですが、ラッチはかなり脆いので、開く際には力を入れすぎないようにしましょう。

 

同じ要領で各種ケーブルをマザーボードから外していきます。ラッチを上げる方向は矢印方向の通りとなります。ラッチを開いた後は、ピンセットで慎重に引き抜き、全てのケーブルを取り外して下さい。

なお、左下マイク部のケーブルは、ゴム部をピンセットなどで持ち上げて、本体接続コネクタが見える様にしてから、取り外します。

 

赤外線通信ボード、音量調整ボード、無線LANカード、ストラップ部品も取り外します。全て垂直に持ち上げるようにして、取り外すことができます。


マザーボードを固定しているネジも全て外します。

 

マザーボードのゲームカードスロット側を軸にするようにして、マザーボードを起こしてひっくり返します。上画面接続用ケーブルがまだマザーボードに付いているので、慎重に起こします。上画面から出ているケーブルが損傷すると、修理に液晶ごと交換する必要があり、難易度もかなり高いので、注意して下さい。

 

⑤Qingpiのフレキシブル基板の取り付け

マザーボードとケースを分離出来たら、Qingpiの取り付けに入ります。一部のTPが偽トロのフレキシブル基板の下に位置しますので、先にQingpiを取り付ける必要があります。メイユール様の導入手順も一読願います。

 

フレキシブルケーブルをマザーボードに取り付けます。マザーボードのTPがフレキの穴から見える状態にし、カプトンテープなどを使って仮止めします。しっかりTPとフレキの穴を重なっていることを確認できたら、半田付けを行います。フラックスを使う場合は、ここで半田する箇所に塗布します。

 

半田不良があると、正常に動作しませんので、しっかりとTPへ流し込むように半田付けをして下さい。

注意点としては青枠で囲っている箇所は偽トロのフレキと重なりますので、半田の量が多すぎると、偽トロの取り付けに支障が出ますので、0.3mm半田を使うなどした方が無難です。また、半田不良があると、後から付け直すのが難しい部分となりますので、丁寧に作業を行って下さい。

半田が完了したら、カプトンテープを剝がしていきますが、剝がす際には半田部分をしっかり指で押さえて、外れないようにしましょう。

赤枠のカプトンテープはメイユール様の手順でカプトンテープで固定したままにすることを推奨されてる部分ですので、そのままで良いです。

偽トロ(LL-SPA3基板)を取り付ける前にQingpiの動作を確認したいという方は、一度組み直して、ここで接続テストを行います。



⑥LL-SPA3のフレキシブル基板の取り付け

Qingpiの基板と同様に取り付けます。配置は画像のようにして、LL-SPA3基板(USBコネクタがついてる基板)はマザーボードの下側に位置させます。基板の穴が小さく、密集しているので、半田は付属の0.3mmの極細半田を使った方が良いです。こちらも半田不良があると映像出力できませんので、丁寧に作業しましょう。

 

⑦ケースの加工

フレキの半田作業が終わりましたら、ボトムケースの加工に入ります。(先にアナログスティックの加工をしても良いです。)

まずはQingpiの基板が重なる箇所の赤囲い箇所の突起を切り取ります。ニッパーを使って、大まかに切り取った後、ヤスリ等で均すのが楽です。

 

次にLL-SPA3基板と重なる部分の加工です。赤囲いの箇所をニッパーや、デザインナイフ等を駆使して切除します。

 

こちらは一体タイプ限定の作業になりますが、ネジで固定されているLボタンの押さえ部品を取り外して、加工する必要があります。外す際にLボタンのスプリングを飛ばして紛失しないように注意して下さい。

 

赤囲いの部分をまるごと切除します。青囲いの窪み内の部品は、バッテリーカバーのネジのナットとなっていますが、押さえ部品を切除したことにより、固定されていない状態になります。機能上の問題はほぼありませんが、バッテリーカバーの片方のネジを締めることができなくなりますので、テープや、部品と窪みの隙間をレジン等で固定するなどして固定すると良いです。

 

こちらも一体タイプ限定の作業です。赤外線が透過する黒いアクリル部品がありますが、こちらを取り外した穴からUSBコネクタを引っ張り出すため、外す必要があります。部品の下側をピンセットなどで手前に持ち上げると外しやすいです。


次にQingpiのUSBコネクタを出す穴をケースを、ヤスリで削るなどして造成します。フレキに基板を接続し、穴の開ける位置を確認すると綺麗に空けれます。

※ ケースにマザーボードを戻す際にフレキが、マザーボードに潰されないように注意して下さい。断線の原因にもなります。

 

ボトムケースを重ね、USBコネクタを削る位置を水性ペンなどで印付けすると作業がラクです。気持ち的にはボトムゲース側を多めに削った方が良いかと思います。


場所が決まったら削っていきます。コネクタと幅が同じくらいの平ヤスリがあると、作業がかなり楽です。


同様にボトムケース・バッテリーカバーも削ります。削りすぎていないかこまめに確認しながら、作業を進めると良いです。※ バッテリーカバーを削るのは最後の組み立て時でも問題ありません。

 

最後にデザインナイフで整えると綺麗に仕上がります。

 

以上でケースの造成は終わりです。最終形は画像のようになります。

 

⑧アナログスティックの取り付け

ここの作業はオプティマイズ様のHPで詳しく解説されているので、そちらを見た方がよろしいかと思いますが、一応流れを書いときます。

アナログスティックのケーブルを接続するコネクタは、LL-SPA3基板の下側に位置するため、基板に設けられている穴からケーブルを通して接続する必要があります。アナログスティックは旧版のロングフレキと、新しいショートフレキの2種類あり、ショートフレキだと難易度が格段に上がりますので、旧版がなければ、別途買っておくことを強く推奨します。

 

また、新しいアナログスティックの場合はスティック自体にも加工が必要です。新しいアナログスティックはフレキが短いだけではなく、赤丸の部分が高く作られています。


このため、無理やり取り付けるとスライドパットの操作性が損なわれる恐れや、LL-SPA3基板と干渉して、フレキが損傷する恐れがあるため、白いプラスチックの部分を切除する必要があります。新しいアナログスティックを使用している方や、古いアナログスティックでも、少しでも高さを削りたいという方は以下の作業をして下さい。

具体な手順ですが、デザインナイフを使用して、三角の部分(写真丸印)をまず切除します。加工の際はフレキや、下側の基板に力を入れて損傷させないように注意して下さい。

 

そして白いプラスチック板の付け根の部分をデザインナイフで軽く切り込みを入れます。

 

その後、プラスチック部分を手前に折ります。軽く力を入れても折れないようであれば、再度切込みをいれます。写真のようになれば成功です。


フレキをコネクタに少しでも、の先端を写真のように軽く折り目を入れておきます。折り目を入れる位置は、フレキ先端に貼ってある補強板とフレキの繋ぎ目になります。


最後に付属の絶縁テープを端子の金属部分に貼ります。これでアナログスティックの加工は完了です。

 

アナログステックの加工が完了したら(もしくは旧版なら)、実際の取り付け作業に入ります。基板をまず、LL-SPA3基板を写真のように仮止めします。

 

その後、アナログスティックのケーブルをLL-SPA3基板の穴に通します。下側にあるコネクタのラッチを上げて、ピンセットを使って、コネクタにフレキを軽く挿入します。
ケーブルの先端が挿入できたら、ラッチをピンセットの先で閉じます。ピンセットでケーブルを軽く引っ張って抜けなければ接続完了です。

 

⑨電源の配線

LL-SPA3の電源を配線します。Qingpiの基板は半田する際の支障となるので、一度外しておき、フレキも仮止めしておくと良いです。

配線ポイントは写真のチップコンデンサの足になります。まず、極細半田をチップコンデンサの足に盛り、ピンセットで配線材をコンデンサの足に近づけて、盛った半田にこてを当てて配線を行います。配線材は案外基板から抜けやすいですので、配線材に力が入らないようにしましょう。

 

うまく接続できれば写真のようになります。以上でLL-SPA3基板の取り付けは完了です。

 

⑩動作テスト

Qingpiをマザーボードに固定する前に、部品を組み戻して動作確認をします。フレキをコネクタに差し込む際はピンセットを使って、慎重に行います。

なお、マザーボード固定用のネジ穴の内、裏面のフレキと重なる箇所については使用できなくなります。他の3か所で固定するので、写真の状態で組み立てても問題ありません。

 


忘れがちなのが、音量調整ボードと、ワイヤレススイッチがレバーと噛み合っているかの確認です。また、LL-SPA3基板に隠れているフレキの接続漏れがないか確認しましょう。

 

フレキの接続が終わったら、LL-SPA3とQingpiを接続して、動作確認を行います。使用ソフトやキャプチャ方法は次項で解説するので、そちらを参照願います。不具合があった場合は半田不良や、フレキの接触不良などがないか、見直してみて下さい。うまく動作確認ができたら、Qingpiの固定に移ります。

 

⑪Qingpiの固定

最後にQingpiを基板に固定します。メイユール様が紹介している手順に従って、「詰め物」を用意して固定しても良いですが、私はハードタイプのUVレジンを使用しました。レジンはしっかり固定でき、使いやすくてオススメですが、導入後に不具合が発生した場合にマザーボードの取り外しての修理が難しくなります。一応、強引に外せなくもないですが...。

 

レジン液を、マザーボードとQingpi基板に固定できるよう垂らします。UVライトが当たらない箇所は固定できないので、Qingpiの裏面にはレジン液を垂らさなようにして下さい。

 

その後、赤外線ライトを当てれば直ぐに固まります。ハードタイプだと、しっかり固定できるので、重宝しています。本当に何かと便利です。

 

⑫組み立て

Qingpiの固定が終わったら、3DSを組み立てます。なお、「マザーボード固定用のネジ1本」、一体タイプの場合は「赤外線ポート」および「赤外線透過用のアクリル部品」は使用しませんので、手元に残ります。

 

ボトムケース、バッテリーカバーを組み立てれば完成です。お疲れ様でした。導入した感想としては、Qingpiははんだの経験さえあれば素人でも簡単そうですが、LL-SPA3はやや難しいかもしれません。

 

 

4.自動化ツールのインストールから実行まで

ここでは自動化基板導入後に、ツールで3DSを操作するまでの手順を紹介します。

①3DSの画面をPCに映像出力する

まずはLL-SPA3にケーブルを繋ぎ、PCと繋いでソフトを起動し、3DSの映像をキャプチャーします。

こちらに、3DSの画面を表示するためのビュアーソフトがあります。以下のサイトからn3DS_viewとかかれた旧3DS用のビュワーをダウンロードします。

 

ダウンロードしましたら、次にデバイスドライバをインストールして、LL-SPA3を認識させる必要があります。ビュワーソフトを解凍したときに出来る「driver」フォルダー内の「install_driver.exe」を実行し、デバイスドライバのインストールを行ってください。その後、「n3DS_view.exe」を実行し、LL-SPA3とPCとをUSBケーブルで繋げば3DSの映像を取り込むことができます。

取り込みの際にプロダクトキーの入力が求められた場合、LL-SPA3に同封されているシリアルナンバー、プロダクトキーが書かれた紙に書いてある文字列を入力しましょう。

 

 

②自動化ツールの導入

Poke-Controller MODIFIED(Extension版でも可)またはNx Macro Controllerという使用します。それぞれのツール導入方法は本記事では解説しませんので、導入ができていない方は以下のサイトを参照願います。

 

Poke-Controller MODIFIED(+Extension版)のインストール

※ 参考 タッチスクリーン入力自動化の導入

Poke-Controllerは導入直後のそのままの状態ではタッチスクリーン入力の自動化ができず、「qingpi-python」をPoke-Controllerと同じ環境にインストールする必要があります。

注意点としては、qingpi-pythonのインストールには「Python3.10以降」が必要です。PokeConの環境を「Python3.7」で構築している場合はqingpi-pythonが動作しませんので、batファイルでPythonの環境構築後に「PokeCon Extention版の導入」の記事を参考にPython3.10以上で再構築します。

再構築が完了しましたら、コマンドプロンプトを起動し、以下のコマンドを実行して、「qingpi-python」をインストールします。

※ ディレクトリは各自で異なると思いますので、各自で修正して下さい。

C:PokeConPoke-Controller-Modifiedpythonpython.exe -m pip install qingpi-python

 

2024/05/18 追記

 「Python3.10以降 + qingpi-pythonのインストールが必要」と記載いたしましたが、こちらはPoke-Controller Modified ExtensionでQingpiに対応する前(ver.0.0.5以前)の話となりますので、ver.0.0.6以降では「qingpi-python」のインストールは不要であり、Python 3.9以前でも動作します。詳しくは開発者であるフウさんの記事に書いてあります。また、PokeConでの設定や、マクロ用で使用する関数も紹介されておりますので、ぜひ参考にして下さい。

 

 

 

Nx Macro Controllerのインストール

記事内の必要環境に記載されている内容は「Switch自動化」を想定したものです。LL-SPA3とQingpiを導入した3DS LLがあれば問題なく動かせます。

 

 

③自動化ツールへの映像取り込み

上記の自動化ツールは画像認識を利用した処理をすることができますが、n3DS_viewの映像を直接自動化ツールに取り込むことができませんので、「OBS Studio」を経由して、映像を取り込む必要があります。

手順としてはまず「ソース」の「+」をクリックして、「ウィンドウキャプチャ」を選択します。



ウィンドウは「[n3DS_view.exe]: nonstd 3pairs Diff Signal Viewer」を選択してOKを押します。

 

すると3DSのキャプチャ映像をOBSに取り込むことできました。次に「仮想カメラ開始」をクリックして、OBSの出力をカメラ映像として認識させます。

 

カメラ映像として認識できるようにすることで、自動化ツールの映像で「OBS-Camera」を選択できるようになります。

 

Nx Macro Controllerの画面

 

Poke-Controller MODIFIED(Extension版)の画面

 

 

Nx Macro ControllerとPoke-Controllerの比較

2つの自動化ツールがあるが、どちらを使えばいいの分からない」という方もいるかと思われますので、それぞれの特徴についての紹介します。どちらが正解ということはなく、明確に機能が違う部分があります。

 

Poke-Controllerの特徴

Poke-Controllerの特徴は何と言っても「タッチスクリーン入力が使える」ということです。タッチスクリーンが必要な自動化プログラムを作成する場合はPoke-Controllerの使用が必須です。自由度でいえばPoke-Controllerの方が優れます。

デメリットを挙げるとしたら、Pythonを使用するため、自動化プログラム作成のハードルが高いということでしょうか。

バッチを叩いて、純粋かつ綺麗な曲を演奏します。使わせていただいたスクリプト →(Github : バッジを磨いて神社

 

 

Nx Macro Controllerの特徴

Nx Macro Controllerはゲームパッド機能を使うことで、任意の外部コントローラーを使用して、3DSを操作できることが強みの一つです。据え置き型ゲームのように利用できるため、消耗品(?)である3DS本体を直接操作しなくていいのは嬉しいです。また、コマンドが単純なので、素人でも簡単に自動化プログラムを組むことができるのは大きなメリットです。

デメリットは、現状タッチスクリーン入力に対応したコマンドがないことです。これはかなり致命的です。

 

 

5.Qingpi独自ツールの紹介

①qingpictlの紹介

Qingpiの開発者様が公開しているアプリケーションについても紹介します。こちらは「qingpictl」というPCからのキーボード&マウス操作から、3DSのボタン入力&タッチ入力が可能になるアプリケーションです。

起動方法ですが、「qingpi-python」をインストールした環境で、以下のコマンドを実行するだけです。[port]はCOMポートのことです。例えばQingpiのポートが「COM3」なら、「python -m qingpi COM3」とコマンドプロンプトで実行すれば起動できます。

$ python -m qingpi [port]

 

タッチスクリーン入力をしたい場合は、透過ウィンドウにキャプチャ画面に合わせて、マウスドラッグすればOKです。

 

各種操作はコチラのGithubに記載されておりますので、参照して下さい。

 

 

②remote play 3DSの紹介

次に紹介するのは「remote play 3DS」というアプリケーションです。こちらもQingpi開発者様が公開しており、ブラウザから3DSを操作することができます。

 

実行には「remote-play-3ds」のライラブリが必要となり、こちらは「Python3.12以上」でサポートされています。バージョンを指定してインストールする場合は、「py -3.12 -m pip install remoto-play-3ds」とコマンドプロンプトで実行します。

$ pip install remote-play-3ds

 

これで「remote-play-3ds」のライラブリがインストールできたと思います。

なお、実行にあたっては「n3DS_view」と「OBS」の双方で設定が必要です。以下のGithudを下にスクロールすると「Setting」と書かれており、そちらが必要な設定です。

 

「n3DS_view」では「等倍調整」から「dot by dot x1」を選択、「フィルター」から
「no filte」を選択します。「OBS」では「設定」→「映像」から解像度を「400×499」にし、ソースを右クリックして「出力サイズを変更(ソースサイズ)を選択します。その後、Virtual camera(仮想カメラ)を開始すれば準備は完了です。

準備ができたら、アプリケーションの実行に移ります。次のコマンドをコマンドプロンプトで実行します。$PORTはCOMポートで、$INDEXはカメラ番号です。例えば、COMポートが「COM3」、カメラ番号が「4」でpython3.12環境を指定する場合は「python3.12 -m remote_play_3ds COM3 4」と実行します。

> python -m remote_play_3ds $PORT $INDEX

 

すると「Running on http://192.168.11.2.5000」と表示されるので、Ctrlキーを押しながらクリックすると、サーバーにアクセスできます。

以下のような画面になれば成功です。ブラウザのボタン入力通り応じて、3DSをリモートでコントロールすることができます。

 

 

6.おわりに

以上となります。ポケモンにおいては8世代以降だけではなく、3世代では「jiangtun」による自動化環境が構築され、ついには「Qingpi」によって4〜7世代の自動化まで出来るようになりました。双方の開発者であるメイユール様にはホント頭が上がりません…。本記事の査読もしていただき、本当に感謝申し上げます。

現状はDS〜3DS用の自動化プログラムがほぼ公開されていませんが、3世代の自動化を一通り整備できましたら、順次4世代から対応していきたいなと考えています。3世代自動化鯖を、3〜7世代自動化鯖に拡張する計画もあるとかないとか...。興味がある方はコチラから参加できます。(掲載許可はいただいてます。)

この記事を見て、3DSの自動化に興味を持たれる方が現れると幸いです。近い未来に訪れるであろう4~7世代の自動化ブームに備えて、今のうちに環境を整えておきしょう。