【クレクレ】ポケモン改造 配布スレPart5【乞食】
ポケモンでの乱数発生(または性格値と固体値の関係)について
ポケモンのゲームでのイベントで発生する乱数(固体値、性格値etc)は
完全なランダムではなく、『擬似乱数』(pseudo-random numbers)である
(『乱数発生器』(?)については、RNG(Random Number Generator)
またはPRNG(Pseudo-Random Number Generator)と呼ばれているので、
ここでもそう呼ぶことにします)
ポケモンの性格値&固体値は、[seed](後述)をもとにRNGが擬似乱数を用いて生成する
そうして生成されたポケモンの性格値&固体値にはほぼ必ず組み合わせがある
(ツールなどで性格値or固体値を変更すると判定で[May be hacked]とでるのはそのためです)
次の場合を除き、性格値と固体値には組み合わせが確認されている
1・タマゴおよびタマゴから孵化させたポケモン
2・DPtでの不思議な贈り物
3・一部のイベントでのポケモンetc.
なお、パルパークで送られた後進化させたポケモンは
正規非正規にかかわらずツールで[Invalid]の判定がでる
918 :
917:2008/10/17(金) 22:10:12 ID:0let4cP5
性格値&固体値生成の流れ
1:まず、ゲーム起動時にプログラムが32bit(4Byte)の
変数を割り当てる(これを[seed]と呼ぶことにします)
2:RNGがポケモンの性格値&固体値を生成するとき(ゲーム中にRNGが擬似乱数を作るとき)は
↓の式を使う
[seed] * [41C64E6D] + [6073]
3:この式から算出された数値から最後の32bit(4Byte)を取り出し、(次の[seed]として扱う)
取り出した数値の最初の16bit(2Byte)を擬似乱数とする
4:この作業を何度か繰り返して得た擬似乱数を、
[A] [B] [C] [D] [E] … とおく
この擬似乱数の組み合わせが性格値&固体値である
919 :
917:2008/10/17(金) 22:10:54 ID:0let4cP5
性格値と固体値の組み合わせ
とりあえず(判定ツールでの)よく見る組み合わせとして
LID HID iv1 iv2
a: [A]-[B]-[C]-[D]:Normal D/P or GBA
b: [A]-[B]-[C]-[E]:Normal GBA
c: [A]-[B]-[D]-[E]:Non-Event D/P or GBA
d: [B]-[A]-[C]-[D]:Uncommon GBA Event (Restricted) or (Unrestricted)
などがあげられる(もしかしたら間違っているかもしれません)
(LID=性格値下位、HID=性格値上位、iv1=固体値1(H,A,B)、iv2=固体値2(S,C,D))
DPtでの野生のポケモン(伝説含む)や、GBAでの伝説やイベントのポケモンは(基本的には)[a:]のみ
GBAでの野生のポケモン(伝説は含まない)は[a:]、[b:]、[c:]のどれか
GBAでの主なイベントは[d:(Restricted)]
GBAでの一部のイベント(GCポケモンボックスなど)は[d:(Unrestricted)]
920 :
917:2008/10/17(金) 22:14:27 ID:0let4cP5
固体値についての注意
[iv1]、[iv2]は生の擬似乱数をそのまま入力してはいけない
生の擬似乱数から固体値を算出するには
まず擬似乱数を2進数に変換してから
iv1 x|xxxxx|xxxxx|xxxxx|
-| Def | Atk | HP |
iv2 x|xxxxx|xxxxx|xxxxx|
-| SpD | SpA | Spe |
(Atk=こうげき、Def=ぼうぎょ、Spe=すばやさ、SpA=とくこう、SpD=とくぼう)
(HPの値が11101ならば、HPの固体値は29である)
↑の表をもとに固体値を算出する