まったりFuropenブログ

ではごゆっくり

スーパーマリオブラザーズ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)調整をする必要があります。