まったりFuropenブログ

ではごゆっくり

スーパーマリオブラザーズ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フレーム空中(穴の上)にいることになります。