DS乱数調整孵化

0xは16進数表記であることを意味する。16進数と10進数の換算はwindowsの電卓を使えば出来る。(表示(V)→関数電卓(S))
タマゴの個体値を確認するのにめざめるパワーを教えてくれる人とジャッジが便利なのでプラチナでの孵化を推奨。
ここで使用するツールタマゴ検索乱数計算
必要な機能がそろっていれば他のツールでもいい。
主にポケッチに使用される乱数をpoke、主にエンカウントや個体生成などに使用される乱数をseedと表記する。
参考図

1 目的の決定

1.1

タマゴ検索で目的の個体値を探す。
連打のみなら初期seed候補は-5まで、初期seed候補の下位2バイト範囲は260〜2B9が目安(Pt)。必要に応じて変更する。
この数字は個体値生成seedのうち最初のseedからの相対位置を示す。つまり、-3と書かれていれば、初期seed候補から始めて3つseedを消費した後に個体値生成処理に入った場合にその個体値となる。
以降はこの初期seed候補を狙うことになる。

2 性格値の調整

色違いも性格値に依存するが、それについては後述(4)。

2.1

目的の個体値の右側に書いてある初期seed候補を、乱数計算の15に入れてコイントスの結果を出力する。
基準seed→狙いの初期seed
n=10
コイントスする数→10
全て出力(慣れてくれば偶数ずれのみ出力で構わない)

2.2

目的の個体値に合致する親を預け(変わらずの石は不要)、ポケッチはコイントスにし、タマゴができていない状態でセーブする。電源を切る。

2.3

以下のような時間(以降☆)を計算する。補助用計算ツール(Excel)*1
(月×日+分+25(※1))の下位1バイト(16進数表記の下2桁)=狙いの初期seedの上位1バイト(上2桁)
時=狙いの初期seedの中1バイト(16進数表記の上から3,4桁目)
西暦=狙いの初期seedの下位2バイト(16進数表記の下4桁)-603(※2)+2000
EX
狙いの初期seedが0x1B0E0295の場合
2058年10月25日14時8分
月×日+分+25=10×25+8+25=256+27=0x100+0x1B=0x11B→0x1B
時=14=0x0E
西暦=2058=661-603+2000=0x0295-603+2000


※1、※2について。
初期seedの決定式は以下の通り。
(月×日+分+秒)&0xFF×0x1000000+時×0x10000+(西暦-2000)+α
西暦月日分秒は“つづきから はじめる”を選択した時のものを利用する。
αはプラチナ起動から“つづきから はじめる”を選択するまでの時間に応じた値。
&0xFFは16進数表記での下2桁のみをとるという意味。
※1 25の部分は“つづきから はじめる”を選択した時の秒数。今回は10秒に起動して連打すると、25秒に“つづきから はじめる”を選択できることを利用するので25とした。
※2 603の部分はプラチナ起動から“つづきから はじめる”を選択するまでの時間に応じた値(α)。今回は連打で開始すると、その値が603程度になることを利用するので603とした。
※1、※2はプラチナに対応した値で、ダイヤ・パールではこの限りではない。
これらの値は違うこともあるので、後述の調整(3.2)で最適な値を見つけるのが望ましい。

2.4

DSの時計を☆に合わせてDSを再起動。時計の秒針が10秒をさしたら連打してゲームを起動する。
DS側に電源を切らせると10秒に間に合わないので、設定直後に自分で電源を切る。

2.5

ゲーム開始後、2.1で出力したリストからコイントスの結果が合致しているものを探し、初期seedを特定する。コイントスは必要最低限に抑え、コイントスした数を覚えておく。


seedとpokeは独立した別の乱数だが、初期乱数は同値である。そのため、初期seedからコイントスの結果を予測でき、逆にコイントスの結果から初期seedを絞り込むことができる。

2.6

2.5で特定した初期seedを乱数計算の12に入れ、性格値リストを出力する。
初期seed→2.5で特定したもの
ID入力→色違いは考慮しないので適当に0 0。
最大消費数→とりあえず500。
出力条件は以下を参考に。
性格

がんばりや 0 ずぶとい 5 おくびょう 10 ひかえめ 15 おだやか 20
さみしがり 1 すなお 6 せっかち 11 おっとり 16 おとなしい 21
ゆうかん 2 のんき 7 まじめ 12 れいせい 17 なまいき 22
いじっぱり 3 わんぱく 8 ようき 13 てれや 18 しんちょう 23
やんちゃ 4 のうてんき 9 むじゃき 14 うっかりや 19 きまぐれ 24

特性値
図鑑等で先に書かれている特性が1、後が2。
性別値

♀:♂比率 ♀性別値 ♂性別値
1:7 0~30 31~255
1:3 0~63 64~255
1:1 0~126 127~255
3:1 0~190 191~255
2.7

出力された性格値の消費の数だけpokeを消費する。複数出力されていれば消費の少ないものを選ぶ。消費方法は以下の通り。
コイントス1回:1消費
なつきチェッカー画面を開く:手持ち×2消費
なつきチェッカー画面でジャンプ:手持ち×2消費
消費数は2.5でコイントスした分も考慮すること。

2.8

タマゴを作り、性格値を固定する。
引き続き個体値の調整をするので、ゲーム開始から連打でタマゴをもらえる状態でセーブする。

3 個体値の調整

3.1

2.4と同様にゲームを開始し、連打でタマゴを受け取る。このとき冒険ノートがでないようにする。

3.2

2.5と同様にコイントスをして初期seedを確認する。
1.1の初期seed候補と同じなら孵化する。違うのなら3.1に戻る。
最初の数回は狙っている初期seedと偶数差の初期seedが出ているか確認する。基本的に初期seedは2単位でしか変動しないため、奇数差が頻発する場合は西暦を奇数年ずらす。
初期seedの下位2バイトは西暦と関連しているので、必要に応じて西暦を変えて修正する。
EX

0x1B0E0293 2212222121 ←偶数差、2年増やす
0x1B0E0294 2121211211 ←奇数差、1年増やす
0x1B0E0295 2111111211 ←狙い
0x1B0E0296 1111112221 ←奇数差、1年減らす
0x1B0E0297 2112112112 ←偶数差、2年減らす

リストに合致しない結果ばかりでるようであれば、25秒に“つづきから はじめる”を選択できていないと思われるのでプラチナ起動のタイミングを調整する。調整法は以下の通り。

  1. ゲーム開始後、野生のポケモンを捕まえる。
  2. 個体データを乱数計算の2に入れる。最大消費数は300。
  3. 逆算されたseedから狙っている初期seedに近い値を探す。
  4. 上位1バイトが1多ければ1秒遅く“つづきから はじめる”を選択しているので、プラチナ起動を1秒早くする。上位1バイトが1少なければ1秒早く“つづきから はじめる”を選択しているので、プラチナ起動を1秒遅くする。

EX
0x1B0E0295狙いの場合
逆算された初期seedが
0x1C0E0297なら、上位1バイトが1多いので1秒早く起動する。
0x1A0E0293なら、上位1バイトが1少ないので1秒遅く起動する。

3.3

初期seedが合致していてタマゴの個体値が違う場合はリセットしてセーブしなおし(※3)、3.1に戻る。
個体値が合致していれば終了。


タマゴをもらうまでのseed消費は不定で、制御する方法は確立されていない。seed消費が合致するまで何回か試行する。


個体値の確認は、乱数計算の8を使いタマゴの個体値リストを出力し、リストの中からめざめるパワーを教えてくれる人とジャッジを使って絞り込むと楽。
初期seed→狙いの初期seed
めざめるパワー

かくとう 0 ひこう 1 どく 2 じめん 3 いわ 4 むし 5 ゴースト 6 はがね 7
ほのお 8 みず 9 くさ 10 でんき 11 エスパー 12 こおり 13 ドラゴン 14 あく 15

※3 同じセーブデータから連打でタマゴをもらうと、タマゴをもらうまでのseed消費(つまり個体)が偏る。そのため、リセットしてセーブしなおすことでこの偏りを防ぐ。

4 色違いのタマゴ

4.1

乱数計算の13で色違いの性格値を出力する。

4.2

出力されたリストの中から欲しいものを選択。
書かれている初期seedに合わせ、必要数消費してタマゴを作る。
欲しい性格値の選択は以下の方法が楽。

  1. Excelにリストをはりつける。
  2. 性格、特性値、性別値にフィルタをかける。
  3. 消費数を昇順に並び替え、消費数が少ないものを探す。

*1:動かない場合は「ツール」→「アドイン」→「分析ツール」にチェック