サブフレームリセットとは
サブフレームリセットの意味
サブフレームリセットとは、ゲーム画面が一枚切り替わる時間(1フレーム)より早いタイミングでリセットボタンを押すという意味です。
英語圏では”sub 2 hours(2時間切りを目指すという意)”というふうに”sub ○○”を○○より下という意味で用いることがあり、サブフレームも同じような表現です。
フレームについて
まずフレームについて説明しておきます。
原則として、どのゲームも基本的に静止画像一枚一枚を連続で映すことでそれがまるで動いているかのように見せています。
この静止画像について、1秒間に60回静止画像が切り替わるゲームは”1秒間に60フレーム動く”という表現を使ったりします。
1秒間に何フレーム動くのかはゲームハードやゲームに依存します。例えば、『ロマンシングサガ2』なら一秒間に約60フレームなので、1フレームより早くリセットボタンを押すという意味は”約17ミリ秒”より早くリセットを押すという意味になります。
これが例えば『時と永遠~トキトワ~』だと一秒間に約30フレーム動くゲームであり、これに対してサブフレームは”約33ミリ秒”より下の値とロマンシングサガ2のときと比べて変動します。『ゼルダの伝説 時のオカリナ』だと一秒間に約20フレーム動くゲームなので、これも1フレームが"約50ミリ秒”となり値が異なってきます。
特にコンシューマーゲームでは最近だと60フレームのゲームが多いです。そのため1フレームは約17ミリ秒という決まった値であると勘違いしている人も多いですが、1フレームが何秒であるかはゲームによって異なります。
サブフレームリセットで出来ること
サブフレームリセットの多くはゲームをセーブしている最中に行われ、ゲームのセーブを途中で強引に中断させるために用いられます。
ゲームのセーブは早いものだと1フレームより早い時間で終わってしまうので、それに追いつくためにサブフレームリセットを用いることが必要になってきます。
ゲームのセーブをしている最中にリセットを押すことで何が出来るかというと、セーブをする前のデータとセーブをした後のデータが混在したキメラ状態のセーブデータが完成します。
通常このようなおかしなセーブデータは”チェックサム”という不正防止のための機能が働いて正しくロードすることができません。
ただ、そもそもチェックサムが存在しないゲームや、チェックサムを通すよう計算したセーブデータを作ってからサブフレームリセットを行うことでキメラ状態のセーブデータを読む込むことが可能になります。
このように、セーブの途中でリセットを行ってセーブデータを改ざんするというのがサブフレームリセットで出来ることです。RTAややりこみプレイなど、様々な目的で利用されています。
サブフレームリセットではないセーブデータ改ざん
セーブ中にリセットを押すことでセーブデータを改ざんするテクニックに対し、その全てをサブフレームリセットと呼ぶ人もいますが、サブフレームリセットはあくまで1フレームより短い時間でリセットを押すときにだけ用いられる単語です。
例えば昔のポケモンで通信交換中に片方が電源を切ってポケモンを増殖するテクニックなどがありましたが、あれはそもそもリセットではないですし、電源を切るまでの猶予も1フレーム以上の猶予があるのでサブフレームリセットという表現はここでは適切ではありません。
他に便利な言い回しがないのでこのようなものもサブフレームリセットと言いたくなりますが、サブフレームリセットはあくまで1フレーム未満の早さでリセットを押すときに用いられる用語です。
参考動画
サブフレームリセットの実用例としては、上記動画をWebサイト『はたぼーの部屋』の解析ページ(ロマサガ2 コード)と一緒に見ていただければと思います。サブフレームリセットによってセーブデータを強引に改ざんする仕組みが分かりやすいです。