激動っぽいのでまとめました。SRM(Stale Reference Manipulation)については発見から4年経って流石に皆慣れたと思うので既知とします*1。
2024年1月に起こっていないことを含みます。
小ネタ
2023/11/29:sword/slash extension
43回ポーズ開閉すると……黄金のスタルチュラをマスターソードで倒せる!
ポーズ開閉で剣の攻撃判定が少しずつ伸びて行くグリッチは、昔からフォークロアとして知られていたらしい。初出不明のまま2023年11月末に突如脚光を浴びた。皆剣を伸ばしている。
sword/slash extension - Majoras Mask - Ocarina of Time - YouTube
Slash Extension - ZeldaSpeedRuns
ポーズ開閉にとにかく時間がかかるので現状ネタ技寄りだが、Low%やLow C pressesなど制限された状況なら活躍するかもしれない。
延長系の技だとデクの棒の判定が後ろにめちゃくちゃ伸びるグリッチ(Deku spear)の方が絵面が面白い気がする*2。
SRMカテゴリの分割と全ダンジョン攻略RTA(SRM無制限)
2024/1/3:SRMカテゴリがRestrictedとUnrestrictedの2つに分かれる
騒動の記録。現在進行形の出来事なので今後大きく変わるかもしれない。今分かっている範囲でメモしておく(どうも背景調査が足りていないっぽいのであとで追記する)。
2023年12月に投票が行われて、LightNode SRM*3の使用・不使用でspeedrun.comのSRMカテゴリを暫定的に2つに分けることになった。2024/1/21現在カテゴリールールは明記されていない。
SRM 2023 Results Announcement - Google ドキュメント
そもそもレギュレーションとはRTAを面白くするため個人が自主的に、あるいは共同体の合意によって定めるものである。『ムジュラの仮面』を例にとると、「All Masks」や「All Fairy Rewards」のSRMカテゴリは技術の発展とともにメインリーダーボードから消え(競技性が低いと判断された?)、100%のSRMカテゴリは「No Pointer Manip」のみがメインリーダーボードに存在する。
『時のオカリナ』の場合、任意コード実行(ACE:Arbitrary Code Execution)を「Any%」以外で禁止することはすぐ合意されたと思う。任意コード実行を使えば「100%」も7分でクリアできてしまう*4。問題はむしろ、何を「SRM」「任意コード実行」として定義するかだった。
LightNode SRMは「任意RAM書き換え(arbitrary RAM writes)」を可能にする技術で、一応任意コード実行と区別されている。しかし現在のルールセットだと、任意コード実行ではないと定義されている操作でほとんど任意コード実行のような効果を十分素早く得られる(次節参照)。定義不備ではないのか。
投票の結果、SRMカテゴリの新たなレギュとして最も緩いものと最も厳しいものがほぼ半々となり、決着がついていない。そのため暫定的にRestrictedとUnrestrictedの2つを用意し、LightNode SRMをUnrestrictedの方に隔離している。
2024/1/9:All Dungeons Unrestricetd SRM の新チャート (30:00 by Cabbage72)
LightNode SRMを使ってファイルネーム・タイピングをしているこれは、現在のルールセットだと任意コード実行ではない。最初のSRMでファイルネーム3を参照できるようにしたあと、最大HPを0にしたりツインローバの第1形態をカットしたりマップセレクト画面を呼び出したり好き勝手やっている。
filename 1: 801e329c 7F7F1E60 (make lightnode point to file 3)
filename 3: 80009c54 80C096D0 (set continuous writer 1 value)
srm (0xB168), save no continue
filename 3: 80121ccc 801e32A4 (set continuous writer 1 address)
srm (0xB168), save no continue
filename 3: 800087a4 8011b174 (max hearts permanently 0)
exit and re-enter, no save no continue
filename 3: 800FB554 8033DFE4 (delete medallions from title file)
no save no continue
filename 3: 7F63196A 80000440 (dpad down)
no save no continue
filename 3: 8000AF2C 801F9A10 (first cycle rova skip)
no save no continue
filename 3: 80009C6C 80801a40 (map select 1)
no save no continue
filename 3: 8011C550 00000000 (title file)
no save no continue
die to a bomb in hyrule field (c-down)
save no continue
filename 3: 8011c020 803FDF7F (boss intro skipper)
exit and re-enter temple of time,
drink red potion,
save no continue
filename 3: 80009A6C 801c966c (map select 2)
exit and re-enter temple of time
to activate map select
チャート構築のアイディアが見事*5。All DungeonsでGC版(しかもゼルコレ版!)を使っているのがすごく珍しい(おそらくマップセレクト画面のため)。自室で壺からハートをとって体力が0であることに気づき死ぬ絵面も面白い。実質オワタ式でボス戦に挑み続けているので見た目より難しいだろう。
しかしぶっちゃけた話、前世界記録の方がずっと競技性が高く見ごたえがあったと思う(現在の計測方法で32:27の記録)。タイピングの時間が長いのがね……。
[WR] Ocarina of Time All Dungeons SRM Speedrun in 35:20 - YouTube
30:00のランと後続のランのために「All Dungeons Unrestricted SRM」カテゴリをメインリーダーボードに用意すべきかという、コミュニティの価値判断と気持ちの問題が生じる。「All Dungeons Restricted SRM」カテゴリの方に前世界記録のチャートを保存しておきましょうということなのか。
恣意的なレギュ制定をすると(というのも全てのレギュレーションは恣意的だから)、「LightNode SRMは可だがファイルネーム参照は1回まで」のようなレギュでSRMカテゴリを一本化すれば、とりあえず以前の秩序を回復できる。カテゴリ「No Wrong Warp SRM」と「Defeat Ganon SRM」は短距離走のためLightNode SRMを隔離する意味がほぼないことも指摘しておく*6。この辺りのことはみな承知のうえでSRMカテゴリは分割されたのだが。
「All Dungeons Unrestricetd SRM 30:00」はカテゴリ分割後にLightNode SRMの微妙なところを知らしめた。今後も議論は続きそうだ。
1月28日時点での世界記録は25:12(by JTown2909)。24分台は行けそうな感じ。
余談:SRMカテゴリは「Defeat Ganon」「No Wrong Warp」「All Dungeons」「100%」の4つに設けられている。最後の「100% SRM」に触れておこう。
LightNode SRMを100%のチャートに組み込む話は2021年3月の開発当初からあった。しかし100%の「要求アイテムを1度以上正規の場所から入手すべし(Source Requirements)」というレギュとソリがあわず技術的課題が多いこと(例えば大量のアイテムを一度に不正入手するタイトルファイルSRMは一部アイテムがほぼ正規入手できなくなり利用不可)、技術的課題を乗り越ると逆に自由度が高すぎて最適チャートを組むのが困難になることから、これまで放置されてきた*7。LightNode SRMを使ったランが無いから「100% SRM」カテゴリは分割されていない。
今回の件で100%へのLightNode SRMの応用は完全に立ち消える可能性がある。もし「100% Unrestricted SRM」があったとして30分ファイルネーム・タイピングしているところが見たいかというと……TASなら見てみたい。どういうチャートが最適か理論的興味がある。
全ダンジョン攻略RTA(SRM禁止)と懸賞金
2024/1/18:All Dungeons no SRMで1時間12分切り達成(1:11:57 by Amateseru)
ボス運も良いソリッドなラン。speerun.comのリーダーボードだと2位に1分16秒差をつけている。現行のチャートでこの記録を越えるのは厳しそう。
2024/1/28:N64を使った世界記録更新へ500ドルの懸賞金
上の記録を受け、N64を使ったAll Dungeons no SRMの世界記録更新に500ドルの懸賞金が懸けられた。N64用のチャートはWii VC用のチャートとだいぶ違うが、理論値は同程度だと知られている。
OoT All Dungeons Speedrun in 1:16:56 - YouTube
N64チャートの現世界記録は、2019/7/14に出た現在の計測方法で1:14:00の記録(by Zudu)。これは当時Wii VCよりも早い記録だった。2022/5/6にWii VCで1:12:49の記録(by Amateseru)が出たあたりから、皆Wii VCで走っている。理論値が同じでも全般的に難易度が低いからだ。Wii VC用チャートが途中までわらしべRBAというよく見るルートを走るのに対し、N64用チャートはメダマガエルWrong Warpなど変な技が出てきてより面白い。が、相応に難しい。
この4年で培われたCorpse Pushなどの新技を駆使するにせよ、Wii VCの記録を抜くのはかなり厳しい道のりだ。Wii VCの現世界記録はめちゃくちゃ試行回数を稼いで出た記録であり、N64はそれ以上の試行回数が必要になるだろう。達成した人には懸賞金を払いたくなるレベル。
なお、今後クラウドファンディングによって懸賞金は1000ドルまで上乗せされるかもしれない。
Ganonfloorとガノン討伐RTA(SRM禁止)
2024/1/19:Ganondoorはもう遅い! これからはGanonfloorでワープします
最初のダンジョン「デクの樹」のボス「ゴーマ」を倒したあと、ドアから外に出たらそこは崩壊中のガノン城だった……というGanondoorのグリッチはつとに有名である。2012年前に発見されて以来、「Defeat Ganon No SRM」(SRM以前の「Any%」)カテゴリで長らく活躍してきた。
Ocarina of Time Defeat Ganon No SRM in 12:57 (WR) - YouTube
煮詰まりまくった美しきGanondoorルート。その天下もそろそろ終わりそうである。
部屋の多重ロードを活用するグリッチはそこそこの数知られている。ロード負荷をかけてマップ上の邪魔なオブジェクトを消すという使い方が多い。今回のGanonfloorは元々「迂闊に多重ロードするとクラッシュする」というありがちな無用グリッチだった。しかしクラッシュの原因はエントランスデータの不適切な書き換えであり、うまいことやるとドドンゴの洞窟から崩壊ガノン城へワープすることが発覚する。
不正な場所にワープする「Wrong Warp」系のグリッチは、SRM以後は特にヴァリエーションを増したけれど、本質的にはだいたい同じ仕組みで動いていた*8。Ganonfloorは仕組みからして割と違いそうで、今後は多重ロード系Wrong Warpの発展が期待される。
見ればわかるが今までにない心臓に悪い見た目のワープをする。床をすり抜けて奈落に落ちたときの演出も無くパッと画面が切り替わるのが怖い。
セットアップは現在開発中。すでに「難しいクリップとホバリングを含むが、ポーズバッファを多用すれば最難関というほどでもない(素早くやろうとしたときの難しさは知らない)」くらいの難易度に落ち着いている。次の最適化粗めのTAS(LOTAD:Low Optimized Tool-Assisted Demonstration)*9によると、「Defeat Ganon No SRM」は1分ぐらい短縮できる見込み。
DGnSRM Ganonfloor Lotad in 11:47 - YouTube
実践したい方は次を参照。Sideflip Bombchu Hovering / Twisted Hover*10を素早く連続で行うスキルが必要で、全体的に中級者以上向け。
ただし、ナイーヴに多重ロードすると50%強の確率でしかガノン城にワープしないらしい*11。処方箋として最後のバック走前にポーズ開閉を2回すればよいことが分かっている。
Ganonfloorルートが本当に煮詰まってきたら、このポーズ開閉2回の3秒前後をカット(2回→1回)して50%の運ゲーに挑む苦行が始まるかもしれない。
余談1:Ganondoorの原型は2006年にグリッチハンターのAcryte氏が発見したが、そのときは「Cutscene Pointer」の問題でクラッシュし、2012年になるまでワープを引き出せなかった。現在に至るまでCS pointerはWrong Warpに付随する繊細な問題であり続けている。CS pointerのせいでWrong Warpに1回失敗するとチャートが修復不可能になったり、CS pointer絡みで突然クラッシュすることもしばしば起こる。
Ganonfloorの原型は2017年にスピードランナーのDaniel Baamonde氏が発見したが、リンクの年齢が「子供」時刻が「昼」でさえあればこのとき崩壊ガノン城にワープできたらしい。最初から「子供・昼」で遊んでいれば……CS pointerよりは明らかに単純な障害である*12。とはいえ、子供ダンジョンは大人状態で攻略するのが常だから大人で遊んでいた可能性が高い。またクラッシュの原因を追跡する意思とWrong Warpができそうだという目的意識がなければ、わざわざ「子供・昼」を試すこともなかろう。そう考えると納得の経緯。
ちなみに、「子供・昼」は「Defeat Ganon No SRM」で最速でドドンゴの洞窟に行く際の状況なので、RTA的にめちゃくちゃ都合がよい。これは嘘。計測時間的には、最初にデクの棒を1本だけ買ってハイラル平原でのWESSをしない方がドドンゴの洞窟への到着は早くなる。しかしWESSをしない場合、ゲーム内時間が進んで到着時に夜になってしまう。時間管理がカツカツのチャートだ。
余談2:speedrun.comだと「Category Extensions」に入っているようなマイナーカテゴリについてコメントする。
https://www.twitch.tv/videos/1207043426?tt_content=channel_name&tt_medium=embed
「Low% Defeat Ganon」は従来「デクの棒・あきビン・デクの盾・コキリのヒスイ(Ganondoorで入手)・マスターソード(ガノン戦で入手)」など5種のアイテムを必要とした。Ganonfloorルートは「デクの棒・ボムチュウ・デクの盾・マスターソード」の4種で済む。時間的にも16:50から12:00前後に短縮。Defeat Ganon no SRMの最速チャートと同じでよいので完全に企画倒れ。
【RTA】ゼルダの伝説 時のオカリナ Any% No Doors 28:23 - ニコニコ動画
「Any% No Doors」は従来Doorless Ganondoorを必要としたが、アイテム回収を工夫すればGanonfloorルートがno doorになる。13:00前後にはなりそう。こちらはギリギリセーフかアウトか。
余談3:Ganondoorはメインカテゴリ「MST」の最終盤、ガノン城に向かうおいしいところで活用されている。メインカテゴリから完全に「追放/もう遅い」されたわけではない。
OOT Medallions Stones Trials Speedrun in 1:42:20 (WR) - YouTube
言うまでもないが、Ganondoorはゴーマ戦後のブルーワープを利用したWrong Warpの1種でしかない。今後デクの樹→ガノン城のWrong Warpがメインカテゴリから駆逐されたとしても、デクの樹発のWrong Warpは活用され続けるだろう(デクの樹攻略後ムービーを飛ばそうとするとWrong Warpが発生するため)。
2024/1/25:Defeat Ganon No SRMの12分切達成(11:58 by Lozoots)
最適化早すぎ。
更新の大きな要因は、ボムチュウ消費が2つ少なく済むGanonfloorのセットアップが開発されたこと。これでGanonfloorにかかる時間が短縮されたし、余ったボムチュウを他のグリッチ(井戸でのvine clip、カカリコ村でのHESS)に使ってさらなる短縮が見込める。
上のランはGanondoorルート最後の世界記録保持者にして、13分切を達成したLozoots氏による。流石の精度と言うべきで、ドドンゴの洞窟に入ってからの動作は呆れるくらい速い。ポーズバッファをどうしてそんなに減らせるんだ。
ここからさらに短縮する可能性は現状2つ存在する。1つは井戸から出た後カカリコ村でHESSを行い、素早く移動しながら現在Lunge storageで行っているゲートクリップまで済ませること。こちらはセットアップが1月27日に作られた*13ので、そのうちRTAに取り入れられるだろう。
もう1つはGanonfloorの改良。Twisted Hoverを4回連続で行う現在のセットアップは、まだまだ敷居が高いし時間もかかる。もっと簡略化できれば難易度的にもRTA的にも嬉しい。また、ドドンゴの洞窟から「崩壊ガノン城の外に出てガノン城がぺしゃんこになった後のシーン」へのWrong Warpが目下研究中である。これは今使っている日本語版Wii VC*14では望み薄で、GC版が必要らしい(機種・ヴァージョン依存性はSRMの場合と同様にメモリ配置の都合)。ガノン場外へのWrong Warpが本当に可能で、セットアップが十分短く、Defeat Ganon no SRMの状況と矛盾しないならば、GC版が使われるようになるだろう。
追記:2月1日にTKC氏が解説付きRTA動画を出している。よくまとまっているのでお勧めしたい。
【RTA】ゼルダの伝説 時のオカリナ Defeat Ganon (No SRM) 12:11(字幕解説付き) - YouTube
|次>
|関連>
*1:とはいえ技術的細部が重い。必要なら次を参照。
【RTA】ゼルダの伝説 時のオカリナ 7分49秒でクリア【字幕解説】 - YouTube
*2:Quickdrawという技から派生するAction Swapという技の1種。次の15:30~を参照。
【RTA】ゼルダの伝説 時のオカリナ ビンゴ (Child Only) 1:12:13 part3(終) - ニコニコ
「100% no SRM」では、ガノン城闇の結界にある遠方の燭台を灯すために使われていたはず。
*3:LightNode SRMはスタート地点「コキリの森」で行うSRMの1種。「任意RAM書き換え(arbitrary RAM writes)」ができ、セットアップが素早く、同じセットアップからファイルネームを変えるだけで様々な効果を得られるところに特徴がある。このためカテゴリ分割以前は、「100% SRM」を除く全てのSRMカテゴリの最速チャートでLightNode SRMが使われていた。より詳しくは次を参照。時オカ日記②(コキリの森 LightNode SRM編) - 古い土地
*4:正確に言えば「100% NSR (No Source Requirement)」というカテゴリ。次を参照。
【字幕解説】ゼルダの伝説 時のオカリナ RTA 100% NSR 10:39.38 - ニコニコ(今の計測方法で7:23の記録)
2024/2/5時点での世界記録:
[WR] The Legend of Zelda: Ocarina of Time - N64 - 100% NSR in 6:42 by JTown2909 - YouTube
通常の100%には「要求アイテムを1度以上正規の場所から入手すべし」という「Soruce Requirement」の縛りがレギュで要請される。これを外すのが100% NSRだ。SRM/デバッグメニュー以前、NSRは黄金のスタルチュラを増殖するなどして通常の100%より1時間早い程度だった。次の記録を参照。
100% NSR in 02:42:53 by zfg - Ocarina of Time Category Extensions - Speedrun
それが気づいたら7分である。NSRは目的上、任意コード実行をレギュで排除する意味があまりないので、自然な流れと言えばそうだろう。
逆に通常の100%でも任意コード実行を許したらどうなるか、想像してみよう。ファイルネーム・タイピングの時間が長くなり競技性は落ちそうである。一方人間はタイピングに時間がかかるので、タイピングと実プレイのバランスを最適化する駆け引きが生まれるかもしれない。『ムジュラの仮面』で同趣旨のことをやったTASは37分程だった。
Majora's Mask 100% TAS with Arbitrary Code Execution by Seedborn - YouTube
*5:LightNode SRMを使って自死→タイピングをくり返すアイディア自体は、『時オカ裏』のDDM SRMというカテゴリ(全ダンジョンのアイテムと黄金のスタルチュラをSRM有で回収する)にも見られる。次は2022年7月の記録。
DDM in 43:58 by BigSalt - The Legend of Zelda: Ocarina of Time Master Quest - Speedrun.com
DDMではアイテムを正規入手する縛りがある。ではどうするかというと、デバッグ用のイベントエディターを開き、ビットを打って次々とアイテムを入手する際の「イベント」を引き起こす。
もし『時オカ』100% Unrestricted SRMのチャートが作られたら、この手のナンセンスなランになるのだろうか? マップセレクトとイベントエディターのどちらが早く、どちらが見た目マシなのかはわからない。
ちなみに、『時オカ裏』とゼルコレ版『時オカ』はデバッグ環境が似ているから同じようなSRMが通る。裏収録版に入ってる『時オカ』(表の方)ではこれができない。
*6:私はこれまで行われて来たLightNode SRMを含むランを残す立場で考えているが、「LightNode SRMは任意コード実行まがいなので禁止すべきである」「No Wrong WarpやDefeat GanonだとLightNode SRMは数分の加速要素に「しか」ならない」から「リーダーボードからLightNode SRMを排除しても問題ない」という立場も妥当だと気付いた。投票において制限を最も厳しくする案である。
*7:「LNSRMのヤバそうな応用として、任意コード実行でない(つまりカテゴリRTAで使える)のに永続的に「値xをメモリアドレスyに書き込む」操作が可能らしい。実現すればAll Dungeonsでコントローラー2/3の入力によりボスの体力を一瞬で0にする、なんてこともできるかもしれない。100%は更にルートが壊れそう。ただし今の所なんやかんやで実装されていない。」(「付録2:その他のSRMカテゴリとLNSRM」『時オカ日記②(コキリの森 LightNode SRM編)』2022年2月)
*8:次を参照。【RTA解説】Wii「スマブラX」収録 5分体験版「時のオカリナ」any% を可能にしたグリッチ part1/2:SRMとWrong Warpの基礎 - 古い土地
*9:ポケモンの「ハスボー」が英名「lotad」なので、それに合わせて略字がこじつけられている。
Ocarina of Time Twisted Hover/Distance Hover Tutorial - YouTube
*11:「framebuffer」(画面描画に関するメモリ領域)からとあるメモリへの書き込みを行う必要があり、VCだとその書き込みが奇数フレーム目で開かれたポーズ画面でしか行われないため。
*12:ダンジョンの入口に限らず『時のオカリナ』に存在するほぼ全てのエントランスデータ=マップの入口は、リンクの年齢(「子供」か「大人」)と時刻(「昼」か「夜」)で2×2=4通り用意されている。Wrong Warp一般はそうでもないのだが、Ganonfloorは年齢と時刻が整合していないとダメな方のグリッチだった。ワープ系グリッチのgrotto SRMが年齢・時刻ごとに違うセットアップを持つことを想起。