見出し画像

【エメラルド】 絵画seedと6Vメタモン

こんにちは。すいかです。
最近発見された絵画seedを使って6Vメタモンを捕まえることに成功したので、実際に行ったやり方を備忘録として書いていきます。
この記事は以下の前提知識があればより読みやすくなると思います:

  • 高個体値メタモンを野生乱数で厳選したことがある(あまいかおり使用)

  • BV保存法を用いた乱数調整(固定シンボルなど)をしたことがある

絵画seedとは?

絵画seedとは、初期seedがミナモ美術館や各地コンテスト会場に飾られている絵を見たときのフレームカウンタの値に変化し、そのタイミングでフレームカウンタも消費数が0に戻るという現象のことです。これを使用することで、今までは約1ヶ月ほど待機しないとゲットできなかった6Vメタモンがわずか1時間足らずで捕まえられるようになりました。
例えば、ソフトリセット(A + B + START + SELECT)した時点から43981F経ったタイミングで絵を見ると、それ以降の初期seedは0xABCD(43981を16進数に直すと0xABCD)に変化して、またフレームカウンタは消費数は0からスタートします。もし「初期seedが0xABCDで20000Fに出てくるポケモン」を捕まえたい場合は、絵を見てから20000F待たなければなりません。
また、絵を見たタイミングでフレームカウンタはリセットされないため、43981F経ったタイミングで絵を見て、その後さらに19F後にもう一度絵を見ると初期seedは0xABE0になる(0xABE0を10進数に直すと44000 = 43981 + 19)。
よって、上記の例のポケモンを捕まえる時の大まかな流れは「絵の前でセーブ&ソフトリセット ------> (43981F待機)------> 絵を見る ------> (20000F待機)------> ポケモンと遭遇」となります。この「絵を見る」から「ポケモンと遭遇」まではBV保存法が使えて、なおかつバトルファクトリーで最初に見せられる6体のポケモンから目当ての初期seedが引けてるかどうか確認できるツール(MFM)が存在するので、ぼくは絵を見た後にバトルファクトリーに行って初期seedの確認を行ってました。

使用ツール

自分が6Vメタモンを捕まえるために使ったツールは以下の3つです。
各ツールを作ってくださった方に感謝です!ありがとうございます!!:

  • 3gensearch v2.5.3 -> 6Vメタモンとそれが出る初期seedを探すもの

  • MFM -> バトルファクトリーで欲しい初期seedを引けたか確認するもの

  • CCTimer -> 2つ以上セットできるタイマー

3gensearchのhitobashira版には絵画seed関係の機能が追加されているとのことです。
MFMを使用することで初期seedのチェックと同時にBV保存法を使えるのでとても便利です。
とくせい「シンクロ」を使って高個体値メタモンを捕まえる場合、その候補が1つしかないという状況はほとんどないと思います。絵画seedを使う場合も同様で、たいてい数F間隔でその候補が点在してるはずです(1つしかない場合もありますが)。よって絵画seedのキモは初期seedを決める部分にあって、その先の目当てのメタモンを引く部分は楽できることが多いです。なので初期seedの候補がいくつかある場合はできるだけその待機時間が短いやつを選ぶのがオススメです。
CCTimerでは絵を見るタイミングとBV保存するタイミングの2つを入力して使うことができます。ぼくはいつもエメタイマーでカウントダウンしてからソフトリセットしていて、それと同様のことをしたくなったので180F(=3秒)も追加して待機してました。

やり方

ここからは厳選中に撮影した写真と共に書いていきます。使用ハードはGBASPで、全部手作業で行いました。
まずは6Vメタモンが出る初期seedを 3gensearch で探します。今回は「初期seedが0x0A16、19904Fにいる"のうてんき"の6Vメタモン」を例に書いていきます。待機時間が短めなので絵画seedの練習にピッタリだと思います。
0x0A16を10進数に変換すると2582となるので、ソフトリセットから2582F経った瞬間に絵を見ます。その後はバトルファクトリーに行ってポケモンをチェックして、見事0x0A16が引けてたら17000Fほど待機してから戦闘開始、引けてなければ即降参してふりだしに戻る、といった流れになります。
ぼくは絵はミナモシティにあるコンテスト会場1階の一番右の絵を見てました。一番左の絵だと待機中に道着を着ているNPCがうろうろして不安だったためそこで待機しませんでした:

ミナモシティのコンテスト会場1階

ここで2582F経った瞬間に絵を見て、すぐバトルフロンティアに直行します。前述の通り、同時にBV保存も行いたいのでバトルファクトリーにいきます。
ここからはMFMを使用します。MFMの「狙っているseed(フレームで入力)> 」には目当ての初期seedを10進数に直したもの(この例だと2582)を入力してエンター。その後は指示に従ってポケモンを入力していきましょう。その時の写真はこちら:

ポケモンを入力しても結果が帰ってこないことがしばしばありました。理由はよくわかりませんが、受付から奥へ連れて行かれた後の研究員の会話をAボタン連打でスキップぜずにゆっくり(噛み締めるように)Aボタンを押して進めていくとそのようなことは起こりにくくなったと思います。
絵を見てからバトルファクトリーに行って、ポケモンを入力して初期seedをチェックするまでの時間は長くても大体3500Fくらいでした。
目当ての初期seedを見事引けると括弧内が「!!!」となります。GBASPの画面には、目当ての初期seedが引けた時の残りの3匹を表示させています。
写真内の「148:66」というのはBVに保存するための残りの待機時間です。19904Fの個体が欲しいので、この時は絵を見てから17000F待機するようにタイマーをセットしました(あまいかおりの待機時間を考慮すると18000F待機でも良かったと思います)。もちろん、この17000F待機中にバトルファクトリーに移動、初期seed確認のためにPCに入力、などといった作業をしなければなりません。なので絵を見た後の待機時間が5000Fの個体とかだと厳しいと思います。
ポケモン選択後にすぐ奥に連れて行かれます。奥で対戦相手のNPCのセリフが出てからAを押すとすぐ対戦に入るので、タイマーがなってからAを押して戦闘開始してました。この辺はBV保存法のやり方と同じだと思います。下にNPCと対面してたときの写真を載せておきます(例と違う数値ですごめんなさい。。。この時は初期seedが0x3D7DのA05Vメタモンを厳選してたときの写真です)。

ここでは「しゅみ スポーツ…」というセリフで待機。タイマーが0になるとAを押して戦闘開始

戦闘開始して負けないとBVが保存できないことに注意しましょう。せっかくの努力が水の泡です。ここで負けるのが案外難しかったりしますが。。。
その後の手順はBV保存法を利用したメタモン厳選と変わりません。目的のメタモンが引けたら幸いです。

余談ですが、この例ではBVには「初期seed 0x0A16で、約17000F待機した」という情報が詰まってます。このBVに36000F分継ぎ足してみました。そうすると初期seedは変わらなくて、合計約53000F分のBVになってました。なので絵画seedを使って数百万フレーム待機しなくてはならない場合も思う存分継ぎ足せますね!

ここまで読んでいただきありがとうございました。

(補足) 乱数調整の用語

自分が調べたものを簡単にまとめます。本記事に出てきた用語の解説も兼ねてます。
間違いなどがあればご指摘いただけると幸いです。

ランダムな数列、つまり$${x_0, x_1, x_2, …, x_n}$$から$${x_{n+1}}$$を予測できない数列のことを乱数列という。
乱数列の各要素($${x_1}$$や$${x_2}$$など)のことを乱数という。乱数のことを単にseedと言ったりする。
漸化式によって決められた乱数列を疑似乱数列という。ポケモンでは線形合同法という乱数生成法によって乱数列を計算している。線形合同法の漸化式は以下のような形をしている(ここで$${M > P, M > Q, P > 0, Q \ge 0}$$):
$${x_{n+1} = (P \cdot x_n + Q)   \mathrm{mod}   M}$$
線形合同法により乱数列を生成する時、初項を与えないと生成できない。その初項$${x_0}$$のことを初期seedという。

ポケモンでは(漸化式により)新しい乱数$${x_{n+1}}$$が生成されたとき、乱数が消費されたという。
フレームカウンタとは、黒い背景にロゴが4つ出る画面をゼロとしてゲーム画面を何回更新したかを表す数字。時間経過の単位。エメラルド(というか第3世代GBAソフト)では、1秒間に画面が60回更新されているため 1フレーム = 1/60 秒 となっていて(以下、フレームを F という記号で表す)、1Fごとに乱数が消費されている。
消費数とは、特定のseed(主に初期seed)からいくつ消費が進んだかを表す数字。添え字の$${n}$$に対応する。
NPCが動いたりするだけで消費する(=消費数が変化する)ので、一般には「待機したフレームカウンタの値=消費数」とはならないことに注意。


いいなと思ったら応援しよう!