無を頬張るゆとりTAS日記TAS以外のことも書いていきたい。ないブログに表示されています。新しい記事を書く事で広告が消えます。2012.02.22,Wed無を頬張る難易度C以前の記事を修正、追加しつつまとめ直しました。全体的にMr.さんの調査とyoshiさんの解析結果を参考にしています。TASLaboフォーラム(跡地)も参考。何も無いのに何か頬張ってるテクニック。無といってもアイテム取り寄せ(無を取得)の無とは性質が違います。あっちの無はいわばIDを食べているような状態ですが、こっちは正真正銘何もないものを頬張っています。無いのにいろいろあってややこしい!。スーパーマリオアドバンス2でも一応出来ますが挙動が大きく異なります(その他の項に記述)。◯使える場所・タイミングヨッシーが2匹以上いるか、もしくはヨッシーと時間停止手段(パワーアップorダメージor卵産みorルーム移動)があり、さらに頬張る事のできるスプライト(甲羅、Pスイッチなど)があるとき。◯方法やり方は2つあります。アイテム2個出しやブロック増殖などでヨッシーを2匹以上出します。すると1匹を除いて透明になるので、実体化しているヨッシーに乗ります(同時に透明ヨッシーに乗っていてもいいです)。何かを頬張った状態でヨッシーを穴や溶岩に落として消滅させます。すると透明だったヨッシーの1匹が実体化しますが、そのヨッシーが無を頬張っています。ヨッシーを複数出すことさえできれば非常に簡単に出来ます。ヨッシーと時間停止手段を利用するまずヨッシーに乗った状態で、頬張ることのできるスプライトの近くに移動します。ルーム移動を利用する場合は移動先のスタート地点に頬張るアイテムがなければなりません(アイテム持ち乗りを利用すると楽)。時間停止(パワーアップorダメージor卵産みorルーム移動)を行う直前に舌を出します。すると何故か口を閉じた状態で舌を出すので、用意したスプライトを頬張ります。するとスプライトを頬張った直後にもう一度舌を出すのでこの時に何も食べなければ、元のスプライトの代わりに無を頬張ります。タイミングがシビアですが、マントマリオ+ファイアストックならチャンスは何度でもあり、汎用性も高いです。◯効果ヨッシーが無を頬張ります。これを吐き出しても吐いた音がするだけで何も出て来ませんが、様々な現象が起こります。書き換わるメモリアドレスを表1にまとめました。0またID1のスプライトの特性は表2のようになっています。標準判定を使用しないつまり発生する挙動は、以下の通りである。スタックがいろいろ書き換わる。応用の項の回転リフトバグに影響。・右向きに吐くと倒された時にグラフィック変更する、左向きならしない。・攻撃はすり抜けない(リフトなども倒せるように)。・スタンした時に甲羅に変化する(詳細不明)。・蹴ると甲羅のように滑る。・判定を2Fに1回取得(リフト等ががたつく)。・ヨッシーで食べてもパワーアップしない。・標準判定を使用する。・x座標上位バイトが0でないときにヨッシーに食べられている状態に(特定のスプライトとの接触判定がなくなる等)、0の時は食べられていない状態に。・x座標上位バイトが0でないときにオブジェクト(ブロック・壁・地面など)との接触判定がなくなる。0の時はなくならない。・画面外フラグは瞬時に戻るため変化なし。ID7のextendedスプライト(ブルの野球ボール等)のx座標下位バイトが0になる。◯原理ヨッシーがスプライトを舌で掴むと、アドレス(0x7E160E+ヨッシーID)にスプライトのIDがセットされます。そのままスプライトを頬張ると、セットされたIDのスプライトの状態(0x7E148C+ID)が7(ヨッシーが頬張っている)になり、飲み込みタイマー(0x7E18AC)が255になります。これらの値は口内のものを吐き出したり飲み込んだり、さらにヨッシーが消滅して同じIDに別のスプライトが出現した時にリセットされますが、スプライトのIDはこれらに加えて舌を出した瞬間にもリセットされます。本来は頬張った状態から吐き出しも飲み込みも行わず舌を出すことは不可能なので一部だけを初期化することはできないのですが、上記の方法2を用いると頬張った状態で舌を出せるのでIDのみリセットすることができます。IDがリセットされると値は255になります。これは通常は食べようとしていない状態を表わすのですが、飲み込みタイマーがリセットされていないのでID255のスプライトを頬張っている状態になってしまいます。この状態で頬張っているものを吐き出すと、ID255のスプライトの速度や座標等に該当するメモリアドレスが書き換わります(表1参照)。これらアドレスは本来割り当てられているものではないため、異常な現象が起こります。方法1の場合は実体化してるヨッシーと透明ヨッシーの掴んだスプライトのIDをセットしているアドレスが異なっているので、実体化してるヨッシーが何か頬張っていても透明ヨッシーは何も食べようとしていない状態(255がセット)になっています。全てのヨッシーで飲み込みタイマーは共有されているので透明ヨッシーも頬張っていることになり、結果としてID255のスプライトを頬張っていることになります。ちなみに最初に頬張ろうとしたスプライトはスプライト状態7のまま放置されます。なるともう吐き出せなくなる上、そのIDには別スプライトが出現できなくなるので出現できるスプライト数が1つ減ってしまいます。・回転リフトバグ乗ると回転するリフトに乗った状態で無を吐き出すと異常なコードが実行されてバグり果てます。どのような現象が起こるかはヨッシーID,x座標を始めとして様々な要因によって変化します。クラッシュしてしまいますが、上手く制御すればパワーアップ状態を変更したり、果てには即エンディングに突入することさえできてしまいます。これは乗ると回転する回転リフトの処理に用いられるスタックが書き換わることで異常な処理を行なってしまうのが原因のようです。あまりにも激しいバグなので暗黙の了解で禁忌にされているような技です(要出典)。・スーパーマリオアドバンス2でも無を頬張ることができますが、吐き出すことができなくなりました。よって回転リフトバグもできません。代わりに無を頬張っていると、青甲羅を頬張った時の効果と黄甲羅を頬張った時の効果が一定時間おきに発生するようになります。無敵甲羅を頬張った時と違い、効果が同時に現れるわけではありません。緑甲羅や赤甲羅の効果も発生していますが確認はできません。・無を取得と違ってネーミングにセンスが感じられない。自己紹介:別名ISMさん。HPのタイトルといっしょになったのだろうか。荒島博久さんは旅に出ました。