まったりFuropenブログ

ではごゆっくり

スーパーマリオブラザーズ3 出口土管後小ジャンプについて

Pゲージに関わる細かな内容になります。
しっぽマリオは例外になりますのでご注意ください。



マリオ3でよくあるゴール前の土管から出た後、小ジャンプをする人がいますが、
それに意味があるのか疑問に思う人も結構いるのではないでしょうか?
詳細について書いていきます。


仕組みなどどうでもよく、どうすればいいのか知りたいなら
最後のまとめだけを読んでください。


以下の3記事を読まないと分からない内容かもしれません。
 ・ダッシュ速度仕様について
 ・Pダッシュ仕様について(その1)
 ・Pダッシュ仕様について(その2)
 ・Pダッシュ仕様について(その4)


まず、出口へ向かう土管に入った時の場合によって考え方が異なります。
 1.Pゲージが溜まっており、空中で土管に入る場合
 2.Pゲージが溜まっており、地上からもしくは土管に突っかかって土管に入る場合
 3.Pゲージが溜まっておらず、3ゲージ以上で土管に入る場合
 4.Pゲージが溜まっておらず、2ゲージ以下で土管に入る場合


1.Pゲージが溜まっており、空中で土管に入る場合



 空中で土管に入る場合は、P維持判定の16フレームカウンターは動きません。
 土管から出た後に、この16フレームカウンターが動き出しますので、
 16フレーム以内に大ジャンプすれば、Pを維持できます。


2.Pゲージが溜まっており、地上からもしくは土管に突っかかって土管に入る場合



 この場合、P維持判定の16フレームカウンターは
 土管に入るモーション中に0になってしまいます。
 そして、土管から出た後にP維持の判定が行われます。

 土管から出たと同時に大ジャンプをすれば、マリオが空中にいると判断され、
 P維持判定が先延ばしされ、Pが維持されます(1フレームジャンプ)。
 (空中で土管に入る場合少しこすりながら入りがちなので、こすらないこの方法がいいかも)

 ですが、1フレームジャンプは難しく思わぬロスが発生する可能性もあるので、
 それならば1フレームジャンプを狙わないのもアリです。
 この場合、次の3番目パターンと同じなのでそちらで説明します。


3.Pゲージが溜まっておらず、3ゲージ以上で土管に入る場合



 土管に入るモーション中は、Pゲージが減少しません。
 ただし、Pゲージの上昇下降を判定する8(or 24)フレームは動き続け0になります。
 よって、土管から出た1フレーム目にPゲージの上昇下降の判定がされます。

 土管から出た時に速度は0なので、Pゲージは下降します。
 そうすると、次のPゲージの上昇下降の判定は24フレーム後にされますが、
 明らかに速度が40spxに到達できないのでゲージが再び下降します。
 そして次の判定になる合計49フレーム目に速度が40spxに到達しているか
 重要
になります。

 速度は加速減速しないフレームというものがありました。
 その速度上昇の仕方は16通りになるのですが、その全てのパターンを見ると、
 速度が40spxに到達するには 46 or 47 フレームかかります。
 (方向キーを入れた次のフレームから速度が増え始めるのでこうなります)

 となると、先ほどのPゲージ上昇下降判定の49フレーム目までに
 速度が40spxに到達するので問題ありません。
 注意として、足場の上にいることが必要です。


4.Pゲージが溜まっておらず、2ゲージ以下で土管に入る場合

 この場合、速度が40spxに到達する前にPゲージが0まで下がるため、
 速度40spxに到達する 46 or 47 フレーム目にPが1ゲージ溜まります
 もちろん、足場の上にいることが必要です




3.4のケースについて、実際に3つの例を紹介して説明します。



■土管の高さが2ブロックの時



 マリオのspx(x,y)と、速度上昇パターンで
 地面着地までのフレーム数が変わります。

 ダッシュボタンと右キーを押しっぱなしの場合、
 マリオが地面に着地するのは、42~44フレームになります。
 (具体的な計算は省略します)

 ・土管に入った時のPゲージが3ゲージ以上の場合
   49フレーム以内に地面に着地できて、
   速度が40spxになるのが46~47フレームなので、
   Pゲージ上昇に問題ありません。

 ・土管に入った時のPゲージが2ゲージ以下の場合
   速度が40spxになるのが46~47フレームで、 
   46フレーム前に地面に着地できるので、
   最速でPの1ゲージ目を溜めることができます。

 従って、土管の高さが2ブロックの時は、
 ダッシュボタンと右キーを押しっぱなしで進むだけで大丈夫です。 


■土管の高さが3ブロックの時



 ダッシュボタンと右キーを押しっぱなしの場合、
 マリオが地面に着地するのは、46~48フレームになります。

 ・土管に入った時のPゲージが3ゲージ以上の場合
   49フレーム以内に地面に着地できて、
   速度が40spxになるのが46~47フレームなので、
   Pゲージ上昇に問題ありません。

 ・土管に入った時のPゲージが2ゲージ以下の場合
   速度が40spxになるのが46~47フレームで、
   地面に着地するのが46~48フレームなので、
   場合によっては最速でPの1ゲージ目を溜められません。

   そのため、最速でPの1ゲージ目を溜めるには、
   土管から出た後、小ジャンプをして地面に46フレーム以下で着地する必要があります。

   小ジャンプをすることで1~2フレーム速くPを溜め始めることができます。
   その結果、0~2pxの距離を速く進めます。
   P状態の速度は3.5px(=56spx)なので、
   運が良ければ1フレーム短縮できるかもしれません。

   自分は面倒なのでやりません。

   
 従って、土管の高さが2ブロックの時は、
 Pゲージが3以上の時、ダッシュボタンと右キーを押しっぱなしで進む。
 Pゲージが2以下の時、小ジャンプで降りて進むと0~1フレーム速くなる。


■1マス高さ3ブロックの時 (3-1、7-2)



 ダッシュボタンと右キーを押しっぱなしの場合、
 マリオが地面に着地するのは、51~52フレームになります。

 ・土管に入った時のPゲージが3ゲージ以上の場合
   49フレーム目は空中にいるため、Pゲージが減少してしまいます。
   そうなるとPを溜めるのが合計32フレーム遅れてしまうので、
   32px遅くなり、9~10フレーム遅れます

   なので小ジャンプをして、うまく地面の手前に降ります。
   この時、49フレーム以内に着地できるので狙っていきましょう。

 ・土管に入った時のPゲージが2ゲージ以下の場合
   速度が40spxになる46~47フレーム時に空中にいるため、
   先ほどと同じく、小ジャンプをして46フレーム以内に着地するように狙います。

   小ジャンプをすることで、4~6フレーム速くPを溜め始めることができ
   その結果、小ジャンプ無しより4~6px速く進めることができるので
   1~2フレーム速くできます
   
 従って、1マス高さ3ブロックの時は、
 Pゲージに関わらず、小ジャンプで地面のできるだけ手前に降りたほうが良い。




【 まとめ 】

しっぽマリオは例外として

P状態で土管に空中で入った場合
  土管から大ジャンプでPが維持される
それ以外の場合
 ■土管の高さが2ブロックの時
    ダッシュボタンと右キーを押しっぱなしで進むだけで良い
 ■土管の高さが3ブロックの時
   ・Pゲージが3以上の時、ダッシュボタンと右キーを押しっぱなしで進む
   ・Pゲージが2以下の時、小ジャンプで降りて進む
     小ジャンプ無しと比べ、0~1フレーム速くできる
 ■1マス高さ3ブロックの時
   ・Pゲージが3以上の時、小ジャンプで地面のできるだけ手前に降りる
     小ジャンプ無しと比べ、9~10フレーム速くできる
   ・Pゲージが2以下の時、小ジャンプで地面のできるだけ手前に降りる
     小ジャンプ無しと比べ、1~2フレーム速くできる



【オマケ】
 うまく土管の角にマリオを当てることで、マリオを1pxスライドさせることができます。
 ただしマリオの位置調整が非常に厳しいため、狙わなくてよいと思います。


スーパーマリオブラザーズ3 サブピクセルマニピュレーション(7-1壁抜け編)




サブピクセルマニピュレーションによる7-1壁抜けを考えます。
しっぽマリオは想定しておりませんのでご注意ください。




まず、サブピクセルマニピュレーションをW6のコクッパ戦で行います。
コクッパを倒してから杖をキャッチする間に右キーや左キーを入れて
目的のspx(x)を出します。
杖キャッチ後の演出やマップ移動ではspx値は変動しません。



■7-1を立って壁抜けをする場合

さて、7-1を立って壁抜けを成功するにはどのようなspxであるべきなのか。
もうめんどいのでさっさと画像で紹介します。



画像はジャンプするタイミングにおけるspx値を表してます。
クリックする等して拡大してご覧ください。

画像を見るとマリオが角に深くめり込めば5分の1で抜けるんだなーとか、
spx(y)も関係してたんだなーとかなんとなく分かると思います。

ですが、今回はサブピクセルマニピュレーションの話です。
速度上昇は、ステージ開始から減速することなく進めば毎回同じになります。
従ってマリオの位置に関するspx(x)値も同じ値に再現することが可能です。
反対に1回壁抜けを失敗したりするとspx(x)の値を把握できなくなってしまいます。
この手法は、最初の1回目の壁抜けのみのチャンスなので注意が必要です。

ではステージ開始時のspx(x)は、上の図においてどこに当たるのか紹介します。
(本当は速度の上昇と壁までの距離で計算しますが省く)



青枠がspx(x)=0~15の範囲を示しており、
マリオは最大速度40spx(x)で動き続けるので、このように移り変わります。

減速すれば〇(成功)ともっと多く重なりそうですが、
減速量の調整をどうすればいいのかとかまた別の話になってしまいます。
(もちろんその考えもとても良いと思います。)

〇(成功)と重なるタイミングは、
 特定の1フレームかつspx(x)=14~15かつspx(y)=6~15
であることが分かります。
従ってサブピクセルマニピュレーションは
spx(x)=14~15に調整すれば良いことが分かりました。
それでも残念ながらspx(y)の値によっては成功が保証されません。


■7-1をしゃがみジャンプで壁抜けをする場合



しゃがみジャンプの成功はこうなっております。
特徴はなんといっても、1フレーム遅れても成功するところです。
同じようにステージ開始時のspx(x)を青枠で囲ってみます。



〇(成功)と重なるタイミングがございません。
しかしながら、しゃがみジャンプをすることは、一度右キーを離すことになります。

その離したフレーム数に応じてspx(x)は左に動くので
ちょうど〇(成功)と重なり合う可能性があります。

従って各自のしゃがみ操作に合わせたspx(x)調整をする必要があります。


スーパーマリオブラザーズ3 サブピクセルマニピュレーション(調整方法編)




文字通り、サブピクセル(以下spxと略)を操作する手法です。
なぜこんな手法をするかというと、壁抜けにおいて役に立つからです。

具体的な壁抜けへの効果は次記事以降で書きます。
まずは本ページでは、どのような行動を取ればspxを調整できるかをご紹介します。


以前の記事で、spxはpx(ピクセル)の小数点のようなもの、
そして1px=16spxであると紹介しました。

左右方向だけがspxを持つということではありません。
 左右方向のpxをpx(x)、spxをspx(x) (右方向が+)
 上下方向のpxをpx(y)、spxをspx(y) (下方向が+)
とこれ以降させていただきます。


マリオは、spxが変動しても画面上では移動しません。
例えば、毎フレーム1spxの速度で移動し続ければ、
spxが繰り上がる15→0spxになる時、マリオが画面上で1px動くことになります。
また、反対方向に動けばspxが繰り下がる、0→15spxのときマリオが1px動くでしょう。
これらの画面上動きを利用し、
 1フレーム右キーを押して離す→マリオは動かないな・・・
 もう1回1フレーム右キーを押して離す→まだマリオは動かないな・・・
 もう1回1フレーム右キーを押して離す→マリオが動いた
速度(右を押した量)によりますが、十分に速度を落としていた場合、
マリオが動いたということでspxは0付近であるということが予測されます。
サブピクセルマニピュレーションはこのような考えで行われます。


さて、速度仕様について覚えていますでしょうか?
(忘れた人は → ダッシュ速度仕様について ar1886595 )
速度は加速減速しないフレームというものがありました。
地上で右キーを複数フレーム押した時の速度パターンを書き出したいと思います。

右キーを1フレーム押した場合、速度(spx(x))の変動は2パターンになります。
 0→1→0 (合計1spx(x)進む)
 0→0→0 (合計0spx(x)進む)
右キーを2フレーム押した場合、速度(spx(x))の変動は5パターンになります。
 0→1→2→1→0→0 (合計4spx(x)進む)
 0→1→2→1→1→0 (合計5spx(x)進む)
 0→1→2→2→1→0 (合計6spx(x)進む)
 0→1→1→0→0→0 (合計2spx(x)進む)
 0→0→1→0→0→0 (合計1spx(x)進む)
右キーを3フレーム押した場合、速度(spx(x))の変動は7パターンになります。
 0→1→2→3→2→1→0→0 (合計9spx(x)進む)
 0→1→2→3→2→1→1→0 (合計10spx(x)進む)
 0→1→2→3→2→2→1→0 (合計11spx(x)進む)
 0→1→2→3→3→2→1→0 (合計12spx(x)進む)
 0→1→2→2→1→0→0→0 (合計6spx(x)進む)
 0→1→1→2→1→0→0→0 (合計5spx(x)進む)
 0→0→1→2→1→0→0→0 (合計4spx(x)進む)

右キーを3フレーム以上も押してはspx(x)が変動しすぎて話にならないのが分かります。

例えばspx(x)を0~5の範囲内に調整したいなら、
右キーを2フレーム以下に押して離してを繰り返し
マリオが画面上で1px(x)動くのを確認したら止めることで確実に調整されます。
 例 現在spx(x)=15で右キー2フレーム押すと、
   最小で15+1⇒px(x)=1とspx(x)=0
   最大で15+6⇒px(x)=1とspx(x)=5
   spx(x)が0~5の範囲内に収まる

もっと厳しく、例えばspx(x)を0~1の範囲内に調整したいなら、
可能な限り右キーを1フレーム押して離してを繰り返さなければならない分かります。

右キーを1フレームだけ押すなんて人間にできるのかという問題が浮かびますが
難しいですができなくもありません。頑張ってください。




【オマケ】
他のサブピクセルマニピュレーションをご紹介します。

■スクロール右端めり込みspx(x)マニピュレーション



スクロール面で右端の見えない壁にぐりぐり右キーを入れながらめり込んでいる時、
実はこの状態のspx(x)はspx(x)=0に固定されております。

この仕様を利用したら何か可能性を感じそうです。
残念ながら執筆者は上手い利用方法をまだ見つけられてません。

以下だらだら独り言検討
 スクロール面は最後は土管に入るが最速で入ることができる。
 (正しくは見えない壁めり込みがあるため運が絡む?)
 それはつまりステージ開始から同じフレーム数で土管に入れるので
 土管から出たあとの速度上昇びのパターンも固定される。
 よってそのままゴールすれば固定されたspx(x)を実現できるはず。
 例えば6-7で固定させて6-9で壁を蹴るとか?
 いや100%でP羽ケチる意味ないか・・・
 5-6で固定させて、5-砦2で壁抜け?
 運が絡むうえに、ジャンプ調整も難しいしspx(y)も大事で失敗したら死ぬし最後のあがきの確率アップ用?


■2マス天井spx(y)マニピュレーション



このマニピュレーションは今のところ覚える必要はないです。

ジャンプ速度と天井にぶつかる高さから調整しますが、
ジャンプ速度について詳しくご説明していないのですが軽くご紹介程度にします。
高さ2マスの隙間にデカマリオ状態で入って、
天井に頭をぶつけるように最大ジャンプを繰り返すとspx(y)が以下のように変動します。
 spx(y)=15 ⇒ spx(y)=1(マリオが少し天井にめり込む)
 spx(y)=14 ⇒ spx(y)=0(マリオが少し天井にめり込む)
 spx(y)=13 ⇒ spx(y)=15(マリオが少し天井にめり込む)
 spx(y)=12 ⇒ spx(y)=8
 spx(y)=11 ⇒ spx(y)=7
 spx(y)=10 ⇒ spx(y)=6
 spx(y)=9 ⇒ spx(y)=5
 spx(y)=8 ⇒ spx(y)=4
 spx(y)=7 ⇒ spx(y)=3
 spx(y)=6 ⇒ spx(y)=2
 spx(y)=5 ⇒ spx(y)=1
 spx(y)=4 ⇒ spx(y)=0
 spx(y)=3 ⇒ spx(y)=2
 spx(y)=2 ⇒ spx(y)=1
 spx(y)=1 ⇒ spx(y)=0
 spx(y)=0 ⇒ spx(y)=15
これを見ると、spx(y)=1,0,15でループしているのが分かります。
また他のspx(y)もジャンプを繰り返せばspx(y)=1,0,15に収まることが分かります。

例えばジャンプ2回目以降に天井にめり込んだ時がspx(y)=1となります。
これを利用してできる技があるかもしれません。


スーパーマリオブラザーズ3 Pダッシュ仕様について(その4)

スーパーマリオブラザーズ3の謎が深いPダッシュの仕様について述べていきます。
最後その4では1フレームジャンプによるP維持について書きます。




1-5の図の場所でP維持した経験がある人はいるかもしれません。
上り坂なので16フレームカウンターが動き、ジャンプ中にカウンターは0になり、
図の下の平地の着地で速度は明らかに39以下なのでP維持できるわけがありません。

このP維持の理由は1フレームジャンプにあります。

実は、着地した瞬間にジャンプが成功すると
マリオは着地せず空中に居続けているという判定になります。
そのタイミングは1フレームになります。

この図の場合、空中に居続けるということは、16フレームカウンターが0になっても
P判定が先延ばしのままになるので、Pが継続されるわけです。

これが分かれば、どんなに狭く壁にぶつかるところであっても
1フレームジャンプの連続で
Pが空中で続く256フレームという長い間Pが継続できます(人間技ではない)。


例えば、1-5の場合、1フレームジャンプを狙いたくなりますが
タイミングが1フレーム速いとジャンプが出ず、
修正できずそのまま壁に激突も考えられるので
安定を取ったほうがいいのか難しいところです。



唯一、絶対に狙うべきなのが3-2です

例題 3-2







 3-2をP維持のまま、土管にダイレクトで入る場合を考えます。
 土管から出た後、地面に着地してから16フレームカウンターが動き出します。
 この16フレームという短い猶予では、土管が邪魔して
 残念ながらPを維持したまま右に抜け出すことができません

 ところが、先ほどの1フレームジャンプをすることで、その猶予時間が増えます。
 具体的には、
  土管から出た後1フレームジャンプをする
  1フレームジャンプ着地後、16フレームカウンターが動くので
  16以内で少し右に走って、そこからジャンプをする
 これで土管に突っかかることなく、P維持のまま、右に抜け出すことができます。

 ここではジャンプが出せなくても、ただP維持ができないだけなので
 ほぼリスクはないため狙うべきです。


(11/3 追記)
 3-2、1フレームジャンプは難しいのでわざと狙わないのもあるかと。
 土管に入る時、空中で入らず走って入る(まずこれが難しいが・・・)
 土管から出た後、最速でPを溜めなおせると、
 1フレームジャンプと比べ1フレーム程度しか遅くない。
 むしろ空中で土管に入るためジャンプを高くするならその分遅れるから
 こちらの方が結果速くなりやすいかも。



以上でPダッシュ仕様についての話は終わりです。
見てくださった方ありがとうございました。


スーパーマリオブラザーズ3 Pダッシュ仕様について(その3)

スーパーマリオブラザーズ3の謎が深いPダッシュの仕様について述べていきます。
その3でも引き続きPダッシュの維持について書きます。


前記事で書いた、P状態が切れる条件は以下の通りでした。


 ①
  ・速度が39spx以下で足場の上にいる時
  ・上り坂にいる時
  ・ダッシュボタンを離して足場の上にいる時

  以上3つのいずれかに該当した時から、
  上り坂以外の足場で速度を40spx以上にして走り直すことなく、
  該当時から16フレーム以降に、また3つのいずれかに該当したら、
  Pメーターが下降して、P状態が切れる

  →Pダッシュ仕様について(その2)で説明しています。

 ②

  P状態で、足場に着かず空中に256フレームいたとき、P状態が切れる


この記事では、②の場合について説明します


P状態で、足場に着かず空中に256フレームいたとき、P状態が切れる
これに思い当たることがあるのではないでしょうか。
そうです、3-1です。



水中も足場に着かないわけで、合計256フレームP状態が継続されます。

他には、敵を踏んだり、音符ブロックを踏むのも
足場とはみなさず空中にいると判定されます。

1-2で音符ブロックに乗ってもP状態が続くわけです。





P維持の①と②の応用技を紹介します。


例題 3-1 







 P維持してキノコ回収をする技です。
 水中に落ちても256フレームPが続くので、その間にキノコを出します。
 キノコを取って、水面から1マスブロックに乗った時
 速度が39spx以下なので、①であった16フレームカウンターが動き出します。
 そこから、16フレーム以内に大ジャンプして速度を40spx以上にして
 上の足場に着地することでP維持が成功するわけです。


例題 3-3









 P維持をしてフラワー回収をする技です。
 フラワーを出して、白ブロックの上からジャンプで急転回。
 ノコノコを踏んで、フラワーを取ります。
 またもや急転回するため減速しており、フラワーのあるブロックに乗った時、
 16フレームカウンターが動きますので、16フレーム以内にジャンプ。
 ノコノコがいた足場に着地するころには速度が40spx以上になりPが維持されます。


スーパーマリオブラザーズ3 Pダッシュ仕様について(その2)

スーパーマリオブラザーズ3の謎が深いPダッシュの仕様について述べていきます。
その2ではPダッシュの維持について書きます。

おそらく、一番興味のある内容ではないでしょうか?
これを知っているとPダッシュの維持をどうすればできるのか実践できるようになり、
マリオ3がとても楽しいゲームへと変貌します!



ダッシュ中は速度が最大56spxに上昇します。
通常が40spxであるのを考えると、1.4倍も速くなります。

このPダッシュ、P状態が切れる条件は以下の通りです。

 ①
  ・速度が39spx以下で足場の上にいる時
  ・上り坂にいる時
  ・ダッシュボタンを離して足場の上にいる時

  以上3つのいずれかに該当した時から、
  上り坂以外の足場で速度を40spx以上にして走り直すことなく、
  該当時から16フレーム以降に、また3つのいずれかに該当したら、
  Pメーターが下降して、P状態が切れる


 ②
  P状態で、足場に着かず空中に256フレームいたとき、P状態が切れる
  →Pダッシュ仕様について(その3)で説明します。


この記事では、①の場合について説明します。

 ・速度が39spx以下で足場の上にいる時
 ・上り坂にいる時
 ・ダッシュボタンを離して足場の上にいる時

3つのいずれかの時、16フレームを計るカウンターが動き出します。
このカウンターは、速度40spx以上で上り坂以外の足場を走るとリセットされます。
動き出したカウンターは空中にいても動き続け、
カウンターが0になった時に、再び3つのいずれかに該当したらPが切れます。

反対に言えば、速度が39spx以下で足場についても、
16フレーム間(空中にいれば、16フレーム後以降の足場へ着地する瞬間まで)
立て直しの時間が与えられるということです。



多くの例題で確認してみましょう。

例題 2-1



 開幕でPを溜めて、壁に当てて垂直ジャンプをしますが、
 最初の着地でPが切れる経験はないでしょうか?
 これはジャンプのタイミングが遅れ、壁に当たってからジャンプしているためです。
 壁に当たることで速度が0spxになり、ここで16フレームカウンターが動きます。
 そして垂直ジャンプ中に16フレームカウンターが0になり、
 足場への着地時に速度が明らかに39spx以下ですのでPが切れます。
  
 壁に当たる前にジャンプができれば、
 速度が40spx以上でジャンプするので16フレームカウンターは動きません。
 そして垂直ジャンプをして、足場に着地時に速度が39spx以下なので
 ここで16フレームカウンターが動きます。
 この足場から次の足場へ16フレーム以内にジャンプすれば
 16フレームカウンターが空中で0になるため、
 次に空中から足場に着いた時にP切れの判定が行われます。
 ただその時には速度が40spx以上になっているので
 16フレームカウンターはリセットされ、Pが維持されることになります。


例題 1-5





 P状態でおそらく速度40spx以上でジャンプして土管に入ると思います。
 そうすると、16フレームカウンターは動きません。
 土管から地上マップに出た時、速度0spxで足場に着いてスタートするので
 16フレームカウンターが動き出します。
 ここから16フレーム以内にジャンプし、
 足場に着くまでに速度を40spx以上にすればP状態を維持できます。



 ちなみに速度40spxになる距離の目安はこの図の位置ぐらいです。
 これよりやや多めに距離をとればP維持に関しては安心でしょう。


例題 3-8





 この向きの土管に入る場合、注意が必要です。
 そのまま地上から走って入ると、土管に入る時速度が0spxにされ、
 足場に着いているので16フレームカウンターが動きます。
 そして土管に入るモーション中にも16フレームカウンターは動き0になります。
 
 さらには、この土管から出た後、謎の足場判定が開幕1フレームだけあります。
 なので、この謎の足場判定に引っ掛かり、即Pが切れます。



 この横向きの土管は図のようにジャンプすることで空中で土管に入れます。
 空中で入る=足場に着かないなので、16フレームカウンターは動きません。
 土管から出た後、謎の足場判定に引っ掛かり、カウンターが動き出しますが、
 下の足場へは12フレームで着くので、
 そこから4フレーム以内で大ジャンプすればP維持できます。


例題 3-3





 この向きの土管も、走って入ると速度が0spxになり地面に着くため
 土管に入るモーション中に16フレームカウンターが0になって
 土管から出た時にPが切れます。
 
 ただ、地面に着かず、空中からダイレクトで土管に入ると
 なんと空中で土管に入ったことになり、16フレームカウンターは動きません。
 土管から出た時に16フレームカウンターが動き、P維持ができるわけです。


スーパーマリオブラザーズ3 Pダッシュ仕様について(その1)

スーパーマリオブラザーズ3の謎が深いPダッシュの仕様について述べていきます。

その1~その4までの4記事に分けて説明します。
ご興味あればぜひ見てください。
リンクは一番下にあります。


その1ではPメーターの上昇下降について書きます。




地面を走るとPメーターが増え、溜まりきるとPダッシュ状態になると分かると思います。

Pが溜まっていない通常のダッシュ状態の最大速度は40spx(サブピクセル)になります。
Pメーター上昇の基本条件として、
速度40spx以上で足場の上を走らないとPメーターは増えません。



そしてPメーターは、その上昇下降タイミングが設定されていることが分かりました。


まずPメーターの最初の1ゲージ目については
速度40spx以上で足場の上を走る1フレーム目に上昇することが決まっております。

例えば、速度40spxで空中にいるとすると、足場に着地してから1フレーム目に上昇します。


Pメーター2ゲージ目以降については
前ゲージ目の上昇判定から8フレーム後に
速度40spxで足場の上を走っていれば上昇します。

反対にそうでなければメーターは下降します。
Pメーターが下降した場合、
前ゲージ目の下降判定から24フレーム後にゲージの上昇下降判定をします。

(下降してPメーターが0になる場合のみ、24フレーム待たず即1ゲージ目に上昇できる)


このゲージ上昇下降を判定する(or 24)フレーム目になるまでの間は何をしても自由で、
例えば、速度を遅くしたりジャンプをしたりしても、
(or 24)フレーム目までに速度を40spxに戻し、足場の上を走っていれば
ゲージは上昇することになります。



こうしてPメーターが最大になると、
速度は40から上限を突破して、最大56まで上昇し始めます。


ゲーム画面上のPメーター表示は、製作者の意図があるのか、正しく表示されません。
Pメーターの表示は、揺らぐように0~3フレームの間でぶれます。
ただし、内部のPメーター処理は正しいフレームで計算されるのでご安心ください。




例題 1-6

 

 ここでPメーターを溜めるためには、
  ① 低い段からPメーターを溜め始める
  ② 小ジャンプをして高い段へ登る
  ③ 高い段でPメーターを再び溜め始める
  ④ 高い段で1ブロックの穴を通過する
 こうしてPメーターを溜めきることになります。

 ① 左側から速度40spxで移動してくるので、1歩目からPメーターが溜まり始めます。
 ② 小ジャンプで2段上の高台に登るには、
   最小限ジャンプの場合でおよそ最低14フレーム以上空中にいます。
   Pメーターの上昇は8フレームごとに足場を走らないと上昇しないため、
   14フレームも空中にいることからPメーターは1ゲージ下がります。
   1ゲージ下がると、次Pメーター上昇下降判定は24フレーム後になるので
   空中にいる時間を24フレーム以下にすれば1ゲージ下がるだけで済みます。

   

   画像のマリオの高さが頂点のジャンプまでなら24フレーム以下に抑えられる


   低い段で、ゲージが上昇したと同時にジャンプすれば
   最大+8フレーム空中にいられる時間が増えますが
   気にせずに低いジャンプを心がけたほうがPメーターを見ずに行けるので楽です。

   Pメーターが2ゲージ下がってしまったら、Pを溜めるのは困難になります。

 ③ 特になし
 ④ この穴の上にいるとき、Pメーターの上昇下降判定フレームが来てしまうと
   足場の上にいないため1ゲージ下がってしまい、アウトです。
   そうならないように、Pメーターの溜め始めポイントを調整してください。
   (しっぽマリオの場合、ジャンプ中に減速するため調整が困難です)

   【穴の大きさと空中にいる時間について】
   1ブロックの穴は16px、ブロックの乗り判定はマリオが3px乗った時なので、
   この穴の大きさは20pxとも考えられます。
   マリオの横幅は12pxで速度は40spx=2.5pxであるから、
   3~4フレーム空中(穴の上)にいることになります。