サイファーの日記

過去作の乱数について書きます

【初代】色違いLv3マルマインの状況再現

この記事はPokémon Past Generation Advent Calendar 2023 273日目の記事です。

scrapbox.io

 

1. はじめに

初代のNPC交換は貰えるポケモン個体値がランダムなため、色違いになる可能性があります。また、こちらが出したポケモンと同レベルのポケモンが返ってくるのも特徴です。例えば、グレンじまのお爺さんとの交換ではライチュウを渡すとマルマインがもらえますが、初代ではレベル3のピカチュウが野生出現するため、そのまま石を使って交換に出せばレベル3のマルマインが入手できます。

ということで、今回はレベル3のマルマインの色違いを状況再現で狙っていきたいと思います。ただし、北米版のVC赤で調査したのでそれ以外の言語やバージョンではできないです。

2. 準備するもの

TNが「RED」でIDが「29686」のデータ
→状況再現の結果に影響を与える可能性があるので、念のためTNとIDを固定しています。ID「29686」の出し方ですが、まずセーブデータを削除します。そしてハードリセット後に十字キー上、B、セレクトを同時長押し、タイトル画面が見えたらスタート(もしくはX)を長押し、タイトル画面が消えたらAを長押し、という操作でゲームを始めることで再現できます。この操作は後で何度も行うことになるので覚えておいてください。TNについてはゲームを始めた時のTN候補3つの内の一番上が「RED」なので、それを選べばOKです。

レベル3のライチュウ
→NNも結果に影響する場合があるようです。デフォルト名である「RAICHU」のままでお願いします。また、このライチュウ以外のポケモンをPTに入れないようにし、HPも満タンにします。

ふしぎなアメ5個
→おつきみやま1階、ハナダシティの民家の裏(隠)、ロケット団アジト地下3階、ポケモンタワー6階、サイクリングロードの草むらの中(隠)などで入手可能です。

リゾチウム2個
→英語名は「Calcium」となっています。

サーボモーター1個
→人力では(なぜか)困難なので用います。Arduinoなどもサーボを動かすために必要です。秋月電子でSG92Rを購入。

3. 実践

3-1. 部屋の前でレポート

最初に部屋の中のお爺さんが不定NPCであるため、その向きや状態を固定する2段階の作業を行います。まず下の画像の位置でレポートします。

ただし乱数の動きを一定にさせるため、ここで注意点が2つあります。

1つ目は1マス後ろからこの位置に向かって歩き、歩き始めたら即メニューを開いてレポートすることです。このようなバッファー入力(余裕を持ったあらかじめ入力)をしないと次にゲームを続きから始めた時、主人公の顔が上ではなく下を向いてしまいます。

2つ目はこの位置の少し左側にいる男を映さないようにすることです。一度でも男の姿を読み込んでしまった場合は、一度目の前の部屋に入った後すぐに出てやり直してください。ただ自分から左に歩いて行かない限り、男が映ることはないので基本的に大丈夫です。

3-2. お爺さんの手前でレポート

ハードリセット後に十字キー上、B、セレクトを同時長押し、タイトル画面が見えたらスタート(もしくはX)を長押し、タイトル画面が消えたらAを長押し、で最速でゲームを始めます。ID再現の時と同じ操作です。

フィールド上に出る直前から十字キー上を長押しし、部屋に入ったら十字キー左、十字キー上を順に押します。そして下の画像の位置に差し掛かったらスタート(もしくはX)を押しメニューを開きます。

これらもバッファー入力をすることが重要で、もし不十分な場合は乱数の動きが一定になりません。メニューを開いたらそのまま適当なタイミングでレポートを書いてください。

以上でお爺さんの向きや状態を固定する作業は終了しました。*1しかし、これらの作業は後述するIGTズレが起こった際にも再び行います。

3-3. 一定の操作でマルマインを交換

ここからはサーボを使ってタイミングよく操作をしながらマルマインを受け取っていく段階です。サーボについて自分は下の画像のプログラムを使いました。ただしこれはAボタン操作の一部に関するもので、高い精度の要らない他の操作は手動でやりました。


yにボタンを押す、ⅹにボタンを離す時の角度を設定*2

タッチパネルを押して「Reset this game?」と出ている状態で上のプログラムを書き込んだサーボを稼働し、Aを押させます。その後の十字キー上、B、セレクト同時長押し、タイトル画面が見えた時のスタート(もしくはX)長押し、タイトル画面が消えた後のAの長押しは全て手動でやります。また、フィールド上に出る直前にもお爺さんに近づくため手動で十字キー上を長押ししておきます。

ここまでの操作を終えたら、以降はサーボが自動でお爺さんに話しかけ交換を始めてくれます。

3-4. IGTズレの有無を確認

交換が始まり、マルマインのIDを確認したらIGTズレ*3の発生の有無等を確認します。

IDが36158 or 36159になっている
→目標IGTを引けており、色違いの可能性大

ID36158 or 36159から約256の倍数分増減されたものになっている
→IGTズレが発生している

上記の2つのどれにも当てはまらない
→待機時間の設定がずれている

③のIDであった場合、待機時間を調整して再試行する必要があります。*4サーボのプログラム終盤のdelay(4755)をミリ秒単位で少し調整し、①か②のIDが出ないか確認してください。

②のIDであった場合、IGTズレを起こしているのでリセットしてレポートを書き直します。3-1と3-2で行った2回のレポート作業を再び行ってください。ちなみに、目標IGTの出現率は体感1/30から1/15くらいな気がします。

稀に待機時間の調整は完璧でも、①②のいずれにも該当しないIDになる場合があるようです。何度も調整してるのに①②に全くかすらないような時も2回のレポート作業をやり直してください。

①のIDであった場合は次の最終段階に進んでください。

3-5. 個体の最終確認

ID36158 or 36159が出たら成功とみなしてもよいのですが、念のため個体値を一部確認しておきます。

まずマルマインふしぎなアメを5回使います。レベルが上がってしまいますが、この後にリセットして再び同じ個体を入手できるので大丈夫です。そして、以下のリストのステータスと一致しているかどうかを確認します。どこかの段階で少しでも異なっていた場合は色違いになりません。

レベルとその時のステータスのリスト(防御,素早さ,特殊)
Lv3(9,14,10)
Lv4(11,17,12)
Lv5(13,20,14)
Lv6(14,23,15)
Lv7(16,26,17)
Lv8(17,29,19)


上記のリストのステータスと全て一致したら、Lv8になったマルマインリゾチウムを2個使います。その結果、特殊の値が「20」になっていた場合は色違いだと断定してよいと思います。あとはゲームをリセットし、サーボを利用して同じ個体を入手し直せばOKです。

4. おわりに

色違いかどうかはVC金銀クリスタルに送ったり、ポケムーバーを経由することで確認できます。成功した人はおめでとうございます!

日本語版でもやりたいのですが、残念ながらソフトを所持していないので興味がある方は各自調査してみてください。調査する時はレベル50で行うとかなり楽です。またIGTズレによる防御、特殊の一定変化も利用すると効率が上がります。

*1:固定できているのであれば次にバッファー入力によって最速でゲームを起動した場合、お爺さんは最初上を向いていると思います。その後、左下左上下右上右左右の順に向きを変えるはず。

*2:例: x=105,y=117

*3:IGT=In Game Time の略。レポート書き込み時のフレーム数0-59の違いによって状況再現の結果にも違いが生まれます。

*4:付近のフレームでは14485や31322などのIDが出現する様子。いずれもIGTの違いによって約256の倍数分増減します。