1983年に発売されたファミリーコンピュータ向けゲーム『マイクタイソン・パンチアウト!!』にて、タイムアタックの世界記録が更新された。
スピードラン・シングルセグメント部門で現在世界1位のSummoningsalt氏が1年ぶりに自身の記録を更新。北米で販売されたNES(Nintendo Entertainment System)版の『Mike Tyson’s Punch-Out!!』にて、世界記録は前回の15分10秒50から約40ミリ秒縮まり、15分10秒11へと塗り替えられた。
今回の記録更新はただ素早く敵を倒しただけでなく、ゲーム内で5人目に戦うボクサー「キング・ヒッポ」攻略に有効な乱数調整方法が発見されたことも関係している。
主人公リトルマックが挑戦するキング・ヒッポは、鉄壁の防御を誇るボクサーで、口を開いている瞬間しかパンチが通用しない。口を開くタイミングはゲーム内で算出される乱数によってランダムに決定されるので、運が悪いとなかなか弱点を突けないこともある。
つまり通常のプレイでは、たとえタイムアタックの走者がどれだけ速く攻略しても、キング・ヒッポの攻略で記録を台無しにしてしまう可能性があるということだ。
この問題を解決するため、『Mike Tyson’s Punch-Out!!』のランナーであるLucandor158氏と氏の兄弟であるZoxsox氏は、ゲームのRNG(ランダムナンバージェネレーター、乱数要素のこと)とキング・ヒッポがどのように関係しているかを解析した。
対キング・ヒッポ戦略の文章によれば、ゲームの乱数はRAMのメモリアドレス0018に基づいており、この値は「0019」と「001E」というふたつのメモリを参照してフレームごとに変動していくという。
0019は、プレイヤーがどのボタンを何フレーム押したかによって値が変動する。たとえば、0019が100のときに右を5フレームのあいだ押すと、0019は105となる。操作によって変動する1フレームごとの値は以下のとおりだ。
右: 1
下: 2
スタート: 4
B: 8
A: 16
上: 32
セレクト: 64
左: 128
001Eは単純にフレームをカウントするのみで、0から255までの数字を示し、周回すると0へとリセットされる。これらふたつの数値からさらに決定される0018の値の詳細な計算方法は複雑なため、公開されている文章を参照してほしい。
ともかく、キング・ヒッポが口を開くかどうかは、そうやって算出された0018の右側3桁の数値が参照されて決定される。ゲーム内では数値が001、111、または110の場合に口を開けるように設定されているのだ。
このを使ったテクニックとして、キング・ヒッポの口を試合開始時に100パーセント開けさせる方法も紹介されている。まずキング・ヒッポに辿り着く前までは通常どおりゲームをプレイする。ただし、右と下ボタンは絶対に押さないようにする。そしてキング・ヒッポにたどり着いたら、8フレーム以内に戦いを始めなければならない。
この8フレームの猶予は256フレーム(約4.3秒)ごとに繰り返される。このタイミングでキング・ヒッポは必ず口を開けるようだ。なおこのほか、5分4秒までにキング・ヒッポにたどり着くことも推奨されている。
キング・ヒッポとの戦いを前回の世界記録と比べて3秒短縮して世界記録を更新したSummoningsalt氏は、海外フォーラムのRedditにて「これまであまり行われることのなかったワールドレコード争いを変える可能性のある発見」と書き込んでいる。
さらなる高みを目指すランナーたちの研究は日夜続いている。この難解な技術によって、『Mike Tyson’s Punch-Out!!』スピードランは激闘の時代を迎えるかもしれない。
ライター/古嶋誉幸