Translate

2014年11月25日火曜日

IDくじでマスボ回収の効率化

ORASのレートでは過去作のポケモンが禁止となったこともあり,現在ORASで準伝の厳選に励む人が増加しています。
この厳選作業ですが,ポケモンを必ず捕獲できるマスターボールを使用するのが最も効率の良い厳選方法です。
マスターボールはシナリオでの入手以外に,XYのミアレシティのIDくじ・ORASのミナモデパートのIDくじにてIDを5桁一致させることによっても入手可能となっています。

つまり,XYもしくはORASのIDくじで出た番号のIDとなるようにBW1でID調整をし,そのデータで捕まえたポケモンをXY,ORASに輸送すればマスターボールが毎日もらえます。


このID調整によるマスターボール回収作業を効率化すると,手順は以下のようになります。

  1. MasterBallGeneratorを用いて全てのIDについて起動時間を計算してリスト化する。
  2. XY・ORASでのIDくじの番号を記録してレポートを書かずにリセットする。
  3. 1.で作成したリストを参照して,記録したくじ番号にID調整をする。
  4. BW1のシナリオを進め,ポケバンクを使用してXY・ORASにポケモンを輸送する。
  5. ミアレシティのIDくじセンターまたはミナモデパートにてマスターボールを受け取る。


1.MasterBallGeneratorを用いて全てのIDについて起動時間を計算してリスト化する

MasterBallGeneratorを下記リンクよりダウンロードします。
http://odanado.github.io/ika-ransu-tools/MasterBallGenerator.zip

MasterBallGenerator.exeを起動後,説明に従って必要なパラメータ及び値を入力してください。
MasterBallGenerator.exeと同じフォルダにSSS4のconfig.txtがあればそれを読み込みます。

また,Timer0ずれを考慮する場合(秒の幅)×(いいえの回数+1)が500ぐらいあれば全IDが見つかります。
両Timer0での起動時間が見つかない場合,よく出るTimer0の方を出力します。




入力が完了するとMasterBallGenerator.exeがあるフォルダにresult.txtというテキストファイルが作成されます。
このresult.txtは,全てのIDについての起動時間をまとめたリストになっています。

2.XY・ORASでのIDくじの番号を記録してレポートを書かずにリセットする。

IDくじのNPCの前でレポートを書いておき,IDくじの番号を記録して電源を落とせば良いです。


3. 1.で作成したリストを参照して,記録したくじ番号にID調整をする。

1.で作成されたresult.txtがMasterBallGenerator.exeと同じフォルダにあれば,MasterBallGenerator.exeはresult.txtを参照するモードになります。

画像のように検索したい表IDを入力すれば,result.txtを開くことなく起動時間を見つけることができます。




出力された起動時間にゲームを起動し,書かれた回数だけいいえを選択します。
ほとんどの場合,この操作でID調整は完了しています。
timer0の値が違うものになってしまうことなどが原因で,目的のIDになっていない可能性もあるので,出たIDをここで確認することをお勧めします。

4.BW1のシナリオを進め,ポケバンクを使用してXY・ORASにポケモンを輸送する。

5.ミアレシティのIDくじセンターまたはミナモデパートにてマスターボールを受け取る。

あとは分かると思うので割愛します。


FAQ
Q.
このツールってどこがすごいのですか?

A.
0から65535までの全表IDについて,オフセットを考慮したうえで消費なしでID調整できる日時を求めることができます。
これにより従来のマスボ回収のためのID調整の手法だった,各表IDについて消費数に幅を持たせて検索してから出た初期seed候補のオフセットを手作業で求める,というわずらわしい作業をする必要がなくなりました。


Q.
初期化していないBWでもできるのですか?

A.
できません。
仮に初期化していないロムでID調整を行っても,通信ができずレポートも書けないので,第6世代にポケモンを送ることができません。


Q.
このツールはBW2でも使えますか?

A.
現在,BW2には対応していません。
今後対応する予定も今のところありません。


Q.
2月30日など調整できない日付が出るんですが?

A.
バグを修正した最新版をアップロードしているので,お手数ですが最新版へのアップデートをお願いします。


Q.
ツールで出た時刻の-1秒でゲームを起動する必要はありますか?

A.
はい,数秒前にゲームを起動する必要があります。起動を早める秒数は環境によって変わるので一概には言えませんが,DS・DS Liteでは1秒前起動で構いません。

2014年10月5日日曜日

本ブログでの用語集

本ブログでの用語集です。
解説記事に不明な用語が存在すればその都度参照してください。


  • 世代間共通
乱数調整
ゲーム内での乱数生成の仕組みを理解し,その仕組みを利用して意図した結果を得ること

2進法
2を基数とした数値の"表現方法"
普段目にしている数値は10進法による表現

16進法
16を基数とした数値の"表現方法"
小さい方から順に,0123456789ABCDEF と表現する

bit
2進法における一桁のこと

上位
2進法での上からのbitのこと
上位32bitとは2進法での上から32bitを指す

下位
2進法での下からのbitのこと
下位32bitとは2進法での下から32bitを指す

最上位
2進法での最も上位にあるbitのこと

最下位
2進法での最も下位にあるbitのこと

mod
余りのこと
Windows附属の電卓で計算できる

LCG
線形合同法

MT
メルセンヌツイスタ

乱数
r(n) と表す
LCGの実際に使われる値を指すことが多い

乱数列
乱数を並べたもの

消費
乱数をゲーム内のランダムな事象に使用後,乱数が更新されること

スキーム
個体生成などのランダムな事象が発生するときの消費される乱数の約束事

初期seed
ゲーム開始時に決定される乱数列の初期値
世代ごとに算出方法が異なる

RTC
リアルタイムクロック
3世代はソフト側が,4世代以降はハード側が保持する

フレーム,F
時間の単位
1秒あたり約60フレーム

性格値
32bitの値
由来は性格を決定する値だったが,5世代では性格と性格値の関係はなくなった
色違いの判定,個性の決定に使用される
性格値,性格値の上位16bit,性格値の下位16bitをそれぞれPID,HID,LIDと表す

ID
トレーナーが持っている32bitの値のこと
トレーナーカードで確認できる16bitのIDを表IDと言いTIDと表す
一般には確認できない16bitの値を裏IDと言いSIDと表す


  • 5世代
オフセット
5世代乱数においてゲーム起動時に強制的に消費されるLCGの数のこと
実際の調整時には起動時のオフセット消費のほかに不定NPC等による消費が起こる場合もある

sha-1
ハッシュ化アルゴリズム
5世代乱数では乱数の初期値の決定に使用される

パラメータ
nazo値やVCountなどの値
sha-1ハッシュ化に使用される

Timer0
パラメータの1つ
制御不可能

seed0
sha-1ハッシュ値の上位64bitのこと

seed1
seed0から1つLCGを更新した時の値のこと
MTの初期化にはseed1の上位32bitが使用される

ID補正
性格値が決定される時にTIDとSIDの奇偶によってHIDの最上位bitを書き換える補正のこと

レポ針
レポートの針のこと
起動後にレポートの針の場所を確認することによって初期シードの一致や今LCGがいくつ消費されているかを確認できる
5世代乱数では必須の作業


  • 4世代
奇数ズレ
経過フレームが2Fずつ進むため,初期シード決定時の経過フレームが奇数偶数どちらかに偏ること


  • 3世代
メソッド
個体生成時のスキームのこと

メソッドズレ
何らかの原因により個体生成時のスキームが崩れること


随時追加します