1:上昇中にブロックと接触した場合、中心線が重なっていれば
ブロックを叩く処理をする。
2:そうでない場合、マリオが右に寄ってれば右へ、左に寄ってれば
左へマリオをずらす。上昇加速度はそのまま。

ここで、壁にめりこんだときに右へ右へずれていくのは、2の処理を
細分化した時に、

2−1:マリオの左上のポイントが壁に接触していれば(つまり右に
寄ってれば)右へマリオをずらす。上昇加速度はそのまま。
2−2:そうでなくてマリオの右上のポイントが壁に接触していれば
左へマリオをずらす。上昇加速度はそのまま。

となっていると思う。これが正しいとすると、壁にめり込んだときは
ジャンプしてないので、上昇中という条件のある1は素通りする。
次に2−1を実行して(右にずらして)命令を抜ける。よって2−2は
実行されない。

これが壁すり抜けの正体だと妄想してるんだがどうか。検証求む。