1993年12月10日スーパーファミコンソフトとして発売されたロマンシング サガ2(以下、ロマサガ2)。発売から20年以上が経過したいまでもやり込みプレイヤーから愛されているタイトルであり、これまで「敵の専用技を習得する」「デバックルームに入る」プレイ中の乱数を全て固定する」など、通常のプレイではありえない想定の範囲外のテクニックが実機で達成されてきた。

 そして発売から26年を迎えるに辺り、新たに同作が空前の盛り上がりを見せている。事の発端は、画面描画の最小単位である「1フレーム」が表示されるよりも早い約0.0167秒以内リセットボタンを押すテクニックサブフレームリセットに関する新たな展開である。このテクニックによるセーブデータ改ざんが、なんと実機でも“容易かつ比較的簡単に実行できることが判明した”というのだ。

 このサブフレームリセットを利用すれば、あの長大な『ロマサガ2』の物語をわずか20分クリアすることができる。サブフレームリセットを実機で再現する試みは以前から成功例があるものの、それをゲーム本編クリアタイムアタックにて採用してしまうのは異例中の異例である。【ロマサガ2】SFC実機サブフレームリセット調査報告【VOICEROID実況】

 本記事はこの「サブフレームリセット」の詳細について、さらにその「サブフレームリセット」を利用したRTAリアルタイムアタック)について、『ロマサガ2』のやりこみプレイヤーの第一人者であるHAKUA氏に聞いたことを踏まえて解説していこう。

ライターもか


上記は筆者作成のイメージ画像

 まず、上記のコンピュータデータイメージした画像をご覧いただきたい。分かりやすさのために、それぞれ0と1の集合体が8つ集まったものを1Byteとして16進数で表示しているが、基本的にコンピュータデータはすべて0と1の集合体で構成されており、『ロマサガ2』も例外ではない。そして『ロマサガ2』では、ゲームセーブするときに1Byteをひとつひとつ時間をかけてROMカートリッジにセーブしていくという仕様が採用されている。

 有志たちの検証結果により、1ByteをROMカートリッジに書き込む速度はおよそ「16.5μ秒」(1μ秒は100万分の1秒)であると推測されており、『ロマサガ2』の画面がひとつ切り替わる単位である「1フレーム」(約0.0167秒)よりも、はるかに早いスピードとなる。

 サブフレームリセットでは、この約0.0167秒よりも素早い速度でリセットを行う。要はゲームデータROMカートリッジにセーブしている途中で、強制的にセーブを中断させるテクニックだ。

上記は筆者作成のイメージ画像

 セーブを中断させたものが上記のイメージ画像である。赤いものが新しいデータ、白いものが古いデータとなり、古いデータと新しいデータが混在している状態だ。

 本来、このような不正なデータチェックサムという機能が働いてロードできないが、装備品の位置の調整などでチェックサムをうまくすり抜けるようにデータを作成し、ロードができない状態を回避して進める。これが『ロマサガ2』の「サブフレームリセット」のやり方だ。

(画像はYouTube | Romancing Sa・Ga 2 Speedrun[19’24] の3:19より)

 それでは実際にRTAでの「サブフレームリセット」の利用について見てみよう。こちらの画像のシーンは、『ロマサガ2』で最初のダンジョンにあたる「封印の地」のセーブデータと、「封印の地」から戻って自由行動できるようになったタイミングセーブデータをふたつ用意した場面だ。

 ここでレオンが先頭のデータを下のジェラールが先頭のデータに上書きする。このとき、レオンキャラクター情報がセーブデータに書き込まれた瞬間にリセットを行う。こうすることで、セーブ先のデータではジェラールの情報がレオンとして上書きされるため、ジェラールがどこにもいなくなるということが起こる。

(画像はYouTube | Romancing Sa・Ga 2 Speedrun[19’24] の4:54より)

 このままジェラールパーティーからいない状態でゲームを進めていこう。このとき画面に映っているジェラールらしきキャラクターは、内部情報では「HP0でテレーズという名前の見た目だけがジェラールキャラクターとなっている。

 上記の画像は本来ならジェラールが宮廷魔術師女性と会話をして新しい火術を習得するシーンだ。だが、内部情報でジェラールが存在せず、かつキャラクターのパラメータがおかしくなっていることから、火術を習得するイベントが発生せず、そのまま通常の仲間が加入するイベントが発生する。ここで仲間を加入させることで、パーティーメンバーが本来の仕様を超えて「6人」存在していることになり、6人目の仲間は従来のパーティーメンバーを格納するメモリを飛び越えて本来書き込んではいけないメモリに書き込まれる。

 この状態でさらに仲間加入やアイテム操作などを加えることで、メモリ上をどんどん侵食していく。最終的にはイベントフラグが書き込まれているメモリまで到達してそこを書き換え、エンディングイベントフラグを起動させるというのが、『ロマサガ2』のサブフレームリセットRTAの大筋だ。

(画像はYouTube | Romancing Sa・Ga 2 Speedrun[19’24]7:00より)

 攻略の途中からはキャラクターグラフィックもおかしくなって盛大にバグることになる。こちらの画像は、メニュー画面から本来アクセスできないところまでアクセスしている模様をキャプチャしたものだ。カーソルが本来選択できない箇所にまではみ出ているのがお分かりいただけるだろうか。最終的には、このメニュー操作やマップ移動などを駆使して、イベントフラグを管理しているメモリを操作できるようにする。そこでエンディングを呼ぶイベントフラグを起動させ、そのまま直接エンディングに飛んだらゲームクリアとなる。

 『ロマサガ2』を普通に乱数制御などを使わずクリアしようと思うと約3時間、乱数制御やゲーム機本体の固有乱数を使う電源技を使うことで約2時間マップチェンジバグというゲーム性を著しく破壊するバグを使っても約1時間はかかってしまう。だが、この「サブフレームリセット」を使うRTAでは、わずか20分足らずでのクリアが可能となっている。

 「サブフレームリセット」というテクニックのみが注目されがちだが、ジェラールを消したことによって仲間を超過して加入させてメモリを破壊すること、メモリをぐちゃぐちゃにしているのに関わらずチェックサムは通せるように調整していることにも注目したい。このRTA美しいところと言えるだろう。

(画像はYouTube | Romancing Sa・Ga 2 Speedrun[19’24] の8:00より)

 このような「サブフレームリセット」のRTAをどうやって編み出したのかをHAKUA氏に聞いてみたところ、ほかのゲームなども含めて多くの人々の手でさまざまな研究が行われてきた中での集合知によるものが大きかったようだ。さらに、実際にサブフレームリセットRTAを行ったプレイヤーにも話を伺ってみたところ、驚くことに「意外と簡単だから、みんなも是非やってもらいたい」との回答が帰ってきた。

 現在のRTAルートで行うサブフレームリセットの猶予時間について語っておくと、1回目のサブフレームリセット「約214.5μ秒」、2回目のサブフレームリセット「約4950μ秒」となっている。途方もなく短い猶予時間に思えるが、小数点以下の秒数の世界を体験したい人はぜひ挑戦してみてほしい。

ライターもか

小学校の頃にゲーム雑誌でタイムアタック特集を見てこんな遊び方もあるんだと感動し、RTAという言葉が生まれる以前からゲームの早解きを行い続けて現在に至る。
Twitter@moka_peer