色違いの判定

前作までは個体値を使って判定していましたが、今作からは性格値とIDで判定しています。
判定式:
( ( ( (ID上位)xor(ID下位) )xor(性格値上位) )xor(性格値下位) )
が7以下なら色違いになります。

1 バイトは 8 ビット。


7以下のパターン(2進数16ビット)
0000000000000000(0
0000000000000001(1
0000000000000010(2
0000000000000011(3
0000000000000100(4
0000000000000101(5
0000000000000110(6
0000000000000111(7
全パターンは65536通り。


0〜4294967295(ID隠し含む)
00000000000000000000000000000000(0(32ビット
11111111111111111111111111111111(4294967295

自分用参考(性格値

性格値とは各ポケモンごとに存在する4バイトの数で、これによって性格が決まります。性格値がとる値は00000000〜FFFFFFFFまで値での下位2バイトがFFFFでない値で4294967296通りになり、この性格値を25で割ったあまりが性格になります。
性格値の由来はこのデータ4バイトすべてを使って判定している一番メジャーなものからですが、個体値固有値のほうが本質をついてはいます。

16進 = 10進 = 2進
FFFFFFFF = 4294967295 = 11111111111111111111111111111111(32桁)
FFFF = 65535 = 1111111111111111(16桁)

性格値がとる値は00000000〜FFFFFFFFまで値での下位2バイトがFFFFでない値で4294967296通りになり


性格値がとる値は00000000〜FFFFFFFFまでの値で、かつ下位2バイトがFFFFでない値。
の間違い?


だと(上位2バイト)*(下位2バイト)が
655536*65535=4294901760通り になるんですが・・・