2009-07-07
■[ポケモン-乱数]このカビゴンは光ったけど自爆する!
694 名前:ゲーム好き名無しさん[sage] 投稿日:2009/06/21(日) 20:31:10 ID:eMUbTLS40
上で話題になっていたので、ちょっと調べた計算式のような物を書いてみます。
あまり確認してなくて、非常に怪しいのでとりあえず簡単に書いてみます。
手持ちのデータなどあったら検証を兼ねて比較してみてください。間違ってたらぜひ教えてほしいです
(中略)
・エメラルドのタマゴの性格値(仮説)
下位2バイトはその時点での乱数値を65534で割った余りの値に1を足した物。
上位2バイトはその時点での、起動時からの経過フレーム数をシードとした乱数。(この乱数は通常の物とは独立しています)
例えば600フレーム目にタマゴが出来たなら上位2バイトは0x28C8となり、
下位2バイトは600フレーム分の乱数消費にNPC移動などの乱数消費を加えた分の乱数が設定されます。
※ここでいう乱数では計算結果の上位2バイトのみ使っている考えてください。
アユザックさんのデータを借りて検証。
| 理論値 | 理論値 | 実験値 | ||
| F | 性格値上位2バイト | 性格値下位2バイト | 性格値下位2バイト | 差 |
| 479 | 120d | d750 | 4759 | 28 |
| 480 | 53d3 | b3fe | ba27 | 28 |
| 481 | 9599 | 2cc5 | e880 | 29 |
| 482 | d760 | caf5 | e880 | 28 |
| 483 | 1926 | b6bb | ||
| 484 | 5aec | a16f | ||
| 485 | 9cb2 | fc93 | d1a5 | 28 |
| 486 | de79 | fab5 | ||
| 487 | 203f | fe1a | ||
| 488 | 6205 | f202 | dd20 | 30 |
| 489 | a3cc | 5fca | dd20 | 29 |
| 490 | e592 | cd23 | dd20 | 28 |
| 491 | 2758 | c9ef | ||
| 492 | 691f | 409a | 175d,3355 | 28,29 |
| 493 | aae5 | e9b5 | 3355 | 28 |
| 494 | ecab | dbaa | d064 | 28 |
| 495 | 2e72 | 6e70 | ||
| 496 | 7038 | fcee | ||
| 497 | b1fe | 5aa1 | cd0e | 28 |
| 498 | f3c4 | 472 | ||
| 499 | 358b | 5f7a | 26c6,525b | 28,29 |
| 500 | 7751 | 8668 | 4dd | 29 |
| 501 | b917 | 8af7 | ||
| 502 | fade | 99e4 | 70cc | 28 |
| 503 | 3ca4 | a3c5 | 1c18 | 28 |
| 504 | 7e6a | 114f | ||
| 505 | c031 | f38d | ||
| 506 | 1f7 | 66c | ||
| 507 | 43bd | 4759 | ||
| 508 | 8584 | ba27 | 46d0 | 29 |
| 509 | c74a | 6738 | c5b3 | 29 |
| 510 | 910 | e880 | ||
| 511 | 4ad6 | 8141 | 5785 | 29 |
| 512 | 8c9d | 6b57 | 5785 | 28 |
| 513 | ce63 | d1a5 | 90b5 | 28 |
| 514 | 1029 | eae1 | ||
| 515 | 51f0 | 807d | ||
| 516 | 93b6 | 790c | ||
| 517 | d57c | f68 | ||
| 518 | 1743 | dd20 | ||
| 519 | 5909 | 143c | ||
| 520 | 9acf | 175d | 4725 | 29 |
| 521 | dc95 | 3355 | 4725 | 28 |
| 522 | 1e5c | d064 | d069 | 28 |
| 523 | 6022 | a34a | ||
| 524 | a1e8 | eaf | 4303 | 28 |
| 525 | e3af | cd0e | 1aec | 28 |
| 526 | 2575 | 3c69 | fd43 | 28 |
| 527 | 673b | 26c6 | ||
| 528 | a902 | 525b | ||
| 529 | eac8 | 4dd | ||
| 530 | 2c8e | 70cc | 2a98 | 28 |
| 531 | 6e55 | 1c18 | ||
| 532 | b01b | 5d8d | ||
| 533 | f1e1 | a0c3 | ||
| 534 | 33a7 | d684 | ||
| 535 | 756e | a222 | ||
| 536 | b734 | 7a6e | ||
| 537 | f8fa | 46d0 | ||
| 538 | 3ac1 | c5b3 | ||
| 539 | 7c87 | 35b6 | ||
| 540 | be4d | 5785 | ||
| 541 | 14 | 90b5 | ||
| 542 | 41da | f39e | ||
| 543 | 83a0 | c147 | ||
| 544 | c567 | 8f5a | ||
| 545 | 72d | c496 | ||
| 546 | 48f3 | bcfa | ||
| 547 | 8ab9 | f3e2 | ||
| 548 | cc80 | 65b | ||
| 549 | e46 | 4725 | ||
| 550 | 500c | d069 | ||
| 551 | 91d3 | 135e | ||
| 552 | d399 | 4303 | ||
| 553 | 155f | 1aec | ||
| 554 | 5726 | fd43 | ||
| 555 | 98ec | bdd1 | ||
| 556 | dab2 | 2439 | ||
| 557 | 1c79 | e9 | ||
| 558 | 5e3f | 2a98 |
- 理論値の性格値上位2バイト=((F*0x41C64E6D+0x6073)>>16)&0xFFFF;
- 理論値の性格値下位2バイト=((seed[F]>>16)+1)&0xFFFF;
- ただし、
- seed[0]=0
- seed[F+1]=(seed[F]*0x41C64E6D+0x6073)&0xFFFFFFFF;
理論値の性格値下位2バイトと実験値の性格値下位2バイトの差がレスで言及されている“NPC移動などの乱数消費”ということになるか。
“NPC移動などの乱数消費”は起動時間が長いほど増えるので、性格値上位と性格値下位の差は起動時間にだいたい比例すると思われる。
試したことないけれど、色違いを出す作業は
- あるフレーム帯での差を計る。(上記データのフレーム帯では28程度)
- その差を考慮して性格値の候補を計算し、色違いを見つける。
- 上位と下位が狙いと合致するタイミングでタマゴを作る。
という流れかな。

おかげで何となく流れは分かりました。
それで、いざやってみようと思ったのですが、
2.3
以下のような時間(以降☆)を計算する。
(月×日+分+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
この逆算の仕方が分かりません;
このブログ内に一応、seed逆算の記事はありましたが、どうやらそのアプリは消えているようでした。
どうやって時間を出せばよいのでしょうか?
便乗質問で恐縮なのですが「初期seed調整.xlsx」について質問があります。
秒数が25の理由が以前の記事に
>今回は10秒に起動して連打すると、25秒に“つづきから はじめる”を選択できることを利用するので25とした。
とあるのですが
今回試しに狙う初期SEEDをC10C0FA5 年を2008 秒数を25にしたところ
待ち時間が71.13 と出ました。
この場合は25秒を指定する意味はなく、適当な秒数を入力して
出力された結果通りの起動時間とつづきを押す時間を使えばいいのでしょうか?
変な事言ってたらすいません。