【クレクレ】ポケモン改造 配布スレPart5【乞食】

このエントリーをはてなブックマークに追加
917名無しさん@お腹いっぱい。
ポケモンでの乱数発生(または性格値と固体値の関係)について


ポケモンのゲームでのイベントで発生する乱数(固体値、性格値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]の判定がでる
918917: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] … とおく
 この擬似乱数の組み合わせが性格値&固体値である
919917: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)]
920917: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である)

↑の表をもとに固体値を算出する