ほぼ不可能と言われていたエメラルドのID調整に成功しました。
先に言っておきますがルビサファのように簡単ではないのである程度乱数調整に慣れている方向けだと思います。
私自身は乱数調整したこと殆どないけど
自作ツールを使用してキー入力フレームから出現するTIDを予測し、バグ/改造/bot無しで実機エメラルドのID調整に成功しました。
— ぼんじり(14) (@_3z8) March 3, 2020
ツールで指定しているIDがズレているのはゲーム内の操作によるIDズラしに合わせる為です。 pic.twitter.com/cGxiyGucQW
ドイツ版ポケットモンスターエメラルドID調整成功しました。
— ぼんじり(14) (@_3z8) March 9, 2020
試行回数は最低でも300回以上です。 pic.twitter.com/cRBWZiRFSK
まずIDの決定方法について。
決定タイミングは名前入力画面→OPの画面遷移時。
OP→名前入力画面の画面遷移時に開始したTimer-1の値を使用してIDを決定している。
この値はLCG32の乱数値とは異なり1F間隔ではなくCPUのクロック単位で値が変動する為、人力での調整は不可能と言われていた。
しかし、キー入力判定自体は1F間隔なのでいつも通り(?)フレームを合わせれば現実的な難易度でIDの再現ができる。
各フレームで出現するIDを予測することも可能だが、数式等で簡潔に表せるものではない為、詳細は割愛する。
数式等に起こす自信のある人が居られましたらちゃんとした情報提供するので連絡ください
因みに、SIDは通常のLCG32を用いて決定されている。
ID決定時にIDと同じ値をSeed値として格納している為、名前決定からOP終了までのフレーム数を調整すればIDからSIDを予測できる。
必要なもの
・TIDFinder
・好みのタイマー(当記事ではCCTimerを使用しています)
・ボタンモードLR、サウンドステレオ設定の日本版エメラルド(海外版でも多少ズレはあるが可能)
・GBAROMが起動できるハード
・
目標のIDを決める
適当に決めましょう。
今回はID00000を狙います。
同時にSIDのリストも表示されますので調整したい場合は適当に候補選んでおいてください。
赤字で表示されるものはSelectズレを使用することで目標ID付近が狙えるフレームです。
Selectズレによって目標ID付近が狙えるフレームの場合、ツールに表示されている回数分、名前入力画面でSelectボタンを押下してキーボード切り替えを行います。
そうでないフレームの場合はSelectボタンの押下回数が表示されている回数と一致しないようにします。
このフレームの場合はSelect押下回数0でズレが発生する為、平仮名のみのTNを使用する場合でもキーボード切り替えを行うようにします。
実践
!注意
ここでのキー入力は長押しではなくすぐ離すような形にしてください。
画面遷移時にキー入力が発生していると出現するIDが少しズレます。(ズレる値はフレームと入力されたキーによって変動する)
フレーム合わせ後はIDの微調整に利用可能なのでお試しあれ。
実際にやってる所を撮影したので参考程度にどうぞ。
ID調整してる所を録画しました(成功動画ではないです) pic.twitter.com/NbWnPUgCVw
— ぼんじり(14) (@_3z8) March 11, 2020
今回狙うフレームはFrame1が1636F、Frame2が1208Fなのでこのようにタイマーセットしておきます。
まずはロード画面で『さいしょから はじめる』選択と同時にタイマーをスタートします。
この画面でFrame1の指定フレーム分待機を行います。
この画面でFrame2の指定フレーム分待機を行います。
Selectズレの調整も忘れずに。
SID調整を行う場合、この画面でFrame3の指定フレーム分待機を行います。
入力フレームに誤りがなければ、目標IDにある程度近いIDが出ると思います。
この手順を目標IDが出るまで繰り返します。
試行回数をある程度重ねれば神へ祈りが届けば目標のIDが出ます。
あとがき
調査を重ねた結果、ある程度現実的なレベルでエメラルドのID調整が出来るようになりました。
尚、実際にやってみると分かりますがSID調整まで行うのは割とマゾの所業です。
任意IDでの固定シンボル色乱数等がやりたい場合、正直言ってルビサファの方で行うのが精神衛生上宜しい気がします。
FRLGも同じような手順でID調整が可能になったはずですがツール側の検索がまだ対応していません。
いつかやると思います。