1993年12月10日にスーパーファミコン用ソフトとして発売された『ロマンシング サガ2』(以下、ロマサガ2)。発売から20年以上が経過したいまでもやり込みプレイヤーから愛されているタイトルであり、これまで「敵の専用技を習得する」、「デバックルームに入る」、「プレイ中の乱数を全て固定する」など、通常のプレイではありえない想定の範囲外のテクニックが実機で達成されてきた。
そして発売から26年を迎えるに辺り、新たに同作が空前の盛り上がりを見せている。事の発端は、画面描画の最小単位である「1フレーム」が表示されるよりも早い約0.0167秒以内にリセットボタンを押すテクニック、「サブフレームリセット」に関する新たな展開である。このテクニックによるセーブデータ改ざんが、なんと実機でも“容易かつ比較的簡単に実行できることが判明した”というのだ。
このサブフレームリセットを利用すれば、あの長大な『ロマサガ2』の物語をわずか20分でクリアすることができる。サブフレームリセットを実機で再現する試みは以前から成功例があるものの、それをゲーム本編クリアのタイムアタックにて採用してしまうのは異例中の異例である。
本記事はこの「サブフレームリセット」の詳細について、さらにその「サブフレームリセット」を利用した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』の「サブフレームリセット」のやり方だ。
それでは実際にRTAでの「サブフレームリセット」の利用について見てみよう。こちらの画像のシーンは、『ロマサガ2』で最初のダンジョンにあたる「封印の地」のセーブデータと、「封印の地」から戻って自由行動できるようになったタイミングのセーブデータをふたつ用意した場面だ。
ここでレオンが先頭のデータを下のジェラールが先頭のデータに上書きする。このとき、レオンのキャラクター情報がセーブデータに書き込まれた瞬間にリセットを行う。こうすることで、セーブ先のデータではジェラールの情報がレオンとして上書きされるため、ジェラールがどこにもいなくなるということが起こる。
このままジェラールがパーティーからいない状態でゲームを進めていこう。このとき画面に映っているジェラールらしきキャラクターは、内部情報では「HP0でテレーズという名前の見た目だけがジェラールのキャラクター」となっている。
上記の画像は本来ならジェラールが宮廷魔術師女性と会話をして新しい火術を習得するシーンだ。だが、内部情報でジェラールが存在せず、かつキャラクターのパラメータがおかしくなっていることから、火術を習得するイベントが発生せず、そのまま通常の仲間が加入するイベントが発生する。ここで仲間を加入させることで、パーティーメンバーが本来の仕様を超えて「6人」存在していることになり、6人目の仲間は従来のパーティーメンバーを格納するメモリを飛び越えて本来書き込んではいけないメモリ上に書き込まれる。
この状態でさらに仲間加入やアイテム操作などを加えることで、メモリ上をどんどん侵食していく。最終的にはイベントフラグが書き込まれているメモリまで到達してそこを書き換え、エンディングのイベントフラグを起動させるというのが、『ロマサガ2』のサブフレームリセットRTAの大筋だ。
攻略の途中からはキャラクターのグラフィックもおかしくなって盛大にバグることになる。こちらの画像は、メニュー画面から本来アクセスできないところまでアクセスしている模様をキャプチャしたものだ。カーソルが本来選択できない箇所にまではみ出ているのがお分かりいただけるだろうか。最終的には、このメニュー操作やマップ移動などを駆使して、イベントフラグを管理しているメモリを操作できるようにする。そこでエンディングを呼ぶイベントフラグを起動させ、そのまま直接エンディングに飛んだらゲームクリアとなる。
『ロマサガ2』を普通に乱数制御などを使わずクリアしようと思うと約3時間、乱数制御やゲーム機本体の固有乱数を使う電源技を使うことで約2時間、マップチェンジバグというゲーム性を著しく破壊するバグを使っても約1時間はかかってしまう。だが、この「サブフレームリセット」を使うRTAでは、わずか20分足らずでのクリアが可能となっている。
「サブフレームリセット」というテクニックのみが注目されがちだが、ジェラールを消したことによって仲間を超過して加入させてメモリを破壊すること、メモリをぐちゃぐちゃにしているのに関わらずチェックサムは通せるように調整していることにも注目したい。このRTAの美しいところと言えるだろう。
このような「サブフレームリセット」のRTAをどうやって編み出したのかをHAKUA氏に聞いてみたところ、ほかのゲームなども含めて多くの人々の手でさまざまな研究が行われてきた中での集合知によるものが大きかったようだ。さらに、実際にサブフレームリセットのRTAを行ったプレイヤーにも話を伺ってみたところ、驚くことに「意外と簡単だから、みんなも是非やってもらいたい」との回答が帰ってきた。
現在のRTAルートで行うサブフレームリセットの猶予時間について語っておくと、1回目のサブフレームリセットが「約214.5μ秒」、2回目のサブフレームリセットが「約4950μ秒」となっている。途方もなく短い猶予時間に思えるが、小数点以下の秒数の世界を体験したい人はぜひ挑戦してみてほしい。
ライター/もか