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程度)
- その差を考慮して性格値の候補を計算し、色違いを見つける。
- 上位と下位が狙いと合致するタイミングでタマゴを作る。
という流れかな。