古い土地

暗い穴

【時のオカリナ・ムジュラの仮面】SRM/ACE 以降の ゼルダ RTA 史 part 1/2:(2019年10月)~2020年2月

 

 

 

はじめに:全体の予告

 

 N64の3Dゼルダといえば「時のオカリナ」および「ムジュラの仮面」。今更語るまでもない名作で、スピードランも古くから盛んに行われている。

 これら2作を2019年11月頃から徹底的にぶっ壊したのがSRM(Stale Reference Manipulation)およびACE(Arbitrary Code Execution:任意コード実行)だ。

 近々開催されるRTA in Japan Winter 2021で大トリ前に「スマブラX」収録5分体験版時オカをクリアする(?)レースがあるが、これもモロにSRMの恩恵を受けている。5分クリアなんてSRM/ACE以前には考えられなかった。

 

 本稿はグリッチハンターでもスピードランナーでもない筆者が、時のオカリナ any%を中心にSRM/ACE開拓期の大混乱から現在に至るまでの通史を編纂(偽造)したものである。

 所詮門外漢が書いた文章なので、間違い・不足等あればご教授願いたい。特に2019年10月-12月あたりの雰囲気は、当時コミュニティに居た方しか判らない気がする。

 

 

 

 本来は付録的な内容なのだが、読者の便宜のために「通史の骨格」となる部分をあらかじめ提示しておこう。こうした方が長い歴史の数多い枝葉末節に煩わされることは減る、と信じる。初読の方はとりあえず読み飛ばし、必要になったときに戻ってくるとよい。

 

 

[時のオカリナ any% 記録変遷]

 

 SRM/ACE以前のany%は今のspeedrun.comで「Defeat Ganon – No SRM」カテゴリに相当する。

 2020年以前の世界記録は16:58(2019/7/12, by Torje)。現在の世界記録は16:34(2021/11/16, by Lozoots)。いずれも日本語版Wii VCを用いている。

https://www.youtube.com/watch?v=scHUKLgwjOI&ab_channel=Lozoots

 

2020年1月-:13:48 → 8:12 日本語版N64(コントローラー3チャート)*1

2020年2月23日-:8:04 → 7:32  日本語版N64(コントローラー3レス)

2020年9月-:7:27 → 7:07 日本語版GC(プリレンダリングムービー呼び出し)

2021年7月-:7:04 → 6:49 日本語版Wii VC(LightNode SRM*2

 

 

 

[ムジュラの仮面 any% 記録変遷]

 

 デバッグメニュー以前のany%は今のspeedrun.comで「any% - No Major Glitches」カテゴリに相当する。

 こちらはデバッグメニュールート開発直後に1:15:52(2019/8/24, by EnNopp112)の世界記録が提出され、現在も破られていない。英語版Wii VCを使用。

https://www.youtube.com/watch?v=bRMt0v-XObU&feature=emb_title&ab_channel=EnNopp112

 

2019年8月-:54:02 → 48:32 英語版Wii U VC (漬物石と呼ばれたWii U一瞬の輝き:デバッグメニュー)

2019年11月-:40:58 → 28:17 英語版Wii VC(ムーンワープ発見以降:SRM

2020年2月-:27:42 → 24:43 日本語版N64(クレジットワープ発見以降:ACE)

2021年11月-:24:13 → 18:37 英語版Wii VC (1st cycle skip発見以降:デクSRM

 

 

[reference]

 

 技術的資料としては次が参考になる。①→②→…の流れはそのまま本稿の「お品書き」のようなものだ。年表ではどうしても装飾的脱線が多くなってしまうが、日時を含めてこのあたりの事項を頭に入れておくと読みやすくなるだろう。*3

 日本語の(RTA)解説動画については次回の記事末尾にまとめることにする。そちらも参照のこと。

 

SRMによる宝箱の中身改変(2019/10/29)

「Explanation: Editing Chest Contents (DC Chest)」

https://www.youtube.com/watch?v=_7E4dFD8Bmw&ab_channel=Glitches0and0stuff

「Stale Reference Manipulation 日本勢用ドキュメント」

https://gist.github.com/cma2819/34c9b00f12573316f9b6becc2c0ae948

 

②時オカACEの達成(2019/11/11)

「Arbitrary Code Execution in Ocarina of Time」

https://www.youtube.com/watch?v=RoEmGCNsbno&ab_channel=Fig

「【翻訳記事】時のオカリナにおける任意コード実行について」

https://cma2819.hateblo.jp/entry/2019/12/04/003438

 

N64版での時オカany%:コントローラー3あり(2020/01/21)

「Reach the Credits from Kokiri Forest using ACE (Ocarina of Time Glitch Explained)」

https://www.youtube.com/watch?v=wdRJWDKb5Bo&ab_channel=Glitches0and0stuff

 

N64版での時オカany%:コントローラー3なし(2020/2/23)

「OoT Any% ACE Tutorial」

https://www.youtube.com/watch?v=5A51_byMBXs&ab_channel=DanielBaamonde

 

GC版での時オカany%(2020/9/3)

「Ocarina of Time Any% Tutorial (GameCube Movie Night ACE) (Outdated)」

https://www.youtube.com/watch?v=m3uwRVYEmBU&ab_channel=Savestate

 

⑥LightNode SRM(2021/3/18)

https://docs.google.com/document/d/1Xf0mTcGwxbuBBFX1TYhKuRdfdH34wW9492RN-1YmIUM/edit

 

⑦2021/4/28時点での時オカRTA概況

ゼルダの伝説 時のオカリナ RTA入門指南書(実践編)」

https://sera18171.hatenablog.jp/entry/2021/04/28/193000

 

Wii VCでの時オカany%(2021/8/30)

「Ocarina of Time any% Speedrun guide (Wii VC lightnode route)」

https://www.youtube.com/watch?v=9tALzHR_Q7A&ab_channel=TAYLOR

 

 

追記:次のプレイリストはSRMの前史(2007年の動画!)から現在に至るまでを網羅している。困ったらここを探せば何かしら見つかるだろう。

https://www.youtube.com/playlist?list=PLlqDKyNPZyYcilkN2wQu0pDL8jyzOWO5Z

 

 

[諸注意]

 通史の中にSRM/ACEの仕組みの説明をねじ込めなかった(整理された形で説明したいが、そうなるのはかなり後のことなので)。SRM/ACEが何なのか知りたい、定義に自信が無いから復習したい、という方は本記事末尾の「付録:基礎事項」を参照のこと。

 以下、特筆しない限り「時のオカリナ」は日本語N64初期版ROMとする。*4

 「ムジュラの仮面」はそのときどきで述べる。SRM/ACEの文脈だと英語Wii VCか日本語N64を用いることが多い。

 

 

 

~2019年 SRM/ACEの理論的整備

 

 歴史を最初から辿ろう。

 

2007/9/15 「Acryte - Leever Armor」 by Acryte

https://www.youtube.com/watch?v=u0Q7pUqDDdg&ab_channel=Acryte

 「無を取得」自体は本当に古くから知られていた。これはおそらく動画ベースで最初の報告。

 

2016/10/30 「Dampe's Grave as Child using Actor Carry Glitch」 by GlitchesAndStuff

https://www.youtube.com/watch?v=cPNBT_5TeY4&ab_channel=Glitches0and0stuff

 アクターに関するグリッチの例。

 

 

2017/12/15 「Theory for New Wrong Warps to Cutscenes」 by Exodus

https://www.youtube.com/watch?v=m2Q3TnHg560&ab_channel=Exodus122

 アクターを活用する点でSRM/ACEの先駆とみなせる。数人のグリッチハンターがこの方向性でクレジットワープできないか検討したが、技術的困難により頓挫する。

 

 

2019/8/17 Wii U VC ムジュラの仮面 デバッグメニューが利用可能に

 

「Majora's Mask- Open Debug Menu with 63 Songs of Soaring」 by Exodus

https://www.youtube.com/watch?v=tOSeV-4Mtok&ab_channel=Exodus122

 text overflowで攻撃するので、SRM/ACEと技術的には関係無いのだが……。SRM直前の大更新ゆえ触れておこう。同日中にany% RTAへ取り込まれ、54:02(by EnNopp112)の記録が出る。初の1時間切。

 Wii U VCでやってるのが面白い。Wii VCでできたら基礎動作的にそっちの方が絶対良いのだが、Wii VCで使えるコントローラーはデバッグメニューを操作できない。*5

 3か月後にはSRMムーンワープで塗り替えられる記録。

 

 

2019/9/18 ムジュラの仮面 SS(super slide)でロードゾーンを跨ぎ「無を取得」

「bush.avi」 by Probably Butter

https://www.youtube.com/watch?v=yHOo4DKjeUs&ab_channel=ProbablyButter

 「無を取得」、もうちょっと前から見つかっていそうな気もする。

 しかしこの動画こそ、全ての始まりとなったのだ。

 

 

2019/10/11 SRMの発見

 

「OoT/MM: Stale Reference Manipulation (Boomerang)」 by GlitchesAndStuff

https://www.youtube.com/watch?v=6Q2Goj6DYOE&ab_channel=Glitches0and0stuff

 

 SRMの起源を調べるためOoT Speedrunning discord鯖の#glitch-huntingチャンネルに潜ってみた。まず雑談風に、2019/9/18の「無を取得」が時オカでもできないか議論されている。アクターのロードが関係していそうという話になり、そして突然――「I think I found a new glitch」この短文と共に動画が投稿された。

 部屋を行き来することでスタルチュラのしるしが鍵付き扉に化ける? 複製ではなくどこかから奪ってきているらしい。

「Stale Reference Manipulation (Boomerang) 2」

https://www.youtube.com/watch?v=cLM3l3GEy10&ab_channel=Glitches0and0stuff

 再現実験が始まると、ボムチュウを事前に爆破しないとクラッシュするとか○○を視界に入れるとクラッシュするとかの情報が出てくる。(ヒープ調整をちゃんとしないと不正命令になってクラッシュする? 全体的な仕組みは「ブーメランが参照するスタルチュラのアクターが隣室への移動によって無に変わり、ヒープ調整が偶々うまくいって鍵付きドアのアクターが無の参照するアドレスに入った」という感じに見える)

 セットアップ次第(ボムチュウの爆破数など)でしるしはスタルチュラ自体になったりブロックになったりする。見た目が面白いのも研究された要因だろう。

 

 

 現地時間午前4時になって一旦解散の雰囲気になった。

「Alright im going to bed don't find ACE before I wake up ok?」と言っている人が居たが、慧眼である。寝て起きて事態が変わるわけではなかったが、しかし1か月後にはACEまでたどり着くのだ。

 

 

2019/10/12 「Boomerang Actor Displacement Glitch in Majora's Mask」by Türkenheimer

https://www.youtube.com/watch?v=kdoCN3P7Co8&ab_channel=T%C3%BCrkenheimer

 ムジュラでもできる。森の神殿に限らない一般的現象であることが実証されてきた。

 

 

 ヒープの性質の議論、N64実機/VC/emulatorの内どれが原因なのかを腑分けする作業とかが大変で追うのが辛い。必要ならあとで追記する。

 10/14の段階でチェストの中身変えられないか考えている人が居る。ブレインストーミングかもしれないが発想が凄い(専門家からすれば自然だったのだろうか?)。

 

 

2019/10/28 「OoT: Editing Chest Contents! (With SRM/Stale Reference Manipulation)」 by GlitchesAndStuff

https://www.youtube.com/watch?v=FX_1u7JaYLc&ab_channel=Glitches0and0stuff

 チェストの中身をSRMで変える。分かりやすい応用例。

 

 

2019/11/11 時のオカリナ 任意コード実行が可能に

 

「Arbitrary Code Execution in Ocarina of Time」by Fig

https://www.youtube.com/watch?v=RoEmGCNsbno&ab_channel=Fig

 これをもって時オカ任意コード実行が達成された、としておこう。

 

追記:実際は11/8に達成され、「フックショットを消す」のが一番最初の命令だったとのこと。コメントでの情報提供に感謝します。

 

 N64の任意コード実行は2017年にポケモンスタジアムで為されて以来2例目(ポケスタはGBとの接続を使うので単独なら史上初)。

 

 どこで聞いたか忘れたが、これ以前(以後?)に3時間だか15時間だかオカリナを吹いてACEするアイディアがあったらしい。気になるのだが今検索しても一切言及が出てこない。2019/12/12の 「Total Control Demonstration Stream」はこれに近そうだが……。

追記:ムジュラのデバッグメニュー呼び出しが発見当初(2019年5月頃)33時間(すぐ短縮されて半日)大翼の歌を吹かなければならなかった事実と記憶を混同しているかもしれない。

 

 

2019/11/13 Wii VC ムジュラの仮面 SRMによりムーンワープ

 

「Majora's Mask - Moon Warp」 by Exodus

https://www.youtube.com/watch?v=gZeUnYvnA1Y&ab_channel=Exodus122

 SRMが猛威を振るい始める。よくよく考えると、SRMRTAに影響したのは時オカよりムジュラの方が先なのかもしれない。

 

2019/11/20 RTAでムーンワープ達成

 ムジュラany%の世界記録は40:58に(by FullGrownGaming)。ここから更新が始まる。

 

2019/11/26 「Majora's Mask - Moon Warp 2」 by MrCheeze

https://www.youtube.com/watch?v=k0xJ02sbkcI&ab_channel=MrCheeze

 ゾーラとビンが不要に。ムーンワープ期は最終的に28:17(2019/12/7, by EnNopp112)まで縮む。

 

2019/12/12 「Total Control Demonstration Stream」by glank

https://www.youtube.com/watch?v=k3Ppn6gH8Q4&ab_channel=glank

 カカシの唄を30分吹いてた頃の時オカTotal Control ACE。今だったらファイルネーム入力画面でポチポチプログラミングするだろう。

 生まれ出るものは光り輝く犬。犬の虹。

 

2019/12/16 「Ocarina of Time - Fast and Easy Total Control ACE」 by MrCheeze

https://www.youtube.com/watch?v=wIyEUScOMxc&ab_channel=MrCheeze

 Total Controlとしてタイピングのアイディアが提出された。虹色に光りHESS以上の速度で後ろスライドするリンク。加速して制御しきれない。

 

2019/12/27 「Ocarina of Time - Credits Warp ACE idea」 by MrCheeze

https://www.youtube.com/watch?v=JFP-Kv783Ss&ab_channel=MrCheeze

 SRM/ACEのセットアップは簡易化されたとはいえ、この時点ではまだダルニア始点らしい。

 

 

 

 

2020年 1 – 2月 RTAへの輸入:大混乱

 

 技術とセットアップが爆速で発展していく時期。

 

 時オカany%に関して。最初コキリの森でのACEに「妖精のオカリナ」「パチンコ」「コントローラー3」が必要だった。まずオカリナが不要になり、次にパチンコ、最後にコントローラー3が葬られる。

 コントローラー3関連が特にややこしい。2020/2/19までセットアップにコントローラー3の入力が必要だったが、要求する入力でチャートは2つに分かれる:手動で容易にできるもの(単純な斜め最大入力)とできないもの(人間にはちょっと再現できない微妙なアナログスティックの傾き)。

 後者のチャートにおいてRTA走者がどうしたかというと、入力が1回だけ必要な点に着目した。プラクティスROMで数値を可視化し、目標の値で物理的に固定化したコントローラーを用意すればよい、と。固定法に走者の創意工夫がみられる。

 

 コントローラー3の物理的固定を使うのは現在のレギュレーションだと禁止されていたはず。議論が熟さぬうちに記録が出ていた。

 

 

 

2020/1/3 「ACEはN64でしかできない」

 

 現在ではN64, Wii U, Switchでできることが知られている(Switchに関しては2021/10/28参照)

 

 GC, WiiではACEが出来ないというのは現在も正しい? 

(2020/9/1 any%がGC版で更新されたことに関して)

 GCWiiでも関数内部のポインタをいじったりはできるし、LightNode SRMによるArbitrary Ram Writeの自由度はN64以外の方が高かったりするのだが……。ROM内に存在しない関数を零から創り出して実行することはできない、らしい。

 

(2021/7/27 Wii UでACE出来るのはWiiよりエミュとしての完成度が高いため。でも実機の方が基礎動作速いし(Wii Uはラグりすぎ)特殊カテゴリ以外誰が使うのか)

 

 

2020/1/4  iQue版時オカ TASでコキリの森からクレジットワープが可能に

 

「Ocarina of Time - Kokiri Forest Credits Warp」 by MrCheeze

https://www.youtube.com/watch?v=YlADOm4G6pM&ab_channel=MrCheeze

 ACEの研究成果。オカリナありパチンコありコント―ローラー3あり。

 時オカAny% TASとしては15分切りを達成した初の記録。ファイルネームが「Cheatbox」だしACEの過程で利用していないっぽい。

 何よりも中国語、iQue Playerの使用が目を引く。これは任天堂が2003年に中国で発売したゲーム機で、性能はN64程度。ソフトもハードも入手困難そうだがどうやって手に入れたんだ。なんでエミュ環境があるんだ。

https://ja.wikipedia.org/wiki/IQue_Player

 

 技術的な解説はルートが安定する2020/2/19まで控える。

 

 

2020/1/9 AGDQ2020:GC時のオカリナ100% NSR (by ZFG)

https://www.twitch.tv/videos/533539330?collection=NZFiatOA5xW75w

https://archive.japanese-restream.org/agdq2020

 過渡期の映像として貴重。GC使うのが珍しい。

 この記録は2時間50分前後で今見ると普通の100%と大差ない。2週間後(2020/1/22)、100% NSRの世界記録は38分になってしまう。更に2年後(2021年10月)には11分台へ。

 ランは安定していて、日本語による解説も快適(すば氏、せーら氏)。グリッチshowcaseがあり、雑談から当時の状況が伺える。

 

 

2020/1/15 N64時のオカリナ any% RTASRM/ACEの使用が始まる

 

「Ocarina of Time - Kokiri Forest Credits Warp (RTA viable N64 version)」 by MrCheeze

https://www.youtube.com/watch?v=lg5a2LfZDcM&ab_channel=MrCheeze

 日本語ファイルネームの利用によってN64でもコキリクレジットワープができるようになった。iQueなんて誰も持ってないからね。

 

「Ocarina of Time Any% in 12:59 (Former WR)」by Lozoots

https://www.youtube.com/watch?v=vfM2j9EkN7A&ab_channel=Lozoots

 

 今回世界を救うのはこの男 「84フーボぉパv」*6

 

 現在のspeedrun.com statisticsでany%の一番最初の世界記録がこれ。*7

 妖精のオカリナありパチンコあり。コントローラー3も使っているが手動で入力している。

 妖精のオカリナ、Return A(すぐ後のany%に見られるデクババでカメラ角度を固定するグリッチ)の代わりぐらいにしか使ってなくないか? そうでもないのかな。このセットアップだと命令を走らす上で持っていることが大事らしい。

 

 

 2020/1/22 「Ocarina of Time 100% No Source Requirement Speedrun in 38:23」 by ZFG

https://www.twitch.tv/videos/540363150

 角度依存でアイテムを入手していた頃の100% NSR

 2019/12/28に2:42:53(by ZFG)を出してから1月で2時間縮んでる。

 

 

2020/1/27 「OoT Kokiri Forest Credits Warp - Easier method without extra controllers」 by MrCheeze

https://www.youtube.com/watch?v=PAjSShlg75s&ab_channel=MrCheeze

 オカリナありパチンコありの場合、コントローラー3レスはここで確立されていた。

 まあ1週間後にはオカリナレスパチンコレス・コントローラー3固定化の時代になるのだが。

 

 

2020/1/31 時のオカリナ any% オカリナレスチャート

 

「OoT any% in 11:18 (former WR)」 by Savestate

https://www.youtube.com/watch?v=u7MwozTOHTw&ab_channel=Savestate

 オカリナレスチャートがいつのまに。全然最適化されていないのに一瞬WRになるのが面白い。技術先行の時代。コントローラー3固定化チャートと思われる。

 

2020/2/1 時のオカリナany% 10分切り 9:59(by Lozoots)

2020/2/2 「Ocarina of Time Any% in 9:56 (Former WR)」 by Lozoots

https://www.youtube.com/watch?v=xHxgji9WHLI&ab_channel=Lozoots

 

 今回世界を救うのはこの男 「3-08ビぁcべ」

 

 こちらはコントローラー3手動入力。パチンコを取得するためだけにデクの樹様内部へ。セーブリセットしたらあとはいつもの。

 

 

2020/2/2 N64ムジュラの仮面 ACEでクレジットワープ達成 

 

「Majora's Mask — Wrong Warp to Credits with ACE」 by SeedBorn

https://www.youtube.com/watch?v=xb9yijgukak&ab_channel=SeedBorn

 

 次は2020/2/5に上がったセットアップ。イカーナの墓場はムジュラの仮面三大SRM聖地の一つ(他はデクナッツ城と天文観測所)

https://www.youtube.com/watch?v=wX-QfHP5LfY&ab_channel=SeedBorn

 

 2020/2/16にはRTAでクレジットワープが達成される。ムジュラの仮面any%の新WRは27:42(by Seedborn)。*8

https://www.youtube.com/watch?v=kDT3zT698pM&ab_channel=SeedBorn

 

 

余談:2020/2/2にはもう一つ大事件が起こっている。風のタクトでボムを使う簡易バリアスキップが見つかったのだ(以前のバリアスキップは動的メモリ調整による)。3Dゼルダ魔の日。

 

 

 

2020/2/3 時のオカリナ any% パチンコレスチャート

 

「Ocarina of Time - any% Slingshot Skip (TAS Only)」 by MrCheeze

https://www.youtube.com/watch?v=mamKr3ITNaI&ab_channel=MrCheeze

 

「OoT any% in 9:25 (former WR)」 by Savestate

https://www.youtube.com/watch?v=JJKmeHOspVc&ab_channel=Savestate

 TAS only つってるのが即日RTA始まるのはなんかおかしいよなぁ?

 

2020/2/6 時オカany% 9分切り 8:45 (by Narcissa Wright)

2020/2/19 「OoT any% 8:12.300」 by Narcissa Wright

https://www.youtube.com/watch?v=vVseCwDb9wQ&ab_channel=NarcissaWright

 

 今回世界を救うのはこの男 「3. dべNgべ」

 

 パチンコをスキップしてコキリの森内で完結するセットアップ。今見ると無を取得後結構動き回る。またコントローラー3の物理的固定化を使っている。

 

 

 

2020/2/7 時のオカリナ NG+ 1.684秒でクリア(by Savestate)

 

 ジョークであり、レギュレーション議論に一石を投じるもの。

https://www.youtube.com/watch?v=C2WdkMH9B54&ab_channel=Savestate

 当時のミーム画像

 

 

 

2020/02/14 「Majora's Mask — Total Control」by SeedBorn

https://www.youtube.com/watch?v=AUVfgZnQLRk&ab_channel=SeedBorn

 ムジュラの仮面の方もACEでめちゃくちゃできるようになったという報告。

 

 

 

2020/2/19 N64版時オカany% コントローラー3が不要に

 

「Ocarina of Time - Slingshot and Controller 3 Skip」 by MrCheeze

https://www.youtube.com/watch?v=RoHHGavNraQ&ab_channel=MrCheeze

2020/2/23 「OoT Any% ACE Tutorial」 by dannyb

https://www.youtube.com/watch?v=5A51_byMBXs&ab_channel=DanielBaamonde

 

 今回世界とレギュ改訂議論を救うのはこの男 「87Nジほブeぞ」

 

 今思い出すN64 any%のルートといえばこれだ。

 レギュレーション上大事なのはコントローラ3入力を使用しなくて済むようになったこと。早めにこのルートが開拓されて本当によかった。もし長い間コントローラー3物理的固定化ルートが世界記録になっていたら、レギュ改訂議論がものっそい面倒なことになっただろう。

 

 ルートが安定した(2020年9月まではこれが最速)ので少し技術的な解説を挟んでみる。

 

 55ルピーを入手し(ヒープ調整でコキリの森内の特定のルピーを入手したりしなかったり)剣・盾・デクの実を揃える。

 デクババが出現するあたりにロードゾーンの境目があり、そこを跨いでヒープ調整を行う。デクババを使ってRetrun A / 一人称視点バグを発動。カメラ角度が固定化される。

https://www.zeldaspeedruns.com/mm3d/tech/return-afirst-person-glitch

 この状態で剣がある狭い穴に向かい、看板でWWT(Walking While Talking)を起こす。本来WWTはカメラ位置を固定化するのだが、このルートではReturn Aが発動中であり、両者が相殺して微妙な状態になっている。

https://www.zeldaspeedruns.com/oot/misc/walking-while-talking?translation=ja

 このあと岩に向かってデクの実を使うとReturn Aが解除。WWTが本来の力を取り戻し、視点が看板あたりに固定化される。と同時にリンクが何かをつかむのだが、(遠くなので見え辛いが)岩ではなく無をつかんでいるのが判る。

 WWTを使った「無を取得」はCamera Lock SRMと呼ばれ、元々時オカ3Dのコミュニティでアイディアが出されたらしい(時オカ3Dは2022/1/7現在でもSRMの有用な応用が無いのに!)

 

 ここからACEまで持っていく。リンクの現在角度/最後にロックした角度の調整を3回行うことでファイルネームを読み込み、「飛び石を1フレーム映すごとにカットシーンIDとよばれる値が1増える」状態になる。9フレーム映せばカットシーンIDは0から8まで増える。すると

 

 この状況で双子の家(009C)に入るとCutscne Map(00A8)という特殊なエントランス/マップに飛ぶ。ここにおいてカットシーン8が流すべきムービーは「Cutscene - A Thwarted Ganondorf Curses His Opposers」、つまりエンディングである。

――「速成:Wrong Warp - 計算例」

【RTA解説】Wii「スマブラX」収録 5分体験版「時のオカリナ」any% を可能にしたグリッチ part1/2:SRMとWrong Warpの基礎 - 古い土地

 

 SRM以後のCredits Warp(エンディングワープ)も、結局はWrong Warp(ロングワープ)と呼ばれるグリッチの原理で成し遂げられる*9。Wrong WarpといえばSRM以前のany%でゴーマ戦から崩壊ガノン城内部へ飛んだ通称「ガノンドア」が有名だろうか。

 上で引用した記事にはWrong Warpを基礎から応用まで(SRM以後を見据えて)書いたので、興味がある方は参照されたい。「エントランス」「カットシーンID」ともに超重要概念だが、解説は上記事に譲る。

 

 

 このルート最初の記録は8:04(2020/2/23, by dannyb)。

 

2020/2/26 N64時のオカリナ any% 8分切り 7:59 (by dannyb)

 このあともまだまだ縮む。

 

 

 

 

付録:基礎事項

 

 年表の中で説明できなかったSRM/ACEの仕組みについて補足する。

 

[SRMの概要]

 

 以下は筆者の理解。「Stale(古くなった) Reference(参照) Manipulation(操作)」とはどういうことか、 時オカany%のように岩で無を取得する場合で例示してみよう。

 

①ロードゾーン跨ぎ/回転切り等の「儀式」=セットアップでこれから持つ岩の角度情報をヒープ内の良いアドレスAに誘導する 

②岩を持つ 

③何らかの手段(時オカany%の視点固定するやつ、スライドによるロードゾーン跨ぎ等)で岩のアクターを解放(無を取得)し、参照だけ保持する 

④新たなロードゾーンを踏むと解放されたアドレスAに新たなアクター/メモリ情報Bが入る 

⑤無を特定角度に置くことで、無が参照しているアドレスAに位置する情報Bへ異常な値を流し込む 

 

 岩SRMの要点は「持っている岩」が「無」に変わることでメモリ情報が「解放され」、しかし「参照は保持したまま」「新たなアクターがロードされる」ことにある。これで「新たなアクター」に「異常な値」を流し込むことができるのだ。この過程はどのSRMにも共通する。

 またSRMを実用的な効果に結び付けるために、上の「アドレスA」「メモリ情報B」以外の部分も調整が必要である場合が多い。例えば宝箱の中身を変えるのはSRMだけでもできるが、ファイルネームを命令として実行する(ACE)にはいくつかジャンプ命令を乗り継ぐ必要がある。

 

 この節の執筆にあたっては次の記事を参考にした。

 

「【翻訳記事】時のオカリナにおける任意コード実行について」

https://cma2819.hateblo.jp/entry/2019/12/04/003438

 

 

[時オカにおけるACEの定義]

 

 任意コード実行(ACE)とは何か。(ゲーム内の操作だけで)(程度にもよるが)任意のコードを実行することである。以上。

 いや、割と文脈によりけりなので、一般論としてこれ以上のことは言えない。

 

 時オカ・ムジュラに関しては、チューリング完全に近いしプログラミングも書きやすい(と筆者は認識している)。次の動画を具体例として挙げておこう。次回の記事でも触れるつもりだ。

「Majora's Mask 100% TAS with Arbitrary Code Execution by Seedborn」(2020/12/12)

https://www.youtube.com/watch?v=o7wGpmP6YH8&ab_channel=ZFG

f:id:wagaizumo:20211223115630j:plain

(動画の34:54時点、RTAタイマー34:41の時点のスクショ cool)

 

 本当に問題にしたいのは、ACEのレギュレーション上の定義である。

 ACEがany%以外のメインカテゴリで禁止される一方、SRMは「100%」「All Dungeons」「Defeat Ganon」「No Wrong Warp」の4つの「SRM」カテゴリで使用が許可されている。「何がACEでないか」はタイム短縮につながる実際的な問なのだ

 speedrun.comのCategory Rulesから引用しよう。

 

In the context of OoT rules, ACE is defined as:

  • Executing code outside of the .text section of a file
  • Executing modified code in the .text section of a file

*If code is indirectly modified by some SRM application but it does not benefit the speedrun, it is allowed

 

 明解な定義である。と同時に、仕組みを全部理解していないと判別できるものではない。「よくわかんないことがわかった」状態

 まあ、SRMのセットアップを後追いしかしない人はルールに抵触する危険が無いし、セットアップを開発する人は十全に理解しているはずなので、誰も困らないのか……?

 それでも喉奥に何か引っかかったような感覚がある。解消するには「全部理解」するしかない。あるいは、この敷居の高さこそ引っかかりの原因なのか。*10

 

 

 ここでは時オカのレギュレーションを説明したが、ムジュラの方ではSRMを「Function Pointer Manipulation:FPM」か否かで更に細かく分けている。元々ダンジョンが4つと少なくFPMと大翼の歌を組み合わせると強力すぎるせいだろうか、現在ではFPMまで許可した「SRM」カテゴリはcategory extensionに追いやられている。

 

 

 

 

|次>

 

wagaizumo.hatenablog.com

 

 

 

 

 

 

 

 

*1:iQueは11:11まで短縮し、「SRM以前」は9:59まで短縮したとMrCheeze氏はまとめている。そうかなあ 「Since the iQue era, the time has been cut by 11 minutes and 11 seconds. Since the last pre-SRM route, 9 minutes and 59 seconds. (I wonder who will be the first to get sub 6:58.366?) / OoT minus the intro is faster than a SMB1 speedrun. It's kinda incredible.」

https://twitter.com/MrCheeze_/status/1418316441795932161?s=20 

*2:最近気づいた細かい見落とし:GC版最後の世界記録である7:07はムービー呼び出しにLightNode SRMを活用することで前記録から2秒短縮した。なので正確を期すなら、Wii VC 直前からany%でLightNode SRMは活躍していたことになる

*3:暗記前提みたいで申し訳ない。本稿は筆者のメモ・備忘録を兼ねているので、すっきりした通史を編むことより情報を落さないことを優先してしまう。

*4:SRM/ACEに関してはN64でver1.1, ver1.2が使われることは無かったはず。一般にver1.1は利点が無く、ver1.2を使うならそのバージョンに基づくGCWii VCを使った方が何かとアドバンテージを得られる。SRMのセットアップはバージョンによっても変わり得るので実践する方は要注意。

https://www.zeldaspeedruns.com/oot/generalknowledge/version-differences?translation=ja 

*5:Wii VCのコントローラーだとデバッグメニューを呼び出すことはできても操作できない」という問題は、後に時オカでも発生した。特殊カテゴリでWii U VCが生き延びたり生き延びなかったりする原因の一つ。

*6:走者により名前が違うことについて:まずコントローラー3の扱いによってチャートが変わる。また、この時期は同じチャートでも名前の入力にいくらか不定性があったはず。

*7:「ACE以後一番最初」となると同日同走者の13:48の記録がある

*8:技術開発担当と実走担当が別れることも当然多い。しかしながら、SRM/ACE使用カテゴリは実走(の改善)に深い知識が要求されるため、技術開発と実走両方できる人が活躍している印象。

*9:ただし本記事のpart2で見るように、GC版any%は「エンディング呼び出し関数」を実行すればいいので例外的

*10:ベテラン走者もよくわかっていなかったらしい(ツイートはすば氏より引用) 「イマイチACEの定義ってよくわかってないんだよなあ/NoWWのタイトルファイル呼び出しとかファイルネーム4文字利用してるけど、あれはACEでは無いんだよねえ」

https://twitter.com/sva16162/status/1277184658900258817?s=20