スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【ポケモンFRLG】初期SEEDの生成

本記事は、Pokémon RNG Advent Calendar 2016 11日目の記事になります。



記事内容はリクエストのあったFRLGの初期SEEDについて。
戯言程度に。
軽く見流す程度の記事になるので過度な期待はしないでください。

といっても、2009年の時点で初期SEEDの生成や仕組みは割れており、調べれば出てくるので生成については多く語ることはありません。
基本的な事は全てsmogonの最初に書いてあるので各自参照。

ざっくり説明すれば、FRLGの初期SEEDはTimerの値から生成されており、そのTimerはGBAのCPUクロック数依存であるという事。
GBAのCPUクロック数についてはこちらを参照。

さて、GBAのCPUクロック数依存であり、その値の情報も出ているのであれば、1[F]辺りに進むTmerの値を計算出来るだろう。
まず、この段階に至らず、好き勝手言ってる輩が多い時点で察するところはあるのだが。

計算すると、1[F]辺りに進むTimerの値がピッタリ割り切れないことが分かるだろう。
1[F]毎に進むTimerの値が均一でない理由がコレで分っただろう。

ここに関わっている可能性があるキー入力や設定等が追加されるが、コレは条件を揃えればあまり意識しなくてよい。設定は初期SEED決定までの間に変動することはなく、キー入力も初期SEED決定前から決定までの入力時間が一定である為である。
また、意識したところでこれらの操作で、意図的にTimerの値を制御するのはほぼ不可能である。

さて、適当に生成について書いたが、ここで疑問に思う事はないだろうか。

1[F]辺りに進むTimerの値が均一でなくても、再現性をとることは極めて簡単なのである。
このことから、1[F]辺りに進むTimerの値は均一ではないが、何らかの法則に基づいて、決まった値だけ進んでいることが分かるだろう。

この何らかの法則を解明できれば、出る可能性のある初期SEEDの予測が可能になると考えられないだろうか?
何故、出る可能性があるなのかは、キー入力や設定等が含まれるからである。

恐らく、端数を機械的に計算しているだけであり、なんとなく思うところはあるのだが、データ不足なのでこれ以上は何も言えない。

多くのデータを集めれば結論は出るのだが、実機での調査になる為、かなり難しい話になる。
まず、初期SEEDの生成位置が明確に分からない為、初期SEEDを生成位置順に並べるのも難しい。

なにより、おしえテレビ内のノイズ消費を利用した、TV消費有乱数が確立された今では初期SEEDの数がそれほど要らない
JPN版であれば初期SEEDを共有すれば十分な数が集まる

という事もあり、初期SEEDについてこれ以上どうこうする必要はないのである。
何より、出る可能性のある初期SEEDである為、期待が出来ない。

もしそれでも初期SEEDに求めるのであれば、1[F]毎に最低30回位データをとり、最低10000[F]程度の範囲のデータを提供されれば考えます。

それだけのデータがあれば、それこそTV消費有乱数と初期SEED共有した方が良いと思いますが。
初期SEEDに夢を見るのはいい加減やめましょう。

【ポケモンFRLG】おしえテレビを利用した乱数の高速消費

情報は間違っている可能性があります。ご利用は計画的に。

以前におしえテレビ内のポケモンを光らせる検証をしたとき、おしえテレビのチャンネル選択時のLCGの処理が違うという記事を上げましたが、それは誤りという指摘を受けました。

本記事の情報は、やつなさんによる情報が含まれています。
予め、許可を取っていると同時に、記事をお願いしますと頼まれました。

詳しく調べず、誤った情報を流した事を謝罪すると同時に、細かい検証を行い、指摘してくださったやつなさんに感謝します。



取り敢えず、以前の誤った情報のおさらいから
おしえテレビを起動し、チャンネル選択画面の間に、LCGが通常とは異なるものになるという事でした。

SEED = SEED * 0x4A9EEACD + 0x63FD404B

これがそのLCGでしたね。

これを利用できないかと長らく考えてましたが、LCGが変化するとなると計算も調整も厄介で扱いにくいという事で、思考が止まっていました。
ここまで誤った情報のおさらい。
ここから、本編です。





RTAの為にエンカウント乱数の検証を開始し、その中でLCGの監視を始めた結果、おしえテレビLCGが存在しないことが判明するという、検証してたら別の検証になってた乱数検証勢あるあるから事は始まる。




LCGが変化しているのではなく、単純にチャンネル選択画面で謎の消費が大量に挟まっていたという事。
ですが、謎の消費が挟まって、おしえテレビLCGという規則的な計算式が出るのは奇妙ですね。
謎の消費が大量に挟まって尚、規則的な計算式になるという事は、消費が一定であり、安定しているであろうという仮説は容易に立てられるでしょう








やつなさんの調査結果とおしえテレビLCGから、消費数が313[F]一定。仮説道理、消費数が一定であることが証明されましたね。
要するに仕組みは戦闘乱数の進みと全く同じです。
戦闘乱数が通常の2倍なのに対して、おしえテレビは通常の313倍なので、物凄く消費数ですね。

さて、今まではLCGが変化するという事を考えて実用化を目指していましたが、単純に倍速で一定数、乱数消費がされると考えれば実用化が容易です。

と言っても、計算は複雑な事をしていますが、動きは結局同じことなので、私の頭が固いか知識不足なだけです


やはり、考え方の問題。

何故、こんな消費が行われているのかという話になりますが、恐らく背景のノイズが原因と言う話になっています。
実際はどうなのか知りませんが、知ったところで意味はないでしょう。

やつなさんはこの消費の事をノイズ消費と呼んでいます。

ここまで、エミュレーターでの情報です。
後は実機で実用化が出来るかが問題ですね。こちらもやつなさんが一晩でやってくれました。





実機の結果もエミュレーターと同じようですね。



さて、実機で実用化するにはどうですればいいでしょうか?
単純にフレーム合わせの回数が1回増えるだけです。簡単ですね?
私もやつなさんも簡単な事で現実的だと言っているので超簡単。

単純に一定数で大量消費されているだけなので、実際の乱数調整も言う程、複雑にはなりません。

初期SEEDの再現性をとって、一定にするのは当たり前として軽く色々説明を。

まず、一定数で大量消費されているだけなので、予め決めたある時間内で、予め決めた時間だけおしえテレビを起動すれば、起動するタイミングは一定にする必要はありません

このおしえテレビを起動して大量消費することをやつなさんはTV消費と呼んでいます。

つまり、初期SEED決定後、300[F]経ってから、TV消費を1000[F]、500[F]後にエンカウントするのと、初期SEED決定後、600[F]経ってから、TV消費を1000[F]、200[F]後にエンカウントするのは同じという事です。

予め決めた時間内に一定時間、TV消費するだけなので、エメタイマーが終わった瞬間に別のエメタイマーを始めるという事もありません。

ただし、TV消費で1[F]でもズレれば313[F]分ズレたことになるので、エメタイマーの設定の調整は厄介です。

また、ファイヤーはファイヤーズレ、フリーザーはフリーザーズレ、NPCが存在するMAPでの野生のポケモンは注意が必要です。
と言っても、おしえテレビをバックから起動すれば、同時に回避できるので特に問題はありません。

313倍で消費される為、TV消費1秒(60[F])で18,780消費
TV消費10分(36,000[F])で11,268,000消費が可能になります。

実際に個体検索してみれば分かりますが、10,000,000[F]もあれば性格一致5UVどころか、性格一致6UV、理想(理論値)個体がソコソコな数がヒットします

単純に現実的に積れる個体が増えた為、光る高個体のポケモンも積りやすくなっているのも注目点です。
EmでID調整ができない為、光る高個体のポケモンを積もり難いというのをTIDSEEDで間接的に解決した事と同じですね。

Twitterでは、XD乱数のやり方をFRLGで実現するやり方もまとめましたが、流石にこちらは現実的ではない上に、一部のポケモンでしか使えないので説明は省きます。

【ポケモンGen III】6UVサンダーの個体乱数考察メモ

・めざパ水
 臆病:31-30-30-30-31-31
 → XDで存在する個体

 控え目:31-31-31-30-31-30
 → XDの色回避ルーチン個体

・めざパ草
 臆病:30-31-30-30-31-31
 → FRLGで存在する個体

 控え目:30-30-31-30-31-31
 → XDで存在する個体

 控え目:30-31-30-30-31-31
 → XDの色回避ルーチン個体、FRLGで存在する個体

 控え目:30-31-31-30-31-31
 → XDで存在する個体

 控え目:31-31-30-30-31-31
 → FRLGで存在する個体

・めざパ氷
 臆病:30-31-30-31-31-31
 → FRLGで存在する個体

 臆病:31-31-31-31-31-30
 → FRLGで存在する個体

 控え目:30-30-30-31-31-31
 → XDで存在する個体

 控え目:31-31-31-31-31-30
 → XDの色回避ルーチン個体
プロフィール

suiren1350

Author:suiren1350
跡地:伝説厨のポケモン日記

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。