エメラルド自販機乱数
BW(5世代)→Pt(4世代)ときてやらないわけにはいかないなぁと思いつつも
余りの難易度の高さから後回しにしていた例のアレをついにやってしまいました。
毎度おなじみのアレです。自販機乱数です。消費税増税で自販機の飲み物の値段も上がるしね、今のうちにね、
今回は前情報としてポケモン情報センター2号館の小ネタ集(2号館-資料集)に確率と、2回連続まで当たるという情報があったので、これにならってやってみました。
まず、専用のプログラムで初期seed:0で当たりが出るフレームを出力。
3世代自販機乱数の難易度を格段にあげている原因のズレ補正ができないという点を和らげるために、当たりが連続してるところを狙います。
プログラムの結果から1205,1207,1210と比較的近くに並んでいる場所が見つかったので、ここを目標にやっていきます。
やっていきますが、まぁ当たりません。
このハズレが操作誤差によるものなのか、狙っているタイミングが違うのかが分かりません。しかも、どのタイミングで判定してるのかすらわかりません。
困ったのでKaphotics先生に教えてもらいました。
すると、「どうぐポケットに しまった! の表示の後だよー」との返事があったので、
色々試した結果、
たまに当たりが出るけど頻度が低すぎるのは後ろの1259Fを引いてるんじゃないか、と思って待機時間を50Fほど早めたところ当たりの頻度が格段に上がったので多分これが原因でしょう。
「おいしいみずが でてきた!」でAを入力した50F後ぐらいが当たり判定のタイミングになっているみたいです。
で、当たるタイミングが分かったわけなので2連続にチャレンジします。
2回目の当たり判定は1回目とは別に行われているようなので、1207F付近のFで当たりを引いた後待機して、2回目のFを狙うという作業になります。
で、調べたところ、1898F,1899Fの連続2Fが当たり判定を満たすということが分かりました。自販機乱数をやってくれと言わんばかりの乱数の並びです。
というわけでやる人はいないだろうけど、実際の調整は
ソフトリセットから1150~60Fほど待機して「おいしいみずが でてきた!」の画面でA
↓
当たりが出れば「あたりだ! もういっぽん おいしいみずが でてきた!」の画面で690Fほど待機してA
という手順になります。あくまで目安であってこの時間設定で必ず成功するわけではないということにはご留意ください。
総試行回数は調査含めて50回程度なので、やりたい人はやってみると面白いと思います。次はFRLGで誰かやりましょう。間違いなく最難関です。
明日公開するとエイプリルフールになりそうだったので今日中に成功して本当によかったです。
性格値の話
ポケモンwikiその他各種ブログに載っている情報は古かったり間違っていたりするので、各世代をまとめたものを書いてみます。
性格値とは
性格値はポケモンそれぞれが持つ16進数8ケタの値です。
例えば、C5EE7CF6のように、0~Fまでの数字が8個並んでいます。
(16進数の世界ではA~Fまでのアルファベットも便宜上数字として扱います。)
この8ケタの数字によってポケモンのさまざまな情報が決定されています。
性格値からわかること
まず、第3世代から第5世代まで共通することとして、性別・個性・(パッチールの模様)が性格値から決められます。
・性別
性格値を256で割った余りを性別値と呼びます。16進数の場合、下2ケタがそのまま性別値になるので、256云々の部分は頭の片隅に残すぐらいで大丈夫です。
性格値がABCDEFGHだったときは、GHが性別値になります。この値をポケモンごとに設定された雌雄比に従って評価し、
♀:♂=1:7⇒GHが0~1Eなら♀,1F~FFなら♂
♀:♂=1:3⇒GHが0~3Eなら♀,3F~FFなら♂
♀:♂=1:1⇒GHが0~7Eなら♀,7F~FFなら♂
♀:♂=3:1⇒GHが0~BEなら♀,BF~FFなら♂
となります。
ちなみにPHSが出力している性別値は100分率に変換したものなので、混同すると痛い目にあいます。
・個性
個性は性格値を6で割った余りと個体値から決められます。
余りを求めるときにわざわざ10進数に直すなんて無駄なことはやめましょう。
Windows付属の電卓で表示からプログラマ用電卓に設定後、16進数にチェックを入れて
性格値を入力して Mod 6
これだけです。性格値C5EE7CF6の場合
C5EE7CF6 mod 6 ⇒ 4
となります。この余りから最も優先される個性の位置が決まります。
余り4の場合、Cの位置から時計回りに個性の優先順位がつきます。
ここで、個体値の最大箇所の中で最も優先順位の高いものが個性の場所になります。
次に、第3,4世代と第5世代で共通しないことについて
・特性
夢特性以外の特性は性格値のある部分の偶奇によって決まります。
性格値をABCDEFGHとしたとき、
第3,4世代⇒Hの偶奇
第5世代⇒Dの偶奇
それぞれの場所が偶数(0,2,4,6,8,A,C,E)なら特性1
奇数(1,3,5,7,9,B,D,F)なら特性2です。
ちなみにトゲピーなどのXD内特性は個体値を決める乱数と一緒に決められていて、性格値とは別に決まっています。進化させると特性が変わることがあるのはこれが原因。
・性格
第3,4世代⇒性格値を25で割った余り
第5世代⇒性格値からは決まらない
第5世代では性格値と性格そのものには全く関係がありません。それぞれ別の値からつくられているので、性格値から性格を求めることは不可能です。
とりあえず大きいところだけ書いたけど足りるでしょう。
まとめ:第5世代で少し変更されたので気をつけましょう。
ちなみに、XYからパッチールの模様と性格値の間に関係性がなくなりました。
これによりパッチールの模様から性格値を求めるという方法が不可能になったので、もちろん性格値から計算されるPSVも求まりません。本当に残念です。
TVを利用したボルトロスの性格値確認
ボルトロスが飛び立った直後に小屋に戻ってテレビの内容で現在の乱数消費位置を探すという方法
ペラップ音程聞けない人でも確実に消費数の推定ができるので乱数調整の範疇で性格値を調べるには良い方法
数回やってみたけれど、テレビ内容の12~13ほど前に性格値決定箇所が集まっていたので精度はよさそう。
テレビ内容の50~60前程度という報告もあったので条件によってはかなり前後するようです。
なるべく速く小屋に入ってNPC等の消費を抑えましょう。
0~9分の内容だけど、条件を満たしてるはずなのに差し替えられたりしてて安定しなかったから10~59分のほうが無難かな。判定もこっちが細かいし。
今回北米ROMで試したので北米版のTVlistを作成しました。おだんさんのTVlistツールの日本語版テキストと差し替えれば使えるので北米版の人はご自由にどうぞ。
http://www1.axfc.net/u/3163958.txt?key=leucine
もとの日本語版のtxtはjpnTVlist.txtみたいな感じで名前だけ変えて置いとくといいと思います。
おだんぽよ on Twitter: "エントリ中にある"おだんさんのTVlistツール"とはこれです http://t.co/BqgVD9pC0M"
第五世代でのMT消費
孵化乱数をするために手動で個体値乱数列を調べる方法として行われていた化石prprで禁止されていたニックネーム画面の挙動を調べてみた。
原点回帰ということで連続個体値が分かりやすいので調査場所はシッポウの化石博物館
1体目を受け取りNN変更画面を表示したのち2体目を受け取ると間に7つのMT消費が確認できた。
新規個体じゃなくてもいいのか気になってヒウンの姓名判断士のところへ行ってNN変更画面を表示して挙動を調べると、NN画面表示1回ごとに
MTが7つ、LCGが2つ消費されている模様
パソコンの消費と変わんねーじゃねーか!
偶数消費できればBWでも効率的なMT消費が期待できただけに残念。
使える場所が限られるのでほぼパソコンの劣化です本当にありがとうございました。
多分これが一番無駄だと思います。
皆様お待たせしました。
ついに、あの乱数が帰ってきました。
第4世代自販機乱数に成功しました。
参考にしました→http://blastoise-x.hatenablog.com/entry/2013/01/28/113411
第4世代で自販機があるのは
DPt・・・トバリデパート5階
のみです。
どの場所を選んでもフロア内に不定NPCが1人ずついるので、NPC消費と闘いながらの調整になります。
自販機で連続して飲み物を買っている間はNPC消費の割り込みが発生しないので、目的消費付近まで来たら飲み物を買って確実に1ずつ消費を進めることもできます。
第4世代の自販機で当たりが出る確率については検索しても出てこなかったので、今回プラチナで調査しました。
結果から言うとr(n) % 64 == 0 のとき、当たりが出ます。
つまり、1/64の確率で当たりが出ます。この情報新規性あると思います。
普通に当てるだけでは面白くないので最高で何連続当たるかを検索したら、どうやら3連続が限界のようです。
3連続当たり→1回失敗→1回当たりという乱数の並びが見つかったので、今回はこのseed列を使うことにしました。
初期seed:0F080701
消費数:48
月×日+分+秒:15 or 271
時:8
フレーム+年-2000:1793
実際の調整手順は
トバリデパート6階のエレベーターの中でレポート
↓
目標時間で起動し、コイントスで初期seed一致確認
↓
エレベーターから出て速やかに自販機を目指し、自販機前でメニューを開く
↓ (ここまででNPCによる消費が4程度生じた)
ペラップの音程で現在位置を把握しつつ、目標消費数まで消費
↓
飲み物を買う
↓
ガコン!あたりだ!
↓
ガコン!あたりだ!
ガコン!あたりだ!
多分これが一番無駄だと思います。
HGSSは調べてないけど多分一緒。
暇な人はHGSSで調べてください。日本全国の自販機乱数愛好家が喜びます。
→Kaphotics先生が調べてくれました
Past Gen RNG Research | Page 43 | Smogon Forums
やっぱり正しかったよ!
今さら感あふれる4GenLCGの性質のあれ
命題
第3第4世代のLCGにおいて、2つのSEED AとBに A xor B = 0x80000000 の関係があるとき
両者から順次生成される子SEED A(n)とB(n)の間にも
A(n) xor B(n) = 0x80000000の関係が成立することが実際の乱数列から推定できる。
続きを読む
ポケモンXY国際孵化の色違い判定について
※現状仮説段階でしかないので読み物程度に思ってください。
※XYでのパッチールの模様は性格値とは別の値で決まっていることが後にわかったので少し書き直しました。(2014/3/21)
題名通りXYの国際孵化での色判定について、です。
前提としてXYの通常の色判定
1.TSV…トレーナーの表IDと裏IDをxorしたものの上位12bit
2.PSV…ポケモンの性格値を上下16bitずつに分けてxorしたものの上位12bit
3.TSV=PSVを満たせば色違いになる
これが正しいものとして話をすすめていきます。
国際孵化の事象を観察する上で新猫さんによるパッチールの国際孵化の事例を使用しました。
上:国内孵化
下:国際孵化
どうも同じ模様で色の成否が異なっているようです。
第5世代まではパッチールの模様が性格値から決められていたので今作もそうなっていると仮定すると同じ性格値で色の成否が異なるという結果になっています。
XYのパッチールの模様は性格値とは別の値によって決められているので、この仮定が成り立ちませんでした。
このパッチールをパッチールペインタDPt版で再現してみました。
性格値C707F0C4ぐらいかなと予想できます。
これを上下に分けてxorしてみると0x37C3となって新猫さんのTSV3568(0xDF0X)と異なっています。
ここからが本題
0x37C3と3568(0xDF0)を2進数で表記してみました。
0x37C3…0011011111000011
0xDF0 …110111110000
0x37C3の3~14bitの部分が0xDF0と一致しました。
これが偶然じゃないとすれば、今回の国際孵化での色判定は性格値からPSVを算出する場所を1bitずつずらしていって色になればそこで終了となっている可能性がありそうです。
わかりにくいと思うので書き方を変えるとこんな感じです。
for(i=4;i>=0;i--){
PSV=(HID^LID)>> i mod 0x1000
この判定法なら1性格値で判定は最大5回まで行われることになりますね。まぁ妥当な確率ではないかと思います。
国際孵化の補足ですが、この色固定の最中に親を変えて調査した新猫さんの結果で、
日本ROMで海外言語を選択したトレーナーのポケモンを親に使用しても色違いが産まれたことから、
言語のみを海外に変えたポケモンと純日本産の組み合わせでも国際孵化の判定になる
ことがわかっています。
Special thanks
新猫さん
(追記)
プルナレフ氏の協力のもと、孵化に用いられる乱数列を固定した状態で国内孵化と国際孵化を切り替えたときに個性が変わるのかという実験を行いました。
供試個体
JPNゴース♀ HBCDS(赤い糸)
JPNゴース♂ HBCDS(かわらずの石)
ENGゴース♂ HBCDS(かわらずの石)
方法
♀を育て屋に預けた状態でレポートを書き、JPN♂を預けて1つ目の卵の個体値、個性を確認したのち、セーブせずにリセット
次にENG♂を預けて1つ目の卵の個性を確認し、固定してある卵を破棄する。
この作業を10回繰り返した結果
1回目
日 HCDS 昼寝をよくする
英 HCDS 昼寝をよくする
2回目
日 HCDS ものおとにびんかん
英 HCDS ものおとにびんかん
3回目
日 HBCS うたれづよい
英 HBCS うたれづよい
4回目
日 HBCD イタズラがすき
英 HBCD イタズラがすき
5回目
日 HBDS うたれづよい
英 HBDS うたれづよい
6回目
日 HBDS うたれづよい
英 HBDS うたれづよい
7回目
日 HBCS うたれづよい
英 HBCS うたれづよい
8回目
日 BCDS うたれづよい
英 BCDS うたれづよい
9回目
日 HBCS 昼寝をよくする
英 HBCS 昼寝をよくする
10回目
日 HBDS 昼寝をよくする
英 HBDS 昼寝をよくする
以上のようになり、全ての試行で個性が一致している。
この個体値と個性の組み合わせで、全てが偶然一致する確率は約10万分の1程度なので、個性は変わらないものとみなしてもよさそう。
個性が過去作同様に性格値から算出されていると仮定すると、国際孵化の場合でも性格値の変更がないものと考えられる。
前述のパッチールの模様も考慮すると、今作のマスダメソッドは性格値の再計算を行わずにもとの性格値での色判定が緩められる、との解釈が妥当ではないかと考えられる。
追々記
完全なソースがないのだけれど、どうもパッチールの模様と性格値に関係性がなくなったらしい。
模様と性格値関係なかったらマスダメソッドも5th以前のものでいいはずだけれど個性が変わらなかったのは少し不思議。
性格値は残ってるけど色判定だけが別の32bitの値として分かれたって考えるのがいいのかもしれない。
いずれにしろアナログ解析はこれ以上厳しいので海外の解析待ち。
追検証を行ったのでこちらもご覧ください