仄暗いレートの底から

スポンサーサイト

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

【ポケモン3世代】光るポケモン、光らないポケモン

※注意※ 割とクソ記事です。

乱数調整と言えば色違い、色違いと言えば乱数調整みたいなとこってありますよね。(色乱数アンチの方、ごめんなさい…)
草むらから飛び出してくる子を光らせたり、伝説のポケモンを光らせたり、オダマキ博士にもらう子を光らせたり…乱数調整をすれば1/8192もなんのその、簡単に色違いに出会えます。

しかし、世の中には変わった人もいるものです。

「オダマキ博士を襲うポチエナって、光らないのかな?」

そんなことを考えるアホもいるんですね。



この記事では、普通じゃない色乱数をしたい人のために、RS FRLG Emでポケモンが光る箇所を紹介したいと思います。
叶うなら、この遺志を継ぐ者が現れることを…。

ルビー/サファイア/エメラルド
RSとEmで若干の違いは無いと言えば嘘になりますが、そんなに気にしなくていいでしょう。犬か熊か程度です。

①オダマキ博士を襲うポチエナ/ジグザグマ
3g無駄色乱数のすべての始まり。
RSではポチエナ、Emではジグザグマがオダマキ博士を襲います。
ポチエナ/ジグザグマは普通のシンボル個体と同様にPIDと個体値が生成されています。IDは自分のものを参照します。
御三家のPIDが生成されてから138[F]程度後でポチエナ/ジグザグマのPIDが生成されるので、そこに合わせれば光ります。
また、御三家と同時に光らせることもできます。

②ミツルがセンリから借りるジグザグマ
割と闇が深めなやつ。
ズレ調整をしようにも、画面から得られる情報が性別とH個体値だけです。ひたすら回数に任せて虱潰しに調べるほかありません。
PIDが生成されるタイミングはジムから出た直後。

③ミツルが捕まえるラルトス
めちゃくちゃ闇が深いやつ。
色判定が特殊で、PID生成の直前にミツルのTIDとSIDを生成し、色判定に使います。
生成タイミングは戦闘に突入する瞬間。「うわっ!」で待機すれば大丈夫です。
ただし、道路に不定NPCがいるおかげで、NPC消費があります。 (闇ポイントその1)
そして、ジグザグマと違い、画面から得られる情報が一切ありません。性別は♂固定です。(闇ポイントその2)
成功例のフレーム調整を真似するのが一番だと思います。。。

④バトルタワーの相手が使うポケモン(RS)
3匹同時に光らせることも(理論上は)可能です。2匹以上同時は成功者がいません。
PID生成は戦闘に突入する瞬間。ポケモンの種類決定→PID決定→ポケモン→…といった処理になっています。
っていうかバトルタワーの各種処理について触れたほうが良いんでしょうか。またいつか、そのうち、きっと、書く…かもしれません。

⑤バトルフロンティアの相手が使うポケモン(Em)
施設ごとに多少の違いはありますが、どの施設でも光ります。簡単なのはタワー。
ポケモンごとに性格が固定されているので、出てくるポケモンの種類を合わせないといけないのがちょっと厄介なところ。

⑥バトルファクトリーのレンタルポケモン(Em)
色理想三犬が3世代で手に入るのはここだけ!
ファクトリーについては後日詳細な記事を書きますが、レンタル6匹の種類決定とPID生成のタイミングが分離されているので、厄介と言えば厄介。
ですが、ID次第で調整タイミングの許容範囲が広くなる可能性があり、下手をすれば1秒ズレても光ります。(これは性格が固定されている個体すべてについて言えます。後述するガラガラなんかがそうです)

⑦トレーナータワーのポケモン(Em)
未検証ですが、光ったという報告があるとかないとか。


ファイアレッド/リーフグリーン
初期seedが不定なおかげで難易度が上がっていますが、その分光った時の「何やってんだろう」感は尋常じゃないです。
光らない間はもっと虚無です。

①トキワシティの爺が捕まえるビードル
ミツルラルトスと同じ処理です。
イベントを見終わった後に、どの初期seedを引いたかを野生で確認すれば、虱潰しの効率が上がります。
実はNPC消費が挟まらないだけミツルラルトスより簡単だったりする…。

②ポケモンタワーのガラガラの幽霊
華麗なるサイドステップで有名なガラガラ。
性別♀固定、性格きまぐれ固定です。そのおかげで許容フレームはかなり広くなります。
ただし、色エフェクトが出ない上にわかりにくい色なので、注意しないと見逃します。

③教えテレビで出てくるポケモン
おそらく最高難易度クラス。未だ成功者おらず。(というか挑戦者すらいない)
その理由は、教えテレビのメニュー画面で毎フレーム312[F]の乱数消費があるから。
どのタイミングでこの消費がストップするのかの計測から始めないといけません。
ただしポケモンごとに性格・性別が固定なので、許容フレームは広めです。
最高で3匹同時に光らせることが可能(…理論上は)。


以上が、僕が知る限りの無駄色乱数が可能な箇所です。
ちなみに、ストーリー道中のトレーナーが出すポケモンは光りません。
完全な自己満足の世界ですが、やってみると案外楽しいですよ。みなさんもやりましょう。
間違っている箇所や不足している点があればお教えください…。
スポンサーサイト

【Em乱数】バトルファクトリーの処理について

この記事はPokémon RNG Advent Calendar 2016 23日目の記事です
Pokémon RNG Advent Calendar 2016 – Adventar

※注意※ 

こちらは乱数調整のやり方を解説する記事ではありません。
乱数アレルギーの方はぶらうざばっく推奨。


■基本事項 -3gen乱数処理理解の基礎の基礎-

・3genで使われている乱数列(疑似乱数を作り出すための数列)は、
 S(n+1) = (0x41C64E6D * S(n) + 0x6073) % 0x100000000
 初項(=初期seed)はEmでは基本的に0x0固定。

・乱数種(乱数列の項)の上位4桁を取り出し、乱数として使用する。

・乱数列は1Fごとに1つ進む。また、乱数を使ったときにも進む。(ただし乱数調整の際には後者はほとんど考慮に入れなくて良い場合が多い)


■ファクトリー乱数概要

Q.ファクトリー乱数って何を調整するの?

A.初めのレンタル6匹、相手の手持ち3匹(あとついでに相手トレーナー)を全部調整できます。
つまり、バトルファクトリーの運ゲー要素を極力排除できます。
それなのに金ダツラ倒せない。おかしいな…


レンタル6匹と1戦目のトレーナー・手持ち3匹はすべて同時に決定。
2戦目以降はトレーナーと手持ち3匹が同時に決定。
基本的な処理は1戦目と2戦目で変わりませんが、スキップ条件が若干違います。


■処理の詳細

まず決定タイミングは、1戦目は控室に入って研究員が喋り始めた瞬間。

なので調整の際は、ここで待機してタイミングを合わせます。

Fac待機


2戦目以降は、「つづける」を選択した瞬間。当然ここで待機です。

taiki2.png


次に、1戦目の決定処理について。まず初めにレンタル6匹が決定されます。
バトルフロンティア(とバトルテント)で出てくるポケモンの型は全部で882種類あり、それぞれ0~881までの番号が割り振られていて、その中から各施設・ルール・周回数に応じたポケモンが選び出される仕組みになっています。
ファクトリーでは以下の通りです。

勝数 Lv.50 オープン
0~6 No.110~No.199 No.372~No.467
7~13 No.162~No.266 No.468~No.563
14~20 No.267~No.371 No.564~No.659
21~27 No.372~No.467 No.660~No.755
28~34 No.468~No.563 No.372~No.881
35~41 No.564~No.659 No.372~No.881
42~48 No.660~No.755 No.372~No.881
49~ No.372~No.849 No.372~No.881

乱数値 % (その周で出てくるポケモンの総数) 
に対応する番号のポケモンが選び出されます。
ただし、累計交換回数が15以上になると、前から1匹ずつ、次の周のリストを参照して決定されるようになります。
15回~21回で1匹、22回~28回で2匹、…となり、43回以上交換すると前から5匹が対象になります。(Lv.50の8週目以降、オープンの5週目以降は同じリストになるため、効果は現れません)

ポケモン決定の際、

既に選ばれた番号と同じ(種族ではない)
既に選ばれたポケモンと同じ持ち物を持つ

のいずれかを満たすとスキップ対象となり、もう一度処理が行われます。(単に同じポケモンというだけではスキップがかからないので、勝数が増えるとレンタルに同じポケモンが2匹並ぶこともあります。)
これを6匹決まるまで繰り返します。


レンタル6匹が決定したら、その次の乱数を使ってトレーナーを決定します。
これもポケモンと同様に、

乱数 % (出てくるトレーナーの総数)

で決定されます。 連勝数とトレーナーのリストは以下の通りです。

1~6人目 7人目
1周目 No.000~No.099 No.080~No.119
2周目 No.080~No.119 No.120~No.139
3周目 No.100~No.130 No.140~No.159
4周目 No.120~No.159 No.160~No.179
5周目 No.140~No.179 No.180~No.199
6周目 No.160~No.199 No.200~No.219
7周目 No.180~No.219 No.220~No.239
8周目以降 No.200~No.299 No.200~No.299

この時のトレーナー決定にはスキップ処理はありません。1人目なので。


そして、トレーナーの手持ち決定です。
使用するポケモンはレンタルと同条件、決定処理も同様です。
ただし、スキップ条件が若干違います。

・レンタル及び既に選ばれたポケモンと同じ種族
・既に選ばれたポケモンと同じ持ち物を持つ

レンタルと同じスキップ条件に加え、レンタルに並ぶポケモンとの種族被りを回避する感じです。
レンタルポケモンとの持ち物被りはスキップ対象にはなりません。


…と、ここまでが一度に決定します。



次に、2人目以降の決定について。
まずはトレーナーの種類が1人目と同様に行われます。 ただし、

・前回と同じトレーナー

はスキップ。
手持ちの決定も1人目とほぼ同じですが、2戦目以降はトレードがある都合上、前回の対戦相手が使ったポケモンもスキップ対象にしなければいけません。(もしスキップがかからなかった場合、こちらと相手の両方の手持ちに同じポケモンが並ぶ可能性が出てきます)

・主人公側の手持ち3匹のいずれかと同じ種族
・前回の対戦相手の手持ち3匹のいずれかと同じ種族
・既に選ばれたポケモンと同じID
・既に選ばれたポケモンと同じ持ち物を持つ

がスキップ条件となります。



PID決定は、レンタルポケモンが レンタルポケモン選択画面に入る直前(6匹連続)、トレーナーの手持ちは戦闘に入る瞬間(3匹連続)です。
フロンティアのポケモンは性格が固定のため、性格が一致するまでPIDを再計算しつづけます。
色判定もちゃんと行われるため、色違いにすることも可能です。



最後に、ダツラの手持ちについて。
生成タイミングは戦闘に入る瞬間。ダツラだけは生成が他のトレーナーと異なり、

1匹目生成→PID生成→2匹目生成→PID生成→3匹目生成→PID生成

という処理で決定します。また、スキップ条件が

・既に選ばれたポケモンと同じ種族 ・既に選ばれたポケモンと同じ持ち物

のみで、主人公側の手持ちと同じポケモンを出してくることもあります。
なお、手持ち生成の間のPID生成に伴う大量スキップのせいで描画割り込みが発生し、2匹目以降のポケモンの調整が困難になっています。



■さいごに

以上、つらつらと処理を書き連ねてきましたが、実際にリストを見たほうが分かり良いかと思います。
ファクトリーツール
ファクトリー乱数用のツールでございます。そのままファクトリー乱数に使えます。

・参考サイト ポケットモンスター情報センター 2号館(おそらく今は見れません)

【FRLG乱数】徘徊位置確認のススメ

フレーム調整は完璧だったのに初期seedが違った…
また数十分待機しなおしなのか…

とお嘆きのあなたに


世間では3世代乱数は難しいと言われていますが、その中でも特にやる人がいないのがFRLG乱数
RSやEmと同じように1/60秒の精度を要求されるのに加え、初期seed調整も要求されます。
これも1/60秒程度の精度が必要で、そのうえ4~5個の初期seedのどれを引くかわからないのですから、難易度は段違いです。
しかし初期seedに幅がある分、初期seedが0x0固定のEmや1分単位でしか変化しないRSよりも出せる個体の幅が広く、比較的理想個体を出しやすいという利点もあります。

前置きはこのくらいで。
いくらFRLGがEmやRSよりも個体の幅が広いとは言え、初期seed集めには割と労力が必要ですし、いくら集めても数分待機で優秀な個体がヒットすることは稀です。なので理想個体に近い個体を出そうと思ったら、数十分、時には一時間以上に及ぶ長期待機が必要とされます。いくら待機時間が長くとも、きちんと微調整をすれば±2Fまでは簡単に近づけられるので、試行回数を稼げばいつかは成功するのですが、冒頭に書いたように「フレームは合ったのに初期seedが違った」というのはかなり精神ダメージが大きいものです。
そこで、徘徊位置での初期seed確認が役に立ちます。
FRLGでは、クリア後に各地を三犬が走り回ります。ロード直後の三犬がいる道路も、当然乱数から決定されています。そこで、この決定位置を調べれば、競合する4~5個の初期seedのうち、どれを引いているのかをだいたいつかむことが可能となります。
HGSS乱数の徘徊位置確認と同じことですね。ただしHGSSと違い、初期seedが確定することは稀です。1匹分しか情報がありませんし、決定タイミングも一定にはならないためです。それでも効率は格段に良くなります。

さて肝心のやり方です。
まずは三犬を図鑑に登録しないといけません。登録していないとそもそも位置を見られませんからね。
先頭にLv.45くらいのポケモンを置いて、スプレーを使って草むらを走りまくりましょう。1時間もすれば出てくると思います。
準備ができたらあとはいつものように乱数調整をするだけです。
徘徊位置の決定は「つづきから」を押したタイミング。FRとLGで違うかもしれませんが、LGでは初期seedが決定してから連打すれば200F前後で徘徊位置が決定していました。
あらすじを見終わったら図鑑を開き、三犬の生息地を確認しましょう。徘徊位置の候補の中にある道路にいれば、目標の初期seedを引けている可能性が高いです。候補外だった場合はやり直しましょう。

Q.徘徊位置を計算できるツールは?
A.昨日確認したところ、僕の使っているツールを置いていたブログが閉鎖されていました。なので、今現在入手手段はありません。
いちおうweb上で動くツールもあり、そちらはまだ使えますが、了承無くURLを貼るわけにもいかないので…。
時間があるときに作ります。たぶん。きっと。おそらく。
プログラミングできる方は自作してください。決定処理は [乱数値 % 25 + 1]です。計算結果の道路が徘徊位置です。

FRLGは三鳥やミュウツー、カントー限定のオシャボ野生ポケモンなどが捕獲できますので、ぜひとも挑戦してほしいと思っています。オシャボカウンターゲンガーとか、高個体自爆ミュウツーとか。意識の高さを見せつけてやれますよ。
質問のある方はコメントかツイッターまで。コメントは気づくのが遅くなると思います。
ではでは。

【Em乱数】ジャッジ爺は数学が苦手【小ネタ】

どうも、ついにコードフリークを買い、念願のエミュ環境が整ったので毎日解析三昧の夜綱さんです。
フロンティア内の戦闘乱数を調べていて、もう少しで実用に足るくらいまで情報がまとまりそうなのですが、なかなか思うように進まず…。気分転換がてらエメラルドのジャッジ爺の処理を調べてみました。

●ちょっとだけ説明。
エメラルドから登場した個体値を教えてくれる人物、通称(自称してる人もいる)ジャッジさん。5世代からは最高個体値が複数個所あっても全て教えてくれる、6世代では個体値0の箇所も教えてくれると世代ごとに進化を続け、そのうち個体値を直接教えてくれちゃったりするんじゃないかと期待されているジャッジさんですが、初代ジャッジ爺はポンコツそこまで親切ではありません。最高値が複数あったらランダム一箇所しか教えてくれません。しかも偏ってる気がする。
せっかく孵化乱数で6Vっぽいのが来たから確認しようと思っても
( ´,_ゝ`)「とくこうが…」
( ´,_ゝ`)「とくぼうが…」
( ´,_ゝ`)「とくぼうが…」
( ´,_ゝ`)「すばやさが…」
( ´,_ゝ`)「とくぼうが…」
( ´,_ゝ`)「こうげきが…」
( ´,_ゝ`)「とくこうが…」
( ´,_ゝ`)「とくぼうが…」
と言った感じ。こんな初代ジャッジにイラついたみなさんのために、本当に偏っているのか調べてみました。

●結論から言うと
めちゃくちゃ偏ってます。気のせいじゃありませんでした。
具体的な処理を端的に言うと、
・HとAを比較、大きいほうを残しておく。
・同じ場合、乱数を発生させて、偶数なら前者(H)、奇数なら後者(A)を残す。
・残ったほうとBを比較。
…以下Dまで繰り返す。(HABSCDの順。初代の能力の並びの名残)

中学数学が理解できる人ならわかると思いますが、Hに近い能力ほど出にくく、Dに近いほど出易いです。初代ジャッジはきっと小学校までしか出てないんでしょう…。こんなイライラ処理を作ってしまわないためにも、数学は勉強しておきましょうね。

【Em乱数】フロンティア戦闘乱数(仮)

まだ調査途中なので、メモ程度に。
フロンティア施設内では、野生・トレーナー戦に関わらず、戦闘中の画面描画による乱数消費が停止します。
わかりやすく言えば、4世代みたいな乱数の動きになるってことです。何もしなければ乱数は動きません。
つまり、(仕組みと現在位置さえ割り出せば)戦闘の動きをコントロールすることができます。夢のようですね!
ラッキーが先制の爪を発動させて指を振ったら絶対零度が出て相手に当てたけどきあいのハチマキで耐えられた、みたいなこともできるかもしれません。

現在わかっていること。
・乱数消費が止まるタイミングは、戦闘突入アニメの後。引いた個体の107Fもしくは108F後で止まる。(ただし、細い線が左右にスライドするアニメの場合。白線が重なるようなアニメの場合は170Fもしくは171F、野生ポケモンより初手のレベルが低い場合はこちらになる)

・乱数が止まった後、爪判定、相手の行動決定で2消費され、自分の行動選択になる。

・爪判定は乱数値(seed上位16bit、以下Rと略) < 0x3333

・行動決定は R % 4. (野生ポケモンの技構成は2号館跡地を漁ってください)

・技を出す際の消費は命中判定、急所判定、ダメージ乱数、追加効果の順。

・攻撃技は基本的に上記4つ全て判定される。倒した場合の追加効果判定は無し?

・必中技は命中判定無し、固定ダメージ技は急所判定とダメージ乱数無し。ただしバニラ技でも追加効果判定はされる。

・命中判定はR % 100と命中率を比較。

・急所判定はR % 16で、0ならば急所。

・ダメージ幅はR % 16。算出されたダメージに(100 - R %16)パーセントの補正を加える。

・算出された最大ダメージが残りHPより大きい場合かつきあいのハチマキを持っていた場合、急所判定のあとに鉢巻判定が入る。R % 10 == 0なら耐える。

・補助技は必要の無い判定はなされない。例えば毒々や電磁波は命中判定のみ、手助けは消費無し。

・指を振るは R % 0x200 + 1の技番号の技を出す。ただし技番号は353までしかないので、354以上が出たら再判定。

ざくっと書くと、
■LID決定
↓(この間107F~108F)
■乱数停止

■爪判定
■相手の行動決定

■行動選択
↓(普通の攻撃技を使った場合)
■命中判定
■急所判定
■ダメージ乱数
■追加効果判定
↓(後攻の番)
■命中判定
■急所判定
■ダメージ乱数
■追加効果判定

■爪判定
■行動決定

■2ターン目の行動選択

以下略

トレーナーはもうちょっとややこしくなりそうですが、そのうち調べます。

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