この記事をシェアする

TID RNG abuse for Gen VII

日本語は下のほうにあります。

Tools

github.com

version 2.10a or more is required

How to abuse

Find Initial Seed

Clock hands sequence is used.

After you input your trainer name, you can see the confirmation screen, and simultaneously you can make sure of clock hand.

Please note that the clock hands start as soon as when you see the trainer name inputing scene.

So you should keep the time interval between press B in the confirmation screen and press "END" in the inputing screen.

Recommended time is 470 [F] = 7.833 sec., because this time setting make easy to recognize clock hands.

While you are finding current seed, trainer name is rejected. So you should use a name that is easy to type. (For example "a", "!" etc...)

After you repeat this 8 or more times to get the clock hands sequence, you can obtain your current seed. ( seed search API is work in progress. so please wait a little...)

The seed seach API has been published.

how to use

https://rng-api.odanado.com/sm/sfmt/seed/id?needle=***** (for SuMo)

https://rng-api.odanado.com/usm/sfmt/seed/id?needle=***** (for Ultra SuMo)

Replace ***** with the sequence of clock hands separated by commas, like "2,14,5,6,10,15,7,6,6,3,6,12" and access the above URL.

Then you can obtain results, like

{"results": [{"add": "10","seed": "01919810", "encoded_needle": "0d59b899", "step": "1012"}]}

At this time, the current seed is 01919810.

When you obtain your current seed, then "ID調整" tab is used.

Input your current seed and appropriate frame.

As for frame range, I think 1012~1500 (1132~1600 for USM ) is better.

One RNG advancement takes about 5 seconds, so 500 advancements takes about an hour.

If you are very patient, you can input 1012~2000 or 3000, but I do not want to do it :(

Verifying Seed

Verifying seed is almost the same as stationary RNG.

When you get the clock hands sequence { 8, 2, 16, 2, 8, 2, 12, 2, 3, 13 }, the next sequence will be { 6, 3, 14... } if current seed is correct.

Find Your Target ID



Input your target IDs into "ID List" box.

"完全一致" and "部分一致" means perfect matching and partial matching, respectively.

When you use perfect matching, Input IDs are required 6 digits. ( "0" is not ok. "000000" is required.)

When you use partial matching, Input IDs are required 2 to 5 digits. When you input "000", the results show IDs including "000". (For example "530007", "000692", "100005", etc...)

When your target is not trainer ID but TSV, because of shiny eggs, "PSV List" box is used.

Input your egg's PSVs into PSV List, and check "色違いのみ出力".

Advancing to the correct frame

As I explained earlier, RNG advancement occurs when the game shows name inputting screen.

So RNG advances each time your trainer name is rejected once, and there is no additional advancement.

You have to discard RNG up to two frame before the target frame.

In my case, the target frame is 1144.

I discarded RNG again and again, and then I verified the last clock hands sequence {14, 6, 1, 11}.

After I verified the last clock hands, "11", I turned back to name inputing screen. Then I input my trainer name, and the last confirmation screen was displayed. ( this time, random number of 1143 frame is used to determine clock hands.)

Then next random number is used to determine trainer ID, so I finally got ID 000000 :)

fuzzy search

If the disk capacity is left over, you can do a fuzzy search using the 16 GB database.

1012ID for SuMo

1132ID for USM

Download 1012ID.zip or 1132ID.zip from the above URL.

After unpacking the 1012ID.zip, launch a command prompt.

(1132ID.exe can be launched without command prompt.)

Then go to the 1012ID directory and input "1012ID.exe create". This step may take up to 3 hours.

When the create step is finished, input "1012ID.exe sort". This step may take up to 2 hours.

Once create/sort step is finished, you don't need to use a command prompt.

Launch 1012ID.exe to do fuzzy search.

At first, input the number of sequence. 11 or more is recommended.

As explained above, if you observed the clock hands properly with the time setting of 470F, the correction number will be either 00, 01, or 16.

ここから日本語

本記事の内容について，「リーリエでもできるポケモンサン・ムーン乱数調整」への引用，無断転載を禁止します。

ツール

github.com

ver2.10a以降がID調整に対応しています。

調整方法

初期seedの求め方

名前入力の確認画面で針が表示されるので，通常の固定乱数調整と同じく針を見極めて初期seedを求めます。

通常の乱数調整と異なるのは，名前確認画面に移ったときに針が動き出すのではなく，その前の名前入力画面で既に動き始めているらしいということ。

つまり，名前入力画面から名前確認画面までの時間を一定に揃えなければ針が使い物になりません。

名前確認画面でBを押すと同時にタイマーをスタートさせ，470[F]＝7.83秒後ぐらいに名前入力を終了すると実際の乱数の値と見える針がだいたい一致します。

それ以外のタイミングでやっても大丈夫ですが，時間によっては0と1の中間の針とかが出たりするので注意が必要です。

名前入力画面に移ってA→Start→Aと速やかに進んだ場合は後述の針の補正が11ぐらいになるかと思います。

顔写真を選択した後に1回目の名前入力画面になり，次に進むと針が表示されますが，この最初の針は名前入力のタイミングを揃えるのが難しいので無視してください。

各種ツールはこれを無視する前提で設計されています。

実際にすべきこととしては，

１．名前確認画面でBボタンを押すと同時にタイマースタート

↓

２．タイマーが0になると同時に名前入力終了

↓

３．名前確認画面で表示される針を見てメモする

↓

４．Bを押すと同時にタイマースタート（１．に戻る）

を8回以上繰り返して，針の並びを記録します。

上の方法で得られた針の並びから，なんとかしてID調整用の初期seedを求めます。

なんとかして求める方法

・公開されているID調整用のAPIを使う→まだ実装されていない実装されました。

・自分でデータベースを構築して検索する→下に載せたツールを使う

それぞれのメリットとデメリット

・API利用

メリット：URLにアクセスするだけなので簡単

デメリット：あいまい検索ができないので針を一つでも見間違えていると正しい結果が出ない

・データべース構築

メリット：あいまい検索に対応しているので，針をいくつ見間違えても±1の範囲の誤差なら正しい結果が出る

デメリット：16GBのディスク容量が必要

最近は32GBのUSBメモリが1000円以下で売っていることもあるので普段使い用のUSBとして買って，ついでにID調整用のデータベースも入れとくみたいな感じで使えば問題ないですね。安上がり。

16GBと表示されているUSBメモリは実際に使用できる容量が14.4GB程度なのでID調整用のデータベースは多分入りきりません。

もしも買うなら32GB以上のものをお勧めします。

APIを利用する方法

（サンムーン限定）

ポケモンSMのID乱数用初期seed特定APIができました | ぽよのーと

ぽけおだんが作成したAPIを利用します。

https://rng-api.odanado.com/sm/sfmt/seed/id?needle=*****

USMは以下のURLを利用してください。

https://rng-api.odanado.com/usm/sfmt/seed/id?needle=*****

needle=以降の*****部分に観測した針の並びをカンマ区切りで入力します。

入力した針が正しければ，

{"results": [{"add": "10","seed": "01919810", "encoded_needle": "0d59b899", "step": "1012"}]}

のような結果が出力されます。

SM，USMのどちらであっても，470Fの設定で針を記録していれば"add":の部分は0,1,16のいずれかになると思います。

16GBのデータベースを利用する方法

使う人があまりいないと思うので下のほうに載せてます。

ツールの使い方







なんとかして求めた初期seedを入力するとIDが出力されます。

このとき入力するFrameは多くても1012~1500ぐらいにするのがよいです。

USMの場合は1132~1600ぐらいがいいです。

名前入力→確認画面→キャンセルの動作1セットで1消費なので最速で1回あたり約5秒ぐらいかかります。

なのでだいたい1時間消費し続けて500消費ぐらいになります。

これ以上消費できるって人は2000でも3000でも幅をとって検索してもいいですが，僕なら絶対にやりません。







フィルター部分で目的のIDを入力します。

6ケタ完全一致はほとんど出ないので4ケタぐらいの部分一致がいいと思います。







目的のIDが見つかったら消費数を間違えないように1回ずつ消費します。

消費は名前入力の後の確認画面でいいえを選択することでできます。

目的の消費の2つ前の針まで見てから本番のトレーナーネームを入力します。

こうすることで，

2つ前まで見る(この場合赤枠で囲んだ11)

↓

本番のトレーナーネーム入力

↓

名前確認画面で針が表示される(次の乱数，この場合1143Frameの8が使われる)

↓

はいを選択する

↓

次の乱数(この場合1144Frameの乱数)で6ケタのトレーナーIDが作成される。

という風に目的のIDを実現できます。

別ROMで作った理想値タマゴのPSVに合わせてTSVを調整したい場合，PSVListの機能を使うことで実現できます。







理想個体が産まれるタマゴのPSVを複数用意しておいてPSVリストに入力し，色違いのみ出力を行うとリストと一致するTSVになるIDが出力されます。

この場合でも目的のIDの実現方法は上記と同じなので省略します。

16GBデータベースを使ったあいまい検索方法

まだID調整用の初期seedを求めるAPIが作成されていないので，どうしてもやりたい場合は自分でデータベースを作成する必要があります。

どうしても早くやりたい人以外はAPI実装を待つのがいいです。

針の並びを見間違えることが多いため，あいまい検索を行いたい場合はこちらの方法で初期seedを検索します。

以下のツールを使えばDBを作成した後で初期seedの検索ができます。

https://www.axfc.net/u/3779302?key=IDRNG （サンムーン限定）

USMの場合は下のリンクから1132IDをダウンロードしてください。

ファイル置き場

以下はサンムーンの1012IDの説明です。USMの1132IDはもう少し下の方に書きます。

zipを解凍したらコマンドプロンプトで開きます。

画像はデスクトップに解凍した場合。

コマンドプロンプトがわからない場合はやらないほうがいいです。

"id.exe create"と指定して開くとDBのもととなるbinファイル(32GB)を出力します。

createが終わったら"id.exe sort"と指定するとbinファイルをソートします。この時点でbinファイルが16GBになります。

sortが終わった状態で何も指定せずに開くと初期seed検索モードに入ります。

最初にinput the number of sequenceと表示されるので，針の個数を入力します。

あいまい検索の仕様上候補が多くなるので，11個以上がいいです。12個ぐらいが安定します。

次にinput the sequence separated by spaceと表示されるので，観測した針の並びを空白区切りで入力します。

ID調整の針は観測がやや難しいので，入力した針の±1の誤差まで自動で検索してくれます。

そのため検索に少し時間がかかりますが，数十秒程度で終わると思うので放置してください。

上で説明したように，470Fの時間設定でちゃんと針を観測できていた場合は左の赤枠で囲った数字が00，01，16のいずれかになると思います。

同じseedが複数表示されますが，仕様なので気にしないでください。

これで初期seedを求めることができます。

もし検索モードまで行って使い方がわからなかった場合は質問してください。

sort済みのbinファイルのMD5ハッシュ値の一部を以下に載せます。

QR00.bin

23 a5 52 8f 04 e4 14 1e af 42 65 88 2f c3 70 e4

QR01.bin

bd ab 5b 39 4b 29 ce 9d 8b 5b 80 4e 26 38 1c f1

QR99.bin

12 6f 39 cb c7 7e 8c 10 d8 eb 64 cb f3 61 58 c3

USM版1132IDの使い方

1132ID.zipを解凍すると1132ID.exeがあります。

起動するとこの画面になります。

まず最初にあいまい検索用のDB作成を行うので，１を入力します。

すると以下の画面になります。

この作業には3時間ほどかかる可能性があります。

作業を完了するために32GBの空き容量が必要です。

という注意書きが出ます。

確認して２を入力するとDBの仮作成が始まります。

DBの仮作成が終わると1132IDは一旦終了します。

次に，DBのソートを行います。

現在ソートが行えない状態となっています。仮DB作成が完了したら少々お待ちください。

ツールの修正が終わりました。11/17 13:00以前に1132IDをダウンロードしていた方は新しい1132IDを再度ダウンロードしてください。

DBの仮作成が終わった状態で1132IDを起動し，最初の画面で２を入力します。

また注意書きが表示されます。確認したら１を入力してください。

しばらく待つとDBのソートが終了し，binディレクトリの容量が16GBになります。

以上で準備は終了です。

検索画面は1012IDと同じなので省略します。

1132IDのMD5ハッシュ値

QR00.bin 00 08 33 5d ca 94 91 3b e0 a6 bd ed eb e9 91 2b

QR99.bin 8b 24 80 2d b5 97 a7 34 be ea c5 ce bc 1e 29 b0

MD5出力方法

コマンドプロンプトを開いて1132IDディレクトリまで移動した後

certutil -hashfile bin\QR00.bin MD5

と入力