3世代乱数生成(初期seed)

ルビー・サファイア

初期seedはカートリッジの中に入っている内蔵時計RTCの時刻によって決定されている。
具体的には

RTCが初期化されてから現在までに経過した日数を分に換算した値と、
RTC内におけるBCD表記の時間と分をそのまま16進数の値として扱い、それを分に換算して計算した値と1440を足して、
その上位2バイトと下位2バイトをxorしたものが最初のシードになっている
【エメループ】ポケモン ループ考察・解析スレ【乱数】

つまり、内臓電池が切れてるの時は0x000005a0固定です。(1440を16進数にすると0x5a0になる)
初期seedの算出自体は、

5a0(24時間経過毎に+5a0)+3C×経過時間(0~23)+経過分(0~59)=初期seed
電池ありRS初期seedについて ~後篇~

という式で計算可能。
なお、上記に式の数字は全て16進数です。

エメラルド

基本的に電池の状態にかかわらず0x00000000固定。
ただし、冒険開始時は表IDが初期seedとなり、リセットするまで継続する。
エメラルドにおいて、表IDはTimerの値から生成されるが、裏IDは表IDを初期seedに3世代における通常LCGから生成され、
冒険が始まった後も乱数の生成はリセットするまでそのまま継続されます。

リセットできないため乱数調整には活用できなさそうに見えるが、水連さんが発見したBVコピーを使用することで表IDを初期seedとして乱数調整ができるようになります。
詳しくは、水連さんのブログ参照。
伝説厨のポケモン日記 【ポケモンEm】初期SEEDを0x0以外にする検証
期SEE …




ファイヤーレッド・リーフグリーン

0x0000XXXXという形をしており、XXXXの部分が変化する。
FR・LGというバージョンの違い、サウンドやボタンモードといったゲーム内の設定、起動から初期seesまでの経過時間及びその間に行われたボタン操作等によって変化する。
またロムの出荷時期によっても違いがあると言われている。(真偽不明)

また、FRLGもエメラルドと同様に冒険開始時は表IDを初期seedにしています。

サブコンテンツ

このページの先頭へ