まえがき
現在、『ゼルダの伝説 時のオカリナ(以下時オカ)』のRTAでは、あるひとつの大革命で盛り上がっていて、最短クリアを目指す”Any%RTA“では世界記録の更新が続いている状態だ。
気になるその大革命とは――一言で述べるなら『“任意コード実行”を用いたエンディングへのワープ』。
屈指のバグ技オンパレードゲームとして有名な時オカで、これ以上何が起こるというのか。
今回はここ数年のAny%RTAを振り返った後、この大革命に迫る!
ここ数年のAny%RTAはどんな感じだった?
時オカは元々、最初のダンジョンである『デクの樹サマの中』からラスボス戦直前のマップである『ガノン城』へのワープが可能で、短時間でクリアできてしまうゲームとして有名だった。
2016年の8月に見つかった方法を使用した記録が17分13秒。
ここから3年間での最適化や小技の積み重ねで、1秒単位での記録更新を突き詰めた結果、2019年7月には16分58秒という悲願の17分切りの世界記録が打ち立てられた。
この記録で使われたルートは、たった”17分”でクリアできることもあって、短縮を可能にしうるポイント自体が少なかった。そのため、「新たな大技でも見つからない限りさすがにここで打ち止めだろう」と言われていたのだが……。
この記録からしばらく経ったある日、大革命によってなんと“4分”以上短縮されてしまったのだ!
トップランナーによって煮詰められた結果が3年間かけて”15秒”の短縮だったわけで、”4分”以上短縮されたことがいかに異常な事態かが分かるだろう。
大革命って一体なに?
2020年1月15日に人力で再現可能なエンディングへのワープ方法が見つかった。これが大革命の正体だ。
元々中国版でのみ実現可能な方法が2週間ほど前に発見されたが、その時点ではとても人力では不可能なレベルだった。しかし、研究が進んだ結果、日本版の初期版ROMで人力でできるようになってしまったのである。
以下は1月16日に達成された人類初の13分切りの動画だ。
この動画を見ると、『コキリの森』というマップで儀式のようなことをしてエンディングへワープしているのが分かるだろう。これが大革命後のルートとなる。
従来は『最初のダンジョンからラスボス戦直前のマップへワープし、ラスボスを倒してクリアする』という攻略順だったが、現行では大革命のおかげで『必要アイテムを揃えてコキリの森からエンディングへワープしてクリアにする』という攻略順に変わり、13分を切るまでになってしまったわけだ。
現在も更新ラッシュが続いており、現時点での世界記録は1月19日に達成された12分10秒。
本記事は1月16日(木)から書き始めたが、投稿直前までの3日間で世界記録のタイムを6回書き直している。この話だけでも今まさに起こっていることだというのが伝わるだろう。
エンディングへワープするためには?
現行の『人力で再現可能なエンディングへのワープ方法』では、以下の2つを満たした後に任意コードを実行するとエンディングへワープできる。
- 『コキリ族の子供の岩』の描画時、”描画処理”の代わりに”任意コード”が実行されるようにする
- 図右側にある4つの赤枠のカッコ内の値を作る
“任意コード実行”とは、ゲーム内でメモリをいじくり回して作った命令コードを実行することを指す。
赤枠カッコ内の値は意味のある命令コードとなっていて、今回の場合はこれが”任意コード”にあたると思ってもらって良い。
例. 3P用コントローラで作る値「08028080」の意味は?
・「08028080」の意味は「j 0x800A0200」という命令コード
・「j 0x800A0200」の意味は「メモリ番地0x800A0200へ飛んでください!」
この図で注目してほしいのは、”84フーボぉパv“という文字列である。
これは、『ファイルネームを”84フーボぉパv“にする』という意味で、今回の方法においてはこれもひとつの命令コードとして使うので不可欠な要素となっているのだ。
このこともあり、”84フーボぉパv“をTwitterのユーザー名に入れるというネタが時オカのプレイヤー内でにわかに流行っているらしい。
ファイルネームはRTA開始前に付けることができるので、実際に『コキリの森』でやることは以下の3つとなる。
- 『コキリ族の子供の岩』の描画時、”描画処理”の代わりに”任意コード”が実行されるようにする
- 必要な3つの値を作る
- 上記2点が終わったら任意コードを実行
実際の動画を見てみよう!
大まかな内容は理解できたところで、やり方を説明している以下の動画を見てみよう。
※以下で使用しているスクリーンショットは全てこの動画から。
例えば、15秒~36秒あたりのシーンではロードゾーンを行き来しているが、これは特定のデータのみをロードすることでメモリ空間内を調整している。
こんな感じでメモリ空間内を調整した後、”任意コード”が実行されるようにするために”無の取得/設置“を行なう。
無の取得というのは、『何かを持っている格好をしているのに何も持っていない状態』からそう呼ばれ、今回は『Walking While Talking』というバグ技でカメラを固定し、岩を持ちながらカメラのロード範囲外に行くことで岩を無に変えている。
動画時間1分04秒~2分15秒あたり。リンクが無を持っているのが分かる(2枚目)。
その後、無を特定の角度を向いて置くことで、既に別のデータが入っている領域に無の角度の値を上書きする。こうすると『コキリ族の子供の岩』を描画する際に、“描画処理”の代わりに”任意コード”が実行されるようになるのだ。
動画時間2分25秒~2分44秒あたり。リンクが無を置いているのが分かる。
※角度の値さえ作れれば良いので、現世界記録ではセットアップ場所が異なる。
無を置き終わった後は、岩を壊してメモリ空間内を調整し、柵へ向かう。
3分05秒あたりから見ると、リンクが柵へ行ってポーズ画面とパチンコで何かしているのが分かるだろう。
これは、NINTENDO64のニュートラルポジションを再設定できる仕様などを駆使して、パチンコの射撃角度を”0804697D E6EA0000″という値にしようとしているのだ。
この値は「メモリ番地0x8011A5F4へ飛んでください!」を意味する値――言い換えると、ファイルネーム”84フーボぉパv”へ飛ぶための命令コードとなっている。
柵でリンクの角度を調整し欲しい『パチンコの射撃角度』を作っている。
3分40秒あたりの右上を見ると2つ目のコントローラの入力が新たに出現していることが分かる。これは3P用コントローラの入力だ。
右上に3P用コントローラの入力が新たに現れていることが分かる。
任意コードを実行してもフリーズしないように、このパート以降は、3P用コントローラで『十字キー上+Cボタン左+スティック-128,-128』をずっと入力しっぱなしにしておくことで、”08028080″という値を常時作っておく。
最後にやることは、『コキリ族の子供の岩』が描画されている状態(任意コードが実行されている状態)にした後、1P用コントローラで指定の入力を行ない”241CFFF6″という値を作ることである。
この工程が終わると欲しい全て(4つ)の値がそろうので、次の任意コードが実行されたタイミングでエンディングへワープし終わりを迎える。
最後は1P用コントローラで指定の入力をすることでエンディングへワープ。
※上記の解説は参考動画などの情報を元に独自に解読したものなので、間違えていたら教えてほしい。
むすび
先のセクションで紹介した流れはかなりざっくりしたものなのだが、人によっては少し難しく感じたかもしれない。
逆に言えば、簡単には理解できないぐらい複雑な方法なわけで、私もこれを初めて見た時は「よくこんな方法思いついたな!」と驚いてしまったほどだ。
詳しい操作方法が気になる方は本動画にリンクされているoot RTA credits warp rough notes – Pastebinを参照しよう。
時オカの初期版ROMと1P, 3P用のコントローラーを用意して全く同じように操作すれば、どの家庭のNINTENDO64でも同じようにエンディングへワープできてしまうので、ぜひチャレンジしてみてほしい。
時オカは屈指のバグ技オンパレードゲームであると冒頭で述べたが、それでもなお新たなバグ技が見つかり続ける実に奥が深く魅力的なゲームだ。
全てを追いかけることは難しいが、こういった機会に少しでも時オカの一端に触れて興味を持ってもらえれば、嬉しく思う。
※本記事はせーら氏から情報と記事原案をいただき、宇佐美まさむねが調査・加筆した。
スーパーマリオ64のRTAをやっています。
暇な時にマリオ64RTAの解説系動画をYouTubeに投稿しています → https://www.youtube.com/channel/UCDOLszv_4qtFycO6lIM5h2g
マリオ64RTAの情報サイトはこちら → https://www.sm64rta.info/
Simply氏が私のことを紹介してくれました → https://youtu.be/9p8E-XfNSk0 ※英語の動画です
コメント
RTAが面白いゼルダの中でも特にBOTWと風タクが面白いので記事みたいです
(すでに執筆中かもですが。。。)
人力で再現可能
お前ら人間じゃねえ!