昨年の年の暮れ、ゲームを早くクリアするRTA（リアルタイムアタック）を披露するイベント「RTA in Japan 2019」が開催された。

本イベントでは多くのプレイヤーによってさまざまなゲームのタイムアタックが披露されたが、その中でひときわ異彩を放っていたのが、PlayStation用ソフト『ドラゴンクエストVII エデンの戦士たち』（以下、ドラクエ7）を4分でクリアするという試みだ。

『ドラクエ7』はさまざまなRPGの中でもクリアまで特に時間がかかることで有名だ。『ドラクエ』シリーズの中でも特に際立っており、普通にプレイするとシリーズおなじみのモンスターであるスライムと出会うまでに1時間はかかってしまうほどである。

当然、RTAでもかなりの時間が必要であり、『ドラクエ7』の通常エンディングのRTA世界記録は、けった氏の「12時間49分48秒」となっている。最速プレイヤーですら半日かかってしまうほどのボリュームを誇る本作は、とても4分でクリアできるゲームには思えない。

そんな『ドラクエ7』を4分でクリアするとは、いったいどのような仕組みなのだろうか。その方法は、幾人もの知見が組み合わさってできた集合知の塊とも言えるような偉業で成り立っている。

ライター／もか

編集／ishigenn

協力／ping値

始まりは『ヴァルキリープロファイル』

2018年7月、「Tool Assisted Speedrun」（以下、TAS）における最速クリア動画などを投稿できるWebサイト“TASVideos”“TASVideos”に、PlayStation用ソフト『ヴァルキリープロファイル』の動画が投稿された。『ドラクエ7』とはなんの関連性もないように思えるこの出来事だが、すべてはここから始まった。

投稿者のN?K氏によって達成されたクリアタイムは、わずか17分42秒。そもそも『ヴァルキリープロファイル』はスキップできないイベントが非常に多く、オープニングイベントだけで30分かかるゲームであり、当時は短縮できる余地はほぼ残されていない作品であった。

そんな『ヴァルキリープロファイル』をどうやって17分でクリアしたのだろうか。N?K氏が投稿した動画の戦略を一言で言うと、セーブ中にリセットボタンを押してセーブデータを破損させ、破損したセーブデータに記録されているデバッグ用のマップでデバッグコマンドを使用してエンディングを見るというものだ。

はたしてこれはゲームクリアと呼べるのだろうかという疑問はあるが、『ヴァルキリープロファイル』を十数年やり込んでいる筆者からすると相当に衝撃的な動画であった。

「メモリーカード」の仕様を突く

なぜこのようなことができるのか、まずはPlayStation用ソフトでゲームデータをセーブする仕組みについて簡単に説明しよう。

現行機であるPlayStation 4、Nintendo Switch、XBOX ONEでゲームデータを保存すると、基本的にゲーム機内部のストレージ上に保存される。これに対し、初代PlayStationではゲームデータを「メモリーカード」という外部記憶媒体に保存していた。

メモリーカードに保存できるデータの容量は「15ブロック」だ。ゲームによって使用するブロック数は異なり、『ヴァルキリープロファイル』だと2ブロック、『ドラゴンクエストVII エデンの戦士たち』だと1ブロック、先日完全新作アニメ化が発表されて話題沸騰中の『東京ミュウミュウ』のゲームだと1ブロックだ。

PlayStationのゲームセーブの仕様として、まず最初に「このデータは今からセーブするゲームのものである」という情報を、管理ブロックに記録する。『ヴァルキリープロファイル』のデータを記録する場合だと、この区間の2ブロック分はヴァルキリープロファイルのデータであるという情報が最初に書き込まれ、それが終わってから実際のゲームデータの情報を書き込むわけだ。

前述したN?K氏のTAS動画の話に戻すと、まず『ヴァルキリープロファイル』のデータであるという情報が書き込まれ、次にゲームデータの情報を書き込もうとしているタイミングでリセットボタンを押すことで、セーブを強制的に中断させている。

こうすることで、管理ブロックに保存されているデータは『ヴァルキリープロファイル』のものだが、実際のゲームデータはなにも入っていないという状態のセーブデータが完成する。ゲームに限らずコンピュータで作成するデータは0と1の集合体で構成されているが、この場合のセーブデータはすべて「0」が入った状態となる。

なにも入っていないなら、なにも読み込むことができないように思えるかもしれない。だが、『ヴァルキリープロファイル』のマップIDの0番はデバッグ用のマップとなっており、すべてが0で埋まったデータだとデバッグ用のマップでX座標とY座標が0の位置でセーブされている状態のデータが完成する。

このセーブデータは、通常のゲームプレイでは作り出すことのできない壊れたセーブデータだが、『ヴァルキリープロファイル』においてはすべての値が0で埋まっているデータだと、破損検出や不正防止のためのチェックサムをすり抜けて、データをロードすることができるのだ。

発展途上、新品のメモリーカードが求められるRTA

ここから発展させ、これを実機でも再現してみようと考えたのがこの文章を書いている筆者である。N?K氏の動画投稿から4日後、PlayStation 2実機でセーブ中にリセットを押すことで、セーブデータを壊してデバッグ用のマップに侵入し、そこからエンディングを選択することで既存のRTAから記録を大きく更新した。

ちなみに、リセットボタンを押すことでセーブを中断させて壊れたデータを作り出すことができるが、セーブを中断させるに押すのは必ずしもリセットボタンでなくても良い。現在主流となっているのは、メモリーカードを物理的に抜いてしまう方法で、これが一番簡単な方法である。

そして、実機で検証するにあたって分かったことがある。PlayStation本体の管理画面からゲームデータを削除しても、実際のゲームデータは削除されておらず、削除されているのは管理ブロックのデータだけというPlayStationのメモリーカードの仕様だ。

『ヴァルキリープロファイル』でデバッグ用マップに侵入するには、なにも入っていない空の状態のメモリーカードが必要である。しかし、PlayStationのメモリーカードの仕様上、一度でもなんらかのゲームでセーブをするとそのデータは永久に残ってしまい、正規の方法ではいかなる手段を使っても削除することができない。

これをなんとかするため、筆者は新品のメモリーカードを購入してRTAを行った。一度でもセーブを行ってしまうと、なんらかのデータが残ってしまう仕様はどうすることもできないように思われたからだ。

『RPGツクール3』との運命の出会い

一度使用したメモリーカードのデータは削除することができないと思われていたが、この流れに革命を起こしたのが、とどトド氏が考案した『RPGツクール3』を使う方法だ。氏は常識はずれの方法でメモリーカードのデータを自由に操り、それを使って『ドラクエ7』をわずか十数分でクリアすることに成功した。

『RPGツクール3』は、特別な知識などが必要なく誰でもオリジナルのRPGを気軽に作ることのできるゲームだ。この『RPGツクール3』にはオリジナルの画像データをドット絵から作成できる「アニメティカ」というペイントソフトが搭載されており、「アニメティカ」で作成できるものにはタイトル画面の画像も含まれている。

「アニメティカ」では、「赤緑青」の光の三原色を混ぜ合わせた色を自分で作成してパレットに登録することができ、タイトル画面を描くときにパレットに登録できる色の数は“256色”となっている。

このとき、パレットの左上隅の色に対応する値は2進数で「00000000」となっている。さらに、キャンバス上の1ピクセルはメモリカード上の1バイトに対応している。つまり、すべてをこの色で埋めた絵を作ってセーブをすれば、すべてのデータが0になっている空のメモリーカードのようなデータを再現できるわけだ。

そして、256色という点に着目すると驚愕の事実が見えてくる。筆者が作成した上記の図を見ていただきたいが、一番左上隅の色のデータは「00000000（16進数で00）」、その右の色のデータは「00000001（16進数で01）」、さらにその右の色のデータは「00000010（16進数で02）」と増えていき、256番目の右下隅に対応する色のデータは「11111111（16進数でFF）」となる。

0と1の集合体8つ分だと何通りの組み合わせを作れるかというと、ちょうど256通り。これはデータの単位である1バイトで表現できる数と等しい。つまり、『RPGツクール3』の「アニメティカ」を使えば、ゲームデータを作成する際に作られるすべてのデータを再現することが可能。「アニメティカ」をバイナリエディタのように使用して望みのデータを作成することが可能なのだ。

「アニメティカ」でタイトル画像を作って保存すると、メモリーカードを8ブロック使用する。実際には8ブロックのうち最初と最後の1ブロックはそれぞれ余計なデータも入るため、使用可能なデータは6ブロックだ。

『ドラクエ7』のエンディングシーンへ

ここから『ドラクエ7』の短時間クリアにどうつなげるのか。実は『ドラクエ7』は、エンディングのシーンもゲームの内部ではひとつのマップとして登録されている。そして、「アニメティカ」さえあればどのようなデータも作成できるため、エンディングでゲームをセーブしているというデータを作成することができる。

エンディングで使用するマップでセーブしているという情報を「アニメティカ」で作成し、保存したあとに管理ブロックのデータの位置を調整。その後、『ドラクエ7』でゲームを新しく始めたときの新規データ作成中にメモリーカードを引き抜いてしまう。

すると管理ブロックには『ドラクエ7』のデータが、実際のデータには「アニメティカ」で作成したデータが残るというわけだ。ちなみに、このデータはプレイを始めた瞬間にエンディングから始まるので、テキストを数回送って少し待てば自動でゲームクリアとなる。

とどトド氏は『ヴァルキリープロファイル』のデバッグ用マップの呼び出しに新品のメモリーカードが必要なことに疑問を持ち、すべてのデータを0にできるゲームがあるかどうかを調べた末に、『RPGツクール3』に辿り着いたらしい。だが、すべてのデータを0どころかどのようなデータでも自由に作成できるゲームがあったことまでは想定外だったようだ。

『RPGツクール3』さえ使えば、どのようなデータでも自由に作成できることがわかったが、ここから『ドラクエ7』のRTAのタイムをさらに縮めるべく奮闘したのが、「RTA in Japan 2019」で実際にプレイングを披露したping値氏だ。ping値氏は『ドラクエ7』通常エンディングのRTAで世界で初めて13時間切りを達成したガチ勢の中のガチ勢だが、「アニメティカ」使用の『ドラクエ7』のRTAでも相当な功績を残している。

おもに氏が取り組んだのは、チェックサムの解析と「アニメティカ」で塗る箇所の最適化、さらに呼び出すマップの変更である。『ドラクエ7』はエンディングのシーンの最後を飾る「The End」画面すらゲームの内部ではひとつのマップとして登録されているため、「The End」画面を呼び出しつつチェックサムの整合性が合うようなデータを作るのが最速となる。

最終的に、アニメティカを使用する『ドラクエ7』のRTAの記録は「2分19秒」というところまで最適化されている。

今回はあくまでRTAに使える技として取り上げたが、「アニメティカ」さえ使えばどのようなデータでも作成できる。人力によるチェックサムの調整が限りなく難しいが、『ドラクエ7』ならキャラクターのパラメータを最大まで上げきったデータの作成なども可能だ。

古くは『ポケットモンスター』で通信ケーブルを使って「ポケモン」を交換中に電源を消して増殖させるなどの技があったが、この「アニメティカ」を使用する技も根本的な原理は同じである。

ちなみに「アニメティカ」に脆弱性があることでセーブデータを改ざんできるという誤解が多いが、問題は「アニメティカ」自体ではなく、PlayStationのゲームにおけるセーブのプロセスだ。PlayStationで動くゲームなら、どのような機種でも同じようなことができる。

PlayStation 3でセーブ中にコンセントを抜くことで、デバッグ用マップでセーブをしているという『ヴァルキリープロファイル』のデータ作成が成功している。またPSPを使用したPSアーカイブスで、セーブ中にリセットを押してデータを作る動画も2009年には出回っていたようだ。

きっかけは海の向こうの人物がひとつのTAS動画を投稿したことだが、そこから点と点とを結ぶように物事が進んでいき、最終的に『ドラクエ7』の短時間クリアに繋がるとは誰が想像できただろうか。

ちなみにセーブ中にメモリーカードを引き抜いたり電源を落とすことは、PlayStationのゲームが動くハードを持っているなら誰でも実行できるものだが、当然メーカーが想定していない操作である。もし行う場合は自己責任でお願いしたい。