ポケモンの色違いの仕組み

持っているだけでちょっとウレシイ色違いポケモンはこのようにできる!
     きらーん!     キレー

ポケモンの色違いを判定するデータ

色違いを判定する数値には、ID、性格値の2つがあります。
xor という演算を使います。

  ( (裏ID xor 表ID) xor 性格値上位2バイト) xor 性格値下位2バイト・・・
  ≦ 7 (10進数 )

の時に色違いができるようです。

ビット・バイトについて

ビット : 2進数 (0、1) の1桁のこと。
バイト : 16進数 (0、1、2、・・・、9、A、B、C、D、E、F ) の2桁のこと。

IDについて

IDには、表IDと裏IDがあります。
表IDは、普段メニュー画面で見られるIDのことです。
裏IDは、普通にゲームをプレイしているだけでは特定することはできません。
表IDは、00000~65535の65536通り
裏IDも、00000~65535の65536通り
あります。
表IDは2バイト、裏IDは2バイトなのでIDは4バイトとなります。

性格値について

ポケモンの性格や特性などを決める値で、ポケモン1匹1匹で違っています。
16進数の 0~F を使って
00000000~FFFFFFFF の中の下4桁が FFFF でないもの
のいずれかの値を取ります。
性格値上位2バイトとは、8つ並んだ 0~F の数字の上4桁、
性格値下位2バイトとは、8つ並んだ 0~F の数字の下4桁
のことです。

xorについて

排他的論理和と呼ばれたりもしますが、ここでは2進数の計算と考えましょう。

① 0 + 0 = 0
② 0 + 1 = 1
③ 1 + 0 = 1
④ 1 + 1 = 0

↑の①~④が規則です。

例えば、1101 xor 1001 という演算は、
(①~④に従って筆算のように計算します )
    1101
 +) 1001
 ―――――――
    0100
となります。

よって
 1101 xor 1001 = 0100
となります。


色違いを判定する式を計算します。
まず、裏ID・表IDと性格値上位2バイト・性格値下位2バイトを2進数に直します。
↑のように xor 演算をします。

・xor 演算の仕組みにより、の計算結果は
 2バイト = 16進数4桁 = 16の4乗 = 2の16乗 = 2進数16桁 となる
・7 (10進数) = 111 (2進数) である

ということから、
 の結果 ≦ 0000000000000111
となればよくて
結局、の計算結果 (2進数16桁) の上から13桁までが0となれば色違いが出ると分かります。

0、1が出る確率をそれぞれ1/2とすると、
上から13桁が全て0となる確率は
 1/2の13乗 = 1/8192
となり、これが色違いが自然発生する確率となります。

の色違い判定式は第3世代から使われているものです。

スポンサーリンク


メインコンテンツ

共通コンテンツ

スポンサーリンク

PR

  • ポケモンスカーレット・バイオレット(SV)攻略 | ポケモン王国攻略館
  • ポケットモンスター ハートゴールド・ソウルシルバー攻略館