サイファーの日記

過去作の乱数について書きます

7世代で6Vメタモンゲット

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

 

scrapbox.io

 

1.はじめに

今回は、ウルトラサンムーンで野生産6Vメタモン(CHT)の捕獲に挑戦していきます。実は4年前くらいに同じ内容の乱数調整を成功させたことがあるのですが、今その個体が手元に存在しないので再度やってみることにしました。

前回と異なり次の2つの点で工夫しました。

1点目は、針読みから6V個体の検索まで全て自動化することです。野生の6V個体の出現率は1/32^6=1/1,073,741,824ともの凄く低いので自動化しないとかなり大変だと思います。メタモンのスロットが選ばれる確率は10%なので、実際はそれよりも更に低い。

2点目は、進化時の瞬きを利用することです。最速バッグ開きなどの手法では確実性に欠けるので、目標フレームを100%狙い撃ちできるこちらの手法を採用します。*1

以下ではそれぞれについて説明していきます。

 

2.自動化

まずは針読みです。7世代では、針読み作業を円滑に行うために「ニードルリード」というツールが存在します。

↓ニードルリード作成者様の記事

takedpok.hatenablog.com

 

このツールでは、偽トロやミラーリング機能などを使って現在どの針が現れたかが画面上に表示されます。今回も自動化のため使用しましたが、停止した画像から判断できるのでとても便利です。しかし、こちらのツールには針番号を自動で出力してくれる機能までは備わっていません。

そのため針の自動化は、ニードルリードで針の画像を取得→針番号の判定は自分でプログラムを用意して行う、という2段階構成で行いました。後者の方はシンプルなテンプレートマッチングです。

十分な数の針番号を取得したら、次は初期seedの計算です。こちらはプログラム内でAPI(https://rng-api.odanado.com/usm/sfmt/seed?needle=9,10,7,11,12,15,7,7)を叩いて行いました。針を10個分入力すればほとんど1つに絞り切れました。ただし、あいまい検索ができないのでたま~に特定に失敗することがある。

最後は個体検索です。野生の処理は下のサイトを参考にしました。スロット決定と個体値決定の間には64くらい消費されているようです(多分)。

github.com

 

主なプログラムは以上です。あとはハード面。偽トロを入れたnew 3DS LLは自動化機能まで導入していないので物理的にボタンを押す必要があります。下のポストのように、十字キー下とA,Bボタンを自動で押せるようにサーボモーターとそれを固定するためのクランプを使いました。サーボはArduinoとのシリアル通信を使って動かします。


初期seedのリセットはソフトリセット用のコマンドではなく、ふしぎなおくりもの or ライブ大会の画面を経由して行います。この仕様、あまり知られていない...?

ちなみに、ライブ大会画面の中で十字キーを押しっぱなしにしているとBボタンの反応がなぜか悪くなりました。バグだろ。それゆえ、十字キー下を洗濯バサミなどで固定する方法は使えません。

 

3.進化時瞬き

「Consider Delay」にチェックを入れ、「0」に設定。補正は「27」です。NPCは初期設定の「0」。QRスキャンを閉じてからバッグに入る間に約120消費されるようなので、200消費くらい手前のQRを見てからバッグに入り進化させるのが良いと思います。

7genBlinkSearchのタイマーで目標フレームまで消費してからあまいミツを使用したら成功するはず。

場所はこの辺

 

4.結果


ゲットした。

悪あがきが面倒くさいので即マスボで捕獲しました。性格も悪くないはず。

とりあえず考えたやり方がうまくいって安心しました。実績解除したい人はぜひやりましょう(現在2名)。もっと極めたい狂人は野生産の色5Vもやりましょう。