【マリオ64 RTA】『カーソル移動の仕様』という観点で70枚RTAを見てみよう!

解説70枚RTA, 仕様

現行の70枚RTAのルート(50枚ミップを捕まえるルート)では、スノーマンズランド~やみにとけるどうくつの区間がある。

この区間は『カーソル移動に関する仕様』のせいで、通しの理論値が扉~扉間の理論値の合計よりも2フレーム遅くなってしまうのだ。

今回はカーソル移動の仕様を簡単に説明した上で、なぜ理論値が2フレーム違うのかを説明する。

【追記】本記事での仕様の説明は、色々省略しすぎている面がある。以下の記事で100点満点の説明をしているので、ぜひこちらを読んでみてほしい。

カーソル移動の仕様とは

カーソルが出現する画面は4種類ある。(以降、カーソル画面と呼ぶ)

  • 通常スターのセーブ画面 ([セーブして続ける][セーブしないで続ける]のやつ)
  • 秘密スターのセーブ画面やレース開始など選択が必要な画面 ([はい][いいえ]のやつ)
  • ポーズ画面 ([続けてマリオする][コースから出る] or スコア一覧のやつ)
  • スター選択画面 (★1~6のミッション選択)

cursor-70star-1 cursor-70star-2

これら4種類の画面では以下の2つの値が共通で使われていて、しかも、カーソル画面を閉じた時にこれら値が初期化されない仕様となっている。

これが少し前に明らかとなったカーソル移動の仕様の一部である。

  • カーソル画面での前回のスティックの状態 (以降『スティックの状態』と呼ぶ)
  • カーソル画面で何フレーム連続でスティックが倒されているかを数えるカウンター

この仕様の裏をつくと、セーブ画面時に下入力を入れっぱにしておくだけで、[セーブしないで続ける]まで一気にカーソルを動かすことができるのだが……。

このテクニックと仕様の全貌は後日紹介しようと思っているので、今回は割愛する。

ただ、『スティックの状態』の話は『理論値が2フレーム違う理由』を理解する上で必要なので、次のセクションでその話をすることにしよう。

『スティックの状態』の詳細

100枚スターなどの2択のセーブ画面([はい][いいえ])で、選択画面になる前からスティックを右に倒しっぱにしておけば、カーソルが最速で[いいえ]に移動することは大半のプレイヤーが知っていると思う。

cursor-70star-3 cursor-70star-4

このテクニックを常用しているプレイヤーは以下のような経験をしたことが絶対あるはずだ。

「右に倒していたのに[いいえ]にならなくて[はい]を押しちゃった」

――これこそが『スティックの状態』が原因で起こる事象なのである。

スティックの状態には以下の3つの値が存在する。

  • “0": 「前回カーソルで選択した時のスティックがニュートラル(無入力)だったよ」を示す値(以下、"0(無入力)"と呼ぶ)
  • “1": 「前回カーソルで選択した時のスティックが上入力か左入力だったよ」を示す値(以下、"1(上か左)"と呼ぶ)
  • “2": 「前回カーソルで選択した時のスティックが下入力か右入力だったよ」を示す値(以下、"2(下か右)"と呼ぶ)

上記を念頭に、一例として、70枚RTAでBitDWの赤コインスターを取得した時に「右に倒していたのに[いいえ]にならなくて[はい]を押しちゃった」場合を考えてみる。

ひとつ前のカーソル画面は赤スイッチステージのセーブ画面であることが一般的である。

この画面にて[セーブしないで続ける]を選択した時(Aボタンを押した時)のスティックが下入力のままだったら、『スティックの状態=2(下か右)』でセーブ画面を終えることになる。

cursor-70star-5

この状態で、BitDWの赤コインスターのセーブの選択画面で右に倒しっぱなしにしていると、

  • スティックの状態は2(下か右)。つまり、現在のスティックは下か右入力だ。
  • 今回受け取った入力は右入力。……つまり、また同じ入力(右入力)が来ているぞ。
  • 同じ入力ならカーソルはそのままでいいんだよね。

というようなことがゲーム内で起こってしまい、「右に倒していたのに[いいえ]にならなくて[はい]を押しちゃった」となるわけだ。

cursor-70star-6 cursor-70star-7

では、どうすればこれを回避できるのかというと、赤スイッチステージのセーブ画面で[セーブしないで続ける]を選択する時に、スティックを無入力にすれば良い。

cursor-70star-8

こうすることで、次のBitDWの赤コインスターのセーブの選択画面時に、

  • スティックの状態は0(無入力)。つまり、現在のスティックはニュートラルだ。
  • 今回受け取った入力は右入力。……つまり、違う入力が来ているぞ。
  • 右入力だからカーソルを右に移動しないといけないよね。

というようなことが起こるので、問題なく最速で[いいえ]を選択できるようになる。

cursor-70star-9 cursor-70star-10

以上が実際のRTAに当てはめた場合の『スティックの状態』に関する仕様となっている。

これを理解していれば、この後話す『理論値が2フレーム違う理由』もすぐに理解できるだろう。

なぜ理論値が2フレーム違うのか?

2フレーム異なる理由は、以下の区間を先のセクションと同じように見ていけばすぐに分かる。

『スノーマンズランド終 → 50枚ミップ回収 → 地下のキノピオスター回収 → 闇にとける洞窟イン』

この区間では、スノーマンズランドのスターセレクト画面以降で3つのカーソル画面が存在する。

(1) スノーマンズランドから出る時

cursor-70star-11

(2) ミップのスターを回収した時

cursor-70star-12

(3) キノピオのスターを回収した時

cursor-70star-13

(1) スノーマンズランドから出る時

最速で[コースから出る]を選択するには以下の入力をしなければならない。

  • 0フレーム目: スタートボタン
  • 1フレーム目: ポーズ画面を待つ(任意の入力でOK)
  • 2フレーム目: 下入力+Aボタン

この時、ポーズ画面は1フレームだけ出現し、その1フレームでは既に[コースから出る]にカーソルが当たっている状態となる。

cursor-70star-14

Aボタン時は下入力なので、『スティックの状態=2(下か右)』でカーソル画面を終えることになる。

(2) ミップのスターを回収した時

最速で[いいえ]を選択するには以下の入力をしなければならない。

  • 0フレーム目: 右入力
  • 1フレーム目: Aボタン(右入力は無くても良い)

しかし、1つ前のカーソル画面にて『スティックの状態=2(下か右)』で終えているので、

  • スティックの状態は2(下か右)。つまり、現在のスティックは下か右入力だ。
  • 今回受け取った入力は右入力。……つまり、また同じ入力(右入力)が来ているぞ。
  • 同じ入力ならカーソルはそのままでいいんだよね。

となって、カーソルが動いてくれないことになる。

なので、カーソルを動かすために1フレームロスらせなければならないのだ。

  • 0フレーム目: 無入力
  • 1フレーム目: 右入力
  • 2フレーム目: Aボタン(右入力は無くても良い)

この時、1フレーム目で[はい]、2フレーム目で[いいえ]にカーソルが当たっている状態となる。

cursor-70star-12 cursor-70star-15

[はい][いいえ]のカーソル画面では、Aボタンを押した時のスティック入力ではなく、1フレーム前のスティック入力が残る仕様となっている。

Aボタンの1フレーム前は右入力となっているので、『スティックの状態=2(下か右)』でカーソル画面を終えることになる。

(3) キノピオのスターを回収した時

このパートは、先ほどのミップのスターと全く同じである。

1つ前のカーソル画面にて『スティックの状態=2(下か右)』で終えているので、最速で[いいえ]を選択しようとしてもカーソルが動いてくれないことになる。

なので、カーソルを動かすために1フレームロスらせなければならないのだ。

  • 0フレーム目: 無入力
  • 1フレーム目: 右入力
  • 2フレーム目: Aボタン(右入力は無くても良い)

この時、1フレーム目で[はい]、2フレーム目で[いいえ]にカーソルが当たっている状態となる。

cursor-70star-13 cursor-70star-16

まとめると

ミップとキノピオのスターのカーソル画面で1フレームずつロスらせているので、計2フレームロスすることになる。

扉~扉の区間だけを見る場合はカーソル移動の仕様を無視できるので、この2フレームのロスはない。

よって、「通しの理論値が扉~扉間の理論値の合計よりも2フレーム遅くなる」というようなことが発生するわけだ。

ちなみに、どのカーソル画面でロスらせるかは3つパターンがあるが、どこでロスらせても2フレームのロスは確定する。

……と言ってもイメージが湧きにくいと思うので、上記とは異なるロスらせパターンの70枚idealrunを確認して終わることにしよう。

補足: 70枚idealrunのロスらせパターン

70枚idealrunでは、スノーマンズランドから出る時にまず1フレームロスらせている。『スティックの状態=0(無入力)』でカーソル画面を終えることになる。

  • 0フレーム目: スタートボタン
  • 1フレーム目: ポーズ画面を待つ(任意の入力でOK)
  • 2フレーム目: 下入力
  • 3フレーム目: Aボタン+無入力

cursor-70star-17 cursor-70star-18

続いてミップスターのセーブ画面。

1つ前のカーソル画面で『スティックの状態=0(無入力)』で終えているので、ここでは最速で[いいえ]を選択することができる。

cursor-70star-19 cursor-70star-20

Aボタンを押す1フレーム前が右入力となっているので、『スティックの状態=2(下か右)』でカーソル画面を終えることになる。

最後キノピオスターのセーブ画面。

1つ前のカーソル画面で『スティックの状態=2(下か右)』で終えているので、ここでは最速+1フレームで[いいえ]を選択することができる。

cursor-70star-21 cursor-70star-22

以上より、計2フレームのロスとなっている。この他に、ミップスターで2フレームロスらせるパターンもあるが、2フレームのロスに変わりはない。

余談だが、70枚idealrunでこのロスらせパターンを選んだのは、ultimate sheetに理由がある。

このシートでは50枚ミップと地下キノピオの区間は行が存在するが、『スノーマンズランドを出るところ』の行は存在しない。

よって、上記のロスらせパターンであれば、『地下キノピオの区間だけが+1フレーム』で済ますことができるのだ。

つまりは、シートに載せる時のタイムの見栄え的にこのパターンを選んだのである。

むすび

カーソル移動の仕様は、実際のRTAに当てはめて考えてみると結構面白い仕様なので、覚えておく価値はあると思う。

今回はこの仕様の一部のみを話したが、全貌を知らないと『セーブ画面時に下入力を入れっぱにしておくだけで、[セーブしないで続ける]まで一気にカーソルを動かすことができる』テクニックを理解できないので、これはまた別の機会に紹介することにしよう。