RTAinJapanの裏でとんでもない企画が行われ、すごい記録を出してしまった件【サブフレームリセット】
みなさんどうも、嵯峨(さが)です。
記事タイトルの通りすごい事が起こってしまったのですが
まず端的にその内容を伝えようと思います。
スーパーファミコンの実機でサブフレームリセットを使い、
それだけだと正直記事を書く理由にはならないのですが、
この記録が出た経緯や今後の展望もお話しさせていただきたいです。
ピンと来ていない人に向けても何がすごい記録なのか説明できたら幸いです。
とんでもない企画
毎年大晦日に恒例企画として行っている
年越しまでサブフレームリセットをぶっ続けでやり続けて
通称 「ヌゥエンディング」に飛ぼう!という並走会があります。
これは私が今回初参加した2024年の大晦日の企画です↓
【告知】
— バン (@suugaku2b) 2024年12月1日
今年で6年目!年末恒例!
大晦日クロノトリガー猶予1バイトサブフレームリセット12時間耐久並走会!開催いたします!!
みんなでリセットしよう!
開催時期:12/31 12:10~24:10 (あけおめして解散)
※途中参加・抜け・なんでもOK
参加者用discord鯖(初心者大歓迎!)https://t.co/ATYqrxyDF3 pic.twitter.com/TIUk1NEwrn
そもそもサブフレームリセットってなに?
過去に記事を書いているので詳しくはそちらを見ていただきたいのですが
かんたんに説明すると
レトロゲームでセーブを行うと大体のゲームは1フレーム(0.0167秒)以内に
必要な情報が全て上書きされます。
その1フレームより細かい単位(サブフレーム)でリセットをすることにより
セーブ行為を中断させることがサブフレームリセットになります。
セーブ中に電源を切らないでくださいという注意書きが出るゲームもあると思いますが、
このセーブデータ書き込み中に電源を切って(リセット)しまうと、
以前のセーブデータに書き込み途中の状態となってしまい
不正なデータ(チェックサム不一致)として扱われて大体データが消えてしまいます。
(例えば買い物する前のデータと買い物した後のデータが合わさると
お金は消費する前で持ち物は購入後になってしまい
マズいデータが作れてしまうので不正を検知してデータを削除、またはロード不可状態にする)
それを回避する方法としてチェックサムの総和を合わせるというテクニックがあるのですが
その辺りが知りたい方は上記の記事をご覧ください。
エンディングに飛ぶには?
クロノトリガーの場合もデータが消えてしまうとまずいのですが
チェックサムが不一致となってしまった場合に
データを消すのではなく非表示(NO DATA)になります。
これは不正なデータ状況(通称キメラデータ)は保持されています。
そしてなんとクロノトリガーは隣接するセーブデータからNO DATAに向けて
キー入力と決定ボタンを押すことで
このNO DATAの非表示になったデータをロードすることができてしまいます。
セーブデータにはアイテム状況やキャラクターのステータス
仲間の加入状況、プレイ時間、所持金などが含まれています
ロードした時にその情報を基にゲーム進行状況を再現しているんですね。
その中で今回大事なのがマップIDです。
どのマップでセーブされたのか保存しておくことで再開場所が変わります。
これを悪用してマップIDの合成を行いヌゥエンディング(0x00F0)に飛びます
現代ワールドマップ 0x01F0
現代ゼナン橋 0x0020
現代ゼナン橋に対して現代ワールドマップから上書きを行う。
0020の20がF0に書き変わったタイミングでリセット!
(セーブデータは一部の塊が逆順に上書きされます)
セーブデータの領域は狭いのですが、このマップIDの境目
データ書き込みの最小単位の1byteでリセットをしないとヌゥエンディング行きのデータは作れません。
電ファミニコゲーマーのもか氏の記事を引用させていただきます。引用元

※ピロ彦先生からの注釈が入ったので記事を追記します
ロマサガ2はセーブが遅い方で、クロノトリガーはセーブに転送命令を使っているので1byteあたり7クロックしかかかってなくて、SFCのクロック周波数が3.58MHzなので「7 / (3.58 MHz) =1.95530726 マイクロ秒」という感じですねぇ。
— ピロ彦 (@pirohiko) 2025年1月11日
とてつもなく猶予が小さく
決して狙ってできるものではないので試行回数が必要です。
やり方などはバンくんが動画にまとめてくれているのでこちらも参考にどうぞ。
今回の記録
このヌゥエンディング直行の猶予1byteのサブフレームリセットは
ほぼ毎年大晦日に開催されていて6年間で成功者は私と主催のバンくんで2人だけです。
今年の参加者は私含めて3人で31日の12時ごろからリセットしてました。
そしてなんと開始2時間で成功してしまいました。(一度リセットして再走してます)
私としては初めて買った宝くじが一等大当たりの気分で
買えば買うほど一等が当たるのでは?と錯覚してしまうほどの手軽さでした。
続けて挑戦しようと思ったのですが、
ヌゥエンディング行きのセーブデータ入りカセットを保持したいと考えて
今回はここで離脱して残り二人の配信をみたりしました。
次のカセットは既に購入済みです・・・!
みなさんもぜひ挑戦してみましょう。
企画主催者のバンくんへの質問
せっかく記事を書くので毎年企画を主宰しているバンくんに
いくつか質問をしてみました。
Q.なぜサブフレームリセットRTA(※1兜増殖)をやろうと思ったのか?
バン : 元々は札幌オフラインスピードラン(SoS)の2019年9月に行われた
ロマサガ2のサブフレームリセットありany%を※2もっちさんが走っていたのを
現地で見て、たしか猶予10か13バイトくらいだったと思いますが、
そんなことができるのかと衝撃を受けたことが始まりです。
それで昔見たTASのようなこともできるのでは?とツイートしたら
嵯峨さんとピロ彦さんが色々ぶっ壊し始めたので
やってみたらできたという流れでした。
※1兜増殖...サブフレームリセットで任意のアイテムを増殖することができます。
頭装備を98個増やしたあとにゲームを25分程度でクリアできるチャートがあります。
こちらは猶予が最大で255byteあるので1byteよりは手軽ですが、
9回サブフレームリセットが必要です。
※2もっちさん... ロマサガ2のカジュアルプレイで
任意の1byteサブフレームリセットを成功させています。
希望通りの1byte書き換え成功者は私で3人目となります。
Q.猶予1byteサブフレームリセットをなぜやろうと思ったのか?
Any%や兜増殖より早くクリアしたかった?
バン : 早くクリアしたかったのはその通りです。
クロノトリガーはany%のくせに2時間半と時間がかかりすぎるので
なんでもいいから早くクリアできたらいいな〜と常々思ってはいました。
そしたらその手段はあるがとんでもなく難しい
(上に本当に実機でできるかすらわからない)ことがわかりました。
別に自分が成功することにこだわってはいませんでしたが、
誰もやってくれないなら自分がやるしかないかと思いました。
Q.企画として並走者を募集しようと思ったのはなぜか?
バン : 単純に成功確率があがるのと、
たくさん参加者がいればいるほど参加のハードルが下がり
新規走者も増えるかもしれないと思ったからです。
※下記は2023年12月時点のツイートだが継続的に活動しているのが窺える。
ざっくり振り返るクロノトリガーRTAサブフレームリセット猶予1バイト4年間の歴史
— バン (@suugaku2b) 2023年12月9日
【大晦日12時間チャレンジ】
2019年 失敗(4名参加)
2020年 成功(3名参加)
2021年 未開催(※サブフレ自体は水面下で流行。また年末に通常RTAがRiJ当選)
2022年 失敗(1名参加 ※初のイベント採用)
2023もやりましょう😃 pic.twitter.com/NpAgMtxzOU
Q.バンくんがヌゥエンドに初めて到達した人類ですが、成功した時の事覚えてますか?
バン : 成功した時は「えっ?」って感じでした。
直前まで1時間くらいRTAinJapanのブレスオブザワイルド (2020年冬)を見ながら
休憩してて再開後すぐ出たので、雑談配信に夢中で、
BGMがいつもと違ったので一瞬バグったかと思いました。
※当時の成功シーン切り抜き、当時兜増殖のRTAで既に1時間48分を達成していたため
惜しくも世界記録にはならなかった。
クロノトリガーサブフレームリセットでヌゥEND直行についに人類初成功しました。
— バン (@suugaku2b) 2020年12月31日
猶予1バイト(100万分の14秒)だそうです。
しかもなんとこのファイル選択画面にデータが残っているので何度でもエンディングに飛べることができます・・・!(音量注意です。) pic.twitter.com/hJkTCarzDl
Q.なぜ成功したにもかかわらず企画を続けようと思ったのか?
バン : 普通のRTAはどれだけ面白くてもいずれ記録は頭打ちになり
引退する人はいても新規でやり始める人はめったにおらず、やがて衰退していきます
(特にアクションゲームは…)。
例外として、運要素が高く完走すること自体が難しいRTAは
長続きする傾向にあります。(例:ドラクエシリーズ、遊戯王封印されし記憶など)
クロノトリガーもできれば多くの人に長くRTAを楽しんでもらいたかったので
1年に1度でも触れていくことが重要と思っています。
Q.2人目の成功者が出たが感想は?
バン : 素晴らしい!そしてタイムもびっくり!
この勢いで第3第4の成功者も出てきてほしい!
※開始2時間ほどで成功した時のバンくんの反応は下記クリップから。
ミラー配信しつつバンくん自身もサブフレームリセットをしていました、
https://www.twitch.tv/bann_jpn/clip/TenuousSecretiveDragonflyRitzMitz-wnVFbkNfCMao-etF
まだこの企画を続けていきますか?
バン : RiJに※レイドされたらやめます。
※RTAinJapanはすべてのスケジュールが終了すると運営の挨拶の後に
Twitchのコミュニティ Team RTAinJapanの中から任意の配信に
レイド(見ている視聴者を別の配信者に移す機能)しているようだ
https://www.twitch.tv/team/rtajp
ということでみなさんの疑問が少しは解決したでしょうか。
毎年続けていくようです、みなさんの参加をお待ちしております。
今後の展開
実はこのRTAの更新点を翌日の元日に思いついてしまいました。
事前に調べなかった自分が悪いんだけど
— 嵯峨(サガ) (@kyotosagauoa) 2025年1月1日
サブフレームリセットRTAの更新点発見してしまった。
中央オルガンの部屋で通常セーブ(ID0083)に対して
NewGame開始直後のワールドマップのデータ(ID01F0)で
上書きサブフレームリセットをすればID00F0のEDマップに飛べるみたいだ。
今までなぜゼナン橋を使っていたかというと
TASがこのマップを利用していたから、というのがあります。
(もしTASが分からない人がいたらググって大百科をご覧ください)
先ほど説明した通り、ヌゥエンド(0x00F0)に飛ぶのに
現代ワールドマップ 0x01F0
現代ゼナン橋 0x0020
を利用していましたが
現代ワールドマップ 0x01F0
中央オルガン部屋 0x0083
を利用することで
00F0のマップIDを作ることができてしまいます。
これによりヤクラ戦のイベントを見たり現代に戻る必要がなくなるので
6分程短縮できると考えています。
(最速のセーブポイントがオルガン部屋、中世ワールドマップは0x01F1なので使えない)
最大の問題はいかに早く猶予1byteのサブフレームリセットを成功させるか、
という点ですがそれでも6分タダでもらえるのは大きいですよね。
そして・・・
実際にエンディングに飛べるかどうか
そこで成功するかどうかってことでしたか。
— ピロ彦 (@pirohiko) 2025年1月2日
現代のワールドマップが01F0だったんですね、適当なこと言ってしまいました。
今書き換えで調べた感じだと行けるので、最速で到達できるセーブポイントで大丈夫かと思いますが、保証はサブフレームリセットするTASを実際に作って検証すると良いかも?
ピロ彦先生にもチェックしてもらいました。
実際に作って検証すると良いかもと言われたので
がんばってこのルートでTASを作ってみました!!!
正月早々作ってました。大変でした。
結果はぜひ動画を見ていってください。
ということで長々と書きましてここまでご覧いただきありがとうございました。
