なるほどえたきちのブログじゃねーの

チラ裏雑記帳

ポケモン過去作の解析とか乱数調整とかそこら辺。不定期更新。

日本版エメラルドID調整

ほぼ不可能と言われていたエメラルドのID調整に成功しました。
先に言っておきますがルビサファのように簡単ではないのである程度乱数調整に慣れている方向けだと思います。
私自身は乱数調整したこと殆どないけど


まず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のリストも表示されますので調整したい場合は適当に候補選んでおいてください。
f:id:BZL:20200312221346p:plain
赤字で表示されるものはSelectズレを使用することで目標ID付近が狙えるフレームです。
Selectズレによって目標ID付近が狙えるフレームの場合、ツールに表示されている回数分、名前入力画面でSelectボタンを押下してキーボード切り替えを行います。
そうでないフレームの場合はSelectボタンの押下回数が表示されている回数と一致しないようにします。
このフレームの場合はSelect押下回数0でズレが発生する為、平仮名のみのTNを使用する場合でもキーボード切り替えを行うようにします。

実践


!注意

ここでのキー入力は長押しではなくすぐ離すような形にしてください。
画面遷移時にキー入力が発生していると出現するIDが少しズレます。(ズレる値はフレームと入力されたキーによって変動する)
フレーム合わせ後はIDの微調整に利用可能なのでお試しあれ。


実際にやってる所を撮影したので参考程度にどうぞ。

今回狙うフレームはFrame1が1636F、Frame2が1208Fなのでこのようにタイマーセットしておきます。
f:id:BZL:20200312221907p:plain

まずはロード画面で『さいしょから はじめる』選択と同時にタイマーをスタートします。
f:id:BZL:20200312221657p:plain

この画面でFrame1の指定フレーム分待機を行います。
f:id:BZL:20200312222219p:plain

この画面でFrame2の指定フレーム分待機を行います。
Selectズレの調整も忘れずに。
f:id:BZL:20200312222420p:plain

SID調整を行う場合、この画面でFrame3の指定フレーム分待機を行います。
f:id:BZL:20200312222451p:plain

入力フレームに誤りがなければ、目標IDにある程度近いIDが出ると思います。
この手順を目標IDが出るまで繰り返します。
f:id:BZL:20200312223144p:plain

試行回数をある程度重ねれば神へ祈りが届けば目標のIDが出ます。
f:id:BZL:20200312223255p:plain

あとがき



調査を重ねた結果、ある程度現実的なレベルでエメラルドのID調整が出来るようになりました。
尚、実際にやってみると分かりますがSID調整まで行うのは割とマゾの所業です。
私人間じゃないよって方は是非チャレンジしてみてください!
任意IDでの固定シンボル色乱数等がやりたい場合、正直言ってルビサファの方で行うのが精神衛生上宜しい気がします。
FRLGも同じような手順でID調整が可能になったはずですがツール側の検索がまだ対応していません。
いつかやると思います。