このカビゴンは光ったけど自爆する!

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移動などの乱数消費”は起動時間が長いほど増えるので、性格値上位と性格値下位の差は起動時間にだいたい比例すると思われる。
試したことないけれど、色違いを出す作業は

  1. あるフレーム帯での差を計る。(上記データのフレーム帯では28程度)
  2. その差を考慮して性格値の候補を計算し、色違いを見つける。
  3. 上位と下位が狙いと合致するタイミングでタマゴを作る。

という流れかな。