かけらの記録ノート

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

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

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

準備するもの
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秒を合わせればうまくいくはず。

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

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

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

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

準備するもの

 ・3DS
 newやLLでももちろん可能
ORAS、XYのゲームソフト
6世代乱数用のツール
-6/2 個体検索と初期seed検索ツールをGUI化してみました。
-6/4 配達員における性格の計算がおかしい問題を修正しました。
-6/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:20170505163910p:plain

出てきた個体の性格が両方とも実機の結果と同じ場合、結果のseedが正しいことがわかります。
消費数の結果が総当りツールと数F程度ずれている場合がありますが、個体値と性格が一致していれば問題はありません。
※性別判定を行わないポケモンの場合、性格が一つずれることがあるかもしれないので注意。

 

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

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

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

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

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

f:id:sina_poke:20170505192615p:plain

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

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

 

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

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

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

f:id:sina_poke:20170505185525p:plain

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

f:id:sina_poke:20170505190751p:plain

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

f:id:sina_poke:20170505193056p:plain

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

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

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

 

 同様のやり方で配達員乱数も可能ですが、その場合は個体検索時に乱数のスキップを挟む(旧:性別判定を含まない)設定にしてください。

 

成功例

腕白色ランドロス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やただの色違い程度なら数回試行すればできると思います。

↓ここから調査結果

乱数はどの画面でも止まることなくおよそ60/sで進んでいるようです。
3世代と同じように描画処理で乱数が更新されてるのかもしれない。
配達員も固定と同じスキームで決まってるみたいでした。
孵化も少し調べて見ましたが、固定とは生成方法が違うみたいです(少なくとも性格値の生成は違った)
6世代ではMTの他に5世代同様のLCGが使われているようなので、その可能性があるかもしれない。
もしそのLCGがMTと同じ初期seedを取っているとしたら、ゲーム内でLCGの乱数列を観測できれば乱数調整がもっと楽になりそう。
そこのところ含めて要検証ですね。

追記
孵化をもう少し調べて見たところ、単純なBW2方式の生成では無いみたいでした。
某ツールによると、6世代でも7世代と同じように孵化seedがセーブデータに保存されているようです。このseedはタマゴを受け取ったり拒否することで変化しませんでした(数個しか試してないからたくさん受け取ったら変わるとかはあるかも知れない)
XYで検証してみたところ、受け取り、拒否をすることでseedが変化しました。(リゾートで検証したので、ツールがキンセツの育て屋を見てたのかもしれない)
seedから孵化個体がどう生成されてるか調べてみましたが、性格値と暗号化定数その他は64bitLCGの乱数値の商をそのまま使ってる訳じゃないみたいでした。(よく分からんかった)
検証結果を載せておくので興味のある人は調べてみてください。

♀親 0-0-0-0-0-0 夢@変わらず ♂親 31-31-31-31-31-31 1@持ち物なし

孵化seed 0x0000000000000000
お守りなし 国際なし
pid : 4E98866D
enc : 3B9FE378
31-23-24-31-31-28 ♀ 1
お守りあり 国際なし
pid : 85B92227
enc : 3B9FE378
↑と同じ

孵化seed 0x1000000000000000
お守りあり 国際なし
pid : 7BE90EAD
enc : 89EDFC71
31-31-0-30-18-2 ♀  夢

TinyMTの128bitではなく64bitなので、やはり孵化はLCGの可能性が高そうです。
おそらく、この孵化seedとMTの乱数値を使ってLCGの初期seedを作ってるんじゃないかと予想してます。
一回しか調べてないんでアレですけど、孵化seedの下位32bitはMTの乱数値っぽかったです。

欧州XDについてのメモ

XDRNG

Sn+1=Sn * 0x343FD + 0x269EC3
Sn-1=Sn * 0xB9B33155 + 0xA170F641 

seed 00522bf0

ID決定タイミング 名前入力後1001f
イーブイの生成      1004f

seed[2]%5 seed[3]%5
ミュウツー 0 フリーザー 0
ミュウ 1 サンダー 1
デオキシス 2 ファイヤー 2
レックウザ 3 ガルーラ 3
ジラーチ 4 ラティアス 4

seed D2E014B3 イーブイ 臆病 30-7-30-31-30-30-26 + ID0

P★DAでリバース状態のポケモン表示(ヤジロン
3919~3930.7/秒

P★DAでリライブ後のポケモン表示(ヒメグマ
390.9/s

P★DAでダークポケモンの表示(ファイヤー)
6708.1/s

ポケモンのステータス表示(エーフィ)
39.7/s

持ち物消費は日本と同じ

タマザラシ
n=39,40

イトマル
n=34,35

34,2
35,1

n固定使用 n=21,22

21,1
22,1

npc消費
3988^4164
3828^4066
3875^4098
3851^3996
3879^4078
3578^4243

目安
3988^3996 ≒ 3992

キバニア
n固定使用 n=21

キノココ
n固定使用 n=21

ヨマワル
n固定使用 n=21,22,23

生意気 31-4-31-27-31-2 ★

21,2
22,3
23,1

npc消費 30~40

クチート
n固定使用 n=22,23

意地っ張り 31-31-31-11-31-31 ★

22,4
23,2

npc消費
1941^2482
1920^2776 1920^2482
2002^2246 2002^2246
2065^2264 2065^2246
2005^2274★

ユキワラシ

陽気 31-31-30-21-31-31 ★

n=35,36,37,38,39

35,3
36,4
37,4
38,1
39,1

npc消費 1~2

ガルーラ

陽気 29-31-30-31-30-31 ★

n=39,40,41,42

npc消費=520で成功

39,1
40,3
41,10
42,2

npc消費
590^1009
654^832
781^930
549^646
693^976
461^574
704^836
638^700
411^572
502^542
364^575
258^355
358^569
543^767
377^508
300^508
355^649★

ブーバー

図太い 31-9-31-27-31-30 ★

n=40

40,2

ラッキー

図太い 31-21-31-29-31-30 ★

n固定使用 n=21,22

21,2
22,3

エレブー

図太い 31-20-31-30-31-27 ★

n=0

npc消費 3159で成功
3177
3159^3160
3192^3194
3158^3159
3160,3164★

バリヤード

図太い 31-30-31-31-31-31 ★

n=0

npc消費 2551で成功
2518^2808
2056^2585
2337^2823★

ガラガラ

ゆうかん 31-29-31-26-31-3★

n=0

npc消費
8,11,14,15,16のどれか
↑8っぽい

 

サーチ厳選産HV色夢メタモン

6世代で色夢メタモンが解禁されたとのことで、厳選してみました。

色夢メタモンを入手する方法は、フレンドサファリと夢島の2種類ありますが、両方とも試した結果、夢島で厳選した方が効率が良いです。
フレンドサファリでの厳選は苦行なので夢島で厳選しましょう。

捕まえた個体↓

f:id:sina_poke:20160927235303j:plain

臆病 31-14-19-20-7-31 めざパ草()

この個体を引くまでに通常特性の色2匹と夢特性の色を1匹捕まえてます。
夢島で厳選を始めて2日程度で出てくれたのでとてもラッキーでした。
シンクロが効かなかったのとSにVが入ってるのが少し残念でしたが、妥協範囲内だと思います。