ポケモンWikiでは記事の投稿、加筆、検証、修正等参加、協力してくださる方を必要としています。方法や詳細はポケモンWikiに投稿するにはをご覧ください。

プラチナループ

提供:ポケモンWiki
ナビゲーションに移動検索に移動

プラチナループとはポケットモンスター ダイヤモンド・パールプラチナにおいて希望の個体値性格などを持ったポケモンを出す、乱数調整手法である。ポケットモンスター ハートゴールド・ソウルシルバーでも大筋で同様の手法が使われる。

概要

ポケットモンスターシリーズでの個体値などの決定には擬似乱数を使用するのだが、擬似乱数の種を割り出す方法と操作する方法が解析されたため、プラチナループという一連の希望する個体値などを持ったポケモンを出現させる方法が発見された。

方法

乱数の種の電源投入時の初期値はABCDEFGH ただし、ABは(月*日+分+秒)の16進数でいう下2桁、CDは時間(24時間表記、24時は0時とする。) EFGHは(年-2000)となる。この種に1/30秒あたり2の値が加算されていく。 なお、続きからはじめるを選んだ瞬間に上記で求められる値が擬似乱数生成機にセットされる。 その後ある一定の法則で擬似乱数生成機が働く。擬似乱数発生器が働いたときの計算結果は下記の章を参照のこと。 その後ポケモンとバトルを開始したときの擬似乱数生成機が吐き出した数値が個体値その他となる。詳細は下記の章を参照のこと。 これを駆使することにより、希望したポケモンを得ることができる。

技術的解説

下記の情報についてはsmogon Universityを参考にして書いている。

擬似乱数

ダイヤモンド・パール・プラチナにおいては線形合同法によって擬似乱数を生成する。この方法は実装コストが安くそこそこ良い乱数を出力できる方法である。[1] またその乱数の種の上位16bitを乱数発生器の出力としている。ポケモンでは16進数[2]では(次の乱数の種 = 乱数の種 * 0x41C64E6D + 0x6073)[3]の下位32bitを次の乱数の種とする方法をとっている。[4]

性格値

性格値という数列(32bitである)は16bitの乱数生成器を2回使用して得ることができる数列である。この数列は性格性別特性を支配する数列である。 乱数発生器を使い発生した数値で、最初に発生させた数値を下位16bitに、後に発生させた数値を上位16bitにする。

詳細は性格値を参照のこと。

性格値の下位8bitをとると性別値になる。

詳細は性別値を参照のこと。

色違い

色違いは性格値とトレーナーIDおよび隠しID(セーブデータを解析しないと見ることはできない)を使用して生成される。 判定式:(ID上位)xor(ID下位)xor(性格値上位)xor(性格値下位)が7以下になるとき

個体値

個体値は乱数発生器を2回まわして得られる値を元に計算する。1回目に得られた値はHP、攻撃、防御の個体値の計算に使われ、2回目に得られた値はすばやさ、とくこう、とくぼうの計算に使われる。 なお、値は次の図のように使用される。[5](個体値はそれぞれ5bitである。)[6]

1回目 - 防御 攻撃 HP
1回目 x xxxxx xxxxx xxxxx
回数 1bit 5bit 5bit 5bit
2回目 - とくぼう とくこう すばやさ
2回目 x xxxxx xxxxx xxxxx

ポケモンの生成

第三世代ではいくつかの方法があったが、第四世代では単一の方法であるので、それを記す。 乱数発生は4回行われ、次の通りに使用される。

1回目 性格値の下位16bit
2回目 性格値の上位16bit
3回目 個体値1回目
4回目 個体値2回目

備考

  • RTAなどでプラチナループを行った結果としてIDがどう設定されているかなどを確認する際、最序盤ならメニュー画面を開かなくともNPCの歩き方や振り向き方である程度特定できる。これはメニュー画面を開いて確認を取ることによるタイムロスを避けたい場合に有効。
    • エンカウントやNPCの移動、振り向きなどもニューゲームからある程度の段階なら歩くマスを調整することである程度コントロールが可能。
  • 個体のパターンが高々2の32乗通りしかないのに対して個体値のパターンは2の30乗通り存在するため、6VあるいはAorC抜け5Vといった個体値の理想個体と色違いとの両立は特定のIDでないと出すことができない。
  • 使用ハードはニンテンドーDSニンテンドーDS Liteが推奨される。3DSを用いる場合はホーム画面で時計の秒数が確認できないため、タイマーを1つ追加する必要がある。

関連項目

脚注

  1. ただし、統計学的には良い乱数とはいえない。統計学的に良い乱数や暗号学的に安全な乱数などがある。また予測性も再現性もない乱数はさいころなどに代表されるハードウェア乱数発生器である。
  2. 4bitを1文字で表したもの。詳細は十六進法を参照
  3. 10進数だと(乱数の種*1103515245+24691)
  4. 乱数の種が0x12345678とすると次の乱数の種は0x0B71C18B、出力は上位16bitの0x0B71となる。Windows電卓で関数電卓モードにし、16進、Dwordモードにすれば計算しやすい。Qwordモードだと上位32bit分を切り捨てなければならない。
  5. よって、1回目に0x1234、2回目に0x5678が得られたとする(実際に出るかは不明)と、1回目の数字は0001001000110100となる。よって0|00100|10001|10100|となるので、HP=10100=0x14=20=K、攻撃=10001=0x11=17=H、防御=00100=0x04=4=4となる。また、2回目の数字は0101011001111000となる。よって0|10101|10011|11000となるので、すばやさ=11000=0x18=24=O、とくこう=10011=0x13=19=J、とくぼう=10101=0x15=21=Lとなる。
  6. 16進数から2進数への変換はWindows電卓の関数電卓モードを使うと表示しやすい。16進数で数字を入力した後2進に表示を切り替えると2進の16bitの数列が表示される。