サイファーの日記

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

o3DSでも出来るORAS ID調整

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


ORASのID調整は起動時間をミリ秒単位で制御して行う*1のが普通ですが、別のやり方もあるので今回はそれを紹介します。この方法であれば(表ID or TSVだけなら)o3DSでも可能。2年も温めた。

簡単に説明すると、名前選択画面で「おわり」を押した時のロードアイコンを利用して起動時からID決定までの間に今回の初期seedを特定する方法です。

7世代は17パターンの針だったが、こちらは8つのマス

乱数によって、回り始める瞬間の各マスがどの方向に向いているか決定する模様。範囲を広げて初期seedを検索できるため、ソフト起動のタイミングは正確でなくても構いません。

やり方

手順① TinyMTの基準seedを求める

まずはTinyMTの基準seedが必要ですが、o3DSの場合は特定が厳しいと思うので強引に取得します。3DSのバッテリーを外し放電、再び装着する。時間ペナルティに注意!装着した瞬間に0x5CD79999くらいの値に初期化されるので、その瞬間の時刻をメモしておく。

手順② 任意の時刻にソフトを起動
ソフトを起動し、起動した時刻と手順①でメモした時刻の差分から今回の基準seedを求める。例としてバッテリーを装着してから30秒後に起動した場合は、0x5CD80EC9前後のseedを引いていると判断できます。

手順③ 初期seedを完全に絞り込む
ゲームが始まったらこの画面まで進める。

この画面でAを押すと同時に500Fに設定したタイマーをスタートさせ、適当な名前を入力。タイマーが0になると同時に「おわり」を押す。すると、ロードアイコンが短い時間回るのでアイコンが消えた瞬間の赤マス(見やすい色)の位置を記録する。

この時、乱数値 % 8の結果に応じて以下のように位置が変わる。

0  1  2  3  4  5  6  7
下 左下 左 左上 上 右上 右 右下

ただし、中途半端な位置で消える場合もあるので、自分は曖昧検索でやっています。
検索範囲が±3000msの場合、これを8~10回連続で行い記録すれば初期seedを完全特定できるはず。

手順④ 目標IDまで消費

特定した初期seedから現実的な消費数で辿り着ける目標IDが見つかったら、名前決定→キャンセルを繰り返して消費を進める。7世代と似た感じ。参考までに1000消費するのに3時間ちょっとかかりました。画像のIDは普通の2DS、簡単な自動化を用いて成功。

0x5E367A67 1397消費 00000-55098





やり方の説明は以上です。肝心のツールですが公開はしません(できません)。ちなみに、応用すれば一点狙いのNN変更にも使えます。*2

最近は3DS自動化が流行っているらしいけど、このID調整にも利用できますね!(流石に手動で消費はしんどい)
ハードの新旧は問わないのでぜひ皆さんもやってみてください。

*1:ぼんじり氏の記事にて初めて公開された手法です。

*2:一点狙いの場合はnewを推奨。ミリ秒単位の制御も必要なため。