かけらの記録ノート

かけらの記録ノート

主にポケモンの乱数について語るブログ

【欧州版XD乱数】ID調整&イーブイの乱数調整

お久しぶりです。ここ一年程度ポケモンから離れていたのですが、暇つぶしに乱数界隈を眺めていたらモチベが出てきたので、前回に投げたXDのいますぐバトルの調査の続きをしていました。

sina-poke.hatenablog.com

 ↑こいつですね

前回から色々と試行錯誤した結果、一部の特定の条件でXDのいますぐバトルからシードの特定が可能になりました。これによって、欧州版でのみ簡単にID調整とイーブイの乱数ができるようになりました。日本XDではまだ試してませんが、名前選択時に高速消費が起こるので、難易度としてはコロシアムのID調整と同じくらいだと思います。

・色イーブイ

f:id:sina_poke:20190315170651j:plain

・ID00000

f:id:sina_poke:20190315170712j:plain

なんと、この程度なら数分でできてしまいます。また、セーブデータ未ロード下で3500/sの消費方法を見つけたので、頑張れば任意IDでの色イーブイや、特定の性格値を色にする任意IDなんかもできると思います。

色回避ルーチンあるのにそもそもID調整なんてする必要ある?と思われる方もいるかもしれませんが、それを考慮することでより狙える個体の範囲が広がるので、ID調整する価値は十分あると思います。

今までID調整にしか焦点を当ててませんでしたが、いますぐバトル下で初期シードの特定から一定数消費後の現在シードの特定までできたため、ID調整だけでなく、一般的なダークポケモンの乱数にも応用できると思います。この方法を使うことで、一部のnpc消費ありの乱数がとても楽になのではないでしょうか?まだ試してないので詳細は分かりませんが。

これだけ話を聞くと利点しか浮かんでこないと思いますが、現段階の方法では欠点があります。というのも、調査がまだ完全ではないためです。具体的には、初期シードの特定が若干不安定であることと、消費契機時に約2%程度の確率でミスが起きてしまいます。色々調査して数日悩みましたが解決しなかったので、今は諦めてそれを受け入れつつツールを作成しました。詳細はまた別の記事に書き留めようと思います。

日本版での調査や続きから始めるを選択したときの挙動に対応させたらツールを公開したいと思います。

コロシアム乱数調整 図太い1V2Uスイクン

夏休みに入ってからずっとやってた。

f:id:sina_poke:20170812205759j:plain

seed 0x01DC95D4 任意消費数 6839 強制消費1 18210
性格値 0x8DE57AF8 図太い 30-21-30-27-27-31 めざパ氷 68

昔に挫折したものを掘り返してやってみました。
全然強制消費の値が安定せず、成功まで2週間も掛かってました。
後半あたりから毎日10時間近く試行していて、全然出ずに途中で心が折れそうになりましたが、成功してくれて本当に嬉しいです!
メモを見たら計500回と少しやってました(白目)
固定しておいたのでクリア後にダイボに入れる予定です。

強制消費の値は一見バラツキがあるように見えますが、ある程度出やすいところと出にくいところがあるみたいです。
回数を重ねて出やすい消費帯を探すと良いかもしれません。
私の場合は400回中5回引いていて、前後の消費数をよく引いていた18210を狙ったところ、丁度500回目で成功しました。
消費数のメモを貼っておくので参考にしてみてください。↓↓

・ヤドヤ→放送局間 29秒での消費数

f:id:sina_poke:20170812204513p:plain

操作に大きなずれがないと思ったもののみメモしてます。
(これ以外にも100回近くはメモしてないだけでやってる)
200~300回あたりから操作を少し変えたので消費数の傾向が変わってます。
☆がついてるやつはメソッドずれの個体と良個体だったやつ(なぜかメモった)

一応このIDは臆病と控えめの5Vが光るものだったので、臆病5Vにも数回挑戦していました。
同じseedからヤドヤ→放送局間の操作時間を一定にして、消費数の再現性があるか調べてみましたが、結構バラツキました。↓

f:id:sina_poke:20170812205042p:plain
最初のNPCの動きは同じだったので序盤のNPCによる消費の再現性は取れていそうですが、ディスクを入れる時間やUFOに乗るまでの時間で動きにずれが起きてると思われます。再現性を保つにはそれらの時間も一定にする必要がありそうです。

 

第六世代孵化乱数調整のやり方

ほぼ内容が固定乱数のやつを引用してます。

準備するもの
3DS
 newやLLでももちろん可能
ORAS、XYのゲームソフト
6世代乱数用のツール
3DSRNGtool(孵化乱数他色々用の神ツール)
・エメタイマー

ゲーム内で準備するもの

マスターボール1個
・野生ポケモンを捕まえるための適当なボール
・↑用の捕獲要員(必要なら)
個体値絞り込み用の飴
 XYでは8個程度
・炎の体要員

上記準備を済ませた後、タマゴができている状態で、受け取る場所から最も近い野生ポケモンの出現するポイントでセーブする。(捕獲要因を連れてきている場合は先頭においておく)

XYはここ

f:id:sina_poke:20170609173721p:plain

事前に親の情報etcをツールに入力しておいてください。

f:id:sina_poke:20170609173217p:plain

 

1.基準となる初期seed(以下基準seed)の特定

固定乱数の項とほぼ同じ。孵化乱数では2匹目を捕まえる際はマスボではなく適当なボールでもいい。


2.基準seedから初期seedの検索

固定乱数の項と同じ。

 

3.検索開始消費数の特定

固定乱数の3.と同じように操作して初期seedを特定します。

特定後、ゲーム内でそのまま待機し、タイマーが0になるのにできるだけ合わせて野生ポケモンともう一度エンカウントします。(ぴったり合わせる必要はない)
出てきたポケモンを捕獲し、個体値を測定して個体検索ツールで検索します。
結果に出てきた消費数が拒否したときのフレーム数の目安となるのでメモしておきます。(固定乱数などで近い秒数で行ったことがある場合は飛ばしてもおk)

ソフトリセットを行い、冒頭と同じようにして起動し、初期seedを求め、出た結果を3DSRNGToolのseedに入力しておきます。

f:id:sina_poke:20170609171534p:plain
ゲーム内で兄の前まで操作し、タイマーが0になると同時に拒否をします。
※拒否を行うために2度ゲーム上でいいえを選択する必要があるので注意。

f:id:sina_poke:20170609174020p:plain
その後、タマゴができるまで走り、受け取ったタマゴを割ります。
生まれたポケモン個体値を特定し、性別や特性とともにツールに入力し、検索します。
上でメモしたフレームあたりを探し、合致するものが今回引いた消費数になります。
この行程を何度か行い、拒否時の消費数の目安を立ててください。
大体の値が分かったらツールのFrame Rangeの左側とTarget Frameに入力しておきます。

f:id:sina_poke:20170609172235p:plain

↑は270秒での結果

 

4.目標個体の検索と乱数の消費

エメタイマーを別にもう一つ起動させておき、3と同じようにして野生ポケモンから初期seedを特定します。
特定したseedからツールで欲しい個体を検索し、出た消費数(Shift/Fの値)を追加で起動したエメタイマーのフレーム欄に入力します。
ゲーム内でタマゴを拒否するところまで画面を進め、タイトルと同時にカウントを開始したタイマーが0になった瞬間に追加分の設定したタイマーを開始させます。
そして、フレームを設定したタイマーが0になると同時に拒否します。

f:id:sina_poke:20170609174020p:plain

ここで次にタマゴを受け取り、割った結果が目標個体と一致していれば成功です!
失敗した場合はどの消費数を引いたかをツールから探し、ずれを修正してもう一度4.の冒頭からやり直してください。

 

成功例

陽気5V色コイキング前記事

f:id:sina_poke:20170608222227j:plain

ORASではまだ試してないので誰かやってみてください。

おしまい

XY孵化乱数調整 陽気5V色コイキング

できそうだったのでやってみた。

結果

f:id:sina_poke:20170608222030j:plain

f:id:sina_poke:20170608222227j:plain

狙った個体

初期seed 0xcb1cc22af:id:sina_poke:20170608221123p:plain

 仕組み等は前記事に書いてあります。
展開がないので少し厳しいかと思いましたが、その分候補が多いので試行回数が稼ぎやすく普通にできました。
いつものように初期seedを特定してお兄さんとの会話で待機し、拒否するだけです。
親に赤い糸を持たせていると個体値からの判別が難しいことが難点ですかね。
今回はXYでやりましたが、ORASでも同じようにできると思います。

あと記事とは関係ないんですけどなんとなくで付けていたブログのタイトルを変えてみました。(小声)

第六世代のID調整と孵化乱数について

海外で公開されてたのを個人的にまとめただけ。

 結論から言うと、ID調整は実機では(おそらく)不可能、孵化乱数は固定と同程度の難易度で可能。(展開がないから少しは難しいかも)
※実際に検証したわけではないので間違っている可能性があります。

仕組みについて

ID調整

第七世代でおなじみのTinyMTが使われている。
mat値などは七世代同様にsampleのものと一緒の模様。statusの値をtemperした32bitの値がIDとして使われる。
どうやってもstatusの値をゲーム内から予測できないと思うので無理だと思われる。MTの初期seedと同じ値でstatusが初期化されているならワンチャンあるかもしれない。

孵化乱数

連続した2つのMTの乱数値から孵化seedを取り、その上下32bitをkeyとしてinit_by_array()で初期化されたもう一つのMTを生成し、その乱数列から個体値や性格値が決定される。乱数値の商を使う点を除き、スキームは第七世代と同じ。
単純に固定乱数と同じように1/60秒を合わせればうまくいくはず。

孵化はいけそうなので誰かやってみてはどうでしょう??

第六世代固定シンボル乱数調整のやり方

このままだと一生公開されそうにないと思ったので頑張って書きました。

※今回説明するやり方は、私が実際に行ったものであり先駆者様とは一部異なります。

【追記】
より精度の高い手法が考案されたようなので、こちらの方法で行うことをおすすめします。

larvesta10.hatenablog.com

準備するもの

 ・3DS
 newやLLでももちろん可能
ORAS、XYのゲームソフト
6世代乱数用のツール
エメタイマー
ゲーム内で準備するもの
マスターボール2個
※野生ポケモンを1回で捕まえられるなら別のボールでもおkです。
個体値絞り込み用の飴5個程度
・欲しい性格のシンクロ(必要なら)

上記の準備を済ませた後、手持ちに2匹の空きを作った状態で目的のシンボルが存在する場所から最も近い野生ポケモンの出現するポイントでセーブする。
※この時、シンクロのポケモンを先頭に置かないようにしてください。

ヒードランならここ(真ん前)

f:id:sina_poke:20170505193725p:plain

ボルトルネランドならここ(ヒワマキの右)

f:id:sina_poke:20170505193504p:plain

ここから成功までは一度もセーブをしないでください。

乱数調整の手順

1.基準となる初期seed(以下基準seed)の特定

ソフトリセットをし、A連打で続きから始めるを選択します。
フィールドに移ったらそのままできるだけ早く野生ポケモンとエンカウントします。
※ここでエンカウントまでの時間が長いと結果が出ない場合があるので注意。
エンカウントしたポケモンマスターボールで捕獲し、その後もう一度野生ポケモンとできるだけ早くエンカウントし、同じように捕獲します。
捕獲が終わったら2匹の個体値を完全に確定させ、初期seed総当りツールに入力します。

f:id:sina_poke:20170505173318p:plain

基本的に諸ツールはconfig.txtに書き込んでツール上で読み込む、という使い方をしてください。
入力が終わったらツールを起動し、計算を開始します。

f:id:sina_poke:20170505162441p:plain
全範囲の総当りが終わるまでに4時間ちょいかかります。
計算中はPCが結構重くなるのでレートにでも潜って時間を潰しましょう。
運が悪くなければ2~3時間程度で候補が見つかると思います。
候補が見つかったら結果に出た初期seedをメモしてツールを閉じます。
※候補が見つからなかった場合、検索する消費数の範囲を広げてみてください。

無事に候補が見つかったら、seedが正しいかどうか一度確かめてみます。
結果に出たseedを個体検索ツールに入力し、総当りツールに入力した個体値を検索してみます。

f:id:sina_poke:20171013233922p:plain

出てきた個体の性格が両方とも実機の結果と同じ場合、結果のseedが正しいことがわかります。
消費数の結果が総当りツールと数F程度ずれている場合がありますが、個体値と性格が一致していれば問題はありません。

 

 2.基準seedから初期seedの検索

総当りに結構時間を使っているので、今の状態では求めた基準seedと現在の初期seedの間に結構な差があります。そのため、実際の乱数調整に入る前に一度現在の初期seedを求めておく必要があります。

初期seed検索ツールに1.で出た基準seedを入力し、計算数には適当に大きい値を入力しておきます。(10000000もあれば十分)
ゲームを再起動(リセット)し、連打で起動しできるだけ早く野生のポケモン2匹とエンカウントして捕獲後、最初の1匹のみほぼ完全に個体値を特定します。(個体値の範囲は±1程度まで、2匹目は完全に特定する必要はない)
1匹目に捕獲したポケモン個体値と性格をツールに入力し、計算します。

f:id:sina_poke:20171013234029p:plain
結果が出たら、初期seedを個体検索ツールに入力し、検索します。
※場合によっては結果が複数出ることもあるので、その場合は全ての候補をツールで検索して正しいseedを探してください。

f:id:sina_poke:20171013234109p:plain
個体検索ツールの狙う個体値に2匹目に捕獲したポケモン個体値とおおよそのフレームを入力して計算し、性格とともに結果が出てくればおk。

正しい初期seedが分かったらキャンセルを選択し、初期seedの計算を中断します。

以降初期seedを検索するときは直前に引いた初期seedを基準seedの欄に入力してください。
(初期seedに経過時間のミリ秒が足されるという特性から、一度引いたseedより前のseedを引くことはない)

 

3.検索開始消費数の特定

エメタイマーを起動し、時間のところに270と入力します。
(初期seed特定から個体検索までのおおよその時間なので、短いと思ったら増やしてもおk)

f:id:sina_poke:20170505172505p:plain
ゲームを再起動し、タイトル画面(A入力で「続きから始める」に進む画面)まで進めます。
↓の画面まで進めなくてもA入力で「続きから始める」に移行する状態ならおk
XY
f:id:sina_poke:20170505194321p:plain

ORAS
f:id:sina_poke:20170505194331p:plain

ここでAボタン入力と同時にエメタイマーをスタート。
そのまま連打で続きから始めるを選択し、できるだけ早く野生ポケモンとエンカウントします。
※この時、サーチによる土煙や揺れ草が発生した場合、余計に乱数が消費されるのでリセットしてやり直してください。
野生ポケモンマスターボールで捕獲後、個体値の範囲をほぼ完全に特定させます。(±1程度まで)
初期seed検索ツールに個体値と性格を入力し、基準seedに直前に使用した初期seedが入力されているのを確認して、計算数に100000程度の値を入力し検索します。

※結果が出ない場合は計算数を増やしてみてください。

f:id:sina_poke:20171013234525p:plain
結果が出たら、初期seedをコピーし、個体検索ツールと初期seed検索ツールの基準seedの欄に上書きしておきます。
ゲーム側で固定シンボルのポケモンとエンカウントする直前まで操作し、エメタイマーが0になると同時にエンカウントします。

f:id:sina_poke:20171013235257p:plain

そのままマスターボールで捕獲をし、個体値を特定して、個体検索ツールで検索します。

f:id:sina_poke:20171013234305p:plain
結果に出た消費数が目標個体を検索するときのおおよその下限になります。
この工程を何度か行い、消費数の目安を立ててください。
(ランドの場合、270秒で行うと16200前後になるばず)
大体の目安がついたら、個体検索ツールの検索するフレームの下限にこの消費数を入力しておきます。

 

4.目標個体の検索と乱数の消費

エメタイマーを別にもう一つ起動させておき、3と同じようにして野生ポケモンから初期seedを特定します。

特定したseedから個体検索ツールで欲しい個体を検索し、出た消費数を追加で起動したエメタイマーのフレーム欄に入力します。(結果の消費数は下限の値を引いたものが出力されます)

f:id:sina_poke:20171013234325p:plain

f:id:sina_poke:20171013234422p:plain

シンクロを使用する場合はここで先頭に差し替えます。
ゲーム内で固定シンボルのポケモンとエンカウントする直前まで画面を進め、タイトルと同時にカウントを開始したタイマーが0になった瞬間に追加分の設定したタイマーを開始させます。

f:id:sina_poke:20170505190751p:plain

そして、フレームを設定したタイマーが0になると同時にエンカウントします。

f:id:sina_poke:20171013235314p:plain

ここで無事に目標個体と遭遇できれば成功です!

失敗した場合はどの消費数を引いたかを個体検索ツールから探し、ずれを修正してもう一度4.の冒頭からやり直してください。

ここで注意なのですが、消費数はおよそ60/sであって、ぴったりと1秒に60消費されている訳ではありません。同じような消費数を狙う場合は安定しますが、数万F近く離れているものを狙うと結構なずれが生じます。このことを念頭に置いて消費数を決定してください。

 同様のやり方で配達員乱数も可能ですが、その場合は個体検索時に配達員にチェックを入れて検索してください。

【追記】
XYの固定シンボルについては、ORASと生成スキームが異なるとの情報を頂きました。XYの固定シンボルの乱数を行う場合は配達員にチェックを入れて個体の検索をしてください。

 

成功例

腕白色ランドロスinゴージャス 

f:id:sina_poke:20170505204536p:plain

臆病色ヒードランinゴージャス(前記事)

慣れれば色違いがポンポン出ます。(シンクロは運ゲ)
色高個体の乱数は少し厳しいですが、誰かやってみてください。

おわり

ORAS乱数調整 臆病3V1T色ヒードラン

 仕組みが公開されてたのでとりあえずやってみただけ

結果

f:id:sina_poke:20170311232927j:plain

狙った個体
f:id:sina_poke:20170311232810p:plain

初期seed特定に使ったゴルバットくん(ちゃん?)

f:id:sina_poke:20170311233414j:plain

色々と調べながらやったので個体値は妥協気味だけどゆるして。
シンクロはまだ調べてないので運ゲでした(調査とは一体)
やり方は仕組みが公開されてる記事そのままです。
難易度は展開?がある分同様に1/60秒を合わせる3世代と比べて簡単でした。
1箇所抜け5vやただの色違い程度なら数回試行すればできると思います。