Moon Jumpとはボタンを押している間キャラクターが上昇し続けます。
似たものに何度でも無限に多段ジャンプ出来る無限ジャンプというものがありますが、Moon Jumpとは性質が異なり別のものになります。
今回はそんなMoon Jumpを探してみようという訳です。
Moon Jumpの基礎知識
- メモリ上で基本的にFloat「浮動小数点」で管理されている
- ジャンプ前の足が地に着いた状態の値は0である事が多い(多いだけで異なる場合有り)
- Floatを10進数で表現すると上昇時は0.1~2000で下降時は-2000~-0.1の範囲内である事が多い
- 16進数で表現すると上昇時は3DCCCCCD~44FA0000で下降時はC4FA0000~BDCCCCCDである事が多い
Moon Jumpの知識おまけ
- Moon Jumpは重力や加速度が関係してるかも
- 上昇時は地面から浮き上がった直後が最も値が大きい事が多く、地面から離れた距離が大きい程値は小さくなる事が多い
- 下降時がマイナスの値の場合、一番地面から離れている要するに下がり初めが最もマイナスが小さく地面に近い程マイナスの値が大きくなる事が多い
- 下降時に明らかに地面に着地していないのに着地している時と同じ値になるゲームもある
- 上昇時がマイナス値で下降時がプラス値である場合、着地点がゼロ以外の場合、Float値がDoubleで管理されていたりと基本と違う事がよくある
- ジャンプする度に着地点の値が変動するゲームもある
- 着地時も上昇時も下降時も全てがマイナス値というゲームもある
それではMoon Jumpを探してみましょう
※再起動すると検索は1からやり直し、ローディングを挟むのもやり直しになる場合があるので要注意
1.キャラクターをジャンプさせて上昇中にフリーズコードで停止しよう
2.MJ presetを選択後、Start Searchで検索しよう
3.一度の検索では絞り込めないのでPause Searchを選択
4.下降中にフリーズさせて2度目の検索へ
6.まだ絞れないはずなのでゲーム画面に戻り着地した状態で再度Breezeへ戻る
※枠線内はこんな検索パターンがあるとの説明です
7.EQ cycleを選択 → Edit Aで0を入力 → Continue searchで3度目のサーチ
13.アドレスが特定出来たらAdd Bookmarkで任意の名前をつけてブックマークに保存します
PointerSearcher SEを用いてポインターを見つけてコード化したり、更に深追いしてアセンブラの命令文を特定してコード化したりと色々ありますが、ここでは触れませんがお好きなやり方でコード化して下さい。
ちょっと記事が長くなったので他の探し方などは、また機会があれば載せるかもしれません。
コメント
コメントを投稿