バトルファクトリーの最初の6匹を解析してみる その1

ソフト: ハートゴールド

最初の手順

  1. 適当にDSの日時を設定して起動
  2. 初期seedを調べる
  3. ファクトリー1周目に挑戦。最初の6匹にパッチールがいなければやり直し。

パッチールが出たら模様から性格値が分かるのでそれがかなりヒントになるだろうという考え。

ちなみに徘徊によって3つ乱数消費、あとファクトリーには大量の動くNPCがいるのでそれによって不定個数乱数が消費されているはずである。

出た初期seed: 0xc90c01f8
最初の6匹

ポケモン 親ID 特性 性別
マイナン 11067 マイナス
パチリス 63599 ものひろい
ムクバード 62326 いかく
ハスブレロ 27843 すいすい
パッチール 50041 ちどりあし
カラナクシ 10484 ねんちゃく

そしてパッチールの模様から性格値を調べてみると0xd9ccc14fであった。

0xc90c01f8の続きの乱数列から各親IDを探してみる。

ポケモン 初期seedからの位置 seed
マイナン 189 0x2b3b8677
パチリス 41 0xf86f5713
ムクバード 49 0xf3767c7b
ハスブレロ 119 0x6cc3ebd1
パッチール 37 0xc379f43f
カラナクシ 65 0x28f4babf

上のポケモンから順に決まってはいないみたい。シャッフルとかされているのかな。

そして乱数列からパッチールの性格値を探してみる。

パッチールの性格値: 0xd9ccc14f
39: 0xc14f8f41
40: 0xd9cc2d20

パッチールの親IDのすぐ下であった。多分seed[38]は裏IDに使われているのであろうと想像がつく。
そして、ファクトリーで出てくるポケモンはあらかじめ性格が決められているので、性格値はエンカウント時の個体生成と同じ感じで決められた性格が出るまで生成し続けるような処理になっているんだろう。

その方法がとられているという前提でほかのポケモンの性格値も調べてみる。

パッチールの性格値: 0xd9ccc14f
39: 0xc14f8f41
40: 0xd9cc2d20

パチリスの性格値: 0x2b1cdb03
47: 0xdb03cc69
48: 0x2b1c6728

ムクバードの性格値: 0x85039fbc
117: 0x9fbc3a4f
118: 0x85034616

ハスブレロの性格値: 0x603761f4
163: 0x61f4280d
164: 0x603763fc

カラナクシの性格値: 0x8b1f9628
187: 0x9628ef05
188: 0x8b1fab94

マイナンの性格値: 0xe00c4f14
263: 0x4f1451a1
264: 0xe00c3000

全て特性、性格、性別が一致。

親ID、性格値の決定方法は判明した。選ばれるポケモンの種類を親ID、性格値より先に決定しているはずだがそれを解析するのはなかなか難しそうだ。