◆ポケウォーカーで入手した個体の性格値補正値の検証 <概要> ktxadのブログ(http://blog.livedoor.jp/ktxad/)の記事によると、ポケウォーカーで入手した個体の性格値には次のような補正値が掛かる。 ____________ポケウォーカーメモ(http://blog.livedoor.jp/ktxad/archives/1124854.html)より引用_________________ 1.乱数を作ります 最初に、孵化乱数を0x18で割った余りの値を記録しておきます。 この値を rn とでも呼んでおきます。 2.おおまかな性格値を決定します 次に、大まかな性格値として、 ( ( TID ^ SID ) >> 0x08 ) ^ 0xFF を上位1バイトに設定します。これを、PIDt とでも呼ぶことにします。 (0x??000000 のようになります) そして次に、性格値を乱す値を作ります。 これは、rn - ( PIDt % 0x19 ) として計算します。 この値を PIDr とでも呼ぶことにします。 最後に、基準となる性格値を決めます。 これは、 PIDt + PIDr として計算します。 これをPIDcとでも呼ぶことにします ( PIDr はマイナスになってることもあるので その時は性格値の真ん中あたりがFFFFになってる数値が出てきたりします) 性別が不明や片方しかない種族の場合は、このときの PIDc の値が性格値となるようです。 特性や性格も実質的にはこの時点で決まっていることになりそうです。 3.性別の調整 ※この計算は、性別が片方しかない種族、PIDc の性別値がすでに既定の性別であるときはスキップされます。 ・♂にするとき ポケモンの内部データとして種族ごとの性別比率の値があります。これを gv とでも呼ぶことにします。 調整用の値を計算します。 ( ( gv - ( PIDc & 0xFF ) / 0x19 ) + 1 ) * 0x19 これで出てきた値を PIDc に足します。 そして次に、PIDc & 1 と rn & 1 が一致していなかった場合は、PIDc に 0x19 を足します。 一致していたときは、そのままです。 ここでのPIDcが最終的な性格値となります。 ・♀にするとき ♂の時と同じく、ポケモンの性別比率の種族値を使います。 ( ( ( ( PIDc & 0xFF ) - gv ) / 0x19 ) + 1 ) * 0x19 これで出てきた値を PIDc から引きます。 そして次に、PIDc & 1 と rn & 1 が一致していなかった場合は、PIDc から 0x19 を引きます。 一致していたときは、そのままです。 ここでのPIDcが最終的な性格値となります。 ____________引用終わり_________________________________________________________________________________________ ♀の場合は、性別値(PIDc & 0xFF)と性別分岐値(gv)の差を考えることにより最低限の減算を行う式となっている。 しかし、この式では♂にするときの補正値が、特定の性格にするのに最低限必要な値を加算する式となっていない。 このことは、ゲーム自体にバグが存在する、表記(解析)ミスであり本来は♀同様の式であるという2つの可能性が考えられる。 この他にも、性格分岐値(gv)が「(PIDc & 0xFF) < gv」のとき♀とするという♀を基準とするものか、 対して「(PIDc & 0xFF) > gv」のとき♂とするという♂を基準とするものかという疑問が生じる。 今回の検証では、この点について個性の違いによって正しい式を検証していく。 <検証の対象> 今回は、次の式を考える。(ここでのgvは♀基準のものとする) BF:( gv - ( ( PIDc & 0xFF ) / 0x19 ) + 1 ) * 0x19 BM:( ( gv - 1 ) - ( ( PIDc & 0xFF ) / 0x19 ) + 1 ) * 0x19 FF:( ( gv - ( PIDc & 0xFF ) ) / 0x19 + 1 ) * 0x19 FM:( ( ( gv - 1 ) - ( PIDc & 0xFF ) ) / 0x19 + 1 ) * 0x19 gvは♂♀比7:1で31、1:1で127であるとする。 <検証環境> カートリッジ:ハートゴールド ハード:DS ダブルスロット:エメラルド ID:22113 裏ID:09880 <検証> コイキング、ヨマワルは♂♀比1:1、ゴンベは7:1である。 いずれも♂に補正される。 [1] 性格:ようき ポケモン:ゴンベ 個体値:31-28-31- 3-25- 0 個性:ひるねを よくする BF:D BM:S FF:D FM:D →該当:BF, BM, FF, FM [2] 性格:ようき ポケモン:ゴンベ 個体値:30-31-31-22-31- 1 個性:ちょっぴり みえっぱり BF:D BM:S FF:D FM:D →該当:BF, BM, FF, FM [3] 性格:おだやか ポケモン:ヨマワル 個体値:28-31-31-25-24-27 個性:うたれ づよい BF:H BM:C FF:B FM:B →該当:FF, FM [4] 性格:おだやか ポケモン:ヨマワル 個体値: 2-31-31- 9-31-31 個性:うたれ づよい BF:H BM:C FF:B FM:B →該当:FF, FM [5] 性格:ひかえめ ポケモン:コイキング 個体値: 2-31-31- 9-31-31 個性:ちょっぴり みえっぱり BF:A BM:D FF:D FM:S →該当:BM, FF <結論> 以上より、♀基準の性別分岐値を利用した最低限の補正をバグ無く行う FF:( ( gv - ( PIDc & 0xFF ) ) / 0x19 + 1 ) * 0x19 という式により補正値が決定していると考えられる。