SVでなんとなくポケモンモチベが上がっていたので、数年間やろうと思って放置していた色違いデオキシスを取りに行ってきました。
エメラルドは当然やっていたがFRLGの乱数調整は初めてだったので、調べながらやった手順をメモしておきます。
第3世代といえばリボンコンプの開始地点となる世代なので、今後バンク無料開放~サービス終了までの間にダークポケモンが存在しないFRLG産の固定シンボル(ミュウツーぐらいしかいない気がするが)を捕まえたい場合には役に立つかもしれない。
18年越しのオーロラチケット pic.twitter.com/KS4LyvUkqf
— さびたコイル (@rusted_coil) December 18, 2022
概要
現在調べて出てきたやり方では、FRLGの乱数調整は初期seed調整→消費数調整の2段階のタイミング調整によって成り立っている。
FRLGの初期seedはタイトル画面でAを押した後の暗転中に決定されるが、この時ROMの型番やゲーム内の設定、押していたボタン等が初期seed決定に影響する。(初期seedの決定にTimer0が使われており、初期seedを再現するためにはCPUサイクル単位で処理を一致させる必要があるためとのこと)
軽く調べても初期seedを計算によって求める方法は見当たらなかったので、待機時間や設定に対してどの初期seedが出るかを予め調べておく必要がある模様。
そして日本語版初期ROMに関しては既に調査してまとめて下さっていた方がいたので、以下のページのリストを参照した。
例えばLGの場合、ゲームの設定を「モノラル・ヘルプ」にし、DSのゲーム選択を押してから2100フレーム後にタイトル画面のAボタンを押した場合、0x9993が初期seedになるということ。(もちろん環境によるずれはあるので待機フレーム数は必ず手元で調整する)
初期seedが調整できたら、後は通常の乱数調整のように、目当ての個体が出る消費数のタイミングで個体の生成処理が走るようにタイミングを調整するだけ。
使ったツール
- 3genSerach
- CCTimer
ぼんじり氏のGoogleDriveが公開停止となったようなので現在公式配布無し。2段階のタイマーを設定できることと、GBAのフレームレート(ツールによるとDSで動かしている時で59.6555Hzらしい)で指定フレーム数待機ができるのが便利。
手順
裏IDの特定
既にオーロラチケット受け取り済みのデータであり、最初から始めてID調整をすることはできないので、自然発生の色違い個体などから裏IDを求めておく。
目標個体の決定
前述の初期seedリストで、Fが2190前後の欄に書いてある初期seedをコピペして一列にまとめる。
→
これを3genSearchの「固定」タブで、「初期seed」の3項目のうちの一番下のボックスに貼り付け。
Fは600~1500ぐらい(デオキシスはシンボルに話しかけてから個体生成まで約500F経過するため、それより大きい値にする)とした。
また、「個体値から検索」の欄に表/裏IDと「色違いのみ出力」のチェック、「バージョン」の欄にバージョンを入力する。
「計算」を押すと上記のように色違いになる初期seedとFの組み合わせが表示される。
候補が気に入らなければ別の範囲の初期seedで検索する。
乱数調整
- 狙う個体の初期seedを初期seedリストから見つけ、待機Fと設定を確認する
- 例として初期seed 0x9B06+1089Fの個体を狙うことにする。初期seedリスト上では0x9B06は2191F(モノラル・ヘルプ)となっている。
- たんじょうのしままで行ってミニゲームを行い、Aボタンを押せばデオキシスとの戦闘が始まるところまで進める
- 設定を上記のものに変更してからレポートを書く
- タイマーを使い、DSのメニューでソフト選択~タイトル画面でAボタンまでを初期seedリストの待機F×1/60秒で、タイトル画面でAボタン~デオキシスのシンボルを調べるまでを3genSearchの待機F×1/60秒で入力する。
ただし後者は100F程度の空白時間と、シンボルを調べてから個体生成まで500F程度の消費があるため、目標F-400を目安とする。(参考)
つまり上記の例ではタイマー1を2191F、タイマー2を1089-400=689Fとし、
-
- タイマー1開始:DSメニューでソフト選択
- タイマー1終了・タイマー2開始:タイトル画面でAボタン
- タイマー2終了:シンボルに話しかける
というようにタイミングを調整する。
また、前述の通りキー入力が初期seed決定に関わるため、タイトル画面でAボタンを押した直後の暗転は、「つづきからはじめる」の画面になるまでAボタンを押し続けている必要がある。
- 出た個体が色違いではなかったら、捕獲してステータスを確認する
- 3genSearchの「能力値から検索」にチェックを入れて実際に出た個体のステータスを入力し、「色違いのみ出力」のチェックをオフにして「計算」を押し、初期seedとFを確認する
- 初期seedが違った場合は初期seedリストから待機Fのずれを、消費数が違った場合は3genSearch上の待機Fのずれをそれぞれタイマーの設定時間に反映しながら微調整を繰り返す
- 色違いが出たら完了
実際にやってみたところ、1/60秒の目押しを2連続で成功させる必要があったが、待機時間が短ければ試行回数で殴れるので割と簡単だった。(タイミング調整に入ってから1時間ぐらい)
おそらく一番手間がかかる部分であろう初期seedの調査データが公開されていたことが大きいと思うので、先人に感謝